@stack-spot/ai-chat-widget 0.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 (329) hide show
  1. package/dist/StackspotAIWidget.d.ts +13 -0
  2. package/dist/StackspotAIWidget.d.ts.map +1 -0
  3. package/dist/StackspotAIWidget.js +32 -0
  4. package/dist/StackspotAIWidget.js.map +1 -0
  5. package/dist/chat-interceptors/quick-commands.d.ts +4 -0
  6. package/dist/chat-interceptors/quick-commands.d.ts.map +1 -0
  7. package/dist/chat-interceptors/quick-commands.js +11 -0
  8. package/dist/chat-interceptors/quick-commands.js.map +1 -0
  9. package/dist/chat-interceptors/send-message.d.ts +4 -0
  10. package/dist/chat-interceptors/send-message.d.ts.map +1 -0
  11. package/dist/chat-interceptors/send-message.js +36 -0
  12. package/dist/chat-interceptors/send-message.js.map +1 -0
  13. package/dist/components/Accordion.d.ts +10 -0
  14. package/dist/components/Accordion.d.ts.map +1 -0
  15. package/dist/components/Accordion.js +46 -0
  16. package/dist/components/Accordion.js.map +1 -0
  17. package/dist/components/AdaptiveTextArea.d.ts +10 -0
  18. package/dist/components/AdaptiveTextArea.d.ts.map +1 -0
  19. package/dist/components/AdaptiveTextArea.js +28 -0
  20. package/dist/components/AdaptiveTextArea.js.map +1 -0
  21. package/dist/components/Code.d.ts +19 -0
  22. package/dist/components/Code.d.ts.map +1 -0
  23. package/dist/components/Code.js +112 -0
  24. package/dist/components/Code.js.map +1 -0
  25. package/dist/components/Editor.d.ts +9 -0
  26. package/dist/components/Editor.d.ts.map +1 -0
  27. package/dist/components/Editor.js +2 -0
  28. package/dist/components/Editor.js.map +1 -0
  29. package/dist/components/FadingOverflow.d.ts +12 -0
  30. package/dist/components/FadingOverflow.d.ts.map +1 -0
  31. package/dist/components/FadingOverflow.js +216 -0
  32. package/dist/components/FadingOverflow.js.map +1 -0
  33. package/dist/components/FallbackBoundary/ErrorBoundary.d.ts +30 -0
  34. package/dist/components/FallbackBoundary/ErrorBoundary.d.ts.map +1 -0
  35. package/dist/components/FallbackBoundary/ErrorBoundary.js +38 -0
  36. package/dist/components/FallbackBoundary/ErrorBoundary.js.map +1 -0
  37. package/dist/components/FallbackBoundary/Loading.d.ts +2 -0
  38. package/dist/components/FallbackBoundary/Loading.d.ts.map +1 -0
  39. package/dist/components/FallbackBoundary/Loading.js +12 -0
  40. package/dist/components/FallbackBoundary/Loading.js.map +1 -0
  41. package/dist/components/FallbackBoundary/index.d.ts +6 -0
  42. package/dist/components/FallbackBoundary/index.d.ts.map +1 -0
  43. package/dist/components/FallbackBoundary/index.js +9 -0
  44. package/dist/components/FallbackBoundary/index.js.map +1 -0
  45. package/dist/components/HistoryList.d.ts +13 -0
  46. package/dist/components/HistoryList.d.ts.map +1 -0
  47. package/dist/components/HistoryList.js +4 -0
  48. package/dist/components/HistoryList.js.map +1 -0
  49. package/dist/components/IconInput.d.ts +7 -0
  50. package/dist/components/IconInput.d.ts.map +1 -0
  51. package/dist/components/IconInput.js +58 -0
  52. package/dist/components/IconInput.js.map +1 -0
  53. package/dist/components/Markdown.d.ts +9 -0
  54. package/dist/components/Markdown.d.ts.map +1 -0
  55. package/dist/components/Markdown.js +17 -0
  56. package/dist/components/Markdown.js.map +1 -0
  57. package/dist/components/OverlayMenu.d.ts +9 -0
  58. package/dist/components/OverlayMenu.d.ts.map +1 -0
  59. package/dist/components/OverlayMenu.js +2 -0
  60. package/dist/components/OverlayMenu.js.map +1 -0
  61. package/dist/components/ProgressBar.d.ts +11 -0
  62. package/dist/components/ProgressBar.d.ts.map +1 -0
  63. package/dist/components/ProgressBar.js +126 -0
  64. package/dist/components/ProgressBar.js.map +1 -0
  65. package/dist/components/QuickStartButton.d.ts +8 -0
  66. package/dist/components/QuickStartButton.d.ts.map +1 -0
  67. package/dist/components/QuickStartButton.js +40 -0
  68. package/dist/components/QuickStartButton.js.map +1 -0
  69. package/dist/components/RightPanelForm.d.ts +5 -0
  70. package/dist/components/RightPanelForm.d.ts.map +1 -0
  71. package/dist/components/RightPanelForm.js +45 -0
  72. package/dist/components/RightPanelForm.js.map +1 -0
  73. package/dist/components/RightPanelTabs.d.ts +10 -0
  74. package/dist/components/RightPanelTabs.d.ts.map +1 -0
  75. package/dist/components/RightPanelTabs.js +20 -0
  76. package/dist/components/RightPanelTabs.js.map +1 -0
  77. package/dist/components/TabManager.d.ts +34 -0
  78. package/dist/components/TabManager.d.ts.map +1 -0
  79. package/dist/components/TabManager.js +158 -0
  80. package/dist/components/TabManager.js.map +1 -0
  81. package/dist/components/Tooltip/Tooltip.d.ts +11 -0
  82. package/dist/components/Tooltip/Tooltip.d.ts.map +1 -0
  83. package/dist/components/Tooltip/Tooltip.js +9 -0
  84. package/dist/components/Tooltip/Tooltip.js.map +1 -0
  85. package/dist/components/Tooltip/TooltipAPI.d.ts +10 -0
  86. package/dist/components/Tooltip/TooltipAPI.d.ts.map +1 -0
  87. package/dist/components/Tooltip/TooltipAPI.js +48 -0
  88. package/dist/components/Tooltip/TooltipAPI.js.map +1 -0
  89. package/dist/components/Tooltip/context.d.ts +5 -0
  90. package/dist/components/Tooltip/context.d.ts.map +1 -0
  91. package/dist/components/Tooltip/context.js +18 -0
  92. package/dist/components/Tooltip/context.js.map +1 -0
  93. package/dist/components/Tooltip/index.d.ts +3 -0
  94. package/dist/components/Tooltip/index.d.ts.map +1 -0
  95. package/dist/components/Tooltip/index.js +3 -0
  96. package/dist/components/Tooltip/index.js.map +1 -0
  97. package/dist/components/Tooltip/style.d.ts +4 -0
  98. package/dist/components/Tooltip/style.d.ts.map +1 -0
  99. package/dist/components/Tooltip/style.js +23 -0
  100. package/dist/components/Tooltip/style.js.map +1 -0
  101. package/dist/components/Tooltip/types.d.ts +8 -0
  102. package/dist/components/Tooltip/types.d.ts.map +1 -0
  103. package/dist/components/Tooltip/types.js +2 -0
  104. package/dist/components/Tooltip/types.js.map +1 -0
  105. package/dist/components/form/DescribedCheckboxGroup.d.ts +3 -0
  106. package/dist/components/form/DescribedCheckboxGroup.d.ts.map +1 -0
  107. package/dist/components/form/DescribedCheckboxGroup.js +23 -0
  108. package/dist/components/form/DescribedCheckboxGroup.js.map +1 -0
  109. package/dist/components/form/DescribedRadioGroup.d.ts +3 -0
  110. package/dist/components/form/DescribedRadioGroup.d.ts.map +1 -0
  111. package/dist/components/form/DescribedRadioGroup.js +18 -0
  112. package/dist/components/form/DescribedRadioGroup.js.map +1 -0
  113. package/dist/components/form/styled.d.ts +2 -0
  114. package/dist/components/form/styled.d.ts.map +1 -0
  115. package/dist/components/form/styled.js +41 -0
  116. package/dist/components/form/styled.js.map +1 -0
  117. package/dist/components/form/types.d.ts +19 -0
  118. package/dist/components/form/types.d.ts.map +1 -0
  119. package/dist/components/form/types.js +2 -0
  120. package/dist/components/form/types.js.map +1 -0
  121. package/dist/context/AIWidgetProvider.d.ts +4 -0
  122. package/dist/context/AIWidgetProvider.d.ts.map +1 -0
  123. package/dist/context/AIWidgetProvider.js +4 -0
  124. package/dist/context/AIWidgetProvider.js.map +1 -0
  125. package/dist/context/hooks.d.ts +18 -0
  126. package/dist/context/hooks.d.ts.map +1 -0
  127. package/dist/context/hooks.js +82 -0
  128. package/dist/context/hooks.js.map +1 -0
  129. package/dist/features.d.ts +13 -0
  130. package/dist/features.d.ts.map +1 -0
  131. package/dist/features.js +6 -0
  132. package/dist/features.js.map +1 -0
  133. package/dist/hooks/chat-scroll.d.ts +7 -0
  134. package/dist/hooks/chat-scroll.d.ts.map +1 -0
  135. package/dist/hooks/chat-scroll.js +15 -0
  136. package/dist/hooks/chat-scroll.js.map +1 -0
  137. package/dist/index.d.ts +9 -0
  138. package/dist/index.d.ts.map +1 -0
  139. package/dist/index.js +9 -0
  140. package/dist/index.js.map +1 -0
  141. package/dist/layout.css +119 -0
  142. package/dist/right-panel/DefaultPanel.d.ts +9 -0
  143. package/dist/right-panel/DefaultPanel.d.ts.map +1 -0
  144. package/dist/right-panel/DefaultPanel.js +46 -0
  145. package/dist/right-panel/DefaultPanel.js.map +1 -0
  146. package/dist/right-panel/RightPanel.d.ts +2 -0
  147. package/dist/right-panel/RightPanel.d.ts.map +1 -0
  148. package/dist/right-panel/RightPanel.js +6 -0
  149. package/dist/right-panel/RightPanel.js.map +1 -0
  150. package/dist/right-panel/RightPanelProvider.d.ts +13 -0
  151. package/dist/right-panel/RightPanelProvider.d.ts.map +1 -0
  152. package/dist/right-panel/RightPanelProvider.js +10 -0
  153. package/dist/right-panel/RightPanelProvider.js.map +1 -0
  154. package/dist/right-panel/hooks.d.ts +13 -0
  155. package/dist/right-panel/hooks.d.ts.map +1 -0
  156. package/dist/right-panel/hooks.js +39 -0
  157. package/dist/right-panel/hooks.js.map +1 -0
  158. package/dist/state/ChatEntry.d.ts +48 -0
  159. package/dist/state/ChatEntry.d.ts.map +1 -0
  160. package/dist/state/ChatEntry.js +55 -0
  161. package/dist/state/ChatEntry.js.map +1 -0
  162. package/dist/state/ChatState.d.ts +46 -0
  163. package/dist/state/ChatState.d.ts.map +1 -0
  164. package/dist/state/ChatState.js +53 -0
  165. package/dist/state/ChatState.js.map +1 -0
  166. package/dist/state/ChatTabsController.d.ts +17 -0
  167. package/dist/state/ChatTabsController.d.ts.map +1 -0
  168. package/dist/state/ChatTabsController.js +47 -0
  169. package/dist/state/ChatTabsController.js.map +1 -0
  170. package/dist/state/ObservableState.d.ts +10 -0
  171. package/dist/state/ObservableState.d.ts.map +1 -0
  172. package/dist/state/ObservableState.js +25 -0
  173. package/dist/state/ObservableState.js.map +1 -0
  174. package/dist/state/WidgetState.d.ts +19 -0
  175. package/dist/state/WidgetState.d.ts.map +1 -0
  176. package/dist/state/WidgetState.js +29 -0
  177. package/dist/state/WidgetState.js.map +1 -0
  178. package/dist/types.d.ts +17 -0
  179. package/dist/types.d.ts.map +1 -0
  180. package/dist/types.js +2 -0
  181. package/dist/types.js.map +1 -0
  182. package/dist/utils/chat.d.ts +6 -0
  183. package/dist/utils/chat.d.ts.map +1 -0
  184. package/dist/utils/chat.js +26 -0
  185. package/dist/utils/chat.js.map +1 -0
  186. package/dist/utils/date.d.ts +6 -0
  187. package/dist/utils/date.d.ts.map +1 -0
  188. package/dist/utils/date.js +38 -0
  189. package/dist/utils/date.js.map +1 -0
  190. package/dist/views/Agents.d.ts +2 -0
  191. package/dist/views/Agents.d.ts.map +1 -0
  192. package/dist/views/Agents.js +2 -0
  193. package/dist/views/Agents.js.map +1 -0
  194. package/dist/views/Chat/AgentInfo.d.ts +6 -0
  195. package/dist/views/Chat/AgentInfo.d.ts.map +1 -0
  196. package/dist/views/Chat/AgentInfo.js +7 -0
  197. package/dist/views/Chat/AgentInfo.js.map +1 -0
  198. package/dist/views/Chat/ChatMessage.d.ts +6 -0
  199. package/dist/views/Chat/ChatMessage.d.ts.map +1 -0
  200. package/dist/views/Chat/ChatMessage.js +61 -0
  201. package/dist/views/Chat/ChatMessage.js.map +1 -0
  202. package/dist/views/Chat/ChatMessages.d.ts +7 -0
  203. package/dist/views/Chat/ChatMessages.d.ts.map +1 -0
  204. package/dist/views/Chat/ChatMessages.js +12 -0
  205. package/dist/views/Chat/ChatMessages.js.map +1 -0
  206. package/dist/views/Chat/index.d.ts +6 -0
  207. package/dist/views/Chat/index.d.ts.map +1 -0
  208. package/dist/views/Chat/index.js +8 -0
  209. package/dist/views/Chat/index.js.map +1 -0
  210. package/dist/views/Chat/styled.d.ts +2 -0
  211. package/dist/views/Chat/styled.d.ts.map +1 -0
  212. package/dist/views/Chat/styled.js +116 -0
  213. package/dist/views/Chat/styled.js.map +1 -0
  214. package/dist/views/ChatTabSelection.d.ts +8 -0
  215. package/dist/views/ChatTabSelection.d.ts.map +1 -0
  216. package/dist/views/ChatTabSelection.js +45 -0
  217. package/dist/views/ChatTabSelection.js.map +1 -0
  218. package/dist/views/Editor.d.ts +2 -0
  219. package/dist/views/Editor.d.ts.map +1 -0
  220. package/dist/views/Editor.js +2 -0
  221. package/dist/views/Editor.js.map +1 -0
  222. package/dist/views/Home.d.ts +6 -0
  223. package/dist/views/Home.d.ts.map +1 -0
  224. package/dist/views/Home.js +68 -0
  225. package/dist/views/Home.js.map +1 -0
  226. package/dist/views/KnowledgeSources.d.ts +2 -0
  227. package/dist/views/KnowledgeSources.d.ts.map +1 -0
  228. package/dist/views/KnowledgeSources.js +82 -0
  229. package/dist/views/KnowledgeSources.js.map +1 -0
  230. package/dist/views/MessageInput/ButtonGroup.d.ts +12 -0
  231. package/dist/views/MessageInput/ButtonGroup.d.ts.map +1 -0
  232. package/dist/views/MessageInput/ButtonGroup.js +22 -0
  233. package/dist/views/MessageInput/ButtonGroup.js.map +1 -0
  234. package/dist/views/MessageInput/InfoBar.d.ts +2 -0
  235. package/dist/views/MessageInput/InfoBar.d.ts.map +1 -0
  236. package/dist/views/MessageInput/InfoBar.js +28 -0
  237. package/dist/views/MessageInput/InfoBar.js.map +1 -0
  238. package/dist/views/MessageInput/dictionary.d.ts +2 -0
  239. package/dist/views/MessageInput/dictionary.d.ts.map +1 -0
  240. package/dist/views/MessageInput/dictionary.js +35 -0
  241. package/dist/views/MessageInput/dictionary.js.map +1 -0
  242. package/dist/views/MessageInput/index.d.ts +7 -0
  243. package/dist/views/MessageInput/index.d.ts.map +1 -0
  244. package/dist/views/MessageInput/index.js +43 -0
  245. package/dist/views/MessageInput/index.js.map +1 -0
  246. package/dist/views/MessageInput/styled.d.ts +2 -0
  247. package/dist/views/MessageInput/styled.d.ts.map +1 -0
  248. package/dist/views/MessageInput/styled.js +195 -0
  249. package/dist/views/MessageInput/styled.js.map +1 -0
  250. package/dist/views/MinimizedHeader.d.ts +3 -0
  251. package/dist/views/MinimizedHeader.d.ts.map +1 -0
  252. package/dist/views/MinimizedHeader.js +76 -0
  253. package/dist/views/MinimizedHeader.js.map +1 -0
  254. package/dist/views/Stacks.d.ts +2 -0
  255. package/dist/views/Stacks.d.ts.map +1 -0
  256. package/dist/views/Stacks.js +73 -0
  257. package/dist/views/Stacks.js.map +1 -0
  258. package/dist/views/Workspaces.d.ts +2 -0
  259. package/dist/views/Workspaces.d.ts.map +1 -0
  260. package/dist/views/Workspaces.js +59 -0
  261. package/dist/views/Workspaces.js.map +1 -0
  262. package/package.json +52 -0
  263. package/src/StackspotAIWidget.tsx +65 -0
  264. package/src/chat-interceptors/quick-commands.ts +12 -0
  265. package/src/chat-interceptors/send-message.ts +35 -0
  266. package/src/components/Accordion.tsx +64 -0
  267. package/src/components/AdaptiveTextArea.tsx +34 -0
  268. package/src/components/Code.tsx +201 -0
  269. package/src/components/Editor.tsx +12 -0
  270. package/src/components/FadingOverflow.tsx +234 -0
  271. package/src/components/FallbackBoundary/ErrorBoundary.tsx +48 -0
  272. package/src/components/FallbackBoundary/Loading.tsx +14 -0
  273. package/src/components/FallbackBoundary/index.tsx +15 -0
  274. package/src/components/HistoryList.tsx +16 -0
  275. package/src/components/IconInput.tsx +70 -0
  276. package/src/components/Markdown.tsx +53 -0
  277. package/src/components/OverlayMenu.tsx +10 -0
  278. package/src/components/ProgressBar.tsx +153 -0
  279. package/src/components/QuickStartButton.tsx +51 -0
  280. package/src/components/RightPanelForm.tsx +55 -0
  281. package/src/components/RightPanelTabs.tsx +39 -0
  282. package/src/components/TabManager.tsx +223 -0
  283. package/src/components/Tooltip/Tooltip.tsx +30 -0
  284. package/src/components/Tooltip/TooltipAPI.ts +46 -0
  285. package/src/components/Tooltip/context.tsx +24 -0
  286. package/src/components/Tooltip/index.ts +2 -0
  287. package/src/components/Tooltip/style.tsx +25 -0
  288. package/src/components/Tooltip/types.ts +8 -0
  289. package/src/components/form/DescribedCheckboxGroup.tsx +39 -0
  290. package/src/components/form/DescribedRadioGroup.tsx +33 -0
  291. package/src/components/form/styled.ts +41 -0
  292. package/src/components/form/types.ts +21 -0
  293. package/src/context/AIWidgetProvider.tsx +6 -0
  294. package/src/context/hooks.ts +93 -0
  295. package/src/features.ts +18 -0
  296. package/src/hooks/chat-scroll.ts +14 -0
  297. package/src/index.ts +8 -0
  298. package/src/layout.css +119 -0
  299. package/src/right-panel/DefaultPanel.tsx +67 -0
  300. package/src/right-panel/RightPanel.tsx +6 -0
  301. package/src/right-panel/RightPanelProvider.tsx +20 -0
  302. package/src/right-panel/hooks.tsx +47 -0
  303. package/src/state/ChatEntry.ts +95 -0
  304. package/src/state/ChatState.ts +85 -0
  305. package/src/state/ChatTabsController.ts +55 -0
  306. package/src/state/ObservableState.ts +35 -0
  307. package/src/state/WidgetState.ts +42 -0
  308. package/src/types.ts +20 -0
  309. package/src/utils/chat.ts +30 -0
  310. package/src/utils/date.ts +40 -0
  311. package/src/views/Agents.tsx +1 -0
  312. package/src/views/Chat/AgentInfo.tsx +17 -0
  313. package/src/views/Chat/ChatMessage.tsx +89 -0
  314. package/src/views/Chat/ChatMessages.tsx +16 -0
  315. package/src/views/Chat/index.tsx +11 -0
  316. package/src/views/Chat/styled.ts +116 -0
  317. package/src/views/ChatTabSelection.tsx +65 -0
  318. package/src/views/Editor.tsx +1 -0
  319. package/src/views/Home.tsx +109 -0
  320. package/src/views/KnowledgeSources.tsx +115 -0
  321. package/src/views/MessageInput/ButtonGroup.tsx +84 -0
  322. package/src/views/MessageInput/InfoBar.tsx +69 -0
  323. package/src/views/MessageInput/dictionary.ts +36 -0
  324. package/src/views/MessageInput/index.tsx +79 -0
  325. package/src/views/MessageInput/styled.ts +196 -0
  326. package/src/views/MinimizedHeader.tsx +94 -0
  327. package/src/views/Stacks.tsx +104 -0
  328. package/src/views/Workspaces.tsx +88 -0
  329. package/tsconfig.json +22 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DefaultPanel.js","sourceRoot":"","sources":["../../src/right-panel/DefaultPanel.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,cAAc,CAAA;AACnC,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAA;AACrC,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;AACvC,OAAO,EAAc,YAAY,EAAE,MAAM,8BAA8B,CAAA;AACvE,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;AAS1C,MAAM,QAAQ,GAAG,MAAM,CAAC,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;CA0B1B,CAAA;AAED,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,EAAE,WAAW,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAS,EAAE,EAAE;IAC/E,MAAM,CAAC,GAAG,YAAY,CAAC,UAAU,CAAC,CAAA;IAClC,OAAO,CACL,MAAC,QAAQ,eACP,6BACE,eAAK,SAAS,EAAC,OAAO,aACpB,KAAC,IAAI,IAAC,UAAU,EAAC,IAAI,YAAE,KAAK,GAAQ,EACpC,KAAC,IAAI,IAAC,WAAW,EAAC,WAAW,YAAE,WAAW,GAAQ,IAC9C,EACN,KAAC,UAAU,IAAC,KAAK,EAAE,CAAC,CAAC,KAAK,gBAAc,CAAC,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,YAC/D,KAAC,KAAK,KAAG,GACE,IACN,EACT,4BAAU,QAAQ,GAAW,IACpB,CACZ,CAAA;AACH,CAAC,CAAA;AAED,MAAM,UAAU,GAAG;IACjB,EAAE,EAAE;QACF,KAAK,EAAE,OAAO;KACf;IACD,EAAE,EAAE;QACF,KAAK,EAAE,QAAQ;KAChB;CACmB,CAAA"}
