@sveda-ai/vue 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 (490) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +9 -0
  3. package/dist/appearance.d.ts +52 -0
  4. package/dist/appearance.d.ts.map +1 -0
  5. package/dist/components/chat/AnimatedStreamBlock.vue.d.ts +16 -0
  6. package/dist/components/chat/AnimatedStreamBlock.vue.d.ts.map +1 -0
  7. package/dist/components/chat/ChatHistoryDropdown.vue.d.ts +17 -0
  8. package/dist/components/chat/ChatHistoryDropdown.vue.d.ts.map +1 -0
  9. package/dist/components/chat/ChatInput.vue.d.ts +30 -0
  10. package/dist/components/chat/ChatInput.vue.d.ts.map +1 -0
  11. package/dist/components/chat/ChatMessageActivityBlock.vue.d.ts +13 -0
  12. package/dist/components/chat/ChatMessageActivityBlock.vue.d.ts.map +1 -0
  13. package/dist/components/chat/ChatMessageItem.vue.d.ts +15 -0
  14. package/dist/components/chat/ChatMessageItem.vue.d.ts.map +1 -0
  15. package/dist/components/chat/ChatMessageList.vue.d.ts +31 -0
  16. package/dist/components/chat/ChatMessageList.vue.d.ts.map +1 -0
  17. package/dist/components/chat/ChatPendingIndicator.vue.d.ts +12 -0
  18. package/dist/components/chat/ChatPendingIndicator.vue.d.ts.map +1 -0
  19. package/dist/components/chat/ReasoningStream.vue.d.ts +11 -0
  20. package/dist/components/chat/ReasoningStream.vue.d.ts.map +1 -0
  21. package/dist/components/chat/index.d.ts +9 -0
  22. package/dist/components/chat/index.d.ts.map +1 -0
  23. package/dist/components/shell/SvedaAgentCompletedNotice.vue.d.ts +9 -0
  24. package/dist/components/shell/SvedaAgentCompletedNotice.vue.d.ts.map +1 -0
  25. package/dist/components/shell/SvedaAgentTasksPanel.vue.d.ts +12 -0
  26. package/dist/components/shell/SvedaAgentTasksPanel.vue.d.ts.map +1 -0
  27. package/dist/components/shell/SvedaChat.vue.d.ts +22 -0
  28. package/dist/components/shell/SvedaChat.vue.d.ts.map +1 -0
  29. package/dist/components/shell/SvedaContextUsageBar.vue.d.ts +10 -0
  30. package/dist/components/shell/SvedaContextUsageBar.vue.d.ts.map +1 -0
  31. package/dist/components/shell/SvedaHistorySheet.vue.d.ts +15 -0
  32. package/dist/components/shell/SvedaHistorySheet.vue.d.ts.map +1 -0
  33. package/dist/components/shell/SvedaHistorySidebar.vue.d.ts +15 -0
  34. package/dist/components/shell/SvedaHistorySidebar.vue.d.ts.map +1 -0
  35. package/dist/components/shell/SvedaInputSection.vue.d.ts +25 -0
  36. package/dist/components/shell/SvedaInputSection.vue.d.ts.map +1 -0
  37. package/dist/components/shell/SvedaLandingView.vue.d.ts +40 -0
  38. package/dist/components/shell/SvedaLandingView.vue.d.ts.map +1 -0
  39. package/dist/components/shell/SvedaMaxStepsNotice.vue.d.ts +13 -0
  40. package/dist/components/shell/SvedaMaxStepsNotice.vue.d.ts.map +1 -0
  41. package/dist/components/shell/SvedaMinimizedTrigger.vue.d.ts +15 -0
  42. package/dist/components/shell/SvedaMinimizedTrigger.vue.d.ts.map +1 -0
  43. package/dist/components/shell/SvedaModelControls.vue.d.ts +12 -0
  44. package/dist/components/shell/SvedaModelControls.vue.d.ts.map +1 -0
  45. package/dist/components/shell/SvedaModelSelect.vue.d.ts +10 -0
  46. package/dist/components/shell/SvedaModelSelect.vue.d.ts.map +1 -0
  47. package/dist/components/shell/SvedaQuickPrompts.vue.d.ts +13 -0
  48. package/dist/components/shell/SvedaQuickPrompts.vue.d.ts.map +1 -0
  49. package/dist/components/shell/SvedaResizeHandles.vue.d.ts +11 -0
  50. package/dist/components/shell/SvedaResizeHandles.vue.d.ts.map +1 -0
  51. package/dist/components/shell/SvedaTabs.vue.d.ts +17 -0
  52. package/dist/components/shell/SvedaTabs.vue.d.ts.map +1 -0
  53. package/dist/components/shell/SvedaToolbar.vue.d.ts +33 -0
  54. package/dist/components/shell/SvedaToolbar.vue.d.ts.map +1 -0
  55. package/dist/composables/useSvedaAgentTasks.d.ts +57 -0
  56. package/dist/composables/useSvedaAgentTasks.d.ts.map +1 -0
  57. package/dist/composables/useSvedaBootstrap.d.ts +18 -0
  58. package/dist/composables/useSvedaBootstrap.d.ts.map +1 -0
  59. package/dist/composables/useSvedaChat.d.ts +264 -0
  60. package/dist/composables/useSvedaChat.d.ts.map +1 -0
  61. package/dist/composables/useSvedaChatLayout.d.ts +39 -0
  62. package/dist/composables/useSvedaChatLayout.d.ts.map +1 -0
  63. package/dist/composables/useSvedaChatPage.d.ts +309 -0
  64. package/dist/composables/useSvedaChatPage.d.ts.map +1 -0
  65. package/dist/composables/useSvedaContextWindow.d.ts +10 -0
  66. package/dist/composables/useSvedaContextWindow.d.ts.map +1 -0
  67. package/dist/composables/useSvedaDocuments.d.ts +20 -0
  68. package/dist/composables/useSvedaDocuments.d.ts.map +1 -0
  69. package/dist/composables/useSvedaMaxStepsContinue.d.ts +12 -0
  70. package/dist/composables/useSvedaMaxStepsContinue.d.ts.map +1 -0
  71. package/dist/composables/useSvedaMessaging.d.ts +55 -0
  72. package/dist/composables/useSvedaMessaging.d.ts.map +1 -0
  73. package/dist/composables/useSvedaModel.d.ts +16 -0
  74. package/dist/composables/useSvedaModel.d.ts.map +1 -0
  75. package/dist/composables/useSvedaPrompts.d.ts +18 -0
  76. package/dist/composables/useSvedaPrompts.d.ts.map +1 -0
  77. package/dist/composables/useSvedaReadable.d.ts +3 -0
  78. package/dist/composables/useSvedaReadable.d.ts.map +1 -0
  79. package/dist/composables/useSvedaScroll.d.ts +19 -0
  80. package/dist/composables/useSvedaScroll.d.ts.map +1 -0
  81. package/dist/composables/useSvedaShell.d.ts +29 -0
  82. package/dist/composables/useSvedaShell.d.ts.map +1 -0
  83. package/dist/composables/useSvedaStreaming.d.ts +46 -0
  84. package/dist/composables/useSvedaStreaming.d.ts.map +1 -0
  85. package/dist/composables/useSvedaTool.d.ts +4 -0
  86. package/dist/composables/useSvedaTool.d.ts.map +1 -0
  87. package/dist/i18n/index.d.ts +18 -0
  88. package/dist/i18n/index.d.ts.map +1 -0
  89. package/dist/i18n/locales/en.d.ts +4 -0
  90. package/dist/i18n/locales/en.d.ts.map +1 -0
  91. package/dist/i18n/locales/ru.d.ts +4 -0
  92. package/dist/i18n/locales/ru.d.ts.map +1 -0
  93. package/dist/index.d.ts +64 -0
  94. package/dist/index.d.ts.map +1 -0
  95. package/dist/index.js +6612 -0
  96. package/dist/launcherIcons.d.ts +5 -0
  97. package/dist/launcherIcons.d.ts.map +1 -0
  98. package/dist/lib/assistantMessage.d.ts +89 -0
  99. package/dist/lib/assistantMessage.d.ts.map +1 -0
  100. package/dist/lib/chatHistoryMerge.d.ts +20 -0
  101. package/dist/lib/chatHistoryMerge.d.ts.map +1 -0
  102. package/dist/lib/chatI18nKeys.d.ts +2 -0
  103. package/dist/lib/chatI18nKeys.d.ts.map +1 -0
  104. package/dist/lib/chatMessageVisibility.d.ts +4 -0
  105. package/dist/lib/chatMessageVisibility.d.ts.map +1 -0
  106. package/dist/lib/chatTabs.d.ts +9 -0
  107. package/dist/lib/chatTabs.d.ts.map +1 -0
  108. package/dist/lib/chatTitle.d.ts +3 -0
  109. package/dist/lib/chatTitle.d.ts.map +1 -0
  110. package/dist/lib/chatUiStorage.d.ts +4 -0
  111. package/dist/lib/chatUiStorage.d.ts.map +1 -0
  112. package/dist/lib/finalizeMessages.d.ts +21 -0
  113. package/dist/lib/finalizeMessages.d.ts.map +1 -0
  114. package/dist/lib/markdown.d.ts +8 -0
  115. package/dist/lib/markdown.d.ts.map +1 -0
  116. package/dist/lib/modelLabels.d.ts +3 -0
  117. package/dist/lib/modelLabels.d.ts.map +1 -0
  118. package/dist/lib/pendingStatusRotation.d.ts +3 -0
  119. package/dist/lib/pendingStatusRotation.d.ts.map +1 -0
  120. package/dist/lib/useAnimatedText.d.ts +8 -0
  121. package/dist/lib/useAnimatedText.d.ts.map +1 -0
  122. package/dist/lib/userMessage.d.ts +17 -0
  123. package/dist/lib/userMessage.d.ts.map +1 -0
  124. package/dist/lib/utils.d.ts +3 -0
  125. package/dist/lib/utils.d.ts.map +1 -0
  126. package/dist/plugin.d.ts +64 -0
  127. package/dist/plugin.d.ts.map +1 -0
  128. package/dist/styles.css +5 -0
  129. package/dist/ui/alert-dialog/AlertDialog.vue.d.ts +18 -0
  130. package/dist/ui/alert-dialog/AlertDialog.vue.d.ts.map +1 -0
  131. package/dist/ui/alert-dialog/AlertDialogAction.vue.d.ts +18 -0
  132. package/dist/ui/alert-dialog/AlertDialogAction.vue.d.ts.map +1 -0
  133. package/dist/ui/alert-dialog/AlertDialogCancel.vue.d.ts +18 -0
  134. package/dist/ui/alert-dialog/AlertDialogCancel.vue.d.ts.map +1 -0
  135. package/dist/ui/alert-dialog/AlertDialogContent.vue.d.ts +32 -0
  136. package/dist/ui/alert-dialog/AlertDialogContent.vue.d.ts.map +1 -0
  137. package/dist/ui/alert-dialog/AlertDialogDescription.vue.d.ts +18 -0
  138. package/dist/ui/alert-dialog/AlertDialogDescription.vue.d.ts.map +1 -0
  139. package/dist/ui/alert-dialog/AlertDialogFooter.vue.d.ts +17 -0
  140. package/dist/ui/alert-dialog/AlertDialogFooter.vue.d.ts.map +1 -0
  141. package/dist/ui/alert-dialog/AlertDialogHeader.vue.d.ts +17 -0
  142. package/dist/ui/alert-dialog/AlertDialogHeader.vue.d.ts.map +1 -0
  143. package/dist/ui/alert-dialog/AlertDialogTitle.vue.d.ts +18 -0
  144. package/dist/ui/alert-dialog/AlertDialogTitle.vue.d.ts.map +1 -0
  145. package/dist/ui/alert-dialog/AlertDialogTrigger.vue.d.ts +14 -0
  146. package/dist/ui/alert-dialog/AlertDialogTrigger.vue.d.ts.map +1 -0
  147. package/dist/ui/alert-dialog/index.d.ts +10 -0
  148. package/dist/ui/alert-dialog/index.d.ts.map +1 -0
  149. package/dist/ui/badge/Badge.vue.d.ts +19 -0
  150. package/dist/ui/badge/Badge.vue.d.ts.map +1 -0
  151. package/dist/ui/badge/index.d.ts +7 -0
  152. package/dist/ui/badge/index.d.ts.map +1 -0
  153. package/dist/ui/button/Button.vue.d.ts +23 -0
  154. package/dist/ui/button/Button.vue.d.ts.map +1 -0
  155. package/dist/ui/button/index.d.ts +9 -0
  156. package/dist/ui/button/index.d.ts.map +1 -0
  157. package/dist/ui/card/Card.vue.d.ts +17 -0
  158. package/dist/ui/card/Card.vue.d.ts.map +1 -0
  159. package/dist/ui/card/CardContent.vue.d.ts +17 -0
  160. package/dist/ui/card/CardContent.vue.d.ts.map +1 -0
  161. package/dist/ui/card/CardDescription.vue.d.ts +17 -0
  162. package/dist/ui/card/CardDescription.vue.d.ts.map +1 -0
  163. package/dist/ui/card/CardFooter.vue.d.ts +17 -0
  164. package/dist/ui/card/CardFooter.vue.d.ts.map +1 -0
  165. package/dist/ui/card/CardHeader.vue.d.ts +17 -0
  166. package/dist/ui/card/CardHeader.vue.d.ts.map +1 -0
  167. package/dist/ui/card/CardTitle.vue.d.ts +17 -0
  168. package/dist/ui/card/CardTitle.vue.d.ts.map +1 -0
  169. package/dist/ui/card/index.d.ts +7 -0
  170. package/dist/ui/card/index.d.ts.map +1 -0
  171. package/dist/ui/checkbox/Checkbox.vue.d.ts +30 -0
  172. package/dist/ui/checkbox/Checkbox.vue.d.ts.map +1 -0
  173. package/dist/ui/checkbox/index.d.ts +2 -0
  174. package/dist/ui/checkbox/index.d.ts.map +1 -0
  175. package/dist/ui/dialog/Dialog.vue.d.ts +18 -0
  176. package/dist/ui/dialog/Dialog.vue.d.ts.map +1 -0
  177. package/dist/ui/dialog/DialogClose.vue.d.ts +14 -0
  178. package/dist/ui/dialog/DialogClose.vue.d.ts.map +1 -0
  179. package/dist/ui/dialog/DialogContent.vue.d.ts +32 -0
  180. package/dist/ui/dialog/DialogContent.vue.d.ts.map +1 -0
  181. package/dist/ui/dialog/DialogDescription.vue.d.ts +18 -0
  182. package/dist/ui/dialog/DialogDescription.vue.d.ts.map +1 -0
  183. package/dist/ui/dialog/DialogFooter.vue.d.ts +17 -0
  184. package/dist/ui/dialog/DialogFooter.vue.d.ts.map +1 -0
  185. package/dist/ui/dialog/DialogHeader.vue.d.ts +17 -0
  186. package/dist/ui/dialog/DialogHeader.vue.d.ts.map +1 -0
  187. package/dist/ui/dialog/DialogScrollContent.vue.d.ts +32 -0
  188. package/dist/ui/dialog/DialogScrollContent.vue.d.ts.map +1 -0
  189. package/dist/ui/dialog/DialogTitle.vue.d.ts +18 -0
  190. package/dist/ui/dialog/DialogTitle.vue.d.ts.map +1 -0
  191. package/dist/ui/dialog/DialogTrigger.vue.d.ts +14 -0
  192. package/dist/ui/dialog/DialogTrigger.vue.d.ts.map +1 -0
  193. package/dist/ui/dialog/index.d.ts +10 -0
  194. package/dist/ui/dialog/index.d.ts.map +1 -0
  195. package/dist/ui/dropdown-menu/DropdownMenu.vue.d.ts +18 -0
  196. package/dist/ui/dropdown-menu/DropdownMenu.vue.d.ts.map +1 -0
  197. package/dist/ui/dropdown-menu/DropdownMenuCheckboxItem.vue.d.ts +24 -0
  198. package/dist/ui/dropdown-menu/DropdownMenuCheckboxItem.vue.d.ts.map +1 -0
  199. package/dist/ui/dropdown-menu/DropdownMenuContent.vue.d.ts +32 -0
  200. package/dist/ui/dropdown-menu/DropdownMenuContent.vue.d.ts.map +1 -0
  201. package/dist/ui/dropdown-menu/DropdownMenuGroup.vue.d.ts +14 -0
  202. package/dist/ui/dropdown-menu/DropdownMenuGroup.vue.d.ts.map +1 -0
  203. package/dist/ui/dropdown-menu/DropdownMenuItem.vue.d.ts +19 -0
  204. package/dist/ui/dropdown-menu/DropdownMenuItem.vue.d.ts.map +1 -0
  205. package/dist/ui/dropdown-menu/DropdownMenuLabel.vue.d.ts +19 -0
  206. package/dist/ui/dropdown-menu/DropdownMenuLabel.vue.d.ts.map +1 -0
  207. package/dist/ui/dropdown-menu/DropdownMenuRadioGroup.vue.d.ts +18 -0
  208. package/dist/ui/dropdown-menu/DropdownMenuRadioGroup.vue.d.ts.map +1 -0
  209. package/dist/ui/dropdown-menu/DropdownMenuRadioItem.vue.d.ts +22 -0
  210. package/dist/ui/dropdown-menu/DropdownMenuRadioItem.vue.d.ts.map +1 -0
  211. package/dist/ui/dropdown-menu/DropdownMenuSeparator.vue.d.ts +8 -0
  212. package/dist/ui/dropdown-menu/DropdownMenuSeparator.vue.d.ts.map +1 -0
  213. package/dist/ui/dropdown-menu/DropdownMenuShortcut.vue.d.ts +17 -0
  214. package/dist/ui/dropdown-menu/DropdownMenuShortcut.vue.d.ts.map +1 -0
  215. package/dist/ui/dropdown-menu/DropdownMenuSub.vue.d.ts +18 -0
  216. package/dist/ui/dropdown-menu/DropdownMenuSub.vue.d.ts.map +1 -0
  217. package/dist/ui/dropdown-menu/DropdownMenuSubContent.vue.d.ts +34 -0
  218. package/dist/ui/dropdown-menu/DropdownMenuSubContent.vue.d.ts.map +1 -0
  219. package/dist/ui/dropdown-menu/DropdownMenuSubTrigger.vue.d.ts +18 -0
  220. package/dist/ui/dropdown-menu/DropdownMenuSubTrigger.vue.d.ts.map +1 -0
  221. package/dist/ui/dropdown-menu/DropdownMenuTrigger.vue.d.ts +14 -0
  222. package/dist/ui/dropdown-menu/DropdownMenuTrigger.vue.d.ts.map +1 -0
  223. package/dist/ui/dropdown-menu/index.d.ts +16 -0
  224. package/dist/ui/dropdown-menu/index.d.ts.map +1 -0
  225. package/dist/ui/input/Input.vue.d.ts +13 -0
  226. package/dist/ui/input/Input.vue.d.ts.map +1 -0
  227. package/dist/ui/input/index.d.ts +2 -0
  228. package/dist/ui/input/index.d.ts.map +1 -0
  229. package/dist/ui/label/Label.vue.d.ts +18 -0
  230. package/dist/ui/label/Label.vue.d.ts.map +1 -0
  231. package/dist/ui/label/index.d.ts +2 -0
  232. package/dist/ui/label/index.d.ts.map +1 -0
  233. package/dist/ui/responsive-dialog/ResponsiveDialog.vue.d.ts +32 -0
  234. package/dist/ui/responsive-dialog/ResponsiveDialog.vue.d.ts.map +1 -0
  235. package/dist/ui/responsive-dialog/index.d.ts +2 -0
  236. package/dist/ui/responsive-dialog/index.d.ts.map +1 -0
  237. package/dist/ui/scroll-area/ScrollArea.vue.d.ts +18 -0
  238. package/dist/ui/scroll-area/ScrollArea.vue.d.ts.map +1 -0
  239. package/dist/ui/scroll-area/ScrollBar.vue.d.ts +10 -0
  240. package/dist/ui/scroll-area/ScrollBar.vue.d.ts.map +1 -0
  241. package/dist/ui/scroll-area/index.d.ts +3 -0
  242. package/dist/ui/scroll-area/index.d.ts.map +1 -0
  243. package/dist/ui/select/Select.vue.d.ts +21 -0
  244. package/dist/ui/select/Select.vue.d.ts.map +1 -0
  245. package/dist/ui/select/SelectContent.vue.d.ts +28 -0
  246. package/dist/ui/select/SelectContent.vue.d.ts.map +1 -0
  247. package/dist/ui/select/SelectGroup.vue.d.ts +18 -0
  248. package/dist/ui/select/SelectGroup.vue.d.ts.map +1 -0
  249. package/dist/ui/select/SelectItem.vue.d.ts +18 -0
  250. package/dist/ui/select/SelectItem.vue.d.ts.map +1 -0
  251. package/dist/ui/select/SelectItemText.vue.d.ts +14 -0
  252. package/dist/ui/select/SelectItemText.vue.d.ts.map +1 -0
  253. package/dist/ui/select/SelectLabel.vue.d.ts +18 -0
  254. package/dist/ui/select/SelectLabel.vue.d.ts.map +1 -0
  255. package/dist/ui/select/SelectScrollDownButton.vue.d.ts +18 -0
  256. package/dist/ui/select/SelectScrollDownButton.vue.d.ts.map +1 -0
  257. package/dist/ui/select/SelectScrollUpButton.vue.d.ts +18 -0
  258. package/dist/ui/select/SelectScrollUpButton.vue.d.ts.map +1 -0
  259. package/dist/ui/select/SelectSeparator.vue.d.ts +8 -0
  260. package/dist/ui/select/SelectSeparator.vue.d.ts.map +1 -0
  261. package/dist/ui/select/SelectTrigger.vue.d.ts +18 -0
  262. package/dist/ui/select/SelectTrigger.vue.d.ts.map +1 -0
  263. package/dist/ui/select/SelectValue.vue.d.ts +14 -0
  264. package/dist/ui/select/SelectValue.vue.d.ts.map +1 -0
  265. package/dist/ui/select/index.d.ts +12 -0
  266. package/dist/ui/select/index.d.ts.map +1 -0
  267. package/dist/ui/sheet/Sheet.vue.d.ts +18 -0
  268. package/dist/ui/sheet/Sheet.vue.d.ts.map +1 -0
  269. package/dist/ui/sheet/SheetClose.vue.d.ts +14 -0
  270. package/dist/ui/sheet/SheetClose.vue.d.ts.map +1 -0
  271. package/dist/ui/sheet/SheetContent.vue.d.ts +34 -0
  272. package/dist/ui/sheet/SheetContent.vue.d.ts.map +1 -0
  273. package/dist/ui/sheet/SheetDescription.vue.d.ts +18 -0
  274. package/dist/ui/sheet/SheetDescription.vue.d.ts.map +1 -0
  275. package/dist/ui/sheet/SheetFooter.vue.d.ts +17 -0
  276. package/dist/ui/sheet/SheetFooter.vue.d.ts.map +1 -0
  277. package/dist/ui/sheet/SheetHeader.vue.d.ts +17 -0
  278. package/dist/ui/sheet/SheetHeader.vue.d.ts.map +1 -0
  279. package/dist/ui/sheet/SheetTitle.vue.d.ts +18 -0
  280. package/dist/ui/sheet/SheetTitle.vue.d.ts.map +1 -0
  281. package/dist/ui/sheet/SheetTrigger.vue.d.ts +14 -0
  282. package/dist/ui/sheet/SheetTrigger.vue.d.ts.map +1 -0
  283. package/dist/ui/sheet/index.d.ts +14 -0
  284. package/dist/ui/sheet/index.d.ts.map +1 -0
  285. package/dist/ui/switch/Switch.vue.d.ts +23 -0
  286. package/dist/ui/switch/Switch.vue.d.ts.map +1 -0
  287. package/dist/ui/switch/index.d.ts +2 -0
  288. package/dist/ui/switch/index.d.ts.map +1 -0
  289. package/dist/ui/textarea/Textarea.vue.d.ts +13 -0
  290. package/dist/ui/textarea/Textarea.vue.d.ts.map +1 -0
  291. package/dist/ui/textarea/index.d.ts +2 -0
  292. package/dist/ui/textarea/index.d.ts.map +1 -0
  293. package/dist/ui/toast/Toast.vue.d.ts +96 -0
  294. package/dist/ui/toast/Toast.vue.d.ts.map +1 -0
  295. package/dist/ui/toast/ToastAction.vue.d.ts +18 -0
  296. package/dist/ui/toast/ToastAction.vue.d.ts.map +1 -0
  297. package/dist/ui/toast/ToastClose.vue.d.ts +8 -0
  298. package/dist/ui/toast/ToastClose.vue.d.ts.map +1 -0
  299. package/dist/ui/toast/ToastDescription.vue.d.ts +18 -0
  300. package/dist/ui/toast/ToastDescription.vue.d.ts.map +1 -0
  301. package/dist/ui/toast/ToastProvider.vue.d.ts +14 -0
  302. package/dist/ui/toast/ToastProvider.vue.d.ts.map +1 -0
  303. package/dist/ui/toast/ToastTitle.vue.d.ts +18 -0
  304. package/dist/ui/toast/ToastTitle.vue.d.ts.map +1 -0
  305. package/dist/ui/toast/ToastViewport.vue.d.ts +8 -0
  306. package/dist/ui/toast/ToastViewport.vue.d.ts.map +1 -0
  307. package/dist/ui/toast/Toaster.vue.d.ts +3 -0
  308. package/dist/ui/toast/Toaster.vue.d.ts.map +1 -0
  309. package/dist/ui/toast/index.d.ts +23 -0
  310. package/dist/ui/toast/index.d.ts.map +1 -0
  311. package/dist/ui/toast/use-toast.d.ts +23 -0
  312. package/dist/ui/toast/use-toast.d.ts.map +1 -0
  313. package/dist/ui/tooltip/Tooltip.vue.d.ts +18 -0
  314. package/dist/ui/tooltip/Tooltip.vue.d.ts.map +1 -0
  315. package/dist/ui/tooltip/TooltipContent.vue.d.ts +26 -0
  316. package/dist/ui/tooltip/TooltipContent.vue.d.ts.map +1 -0
  317. package/dist/ui/tooltip/TooltipProvider.vue.d.ts +14 -0
  318. package/dist/ui/tooltip/TooltipProvider.vue.d.ts.map +1 -0
  319. package/dist/ui/tooltip/TooltipTrigger.vue.d.ts +14 -0
  320. package/dist/ui/tooltip/TooltipTrigger.vue.d.ts.map +1 -0
  321. package/dist/ui/tooltip/index.d.ts +5 -0
  322. package/dist/ui/tooltip/index.d.ts.map +1 -0
  323. package/dist/ui/utils.d.ts +2 -0
  324. package/dist/ui/utils.d.ts.map +1 -0
  325. package/dist/vue.css +1 -0
  326. package/package.json +64 -0
  327. package/src/appearance.ts +568 -0
  328. package/src/components/chat/AnimatedStreamBlock.vue +94 -0
  329. package/src/components/chat/ChatHistoryDropdown.vue +226 -0
  330. package/src/components/chat/ChatInput.vue +571 -0
  331. package/src/components/chat/ChatMessageActivityBlock.vue +447 -0
  332. package/src/components/chat/ChatMessageItem.vue +357 -0
  333. package/src/components/chat/ChatMessageList.vue +178 -0
  334. package/src/components/chat/ChatPendingIndicator.vue +163 -0
  335. package/src/components/chat/ReasoningStream.vue +112 -0
  336. package/src/components/chat/index.ts +8 -0
  337. package/src/components/shell/SvedaAgentCompletedNotice.vue +25 -0
  338. package/src/components/shell/SvedaAgentTasksPanel.vue +146 -0
  339. package/src/components/shell/SvedaChat.vue +514 -0
  340. package/src/components/shell/SvedaContextUsageBar.vue +33 -0
  341. package/src/components/shell/SvedaHistorySheet.vue +52 -0
  342. package/src/components/shell/SvedaHistorySidebar.vue +41 -0
  343. package/src/components/shell/SvedaInputSection.vue +53 -0
  344. package/src/components/shell/SvedaLandingView.vue +93 -0
  345. package/src/components/shell/SvedaMaxStepsNotice.vue +33 -0
  346. package/src/components/shell/SvedaMinimizedTrigger.vue +43 -0
  347. package/src/components/shell/SvedaModelControls.vue +47 -0
  348. package/src/components/shell/SvedaModelSelect.vue +32 -0
  349. package/src/components/shell/SvedaQuickPrompts.vue +44 -0
  350. package/src/components/shell/SvedaResizeHandles.vue +31 -0
  351. package/src/components/shell/SvedaTabs.vue +123 -0
  352. package/src/components/shell/SvedaToolbar.vue +171 -0
  353. package/src/composables/useSvedaAgentTasks.ts +93 -0
  354. package/src/composables/useSvedaBootstrap.ts +36 -0
  355. package/src/composables/useSvedaChat.ts +593 -0
  356. package/src/composables/useSvedaChatLayout.ts +539 -0
  357. package/src/composables/useSvedaChatPage.ts +339 -0
  358. package/src/composables/useSvedaContextWindow.ts +31 -0
  359. package/src/composables/useSvedaDocuments.ts +115 -0
  360. package/src/composables/useSvedaMaxStepsContinue.ts +68 -0
  361. package/src/composables/useSvedaMessaging.ts +99 -0
  362. package/src/composables/useSvedaModel.ts +85 -0
  363. package/src/composables/useSvedaPrompts.ts +59 -0
  364. package/src/composables/useSvedaReadable.ts +33 -0
  365. package/src/composables/useSvedaScroll.ts +93 -0
  366. package/src/composables/useSvedaShell.ts +91 -0
  367. package/src/composables/useSvedaStreaming.ts +408 -0
  368. package/src/composables/useSvedaTool.ts +18 -0
  369. package/src/i18n/index.ts +72 -0
  370. package/src/i18n/locales/en.ts +58 -0
  371. package/src/i18n/locales/ru.ts +59 -0
  372. package/src/index.ts +141 -0
  373. package/src/launcherIcons.ts +39 -0
  374. package/src/lib/assistantMessage.ts +437 -0
  375. package/src/lib/chatHistoryMerge.ts +93 -0
  376. package/src/lib/chatI18nKeys.ts +62 -0
  377. package/src/lib/chatMessageVisibility.ts +50 -0
  378. package/src/lib/chatTabs.ts +54 -0
  379. package/src/lib/chatTitle.ts +30 -0
  380. package/src/lib/chatUiStorage.ts +33 -0
  381. package/src/lib/finalizeMessages.ts +81 -0
  382. package/src/lib/markdown.ts +90 -0
  383. package/src/lib/modelLabels.ts +24 -0
  384. package/src/lib/pendingStatusRotation.ts +26 -0
  385. package/src/lib/shims-vue.d.ts +6 -0
  386. package/src/lib/useAnimatedText.ts +78 -0
  387. package/src/lib/userMessage.ts +55 -0
  388. package/src/lib/utils.ts +6 -0
  389. package/src/plugin.ts +164 -0
  390. package/src/styles.css +5 -0
  391. package/src/theme.css +95 -0
  392. package/src/theme.test.mjs +80 -0
  393. package/src/ui/alert-dialog/AlertDialog.vue +14 -0
  394. package/src/ui/alert-dialog/AlertDialogAction.vue +17 -0
  395. package/src/ui/alert-dialog/AlertDialogCancel.vue +24 -0
  396. package/src/ui/alert-dialog/AlertDialogContent.vue +39 -0
  397. package/src/ui/alert-dialog/AlertDialogDescription.vue +22 -0
  398. package/src/ui/alert-dialog/AlertDialogFooter.vue +21 -0
  399. package/src/ui/alert-dialog/AlertDialogHeader.vue +16 -0
  400. package/src/ui/alert-dialog/AlertDialogTitle.vue +19 -0
  401. package/src/ui/alert-dialog/AlertDialogTrigger.vue +11 -0
  402. package/src/ui/alert-dialog/index.ts +9 -0
  403. package/src/ui/badge/Badge.vue +16 -0
  404. package/src/ui/badge/index.ts +27 -0
  405. package/src/ui/button/Button.vue +56 -0
  406. package/src/ui/button/index.ts +50 -0
  407. package/src/ui/card/Card.vue +14 -0
  408. package/src/ui/card/CardContent.vue +14 -0
  409. package/src/ui/card/CardDescription.vue +14 -0
  410. package/src/ui/card/CardFooter.vue +14 -0
  411. package/src/ui/card/CardHeader.vue +14 -0
  412. package/src/ui/card/CardTitle.vue +14 -0
  413. package/src/ui/card/index.ts +6 -0
  414. package/src/ui/checkbox/Checkbox.vue +41 -0
  415. package/src/ui/checkbox/index.ts +1 -0
  416. package/src/ui/dialog/Dialog.vue +14 -0
  417. package/src/ui/dialog/DialogClose.vue +11 -0
  418. package/src/ui/dialog/DialogContent.vue +50 -0
  419. package/src/ui/dialog/DialogDescription.vue +24 -0
  420. package/src/ui/dialog/DialogFooter.vue +19 -0
  421. package/src/ui/dialog/DialogHeader.vue +16 -0
  422. package/src/ui/dialog/DialogScrollContent.vue +59 -0
  423. package/src/ui/dialog/DialogTitle.vue +29 -0
  424. package/src/ui/dialog/DialogTrigger.vue +11 -0
  425. package/src/ui/dialog/index.ts +9 -0
  426. package/src/ui/dropdown-menu/DropdownMenu.vue +14 -0
  427. package/src/ui/dropdown-menu/DropdownMenuCheckboxItem.vue +42 -0
  428. package/src/ui/dropdown-menu/DropdownMenuContent.vue +40 -0
  429. package/src/ui/dropdown-menu/DropdownMenuGroup.vue +11 -0
  430. package/src/ui/dropdown-menu/DropdownMenuItem.vue +30 -0
  431. package/src/ui/dropdown-menu/DropdownMenuLabel.vue +21 -0
  432. package/src/ui/dropdown-menu/DropdownMenuRadioGroup.vue +14 -0
  433. package/src/ui/dropdown-menu/DropdownMenuRadioItem.vue +43 -0
  434. package/src/ui/dropdown-menu/DropdownMenuSeparator.vue +21 -0
  435. package/src/ui/dropdown-menu/DropdownMenuShortcut.vue +14 -0
  436. package/src/ui/dropdown-menu/DropdownMenuSub.vue +14 -0
  437. package/src/ui/dropdown-menu/DropdownMenuSubContent.vue +30 -0
  438. package/src/ui/dropdown-menu/DropdownMenuSubTrigger.vue +31 -0
  439. package/src/ui/dropdown-menu/DropdownMenuTrigger.vue +13 -0
  440. package/src/ui/dropdown-menu/index.ts +16 -0
  441. package/src/ui/input/Input.vue +32 -0
  442. package/src/ui/input/index.ts +1 -0
  443. package/src/ui/label/Label.vue +22 -0
  444. package/src/ui/label/index.ts +1 -0
  445. package/src/ui/responsive-dialog/ResponsiveDialog.vue +55 -0
  446. package/src/ui/responsive-dialog/index.ts +1 -0
  447. package/src/ui/scroll-area/ScrollArea.vue +29 -0
  448. package/src/ui/scroll-area/ScrollBar.vue +30 -0
  449. package/src/ui/scroll-area/index.ts +2 -0
  450. package/src/ui/select/Select.vue +15 -0
  451. package/src/ui/select/SelectContent.vue +53 -0
  452. package/src/ui/select/SelectGroup.vue +19 -0
  453. package/src/ui/select/SelectItem.vue +44 -0
  454. package/src/ui/select/SelectItemText.vue +11 -0
  455. package/src/ui/select/SelectLabel.vue +13 -0
  456. package/src/ui/select/SelectScrollDownButton.vue +24 -0
  457. package/src/ui/select/SelectScrollUpButton.vue +24 -0
  458. package/src/ui/select/SelectSeparator.vue +17 -0
  459. package/src/ui/select/SelectTrigger.vue +31 -0
  460. package/src/ui/select/SelectValue.vue +11 -0
  461. package/src/ui/select/index.ts +11 -0
  462. package/src/ui/sheet/Sheet.vue +14 -0
  463. package/src/ui/sheet/SheetClose.vue +11 -0
  464. package/src/ui/sheet/SheetContent.vue +53 -0
  465. package/src/ui/sheet/SheetDescription.vue +19 -0
  466. package/src/ui/sheet/SheetFooter.vue +12 -0
  467. package/src/ui/sheet/SheetHeader.vue +12 -0
  468. package/src/ui/sheet/SheetTitle.vue +19 -0
  469. package/src/ui/sheet/SheetTrigger.vue +11 -0
  470. package/src/ui/sheet/index.ts +29 -0
  471. package/src/ui/switch/Switch.vue +55 -0
  472. package/src/ui/switch/index.ts +1 -0
  473. package/src/ui/textarea/Textarea.vue +24 -0
  474. package/src/ui/textarea/index.ts +1 -0
  475. package/src/ui/toast/Toast.vue +28 -0
  476. package/src/ui/toast/ToastAction.vue +19 -0
  477. package/src/ui/toast/ToastClose.vue +22 -0
  478. package/src/ui/toast/ToastDescription.vue +19 -0
  479. package/src/ui/toast/ToastProvider.vue +11 -0
  480. package/src/ui/toast/ToastTitle.vue +19 -0
  481. package/src/ui/toast/ToastViewport.vue +17 -0
  482. package/src/ui/toast/Toaster.vue +48 -0
  483. package/src/ui/toast/index.ts +39 -0
  484. package/src/ui/toast/use-toast.ts +109 -0
  485. package/src/ui/tooltip/Tooltip.vue +14 -0
  486. package/src/ui/tooltip/TooltipContent.vue +39 -0
  487. package/src/ui/tooltip/TooltipProvider.vue +11 -0
  488. package/src/ui/tooltip/TooltipTrigger.vue +11 -0
  489. package/src/ui/tooltip/index.ts +4 -0
  490. package/src/ui/utils.ts +1 -0