@@ -0,0 +1,2 @@
1
+ export declare const RightPanel: () => import("react").ReactNode;
2
+ //# sourceMappingURL=RightPanel.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RightPanel.d.ts","sourceRoot":"","sources":["../../src/right-panel/RightPanel.tsx"],"names":[],"mappings":"AAEA,eAAO,MAAM,UAAU,iCAGtB,CAAA"}
@@ -0,0 +1,6 @@
1
+ import { useRightPanelContent } from './hooks.js';
2
+ export const RightPanel = () => {
3
+ const content = useRightPanelContent();
4
+ return content;
5
+ };
6
+ //# sourceMappingURL=RightPanel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RightPanel.js","sourceRoot":"","sources":["../../src/right-panel/RightPanel.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAA;AAE9C,MAAM,CAAC,MAAM,UAAU,GAAG,GAAG,EAAE;IAC7B,MAAM,OAAO,GAAG,oBAAoB,EAAE,CAAA;IACtC,OAAO,OAAO,CAAA;AAChB,CAAC,CAAA"}
@@ -0,0 +1,13 @@
1
+ interface ContextValue {
2
+ content?: React.ReactNode;
3
+ setContent?: (content: React.ReactNode) => void;
4
+ panel?: React.RefObject<HTMLDivElement>;
5
+ chatWindow?: React.RefObject<HTMLDivElement>;
6
+ onCloseNext: React.MutableRefObject<(() => void) | undefined>;
7
+ }
8
+ export declare const RightPanelContext: import("react").Context<ContextValue>;
9
+ export declare const RightPanelProvider: ({ panel, chatWindow, children }: Pick<ContextValue, "panel" | "chatWindow"> & {
10
+ children: React.ReactNode;
11
+ }) => import("react/jsx-runtime").JSX.Element;
12
+ export {};
13
+ //# sourceMappingURL=RightPanelProvider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RightPanelProvider.d.ts","sourceRoot":"","sources":["../../src/right-panel/RightPanelProvider.tsx"],"names":[],"mappings":"AAEA,UAAU,YAAY;IACpB,OAAO,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,KAAK,CAAC,SAAS,KAAK,IAAI,CAAC;IAChD,KAAK,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC;IACxC,UAAU,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC;IAC7C,WAAW,EAAE,KAAK,CAAC,gBAAgB,CAAC,CAAC,MAAM,IAAI,CAAC,GAAG,SAAS,CAAC,CAAC;CAC/D;AAED,eAAO,MAAM,iBAAiB,uCAAuE,CAAA;AAErG,eAAO,MAAM,kBAAkB,oCACI,IAAI,CAAC,YAAY,EAAE,OAAO,GAAG,YAAY,CAAC,GAAG;IAAE,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;CAAE,4CAM5G,CAAA"}
@@ -0,0 +1,10 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { createContext, useMemo, useRef, useState } from 'react';
3
+ export const RightPanelContext = createContext({ onCloseNext: { current: undefined } });
4
+ export const RightPanelProvider = ({ panel, chatWindow, children }) => {
5
+ const [content, setContent] = useState();
6
+ const onCloseNext = useRef();
7
+ const value = useMemo(() => ({ content, setContent, panel, chatWindow, onCloseNext }), [content, panel, chatWindow]);
8
+ return _jsx(RightPanelContext.Provider, { value: value, children: children });
9
+ };
10
+ //# sourceMappingURL=RightPanelProvider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RightPanelProvider.js","sourceRoot":"","sources":["../../src/right-panel/RightPanelProvider.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AAUhE,MAAM,CAAC,MAAM,iBAAiB,GAAG,aAAa,CAAe,EAAE,WAAW,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE,EAAE,CAAC,CAAA;AAErG,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAChC,EAAE,KAAK,EAAE,UAAU,EAAE,QAAQ,EAA8E,EAC3G,EAAE;IACF,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,QAAQ,EAAmB,CAAA;IACzD,MAAM,WAAW,GAAG,MAAM,EAA4B,CAAA;IACtD,MAAM,KAAK,GAAG,OAAO,CAAe,GAAG,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,CAAC,EAAE,CAAC,OAAO,EAAE,KAAK,EAAE,UAAU,CAAC,CAAC,CAAA;IAClI,OAAO,KAAC,iBAAiB,CAAC,QAAQ,IAAC,KAAK,EAAE,KAAK,YAAG,QAAQ,GAA8B,CAAA;AAC1F,CAAC,CAAA"}
@@ -0,0 +1,13 @@
1
+ interface RightPanelOptions {
2
+ title: string;
3
+ description: string;
4
+ onClose?: () => void;
5
+ }
6
+ export declare function useRightPanelContent(): import("react").ReactNode;
7
+ export declare function useRightPanel(): {
8
+ open: (content: React.ReactNode, options?: RightPanelOptions) => void;
9
+ close: () => void;
10
+ isOpen: () => boolean;
11
+ };
12
+ export {};
13
+ //# sourceMappingURL=hooks.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hooks.d.ts","sourceRoot":"","sources":["../../src/right-panel/hooks.tsx"],"names":[],"mappings":"AAIA,UAAU,iBAAiB;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;CACtB;AAED,wBAAgB,oBAAoB,8BAGnC;AAED,wBAAgB,aAAa;oBAOF,KAAK,CAAC,SAAS,YAAY,iBAAiB;;;EAwBtE"}
@@ -0,0 +1,39 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { useContext, useMemo } from 'react';
3
+ import { DefaultPanel } from './DefaultPanel.js';
4
+ import { RightPanelContext } from './RightPanelProvider.js';
5
+ export function useRightPanelContent() {
6
+ const { content } = useContext(RightPanelContext);
7
+ return content;
8
+ }
9
+ export function useRightPanel() {
10
+ const ctx = useContext(RightPanelContext);
11
+ const { panel, chatWindow, setContent } = ctx;
12
+ return useMemo(() => {
13
+ if (!setContent)
14
+ throw new Error('No RightPanelProvider found.');
15
+ function open(content, options) {
16
+ if (!panel?.current || !chatWindow?.current || !setContent)
17
+ return;
18
+ setContent(options ? _jsx(DefaultPanel, { ...options, onClose: close, children: content }) : content);
19
+ panel.current.classList.add('visible');
20
+ chatWindow.current.classList.add('narrow');
21
+ ctx.onCloseNext.current = options?.onClose;
22
+ }
23
+ function close() {
24
+ if (!panel?.current || !chatWindow?.current || !setContent)
25
+ return;
26
+ panel.current.classList.remove('visible');
27
+ chatWindow.current.classList.remove('narrow');
28
+ ctx.onCloseNext.current?.();
29
+ setTimeout(() => {
30
+ setContent(null);
31
+ }, 300);
32
+ }
33
+ function isOpen() {
34
+ return !!panel?.current?.classList.contains('visible');
35
+ }
36
+ return { open, close, isOpen };
37
+ }, []);
38
+ }
39
+ //# sourceMappingURL=hooks.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hooks.js","sourceRoot":"","sources":["../../src/right-panel/hooks.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,OAAO,CAAA;AAC3C,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAC7C,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAA;AAQxD,MAAM,UAAU,oBAAoB;IAClC,MAAM,EAAE,OAAO,EAAE,GAAG,UAAU,CAAC,iBAAiB,CAAC,CAAA;IACjD,OAAO,OAAO,CAAA;AAChB,CAAC;AAED,MAAM,UAAU,aAAa;IAC3B,MAAM,GAAG,GAAG,UAAU,CAAC,iBAAiB,CAAC,CAAA;IACzC,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,GAAG,GAAG,CAAA;IAE7C,OAAO,OAAO,CAAC,GAAG,EAAE;QAClB,IAAI,CAAC,UAAU;YAAE,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAA;QAEhE,SAAS,IAAI,CAAC,OAAwB,EAAE,OAA2B;YACjE,IAAI,CAAC,KAAK,EAAE,OAAO,IAAI,CAAC,UAAU,EAAE,OAAO,IAAI,CAAC,UAAU;gBAAE,OAAM;YAClE,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,KAAC,YAAY,OAAK,OAAO,EAAE,OAAO,EAAE,KAAK,YAAG,OAAO,GAAgB,CAAC,CAAC,CAAC,OAAO,CAAC,CAAA;YACnG,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,CAAA;YACtC,UAAU,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;YAC1C,GAAG,CAAC,WAAW,CAAC,OAAO,GAAG,OAAO,EAAE,OAAO,CAAA;QAC5C,CAAC;QAED,SAAS,KAAK;YACZ,IAAI,CAAC,KAAK,EAAE,OAAO,IAAI,CAAC,UAAU,EAAE,OAAO,IAAI,CAAC,UAAU;gBAAE,OAAM;YAClE,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC,CAAA;YACzC,UAAU,CAAC,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAA;YAC7C,GAAG,CAAC,WAAW,CAAC,OAAO,EAAE,EAAE,CAAA;YAC3B,UAAU,CAAC,GAAG,EAAE;gBACd,UAAU,CAAC,IAAI,CAAC,CAAA;YAClB,CAAC,EAAE,GAAG,CAAC,CAAA;QACT,CAAC;QAED,SAAS,MAAM;YACb,OAAO,CAAC,CAAC,KAAK,EAAE,OAAO,EAAE,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAA;QACxD,CAAC;QAED,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,CAAA;IAChC,CAAC,EAAE,EAAE,CAAC,CAAA;AACR,CAAC"}
@@ -0,0 +1,48 @@
1
+ export interface SerializableAction {
2
+ title: string;
3
+ type: 'link' | 'command';
4
+ /**
5
+ * The URL if the action is a link or a chat command otherwise (/command).
6
+ */
7
+ exec: string;
8
+ }
9
+ export interface ChatAction extends SerializableAction {
10
+ /**
11
+ * @default primary
12
+ */
13
+ appearance?: 'primary' | 'secondary';
14
+ }
15
+ export interface TextChatEntry {
16
+ type: 'text' | 'md';
17
+ agent: 'bot' | 'user' | 'system';
18
+ actions?: ChatAction[];
19
+ subtitle?: string;
20
+ content: string;
21
+ updated?: string;
22
+ agentId?: string;
23
+ messageId?: string;
24
+ error?: string;
25
+ }
26
+ type ChatEntryListener = (value: TextChatEntry) => void;
27
+ export declare class ChatEntry {
28
+ readonly id: number;
29
+ private value;
30
+ private streamFinished;
31
+ private listeners;
32
+ abort: () => void;
33
+ /**
34
+ * @param value the value of the entry.
35
+ * @param isStreamed whether or not this entry is streamed. Defaults to false.
36
+ * @param abort an abort function to cancel the transmission of this chat entry. Specially useful for canceling streamings.
37
+ */
38
+ constructor(value: TextChatEntry, isStreamed?: boolean, abort?: () => void);
39
+ static createUserEntry(content: string): ChatEntry;
40
+ static createStreamedBotEntry(abort: () => void): ChatEntry;
41
+ setValue(value: TextChatEntry): void;
42
+ getValue(): TextChatEntry;
43
+ finish(): void;
44
+ hasFinished(): boolean;
45
+ onChange(listener: ChatEntryListener): () => void;
46
+ }
47
+ export {};
48
+ //# sourceMappingURL=ChatEntry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ChatEntry.d.ts","sourceRoot":"","sources":["../../src/state/ChatEntry.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,GAAG,SAAS,CAAC;IACzB;;OAEG;IACH,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,UAAW,SAAQ,kBAAkB;IACpD;;OAEG;IACH,UAAU,CAAC,EAAE,SAAS,GAAG,WAAW,CAAC;CACtC;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,KAAK,EAAE,KAAK,GAAG,MAAM,GAAG,QAAQ,CAAC;IAEjC,OAAO,CAAC,EAAE,UAAU,EAAE,CAAC;IACvB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAEhB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;CAEhB;AAED,KAAK,iBAAiB,GAAG,CAAC,KAAK,EAAE,aAAa,KAAK,IAAI,CAAA;AAIvD,qBAAa,SAAS;IACpB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;IACnB,OAAO,CAAC,KAAK,CAAe;IAC5B,OAAO,CAAC,cAAc,CAAS;IAC/B,OAAO,CAAC,SAAS,CAA0B;IAC3C,KAAK,EAAE,MAAM,IAAI,CAAA;IAEjB;;;;OAIG;gBACS,KAAK,EAAE,aAAa,EAAE,UAAU,UAAQ,EAAE,KAAK,aAAW;IAOtE,MAAM,CAAC,eAAe,CAAC,OAAO,EAAE,MAAM;IAStC,MAAM,CAAC,sBAAsB,CAAC,KAAK,EAAE,MAAM,IAAI;IAI/C,QAAQ,CAAC,KAAK,EAAE,aAAa;IAM7B,QAAQ;IAIR,MAAM;IAKN,WAAW;IAIX,QAAQ,CAAC,QAAQ,EAAE,iBAAiB;CAMrC"}
@@ -0,0 +1,55 @@
1
+ import { pull } from 'lodash';
2
+ let nextId = 0;
3
+ export class ChatEntry {
4
+ id;
5
+ value;
6
+ streamFinished;
7
+ listeners = [];
8
+ abort;
9
+ /**
10
+ * @param value the value of the entry.
11
+ * @param isStreamed whether or not this entry is streamed. Defaults to false.
12
+ * @param abort an abort function to cancel the transmission of this chat entry. Specially useful for canceling streamings.
13
+ */
14
+ constructor(value, isStreamed = false, abort = () => { }) {
15
+ this.id = nextId++;
16
+ this.value = value;
17
+ this.streamFinished = !isStreamed;
18
+ this.abort = abort;
19
+ }
20
+ static createUserEntry(content) {
21
+ return new ChatEntry({
22
+ agent: 'user',
23
+ type: 'text',
24
+ content,
25
+ updated: new Date().toISOString(),
26
+ });
27
+ }
28
+ static createStreamedBotEntry(abort) {
29
+ return new ChatEntry({ agent: 'bot', type: 'md', content: '' }, true, abort);
30
+ }
31
+ setValue(value) {
32
+ if (this.streamFinished)
33
+ return;
34
+ this.value = value;
35
+ this.listeners.forEach(l => l(this.value));
36
+ }
37
+ getValue() {
38
+ return this.value;
39
+ }
40
+ finish() {
41
+ this.streamFinished = true;
42
+ this.listeners = [];
43
+ }
44
+ hasFinished() {
45
+ return this.streamFinished;
46
+ }
47
+ onChange(listener) {
48
+ if (!this.streamFinished)
49
+ this.listeners.push(listener);
50
+ return () => {
51
+ pull(this.listeners, listener);
52
+ };
53
+ }
54
+ }
55
+ //# sourceMappingURL=ChatEntry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ChatEntry.js","sourceRoot":"","sources":["../../src/state/ChatEntry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAA;AAmC7B,IAAI,MAAM,GAAG,CAAC,CAAA;AAEd,MAAM,OAAO,SAAS;IACX,EAAE,CAAQ;IACX,KAAK,CAAe;IACpB,cAAc,CAAS;IACvB,SAAS,GAAwB,EAAE,CAAA;IAC3C,KAAK,CAAY;IAEjB;;;;OAIG;IACH,YAAY,KAAoB,EAAE,UAAU,GAAG,KAAK,EAAE,KAAK,GAAG,GAAG,EAAE,GAAE,CAAC;QACpE,IAAI,CAAC,EAAE,GAAG,MAAM,EAAE,CAAA;QAClB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAA;QAClB,IAAI,CAAC,cAAc,GAAG,CAAC,UAAU,CAAA;QACjC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAA;IACpB,CAAC;IAED,MAAM,CAAC,eAAe,CAAC,OAAe;QACpC,OAAO,IAAI,SAAS,CAAC;YACnB,KAAK,EAAE,MAAM;YACb,IAAI,EAAE,MAAM;YACZ,OAAO;YACP,OAAO,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;SAClC,CAAC,CAAA;IACJ,CAAC;IAED,MAAM,CAAC,sBAAsB,CAAC,KAAiB;QAC7C,OAAO,IAAI,SAAS,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,CAAA;IAC9E,CAAC;IAED,QAAQ,CAAC,KAAoB;QAC3B,IAAI,IAAI,CAAC,cAAc;YAAE,OAAM;QAC/B,IAAI,CAAC,KAAK,GAAG,KAAK,CAAA;QAClB,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAA;IAC5C,CAAC;IAED,QAAQ;QACN,OAAO,IAAI,CAAC,KAAK,CAAA;IACnB,CAAC;IAED,MAAM;QACJ,IAAI,CAAC,cAAc,GAAG,IAAI,CAAA;QAC1B,IAAI,CAAC,SAAS,GAAG,EAAE,CAAA;IACrB,CAAC;IAED,WAAW;QACT,OAAO,IAAI,CAAC,cAAc,CAAA;IAC5B,CAAC;IAED,QAAQ,CAAC,QAA2B;QAClC,IAAI,CAAC,IAAI,CAAC,cAAc;YAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;QACvD,OAAO,GAAG,EAAE;YACV,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAA;QAChC,CAAC,CAAA;IACH,CAAC;CACF"}
@@ -0,0 +1,46 @@
1
+ import { ChatEntry } from './ChatEntry.js';
2
+ import { ObservableState } from './ObservableState.js';
3
+ interface Labeled {
4
+ id: string;
5
+ label: string;
6
+ }
7
+ export interface ChatProperties {
8
+ label: string;
9
+ agent?: Labeled;
10
+ workspace?: Labeled;
11
+ stack?: Labeled;
12
+ knowledgeSources?: Labeled[];
13
+ isLoading?: boolean;
14
+ nextMessage?: string;
15
+ }
16
+ type ChatMessagesListener = (chat: ChatEntry[]) => void;
17
+ export type MessageInterceptor = (entry: ChatEntry, chat: ChatState) => boolean | undefined | void | Promise<boolean | undefined | void>;
18
+ interface Options {
19
+ id: string;
20
+ initial: ChatProperties;
21
+ interceptors?: MessageInterceptor[];
22
+ entries?: ChatEntry[];
23
+ }
24
+ export declare class ChatState extends ObservableState<ChatProperties> {
25
+ readonly id: string;
26
+ private entries;
27
+ private messagesListeners;
28
+ private readonly interceptors;
29
+ /**
30
+ * @param id the id of the chat.
31
+ * @param initial the initial state.
32
+ * @param interceptors a list of interceptors to run whenever a new message (entry) is added to the chat. If an interception function
33
+ * returns false, the next interceptors are not run. Attention: when multiple messages are added at once, only the last goes through the
34
+ * interceptors. Furthermore, messages created by the constructor don't go through the interceptors, only messages added via `pushMessage`
35
+ * do.
36
+ */
37
+ constructor({ id, initial, entries, interceptors }: Options);
38
+ private runMessagesListeners;
39
+ private runInterceptors;
40
+ pushMessage(...entries: ChatEntry[]): void;
41
+ popMessage(quantity?: number): void;
42
+ getMessages(): ChatEntry[];
43
+ onChangeMessages(listener: ChatMessagesListener): () => void;
44
+ }
45
+ export {};
46
+ //# sourceMappingURL=ChatState.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ChatState.d.ts","sourceRoot":"","sources":["../../src/state/ChatState.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AACvC,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;AAEnD,UAAU,OAAO;IACf,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,gBAAgB,CAAC,EAAE,OAAO,EAAE,CAAC;IAC7B,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,KAAK,oBAAoB,GAAG,CAAC,IAAI,EAAE,SAAS,EAAE,KAAK,IAAI,CAAA;AAEvD,MAAM,MAAM,kBAAkB,GAAG,CAAC,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,KAAK,OAAO,GAAG,SAAS,GAAG,IAAI,GAAG,OAAO,CAAC,OAAO,GAAG,SAAS,GAAG,IAAI,CAAC,CAAA;AAExI,UAAU,OAAO;IACf,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,cAAc,CAAC;IACxB,YAAY,CAAC,EAAE,kBAAkB,EAAE,CAAC;IACpC,OAAO,CAAC,EAAE,SAAS,EAAE,CAAC;CACvB;AAED,qBAAa,SAAU,SAAQ,eAAe,CAAC,cAAc,CAAC;IAC5D,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;IACnB,OAAO,CAAC,OAAO,CAAa;IAC5B,OAAO,CAAC,iBAAiB,CAA6B;IACtD,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAsB;IAEnD;;;;;;;OAOG;gBACS,EAAE,EAAE,EAAE,OAAO,EAAE,OAAY,EAAE,YAAiB,EAAE,EAAE,OAAO;IAOrE,OAAO,CAAC,oBAAoB;YAId,eAAe;IAO7B,WAAW,CAAC,GAAG,OAAO,EAAE,SAAS,EAAE;IAOnC,UAAU,CAAC,QAAQ,SAAI;IAKvB,WAAW;IAIX,gBAAgB,CAAC,QAAQ,EAAE,oBAAoB;CAMhD"}
@@ -0,0 +1,53 @@
1
+ import { dropRight, last, pull } from 'lodash';
2
+ import { ObservableState } from './ObservableState.js';
3
+ export class ChatState extends ObservableState {
4
+ id;
5
+ entries;
6
+ messagesListeners = [];
7
+ interceptors;
8
+ /**
9
+ * @param id the id of the chat.
10
+ * @param initial the initial state.
11
+ * @param interceptors a list of interceptors to run whenever a new message (entry) is added to the chat. If an interception function
12
+ * returns false, the next interceptors are not run. Attention: when multiple messages are added at once, only the last goes through the
13
+ * interceptors. Furthermore, messages created by the constructor don't go through the interceptors, only messages added via `pushMessage`
14
+ * do.
15
+ */
16
+ constructor({ id, initial, entries = [], interceptors = [] }) {
17
+ super(initial);
18
+ this.id = id;
19
+ this.interceptors = interceptors;
20
+ this.entries = entries;
21
+ }
22
+ runMessagesListeners() {
23
+ this.messagesListeners.forEach(l => l(this.entries));
24
+ }
25
+ async runInterceptors(entry) {
26
+ for (const interceptor of this.interceptors) {
27
+ const result = await interceptor(entry, this);
28
+ if (result === false)
29
+ break;
30
+ }
31
+ }
32
+ pushMessage(...entries) {
33
+ if (!entries.length)
34
+ return;
35
+ this.entries = [...this.entries, ...entries];
36
+ this.runMessagesListeners();
37
+ this.runInterceptors(last(entries));
38
+ }
39
+ popMessage(quantity = 1) {
40
+ this.entries = dropRight(this.entries, quantity);
41
+ this.runMessagesListeners();
42
+ }
43
+ getMessages() {
44
+ return this.entries;
45
+ }
46
+ onChangeMessages(listener) {
47
+ this.messagesListeners.push(listener);
48
+ return () => {
49
+ pull(this.messagesListeners, listener);
50
+ };
51
+ }
52
+ }
53
+ //# sourceMappingURL=ChatState.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ChatState.js","sourceRoot":"","sources":["../../src/state/ChatState.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAA;AAE9C,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;AA4BnD,MAAM,OAAO,SAAU,SAAQ,eAA+B;IACnD,EAAE,CAAQ;IACX,OAAO,CAAa;IACpB,iBAAiB,GAA2B,EAAE,CAAA;IACrC,YAAY,CAAsB;IAEnD;;;;;;;OAOG;IACH,YAAY,EAAE,EAAE,EAAE,OAAO,EAAE,OAAO,GAAG,EAAE,EAAE,YAAY,GAAG,EAAE,EAAW;QACnE,KAAK,CAAC,OAAO,CAAC,CAAA;QACd,IAAI,CAAC,EAAE,GAAG,EAAE,CAAA;QACZ,IAAI,CAAC,YAAY,GAAG,YAAY,CAAA;QAChC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAA;IACxB,CAAC;IAEO,oBAAoB;QAC1B,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAA;IACtD,CAAC;IAEO,KAAK,CAAC,eAAe,CAAC,KAAgB;QAC5C,KAAK,MAAM,WAAW,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;YAC5C,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,KAAK,EAAE,IAAI,CAAC,CAAA;YAC7C,IAAI,MAAM,KAAK,KAAK;gBAAE,MAAK;QAC7B,CAAC;IACH,CAAC;IAED,WAAW,CAAC,GAAG,OAAoB;QACjC,IAAI,CAAC,OAAO,CAAC,MAAM;YAAE,OAAM;QAC3B,IAAI,CAAC,OAAO,GAAG,CAAC,GAAG,IAAI,CAAC,OAAO,EAAE,GAAG,OAAO,CAAC,CAAA;QAC5C,IAAI,CAAC,oBAAoB,EAAE,CAAA;QAC3B,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,OAAO,CAAE,CAAC,CAAA;IACtC,CAAC;IAED,UAAU,CAAC,QAAQ,GAAG,CAAC;QACrB,IAAI,CAAC,OAAO,GAAG,SAAS,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAA;QAChD,IAAI,CAAC,oBAAoB,EAAE,CAAA;IAC7B,CAAC;IAED,WAAW;QACT,OAAO,IAAI,CAAC,OAAO,CAAA;IACrB,CAAC;IAED,gBAAgB,CAAC,QAA8B;QAC7C,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;QACrC,OAAO,GAAG,EAAE;YACV,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,QAAQ,CAAC,CAAA;QACxC,CAAC,CAAA;IACH,CAAC;CACF"}
@@ -0,0 +1,17 @@
1
+ import { ChatState } from './ChatState.js';
2
+ type TabChangeListener = (chats: ChatState[], activeId: string) => void;
3
+ export declare class ChatTabsController {
4
+ private chats;
5
+ private activeChatId;
6
+ private listeners;
7
+ private runListeners;
8
+ add(...chats: ChatState[]): void;
9
+ remove(...ids: string[]): void;
10
+ get(id: string): ChatState | undefined;
11
+ getActiveChatId(): string;
12
+ getAll(): ChatState[];
13
+ onChange(listener: TabChangeListener): () => void;
14
+ select(id: string): void;
15
+ }
16
+ export {};
17
+ //# sourceMappingURL=ChatTabsController.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ChatTabsController.d.ts","sourceRoot":"","sources":["../../src/state/ChatTabsController.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AAEvC,KAAK,iBAAiB,GAAG,CAAC,KAAK,EAAE,SAAS,EAAE,EAAE,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAA;AAEvE,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,KAAK,CAAkB;IAC/B,OAAO,CAAC,YAAY,CAAK;IACzB,OAAO,CAAC,SAAS,CAA0B;IAE3C,OAAO,CAAC,YAAY;IAIpB,GAAG,CAAC,GAAG,KAAK,EAAE,SAAS,EAAE;IAMzB,MAAM,CAAC,GAAG,GAAG,EAAE,MAAM,EAAE;IAWvB,GAAG,CAAC,EAAE,EAAE,MAAM;IAId,eAAe;IAIf,MAAM;IAIN,QAAQ,CAAC,QAAQ,EAAE,iBAAiB;IAOpC,MAAM,CAAC,EAAE,EAAE,MAAM;CAIlB"}
@@ -0,0 +1,47 @@
1
+ import { last, pull } from 'lodash';
2
+ export class ChatTabsController {
3
+ chats = [];
4
+ activeChatId = '';
5
+ listeners = [];
6
+ runListeners() {
7
+ this.listeners.forEach(l => l(this.chats, this.activeChatId));
8
+ }
9
+ add(...chats) {
10
+ if (!chats.length)
11
+ return;
12
+ this.chats = [...this.chats, ...chats];
13
+ this.runListeners();
14
+ }
15
+ remove(...ids) {
16
+ if (this.chats.length <= 1 || !ids.length)
17
+ return;
18
+ const currentActiveIndex = this.chats.findIndex(c => c.id === this.activeChatId);
19
+ this.chats = this.chats.filter(c => !ids.includes(c.id));
20
+ if (ids.includes(this.activeChatId)) {
21
+ if (currentActiveIndex === -1)
22
+ this.activeChatId = this.chats[0]?.id;
23
+ this.activeChatId = currentActiveIndex < this.chats.length ? this.chats[currentActiveIndex].id : last(this.chats)?.id ?? '';
24
+ }
25
+ this.runListeners();
26
+ }
27
+ get(id) {
28
+ return this.chats.find(c => c.id === id);
29
+ }
30
+ getActiveChatId() {
31
+ return this.activeChatId;
32
+ }
33
+ getAll() {
34
+ return this.chats;
35
+ }
36
+ onChange(listener) {
37
+ this.listeners.push(listener);
38
+ return () => {
39
+ pull(this.listeners, listener);
40
+ };
41
+ }
42
+ select(id) {
43
+ this.activeChatId = id;
44
+ this.runListeners();
45
+ }
46
+ }
47
+ //# sourceMappingURL=ChatTabsController.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ChatTabsController.js","sourceRoot":"","sources":["../../src/state/ChatTabsController.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAA;AAKnC,MAAM,OAAO,kBAAkB;IACrB,KAAK,GAAgB,EAAE,CAAA;IACvB,YAAY,GAAG,EAAE,CAAA;IACjB,SAAS,GAAwB,EAAE,CAAA;IAEnC,YAAY;QAClB,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC,CAAA;IAC/D,CAAC;IAED,GAAG,CAAC,GAAG,KAAkB;QACvB,IAAI,CAAC,KAAK,CAAC,MAAM;YAAE,OAAM;QACzB,IAAI,CAAC,KAAK,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE,GAAG,KAAK,CAAC,CAAA;QACtC,IAAI,CAAC,YAAY,EAAE,CAAA;IACrB,CAAC;IAED,MAAM,CAAC,GAAG,GAAa;QACrB,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM;YAAE,OAAM;QACjD,MAAM,kBAAkB,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,IAAI,CAAC,YAAY,CAAC,CAAA;QAChF,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;QACxD,IAAI,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC;YACpC,IAAI,kBAAkB,KAAK,CAAC,CAAC;gBAAE,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAA;YACpE,IAAI,CAAC,YAAY,GAAG,kBAAkB,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,EAAE,IAAI,EAAE,CAAA;QAC7H,CAAC;QACD,IAAI,CAAC,YAAY,EAAE,CAAA;IACrB,CAAC;IAED,GAAG,CAAC,EAAU;QACZ,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAA;IAC1C,CAAC;IAED,eAAe;QACb,OAAO,IAAI,CAAC,YAAY,CAAA;IAC1B,CAAC;IAED,MAAM;QACJ,OAAO,IAAI,CAAC,KAAK,CAAA;IACnB,CAAC;IAED,QAAQ,CAAC,QAA2B;QAClC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;QAC7B,OAAO,GAAG,EAAE;YACV,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAA;QAChC,CAAC,CAAA;IACH,CAAC;IAED,MAAM,CAAC,EAAU;QACf,IAAI,CAAC,YAAY,GAAG,EAAE,CAAA;QACtB,IAAI,CAAC,YAAY,EAAE,CAAA;IACrB,CAAC;CACF"}
@@ -0,0 +1,10 @@
1
+ export type ObservableStateListener<T, K extends keyof T> = (value: T[K]) => void;
2
+ export declare class ObservableState<T> {
3
+ private state;
4
+ private listeners;
5
+ constructor(initial: T);
6
+ set<K extends keyof T>(key: K, value: T[K]): void;
7
+ get<K extends keyof T>(key: K): T[K];
8
+ onChange<K extends keyof T>(key: K, listener: (value: T[K]) => void): () => void;
9
+ }
10
+ //# sourceMappingURL=ObservableState.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ObservableState.d.ts","sourceRoot":"","sources":["../../src/state/ObservableState.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,uBAAuB,CAAC,CAAC,EAAE,CAAC,SAAS,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,CAAA;AAMjF,qBAAa,eAAe,CAAC,CAAC;IAC5B,OAAO,CAAC,KAAK,CAAG;IAChB,OAAO,CAAC,SAAS,CAAmB;gBAExB,OAAO,EAAE,CAAC;IAItB,GAAG,CAAC,CAAC,SAAS,MAAM,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC;IAO1C,GAAG,CAAC,CAAC,SAAS,MAAM,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IAIpC,QAAQ,CAAC,CAAC,SAAS,MAAM,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI;CAOpE"}
@@ -0,0 +1,25 @@
1
+ import { pull } from 'lodash';
2
+ export class ObservableState {
3
+ state;
4
+ listeners = {};
5
+ constructor(initial) {
6
+ this.state = { ...initial };
7
+ }
8
+ set(key, value) {
9
+ if (this.state[key] !== value) {
10
+ this.state[key] = value;
11
+ this.listeners[key]?.forEach(l => l(value));
12
+ }
13
+ }
14
+ get(key) {
15
+ return this.state[key];
16
+ }
17
+ onChange(key, listener) {
18
+ this.listeners[key] ??= [];
19
+ this.listeners[key].push(listener);
20
+ return () => {
21
+ pull(this.listeners[key], listener);
22
+ };
23
+ }
24
+ }
25
+ //# sourceMappingURL=ObservableState.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ObservableState.js","sourceRoot":"","sources":["../../src/state/ObservableState.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAA;AAQ7B,MAAM,OAAO,eAAe;IAClB,KAAK,CAAG;IACR,SAAS,GAAiB,EAAE,CAAA;IAEpC,YAAY,OAAU;QACpB,IAAI,CAAC,KAAK,GAAG,EAAE,GAAG,OAAO,EAAE,CAAA;IAC7B,CAAC;IAED,GAAG,CAAoB,GAAM,EAAE,KAAW;QACxC,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,KAAK,EAAE,CAAC;YAC9B,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,KAAK,CAAA;YACvB,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAA;QAC7C,CAAC;IACH,CAAC;IAED,GAAG,CAAoB,GAAM;QAC3B,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;IACxB,CAAC;IAED,QAAQ,CAAoB,GAAM,EAAE,QAA+B;QACjE,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,EAAE,CAAA;QAC1B,IAAI,CAAC,SAAS,CAAC,GAAG,CAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;QACnC,OAAO,GAAG,EAAE;YACV,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAE,EAAE,QAAQ,CAAC,CAAA;QACtC,CAAC,CAAA;IACH,CAAC;CACF"}
@@ -0,0 +1,19 @@
1
+ import { ChatTabsController } from './ChatTabsController.js';
2
+ import { ObservableState } from './ObservableState.js';
3
+ export interface WidgetProperties {
4
+ isStackSelectionOpen?: boolean;
5
+ isWorkspaceSelectionOpen?: boolean;
6
+ isAgentSelectionOpen?: boolean;
7
+ isKnowledgeSourceSelectionOpen?: boolean;
8
+ isCodeEditorOpen?: boolean;
9
+ isChatHistoryOpen?: boolean;
10
+ isMinimized?: boolean;
11
+ code?: string;
12
+ }
13
+ export declare class WidgetState extends ObservableState<WidgetProperties> {
14
+ readonly chatTabs: ChatTabsController;
15
+ constructor(initial?: WidgetProperties, chatTabs?: ChatTabsController);
16
+ private createCloseOthersBehavior;
17
+ private closeOtherPanels;
18
+ }
19
+ //# sourceMappingURL=WidgetState.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WidgetState.d.ts","sourceRoot":"","sources":["../../src/state/WidgetState.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAA;AACzD,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;AAEnD,MAAM,WAAW,gBAAgB;IAC/B,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,wBAAwB,CAAC,EAAE,OAAO,CAAC;IACnC,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,8BAA8B,CAAC,EAAE,OAAO,CAAC;IACzC,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAOD,qBAAa,WAAY,SAAQ,eAAe,CAAC,gBAAgB,CAAC;IAChE,QAAQ,CAAC,QAAQ,EAAE,kBAAkB,CAAA;gBAEzB,OAAO,GAAE,gBAAqB,EAAE,QAAQ,CAAC,EAAE,kBAAkB;IAMzE,OAAO,CAAC,yBAAyB;IAQjC,OAAO,CAAC,gBAAgB;CAKzB"}
@@ -0,0 +1,29 @@
1
+ import { ChatTabsController } from './ChatTabsController.js';
2
+ import { ObservableState } from './ObservableState.js';
3
+ const panelKeys = [
4
+ 'isAgentSelectionOpen', 'isChatHistoryOpen', 'isCodeEditorOpen', 'isKnowledgeSourceSelectionOpen', 'isStackSelectionOpen',
5
+ 'isWorkspaceSelectionOpen',
6
+ ];
7
+ export class WidgetState extends ObservableState {
8
+ chatTabs;
9
+ constructor(initial = {}, chatTabs) {
10
+ super(initial);
11
+ this.chatTabs = chatTabs ?? new ChatTabsController();
12
+ this.createCloseOthersBehavior();
13
+ }
14
+ createCloseOthersBehavior() {
15
+ panelKeys.forEach((key) => {
16
+ this.onChange(key, (value) => {
17
+ if (value)
18
+ this.closeOtherPanels(key);
19
+ });
20
+ });
21
+ }
22
+ closeOtherPanels(leaveOpen) {
23
+ panelKeys.forEach((key) => {
24
+ if (key !== leaveOpen)
25
+ this.set(key, false);
26
+ });
27
+ }
28
+ }
29
+ //# sourceMappingURL=WidgetState.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WidgetState.js","sourceRoot":"","sources":["../../src/state/WidgetState.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAA;AACzD,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;AAanD,MAAM,SAAS,GAA+B;IAC5C,sBAAsB,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,gCAAgC,EAAE,sBAAsB;IACzH,0BAA0B;CAC3B,CAAA;AAED,MAAM,OAAO,WAAY,SAAQ,eAAiC;IACvD,QAAQ,CAAoB;IAErC,YAAY,UAA4B,EAAE,EAAE,QAA6B;QACvE,KAAK,CAAC,OAAO,CAAC,CAAA;QACd,IAAI,CAAC,QAAQ,GAAG,QAAQ,IAAI,IAAI,kBAAkB,EAAE,CAAA;QACpD,IAAI,CAAC,yBAAyB,EAAE,CAAA;IAClC,CAAC;IAEO,yBAAyB;QAC/B,SAAS,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE;YACxB,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,KAAK,EAAE,EAAE;gBAC3B,IAAI,KAAK;oBAAE,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAA;YACvC,CAAC,CAAC,CAAA;QACJ,CAAC,CAAC,CAAA;IACJ,CAAC;IAEO,gBAAgB,CAAC,SAAiC;QACxD,SAAS,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE;YACxB,IAAI,GAAG,KAAK,SAAS;gBAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAA;QAC7C,CAAC,CAAC,CAAA;IACJ,CAAC;CACF"}
@@ -0,0 +1,17 @@
1
+ import { WithStyle } from '@stack-spot/portal-theme';
2
+ export interface WithChildren<T = React.ReactNode> {
3
+ children?: T;
4
+ }
5
+ export type PropsOf<T extends React.FunctionComponent> = T extends React.FunctionComponent<infer P> ? P : never;
6
+ export interface ButtonAction extends WithStyle {
7
+ icon?: React.ReactElement;
8
+ color?: string;
9
+ label: string;
10
+ onClick: () => void;
11
+ }
12
+ export interface MinimizedActions {
13
+ onCollapse?: () => void;
14
+ onExpand?: () => void;
15
+ onClose?: () => void;
16
+ }
17
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAA;AAEpD,MAAM,WAAW,YAAY,CAAC,CAAC,GAAG,KAAK,CAAC,SAAS;IAC/C,QAAQ,CAAC,EAAE,CAAC,CAAC;CACd;AAED,MAAM,MAAM,OAAO,CAAC,CAAC,SAAS,KAAK,CAAC,iBAAiB,IAAI,CAAC,SAAS,KAAK,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK,CAAA;AAE/G,MAAM,WAAW,YAAa,SAAQ,SAAS;IAC7C,IAAI,CAAC,EAAE,KAAK,CAAC,YAAY,CAAC;IAC1B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB;AAED,MAAM,WAAW,gBAAgB;IAC/B,UAAU,CAAC,EAAE,MAAM,IAAI,CAAC;IACxB,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;IACtB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;CACtB"}
package/dist/types.js ADDED
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,6 @@
1
+ import { FixedChatRequest } from '@stack-spot/portal-network';
2
+ import { ChatState, MessageInterceptor } from '../state/ChatState.js';
3
+ import { WidgetState } from '../state/WidgetState.js';
4
+ export declare function createNewChat(widget: WidgetState, interceptors: MessageInterceptor[]): void;
5
+ export declare function buildConversationContext(state: ChatState): FixedChatRequest['context'];
6
+ //# sourceMappingURL=chat.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chat.d.ts","sourceRoot":"","sources":["../../src/utils/chat.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAA;AAG7D,OAAO,EAAE,SAAS,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAA;AAClE,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAA;AAIlD,wBAAgB,aAAa,CAAC,MAAM,EAAE,WAAW,EAAE,YAAY,EAAE,kBAAkB,EAAE,QAKpF;AAED,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,SAAS,GAAG,gBAAgB,CAAC,SAAS,CAAC,CActF"}
@@ -0,0 +1,26 @@
1
+ import { getLanguage } from '@stack-spot/portal-translate';
2
+ import { ulid } from 'ulid';
3
+ import { ChatState } from '../state/ChatState.js';
4
+ let next = 1;
5
+ export function createNewChat(widget, interceptors) {
6
+ const id = ulid();
7
+ widget.chatTabs.add(new ChatState({ id, initial: { label: `Chat ${next}` }, interceptors }));
8
+ widget.chatTabs.select(id);
9
+ next++;
10
+ }
11
+ export function buildConversationContext(state) {
12
+ return {
13
+ workspace: state.get('workspace')?.id,
14
+ conversation_id: state.id,
15
+ stack_id: state.get('stack')?.id,
16
+ language: getLanguage(),
17
+ knowledge_sources: state.get('knowledgeSources')?.map(ks => ks.id),
18
+ agent_id: state.get('agent')?.id,
19
+ agent_built_in: !!state.get('agent'),
20
+ os: navigator.userAgent,
21
+ platform: 'web-widget',
22
+ platform_version: navigator.userAgent,
23
+ stackspot_ai_version: 'alpha',
24
+ };
25
+ }
26
+ //# sourceMappingURL=chat.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chat.js","sourceRoot":"","sources":["../../src/utils/chat.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAA;AAC1D,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAC3B,OAAO,EAAE,SAAS,EAAsB,MAAM,oBAAoB,CAAA;AAGlE,IAAI,IAAI,GAAG,CAAC,CAAA;AAEZ,MAAM,UAAU,aAAa,CAAC,MAAmB,EAAE,YAAkC;IACnF,MAAM,EAAE,GAAG,IAAI,EAAE,CAAA;IACjB,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,SAAS,CAAC,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,KAAK,EAAE,QAAQ,IAAI,EAAE,EAAE,EAAE,YAAY,EAAE,CAAC,CAAC,CAAA;IAC5F,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA;IAC1B,IAAI,EAAE,CAAA;AACR,CAAC;AAED,MAAM,UAAU,wBAAwB,CAAC,KAAgB;IACvD,OAAO;QACL,SAAS,EAAE,KAAK,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,EAAE;QACrC,eAAe,EAAE,KAAK,CAAC,EAAE;QACzB,QAAQ,EAAE,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,EAAE;QAChC,QAAQ,EAAE,WAAW,EAAE;QACvB,iBAAiB,EAAE,KAAK,CAAC,GAAG,CAAC,kBAAkB,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;QAClE,QAAQ,EAAE,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,EAAE;QAChC,cAAc,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC;QACpC,EAAE,EAAE,SAAS,CAAC,SAAS;QACvB,QAAQ,EAAE,YAAY;QACtB,gBAAgB,EAAE,SAAS,CAAC,SAAS;QACrC,oBAAoB,EAAE,OAAO;KAC9B,CAAA;AACH,CAAC"}
@@ -0,0 +1,6 @@
1
+ import { Language } from '@stack-spot/portal-translate';
2
+ export declare function formatDateForChatMessage(date: Date, language?: Language): string;
3
+ export declare function useDateFormatter(): {
4
+ formatForChatMessage: (date: Date) => string;
5
+ };
6
+ //# sourceMappingURL=date.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"date.d.ts","sourceRoot":"","sources":["../../src/utils/date.ts"],"names":[],"mappings":"AAAA,OAAO,EAAc,QAAQ,EAA4B,MAAM,8BAA8B,CAAA;AAW7F,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,IAAI,EAAE,QAAQ,GAAE,QAAwB,UAUtF;AAED,wBAAgB,gBAAgB;iCAGC,IAAI;EAEpC"}