@@ -0,0 +1,447 @@
1
+ <script setup>
2
+ import {
3
+ getActivityGroupKey,
4
+ getActivityGroupLabel,
5
+ getToolNameFromPart,
6
+ parseToolResultOutput,
7
+ } from '../../lib/assistantMessage.js';
8
+ import { useSvedaT } from '../../i18n/index.js';
9
+ import { CheckCircle, ChevronDown, ChevronRight, CircleStop, ExternalLink, Search, Terminal, XCircle } from 'lucide-vue-next';
10
+ import { computed, ref, watch } from 'vue';
11
+ import AnimatedStreamBlock from './AnimatedStreamBlock.vue';
12
+
13
+ const props = defineProps({
14
+ invocations: {
15
+ type: Array,
16
+ default: () => [],
17
+ },
18
+ legacyActivity: {
19
+ type: Object,
20
+ default: null,
21
+ },
22
+ contentAnimationsEnabled: {
23
+ type: Boolean,
24
+ default: false,
25
+ },
26
+ });
27
+
28
+ const emit = defineEmits(['activity-link-click']);
29
+
30
+ const t = useSvedaT();
31
+
32
+ const translateToolName = toolName => {
33
+ if (!toolName) {
34
+ return '';
35
+ }
36
+ const key = `tools.${toolName}`;
37
+ const translated = t(key);
38
+ return translated === key ? toolName : translated;
39
+ };
40
+
41
+ const isToolInvocationComplete = inv =>
42
+ inv?.state === 'result' || inv?.state === 'output-available' || inv?.state === 'output-error' || inv?.state === 'output-denied';
43
+
44
+ const getToolInvocationStatus = inv => {
45
+ if (!isToolInvocationComplete(inv)) {
46
+ if (!props.contentAnimationsEnabled) {
47
+ return 'success';
48
+ }
49
+ return 'running';
50
+ }
51
+ if (inv.state === 'output-error' || inv.state === 'output-denied') {
52
+ return inv.state === 'output-denied' ? 'stopped' : 'error';
53
+ }
54
+
55
+ const resultData = parseToolResultOutput(inv.output !== undefined ? inv.output : inv.result);
56
+ if (resultData && (resultData.error || resultData.success === false)) {
57
+ return 'error';
58
+ }
59
+
60
+ return 'success';
61
+ };
62
+
63
+ const toolSteps = computed(() => {
64
+ if (props.invocations.length > 0) {
65
+ return props.invocations.map((inv, index) => {
66
+ const isComplete = isToolInvocationComplete(inv);
67
+ const resultData = parseToolResultOutput(inv.output !== undefined ? inv.output : inv.result);
68
+ const status = getToolInvocationStatus(inv);
69
+ const toolName = getToolNameFromPart(inv);
70
+
71
+ let detail = '';
72
+ if (isComplete) {
73
+ if (resultData) {
74
+ const data = resultData.data;
75
+ if (data && typeof data === 'object' && data !== null && 'content' in data && data.content) {
76
+ detail = String(data.content);
77
+ } else if (resultData.error) {
78
+ detail = String(resultData.error);
79
+ } else if (resultData.message) {
80
+ detail = String(resultData.message);
81
+ } else {
82
+ detail = JSON.stringify(resultData, null, 2);
83
+ }
84
+ } else if (inv.errorText) {
85
+ detail = String(inv.errorText);
86
+ } else {
87
+ detail = String(inv.output !== undefined ? inv.output : (inv.result ?? ''));
88
+ }
89
+ } else {
90
+ detail = JSON.stringify(inv.args !== undefined ? inv.args : inv.input, null, 2);
91
+ }
92
+
93
+ if (detail.length > 2000) {
94
+ detail = detail.slice(0, 2000) + '...';
95
+ }
96
+
97
+ const translatedName = translateToolName(toolName);
98
+ let label = translatedName;
99
+ const display = resultData?.display;
100
+ if (isComplete && display && typeof display === 'object' && display !== null && 'name' in display && display.name) {
101
+ label = `${translatedName}: ${display.name}`;
102
+ }
103
+
104
+ const activityGroupKey = getActivityGroupKey(toolName);
105
+ const groupPayload = activityGroupKey
106
+ ? {
107
+ activityGroupKey,
108
+ activityGroupLabel: getActivityGroupLabel(toolName, translatedName),
109
+ }
110
+ : {};
111
+
112
+ return {
113
+ id: inv.toolCallId || `tool-${toolName}-${index}`,
114
+ kind: 'tool',
115
+ toolName,
116
+ label,
117
+ status,
118
+ detail,
119
+ display: display && typeof display === 'object' ? display : undefined,
120
+ ...groupPayload,
121
+ };
122
+ });
123
+ }
124
+
125
+ const steps = props.legacyActivity?.steps ?? [];
126
+ return steps.filter(step => step.kind === 'tool' || step.kind === 'error' || step.kind === 'subagent');
127
+ });
128
+
129
+ const expandedSteps = ref({});
130
+ const expandedGroups = ref({});
131
+ let prevSteps = [];
132
+
133
+ watch(
134
+ () => toolSteps.value,
135
+ steps => {
136
+ const prevMap = new Map(prevSteps.map(step => [step.id, step]));
137
+ steps.forEach(step => {
138
+ if (step.kind === 'tool') {
139
+ if (step.status === 'running') {
140
+ expandedSteps.value[step.id] = true;
141
+ } else if (step.status === 'success' || step.status === 'error' || step.status === 'stopped') {
142
+ const wasRunning = prevMap.get(step.id)?.status === 'running';
143
+ if (wasRunning) {
144
+ expandedSteps.value[step.id] = false;
145
+ }
146
+ }
147
+ }
148
+ });
149
+ prevSteps = [...steps];
150
+ },
151
+ { deep: true, immediate: true }
152
+ );
153
+
154
+ const phaseStatusLabel = computed(() => {
155
+ if (!props.contentAnimationsEnabled || props.invocations.length === 0) {
156
+ return '';
157
+ }
158
+ const hasRunning = props.invocations.some(inv => !isToolInvocationComplete(inv));
159
+ if (hasRunning) {
160
+ return t('phaseToolCalling');
161
+ }
162
+ return '';
163
+ });
164
+
165
+ const isSubagentStep = step => step.kind === 'subagent';
166
+
167
+ const getStepGroupKey = step => {
168
+ if (step.kind !== 'tool') {
169
+ return '';
170
+ }
171
+ return step.activityGroupKey || '';
172
+ };
173
+
174
+ const activityItems = computed(() => {
175
+ const items = [];
176
+
177
+ for (const step of toolSteps.value) {
178
+ const groupKey = getStepGroupKey(step);
179
+ const previous = items[items.length - 1];
180
+ if (groupKey && previous?.type === 'group' && previous.groupKey === groupKey) {
181
+ previous.steps.push(step);
182
+ continue;
183
+ }
184
+
185
+ if (groupKey) {
186
+ items.push({
187
+ type: 'group',
188
+ groupKey,
189
+ label: step.activityGroupLabel || step.label,
190
+ steps: [step],
191
+ });
192
+ } else {
193
+ items.push({
194
+ type: 'step',
195
+ step,
196
+ });
197
+ }
198
+ }
199
+
200
+ return items.map(item => {
201
+ if (item.type !== 'group' || item.steps.length === 1) {
202
+ return item.type === 'group' ? { type: 'step', step: item.steps[0] } : item;
203
+ }
204
+
205
+ return {
206
+ ...item,
207
+ id: `${item.groupKey}-${item.steps[0].id}`,
208
+ };
209
+ });
210
+ });
211
+
212
+ const getActivityItemKey = item => {
213
+ return item.type === 'group' ? item.id : item.step.id;
214
+ };
215
+
216
+ const getGroupStatus = group => {
217
+ if (group.steps.some(step => step.status === 'running')) {
218
+ return 'running';
219
+ }
220
+ if (group.steps.some(step => step.status === 'error')) {
221
+ return 'error';
222
+ }
223
+ if (group.steps.some(step => step.status === 'stopped')) {
224
+ return 'stopped';
225
+ }
226
+ return 'success';
227
+ };
228
+
229
+ const getGroupLabel = group => {
230
+ return t('activityGroupSteps', {
231
+ label: group.label,
232
+ count: group.steps.length,
233
+ });
234
+ };
235
+
236
+ const hasDisplayLink = step => step.display && step.display.link && step.status === 'success';
237
+
238
+ const handleStepClick = step => {
239
+ if (hasDisplayLink(step)) {
240
+ emit('activity-link-click', step.display.link);
241
+ return;
242
+ }
243
+ expandedSteps.value[step.id] = !expandedSteps.value[step.id];
244
+ };
245
+
246
+ const handleGroupClick = group => {
247
+ expandedGroups.value[group.id] = !expandedGroups.value[group.id];
248
+ };
249
+
250
+ const isStepExpanded = step => !!expandedSteps.value[step.id];
251
+ const isGroupExpanded = group => !!expandedGroups.value[group.id];
252
+ </script>
253
+
254
+ <template>
255
+ <div
256
+ v-if="toolSteps.length > 0"
257
+ class="space-y-0.5"
258
+ >
259
+ <p
260
+ v-if="phaseStatusLabel"
261
+ class="text-xs text-muted-foreground/80"
262
+ >
263
+ {{ phaseStatusLabel }}
264
+ </p>
265
+ <template
266
+ v-for="item in activityItems"
267
+ :key="getActivityItemKey(item)"
268
+ >
269
+ <div v-if="item.type === 'group'">
270
+ <button
271
+ type="button"
272
+ class="flex w-full items-center gap-1.5 py-0.5 text-left text-muted-foreground/90 hover:text-muted-foreground"
273
+ @click="handleGroupClick(item)"
274
+ >
275
+ <CheckCircle
276
+ v-if="getGroupStatus(item) === 'success'"
277
+ class="h-3 w-3 text-green-500"
278
+ />
279
+ <XCircle
280
+ v-else-if="getGroupStatus(item) === 'error'"
281
+ class="h-3 w-3 text-red-500"
282
+ />
283
+ <CircleStop
284
+ v-else-if="getGroupStatus(item) === 'stopped'"
285
+ class="h-3 w-3 text-muted-foreground"
286
+ />
287
+ <Terminal
288
+ v-else
289
+ class="h-3 w-3 text-muted-foreground"
290
+ />
291
+ <span
292
+ class="min-w-0 flex-1 truncate text-xs"
293
+ :class="getGroupStatus(item) === 'error' ? 'text-red-500/90' : ''"
294
+ >
295
+ {{ getGroupLabel(item) }}
296
+ </span>
297
+ <component
298
+ :is="isGroupExpanded(item) ? ChevronDown : ChevronRight"
299
+ class="ml-auto h-3 w-3 text-muted-foreground"
300
+ />
301
+ </button>
302
+ <div
303
+ v-if="isGroupExpanded(item)"
304
+ class="space-y-0.5 pl-4"
305
+ >
306
+ <div
307
+ v-for="step in item.steps"
308
+ :key="step.id"
309
+ >
310
+ <button
311
+ type="button"
312
+ class="flex w-full items-center gap-1.5 py-0.5 text-left text-muted-foreground/90"
313
+ :class="{ 'cursor-pointer hover:text-muted-foreground': hasDisplayLink(step) }"
314
+ @click="handleStepClick(step)"
315
+ >
316
+ <CheckCircle
317
+ v-if="step.status === 'success'"
318
+ class="h-3 w-3 text-green-500"
319
+ />
320
+ <XCircle
321
+ v-else-if="step.status === 'error'"
322
+ class="h-3 w-3 text-red-500"
323
+ />
324
+ <CircleStop
325
+ v-else-if="step.status === 'stopped'"
326
+ class="h-3 w-3 text-muted-foreground"
327
+ />
328
+ <Search
329
+ v-else-if="isSubagentStep(step)"
330
+ class="h-3 w-3 text-sky-600"
331
+ />
332
+ <Terminal
333
+ v-else
334
+ class="h-3 w-3 text-muted-foreground"
335
+ />
336
+ <span
337
+ class="min-w-0 flex-1 text-xs"
338
+ :class="[
339
+ step.status === 'error' ? 'text-red-500/90' : '',
340
+ isSubagentStep(step) ? 'text-sky-700/80 dark:text-sky-400/80' : '',
341
+ hasDisplayLink(step) ? 'underline decoration-dotted underline-offset-2 hover:text-primary' : '',
342
+ ]"
343
+ >
344
+ {{ step.label }}
345
+ </span>
346
+ <ExternalLink
347
+ v-if="hasDisplayLink(step)"
348
+ class="h-3 w-3 flex-shrink-0 text-muted-foreground"
349
+ />
350
+ <component
351
+ v-else-if="step.detail || step.kind === 'tool' || step.kind === 'subagent'"
352
+ :is="isStepExpanded(step) ? ChevronDown : ChevronRight"
353
+ class="ml-auto h-3 w-3 text-muted-foreground"
354
+ />
355
+ </button>
356
+ <div
357
+ v-if="isStepExpanded(step) && !hasDisplayLink(step) && (step.detail || step.kind === 'tool' || step.kind === 'subagent')"
358
+ class="pb-1 pl-4 text-muted-foreground/80"
359
+ >
360
+ <AnimatedStreamBlock
361
+ v-if="step.kind === 'tool'"
362
+ :text="step.detail || ''"
363
+ :animated="contentAnimationsEnabled"
364
+ max-height="8rem"
365
+ :show-mask="true"
366
+ variant="mono"
367
+ />
368
+ <div
369
+ v-else
370
+ :class="['max-h-32 overflow-y-auto whitespace-pre-wrap break-words text-xs', step.kind === 'thinking' ? 'font-mono' : '']"
371
+ >
372
+ {{ step.detail }}
373
+ </div>
374
+ </div>
375
+ </div>
376
+ </div>
377
+ </div>
378
+ <div v-else>
379
+ <button
380
+ type="button"
381
+ class="flex w-full items-center gap-1.5 py-0.5 text-left text-muted-foreground/90"
382
+ :class="{ 'cursor-pointer hover:text-muted-foreground': hasDisplayLink(item.step) }"
383
+ @click="handleStepClick(item.step)"
384
+ >
385
+ <CheckCircle
386
+ v-if="item.step.status === 'success'"
387
+ class="h-3 w-3 text-green-500"
388
+ />
389
+ <XCircle
390
+ v-else-if="item.step.status === 'error'"
391
+ class="h-3 w-3 text-red-500"
392
+ />
393
+ <CircleStop
394
+ v-else-if="item.step.status === 'stopped'"
395
+ class="h-3 w-3 text-muted-foreground"
396
+ />
397
+ <Search
398
+ v-else-if="isSubagentStep(item.step)"
399
+ class="h-3 w-3 text-sky-600"
400
+ />
401
+ <Terminal
402
+ v-else
403
+ class="h-3 w-3 text-muted-foreground"
404
+ />
405
+ <span
406
+ class="min-w-0 flex-1 text-xs"
407
+ :class="[
408
+ item.step.status === 'error' ? 'text-red-500/90' : '',
409
+ isSubagentStep(item.step) ? 'text-sky-700/80 dark:text-sky-400/80' : '',
410
+ hasDisplayLink(item.step) ? 'underline decoration-dotted underline-offset-2 hover:text-primary' : '',
411
+ ]"
412
+ >
413
+ {{ item.step.label }}
414
+ </span>
415
+ <ExternalLink
416
+ v-if="hasDisplayLink(item.step)"
417
+ class="h-3 w-3 flex-shrink-0 text-muted-foreground"
418
+ />
419
+ <component
420
+ v-else-if="item.step.detail || item.step.kind === 'tool' || item.step.kind === 'subagent'"
421
+ :is="isStepExpanded(item.step) ? ChevronDown : ChevronRight"
422
+ class="ml-auto h-3 w-3 text-muted-foreground"
423
+ />
424
+ </button>
425
+ <div
426
+ v-if="isStepExpanded(item.step) && !hasDisplayLink(item.step) && (item.step.detail || item.step.kind === 'tool' || item.step.kind === 'subagent')"
427
+ class="pb-1 pl-4 text-muted-foreground/80"
428
+ >
429
+ <AnimatedStreamBlock
430
+ v-if="item.step.kind === 'tool'"
431
+ :text="item.step.detail || ''"
432
+ :animated="contentAnimationsEnabled"
433
+ max-height="8rem"
434
+ :show-mask="true"
435
+ variant="mono"
436
+ />
437
+ <div
438
+ v-else
439
+ :class="['max-h-32 overflow-y-auto whitespace-pre-wrap break-words text-xs', item.step.kind === 'thinking' ? 'font-mono' : '']"
440
+ >
441
+ {{ item.step.detail }}
442
+ </div>
443
+ </div>
444
+ </div>
445
+ </template>
446
+ </div>
447
+ </template>