@vertesia/ui 1.0.0-dev.20260128.144200 → 1.0.0-dev.20260225.024852Z

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 (500) hide show
  1. package/lib/esm/core/components/InputList.js +1 -1
  2. package/lib/esm/core/components/InputList.js.map +1 -1
  3. package/lib/esm/core/components/Overlay.js +1 -1
  4. package/lib/esm/core/components/Overlay.js.map +1 -1
  5. package/lib/esm/core/components/SidePanel.js +8 -2
  6. package/lib/esm/core/components/SidePanel.js.map +1 -1
  7. package/lib/esm/core/components/Switch.js +1 -1
  8. package/lib/esm/core/components/Switch.js.map +1 -1
  9. package/lib/esm/core/components/index.js +0 -8
  10. package/lib/esm/core/components/index.js.map +1 -1
  11. package/lib/esm/core/components/shadcn/MessageBox.js.map +1 -0
  12. package/lib/esm/core/components/shadcn/Panel.js +13 -0
  13. package/lib/esm/core/components/shadcn/Panel.js.map +1 -0
  14. package/lib/esm/core/components/{Badge.js → shadcn/badge.js} +2 -2
  15. package/lib/esm/core/components/shadcn/badge.js.map +1 -0
  16. package/lib/esm/core/components/shadcn/command.js +1 -1
  17. package/lib/esm/core/components/shadcn/command.js.map +1 -1
  18. package/lib/esm/core/components/shadcn/filters/filterBar.js +73 -83
  19. package/lib/esm/core/components/shadcn/filters/filterBar.js.map +1 -1
  20. package/lib/esm/core/components/shadcn/index.js +4 -2
  21. package/lib/esm/core/components/shadcn/index.js.map +1 -1
  22. package/lib/esm/core/components/shadcn/modal/ConfirmModal.js +10 -0
  23. package/lib/esm/core/components/shadcn/modal/ConfirmModal.js.map +1 -0
  24. package/lib/esm/core/components/{DeleteModal.js → shadcn/modal/DeleteModal.js} +1 -1
  25. package/lib/esm/core/components/shadcn/modal/DeleteModal.js.map +1 -0
  26. package/lib/esm/core/components/shadcn/{dialog.js → modal/dialog.js} +19 -15
  27. package/lib/esm/core/components/shadcn/modal/dialog.js.map +1 -0
  28. package/lib/esm/core/components/shadcn/modal/index.js +4 -0
  29. package/lib/esm/core/components/shadcn/modal/index.js.map +1 -0
  30. package/lib/esm/core/components/shadcn/popover.js +4 -2
  31. package/lib/esm/core/components/shadcn/popover.js.map +1 -1
  32. package/lib/esm/core/components/shadcn/selectBox.js +19 -15
  33. package/lib/esm/core/components/shadcn/selectBox.js.map +1 -1
  34. package/lib/esm/core/components/shadcn/tabs.js +16 -14
  35. package/lib/esm/core/components/shadcn/tabs.js.map +1 -1
  36. package/lib/esm/core/components/shadcn/textarea.js +30 -2
  37. package/lib/esm/core/components/shadcn/textarea.js.map +1 -1
  38. package/lib/esm/core/components/shadcn/tooltip.js +5 -1
  39. package/lib/esm/core/components/shadcn/tooltip.js.map +1 -1
  40. package/lib/esm/features/agent/PayloadBuilder.js +45 -0
  41. package/lib/esm/features/agent/PayloadBuilder.js.map +1 -1
  42. package/lib/esm/features/agent/chat/AgentChart.js +12 -232
  43. package/lib/esm/features/agent/chat/AgentChart.js.map +1 -1
  44. package/lib/esm/features/agent/chat/AskUserWidget.js +2 -1
  45. package/lib/esm/features/agent/chat/AskUserWidget.js.map +1 -1
  46. package/lib/esm/features/agent/chat/DocumentPanel.js +46 -0
  47. package/lib/esm/features/agent/chat/DocumentPanel.js.map +1 -0
  48. package/lib/esm/features/agent/chat/DocumentTabBar.js +17 -0
  49. package/lib/esm/features/agent/chat/DocumentTabBar.js.map +1 -0
  50. package/lib/esm/features/agent/chat/ModernAgentConversation.js +159 -402
  51. package/lib/esm/features/agent/chat/ModernAgentConversation.js.map +1 -1
  52. package/lib/esm/features/agent/chat/ModernAgentOutput/AllMessagesMixed.js +99 -57
  53. package/lib/esm/features/agent/chat/ModernAgentOutput/AllMessagesMixed.js.map +1 -1
  54. package/lib/esm/features/agent/chat/ModernAgentOutput/BatchProgressPanel.js +4 -4
  55. package/lib/esm/features/agent/chat/ModernAgentOutput/BatchProgressPanel.js.map +1 -1
  56. package/lib/esm/features/agent/chat/ModernAgentOutput/Header.js +4 -4
  57. package/lib/esm/features/agent/chat/ModernAgentOutput/Header.js.map +1 -1
  58. package/lib/esm/features/agent/chat/ModernAgentOutput/InlineSlidingPlanPanel.js +3 -3
  59. package/lib/esm/features/agent/chat/ModernAgentOutput/InlineSlidingPlanPanel.js.map +1 -1
  60. package/lib/esm/features/agent/chat/ModernAgentOutput/MessageInput.js +25 -22
  61. package/lib/esm/features/agent/chat/ModernAgentOutput/MessageInput.js.map +1 -1
  62. package/lib/esm/features/agent/chat/ModernAgentOutput/MessageItem.js +110 -55
  63. package/lib/esm/features/agent/chat/ModernAgentOutput/MessageItem.js.map +1 -1
  64. package/lib/esm/features/agent/chat/ModernAgentOutput/StreamingMessage.js +2 -2
  65. package/lib/esm/features/agent/chat/ModernAgentOutput/StreamingMessage.js.map +1 -1
  66. package/lib/esm/features/agent/chat/ModernAgentOutput/ToolCallGroup.js +146 -55
  67. package/lib/esm/features/agent/chat/ModernAgentOutput/ToolCallGroup.js.map +1 -1
  68. package/lib/esm/features/agent/chat/ModernAgentOutput/WorkstreamTabs.js +5 -6
  69. package/lib/esm/features/agent/chat/ModernAgentOutput/WorkstreamTabs.js.map +1 -1
  70. package/lib/esm/features/agent/chat/ModernAgentOutput/utils.js +110 -2
  71. package/lib/esm/features/agent/chat/ModernAgentOutput/utils.js.map +1 -1
  72. package/lib/esm/features/agent/chat/SkillWidgetProvider.js +28 -15
  73. package/lib/esm/features/agent/chat/SkillWidgetProvider.js.map +1 -1
  74. package/lib/esm/features/agent/chat/hooks/useAgentPlans.js +146 -0
  75. package/lib/esm/features/agent/chat/hooks/useAgentPlans.js.map +1 -0
  76. package/lib/esm/features/agent/chat/hooks/useAgentStream.js +180 -0
  77. package/lib/esm/features/agent/chat/hooks/useAgentStream.js.map +1 -0
  78. package/lib/esm/features/agent/chat/hooks/useDocumentPanel.js +100 -0
  79. package/lib/esm/features/agent/chat/hooks/useDocumentPanel.js.map +1 -0
  80. package/lib/esm/features/agent/chat/hooks/useFileProcessing.js +90 -0
  81. package/lib/esm/features/agent/chat/hooks/useFileProcessing.js.map +1 -0
  82. package/lib/esm/features/agent/chat/index.js +6 -5
  83. package/lib/esm/features/agent/chat/index.js.map +1 -1
  84. package/lib/esm/features/agent/chat/types/document.js +2 -0
  85. package/lib/esm/features/agent/chat/types/document.js.map +1 -0
  86. package/lib/esm/features/agent/index.js +0 -2
  87. package/lib/esm/features/agent/index.js.map +1 -1
  88. package/lib/esm/features/store/collections/BrowseCollectionView.js +4 -6
  89. package/lib/esm/features/store/collections/BrowseCollectionView.js.map +1 -1
  90. package/lib/esm/features/store/collections/CreateCollection.js +4 -4
  91. package/lib/esm/features/store/collections/CreateCollection.js.map +1 -1
  92. package/lib/esm/features/store/collections/EditCollectionView.js +1 -1
  93. package/lib/esm/features/store/collections/EditCollectionView.js.map +1 -1
  94. package/lib/esm/features/store/objects/DocumentSearchResults.js +5 -5
  95. package/lib/esm/features/store/objects/DocumentSearchResults.js.map +1 -1
  96. package/lib/esm/features/store/objects/ExportPropertiesModal.js +3 -3
  97. package/lib/esm/features/store/objects/ExportPropertiesModal.js.map +1 -1
  98. package/lib/esm/features/store/objects/components/ContentOverview.js +19 -120
  99. package/lib/esm/features/store/objects/components/ContentOverview.js.map +1 -1
  100. package/lib/esm/features/store/objects/components/PropertiesEditorModal.js +1 -1
  101. package/lib/esm/features/store/objects/components/PropertiesEditorModal.js.map +1 -1
  102. package/lib/esm/features/store/objects/components/SelectDocumentModal.js +2 -2
  103. package/lib/esm/features/store/objects/components/SelectDocumentModal.js.map +1 -1
  104. package/lib/esm/features/store/objects/components/VectorSearchWidget.js +1 -1
  105. package/lib/esm/features/store/objects/components/VectorSearchWidget.js.map +1 -1
  106. package/lib/esm/features/store/objects/components/index.js +1 -1
  107. package/lib/esm/features/store/objects/components/index.js.map +1 -1
  108. package/lib/esm/features/store/objects/components/useDownloadFile.js +192 -0
  109. package/lib/esm/features/store/objects/components/useDownloadFile.js.map +1 -0
  110. package/lib/esm/features/store/objects/search/DocumentSearchContext.js +1 -2
  111. package/lib/esm/features/store/objects/search/DocumentSearchContext.js.map +1 -1
  112. package/lib/esm/features/store/objects/selection/SelectionActions.js +5 -8
  113. package/lib/esm/features/store/objects/selection/SelectionActions.js.map +1 -1
  114. package/lib/esm/features/store/objects/selection/actions/AddToCollectionAction.js +4 -4
  115. package/lib/esm/features/store/objects/selection/actions/AddToCollectionAction.js.map +1 -1
  116. package/lib/esm/features/store/objects/selection/actions/ChangeTypeAction.js +2 -2
  117. package/lib/esm/features/store/objects/selection/actions/ChangeTypeAction.js.map +1 -1
  118. package/lib/esm/features/store/objects/selection/actions/ExportPropertiesAction.js +1 -1
  119. package/lib/esm/features/store/objects/selection/actions/ExportPropertiesAction.js.map +1 -1
  120. package/lib/esm/features/store/objects/selection/actions/StartWorkflowComponent.js +3 -3
  121. package/lib/esm/features/store/objects/selection/actions/StartWorkflowComponent.js.map +1 -1
  122. package/lib/esm/features/store/objects/upload/DocumentUploadModal.js +13 -13
  123. package/lib/esm/features/store/objects/upload/DocumentUploadModal.js.map +1 -1
  124. package/lib/esm/features/store/objects/upload/useSmartFileUploadProcessing.js +15 -8
  125. package/lib/esm/features/store/objects/upload/useSmartFileUploadProcessing.js.map +1 -1
  126. package/lib/esm/features/store/types/ObjectSchemaEditor.js +6 -5
  127. package/lib/esm/features/store/types/ObjectSchemaEditor.js.map +1 -1
  128. package/lib/esm/features/store/types/SelectContentType.js +3 -3
  129. package/lib/esm/features/store/types/SelectContentType.js.map +1 -1
  130. package/lib/esm/features/store/types/SelectContentTypeModal.js +5 -4
  131. package/lib/esm/features/store/types/SelectContentTypeModal.js.map +1 -1
  132. package/lib/esm/features/store/types/TableLayoutEditor.js +4 -4
  133. package/lib/esm/features/store/types/TableLayoutEditor.js.map +1 -1
  134. package/lib/esm/features/user/UserInfo.js +73 -9
  135. package/lib/esm/features/user/UserInfo.js.map +1 -1
  136. package/lib/esm/features/utils/print.js +0 -1
  137. package/lib/esm/features/utils/print.js.map +1 -1
  138. package/lib/esm/layout/AppLayout.js +3 -4
  139. package/lib/esm/layout/AppLayout.js.map +1 -1
  140. package/lib/esm/layout/Sidebar.js +5 -5
  141. package/lib/esm/layout/Sidebar.js.map +1 -1
  142. package/lib/esm/router/HistoryNavigator.js +7 -1
  143. package/lib/esm/router/HistoryNavigator.js.map +1 -1
  144. package/lib/esm/router/Nav.js +2 -2
  145. package/lib/esm/router/Nav.js.map +1 -1
  146. package/lib/esm/session/UserSession.js +35 -9
  147. package/lib/esm/session/UserSession.js.map +1 -1
  148. package/lib/esm/session/UserSessionProvider.js +3 -2
  149. package/lib/esm/session/UserSessionProvider.js.map +1 -1
  150. package/lib/esm/shell/apps/AppProjectSelector.js +2 -2
  151. package/lib/esm/shell/apps/AppProjectSelector.js.map +1 -1
  152. package/lib/esm/shell/apps/StandaloneApp.js +2 -2
  153. package/lib/esm/shell/apps/StandaloneApp.js.map +1 -1
  154. package/lib/esm/shell/login/InviteAcceptModal.js +2 -2
  155. package/lib/esm/shell/login/InviteAcceptModal.js.map +1 -1
  156. package/lib/esm/shell/login/SignInModal.js +1 -1
  157. package/lib/esm/shell/login/SignInModal.js.map +1 -1
  158. package/lib/esm/shell/login/SignupForm.js +2 -2
  159. package/lib/esm/shell/login/SignupForm.js.map +1 -1
  160. package/lib/esm/shell/login/UserInfo.js +2 -2
  161. package/lib/esm/shell/login/UserInfo.js.map +1 -1
  162. package/lib/esm/widgets/json-view/JSONCode.js +1 -1
  163. package/lib/esm/widgets/json-view/JSONCode.js.map +1 -1
  164. package/lib/esm/widgets/json-view/JSONDisplay.js +1 -1
  165. package/lib/esm/widgets/json-view/JSONDisplay.js.map +1 -1
  166. package/lib/esm/widgets/markdown/ArtifactContentRenderer.js +84 -13
  167. package/lib/esm/widgets/markdown/ArtifactContentRenderer.js.map +1 -1
  168. package/lib/esm/widgets/markdown/MarkdownFigure.js +40 -0
  169. package/lib/esm/widgets/markdown/MarkdownFigure.js.map +1 -0
  170. package/lib/esm/widgets/markdown/MarkdownRenderer.js +42 -7
  171. package/lib/esm/widgets/markdown/MarkdownRenderer.js.map +1 -1
  172. package/lib/esm/widgets/markdown/MermaidDiagram.js +80 -5
  173. package/lib/esm/widgets/markdown/MermaidDiagram.js.map +1 -1
  174. package/lib/esm/widgets/markdown/codeBlockHandlers.js +33 -33
  175. package/lib/esm/widgets/markdown/codeBlockHandlers.js.map +1 -1
  176. package/lib/esm/widgets/markdown/codeBlockHandlers.test.js +2 -29
  177. package/lib/esm/widgets/markdown/codeBlockHandlers.test.js.map +1 -1
  178. package/lib/esm/widgets/markdown/index.js +1 -0
  179. package/lib/esm/widgets/markdown/index.js.map +1 -1
  180. package/lib/esm/widgets/markdown/normalizeCustomSchemeLinks.js +77 -0
  181. package/lib/esm/widgets/markdown/normalizeCustomSchemeLinks.js.map +1 -0
  182. package/lib/esm/widgets/markdown/normalizeDirectives.js +45 -0
  183. package/lib/esm/widgets/markdown/normalizeDirectives.js.map +1 -0
  184. package/lib/esm/widgets/markdown/remarkDirectiveHandler.js +96 -0
  185. package/lib/esm/widgets/markdown/remarkDirectiveHandler.js.map +1 -0
  186. package/lib/esm/widgets/monacoEditor/MonacoEditor.js +8 -14
  187. package/lib/esm/widgets/monacoEditor/MonacoEditor.js.map +1 -1
  188. package/lib/esm/widgets/schema-editor/ManagedSchema.js.map +1 -1
  189. package/lib/esm/widgets/schema-editor/editor/PropertyEditor.js +3 -3
  190. package/lib/esm/widgets/schema-editor/editor/PropertyEditor.js.map +1 -1
  191. package/lib/esm/widgets/schema-editor/json-schema4-utils.js.map +1 -1
  192. package/lib/tsconfig.tsbuildinfo +1 -1
  193. package/lib/types/core/components/SidePanel.d.ts +4 -1
  194. package/lib/types/core/components/SidePanel.d.ts.map +1 -1
  195. package/lib/types/core/components/index.d.ts +0 -8
  196. package/lib/types/core/components/index.d.ts.map +1 -1
  197. package/lib/types/core/components/shadcn/MessageBox.d.ts.map +1 -0
  198. package/lib/types/core/components/{Panel.d.ts → shadcn/Panel.d.ts} +3 -1
  199. package/lib/types/core/components/shadcn/Panel.d.ts.map +1 -0
  200. package/lib/types/core/components/{Badge.d.ts → shadcn/badge.d.ts} +4 -4
  201. package/lib/types/core/components/shadcn/badge.d.ts.map +1 -0
  202. package/lib/types/core/components/shadcn/button.d.ts +1 -1
  203. package/lib/types/core/components/shadcn/filters/filterBar.d.ts.map +1 -1
  204. package/lib/types/core/components/shadcn/index.d.ts +4 -2
  205. package/lib/types/core/components/shadcn/index.d.ts.map +1 -1
  206. package/lib/types/core/components/shadcn/input.d.ts +1 -1
  207. package/lib/types/core/components/shadcn/modal/ConfirmModal.d.ts.map +1 -0
  208. package/lib/types/core/components/shadcn/modal/DeleteModal.d.ts.map +1 -0
  209. package/lib/types/core/components/shadcn/{dialog.d.ts → modal/dialog.d.ts} +7 -4
  210. package/lib/types/core/components/shadcn/modal/dialog.d.ts.map +1 -0
  211. package/lib/types/core/components/shadcn/modal/index.d.ts +4 -0
  212. package/lib/types/core/components/shadcn/modal/index.d.ts.map +1 -0
  213. package/lib/types/core/components/shadcn/popover.d.ts.map +1 -1
  214. package/lib/types/core/components/shadcn/selectBox.d.ts +9 -5
  215. package/lib/types/core/components/shadcn/selectBox.d.ts.map +1 -1
  216. package/lib/types/core/components/shadcn/tabs.d.ts +14 -5
  217. package/lib/types/core/components/shadcn/tabs.d.ts.map +1 -1
  218. package/lib/types/core/components/shadcn/textarea.d.ts +6 -2
  219. package/lib/types/core/components/shadcn/textarea.d.ts.map +1 -1
  220. package/lib/types/core/components/shadcn/tooltip.d.ts.map +1 -1
  221. package/lib/types/features/agent/PayloadBuilder.d.ts +22 -4
  222. package/lib/types/features/agent/PayloadBuilder.d.ts.map +1 -1
  223. package/lib/types/features/agent/chat/AgentChart.d.ts +3 -44
  224. package/lib/types/features/agent/chat/AgentChart.d.ts.map +1 -1
  225. package/lib/types/features/agent/chat/AskUserWidget.d.ts.map +1 -1
  226. package/lib/types/features/agent/chat/DocumentPanel.d.ts +16 -0
  227. package/lib/types/features/agent/chat/DocumentPanel.d.ts.map +1 -0
  228. package/lib/types/features/agent/chat/DocumentTabBar.d.ts +10 -0
  229. package/lib/types/features/agent/chat/DocumentTabBar.d.ts.map +1 -0
  230. package/lib/types/features/agent/chat/ModernAgentConversation.d.ts +69 -1
  231. package/lib/types/features/agent/chat/ModernAgentConversation.d.ts.map +1 -1
  232. package/lib/types/features/agent/chat/ModernAgentOutput/AllMessagesMixed.d.ts +36 -1
  233. package/lib/types/features/agent/chat/ModernAgentOutput/AllMessagesMixed.d.ts.map +1 -1
  234. package/lib/types/features/agent/chat/ModernAgentOutput/BatchProgressPanel.d.ts +18 -2
  235. package/lib/types/features/agent/chat/ModernAgentOutput/BatchProgressPanel.d.ts.map +1 -1
  236. package/lib/types/features/agent/chat/ModernAgentOutput/Header.d.ts +4 -7
  237. package/lib/types/features/agent/chat/ModernAgentOutput/Header.d.ts.map +1 -1
  238. package/lib/types/features/agent/chat/ModernAgentOutput/MessageInput.d.ts +2 -1
  239. package/lib/types/features/agent/chat/ModernAgentOutput/MessageInput.d.ts.map +1 -1
  240. package/lib/types/features/agent/chat/ModernAgentOutput/MessageItem.d.ts +35 -7
  241. package/lib/types/features/agent/chat/ModernAgentOutput/MessageItem.d.ts.map +1 -1
  242. package/lib/types/features/agent/chat/ModernAgentOutput/StreamingMessage.d.ts +11 -1
  243. package/lib/types/features/agent/chat/ModernAgentOutput/StreamingMessage.d.ts.map +1 -1
  244. package/lib/types/features/agent/chat/ModernAgentOutput/ToolCallGroup.d.ts +20 -2
  245. package/lib/types/features/agent/chat/ModernAgentOutput/ToolCallGroup.d.ts.map +1 -1
  246. package/lib/types/features/agent/chat/ModernAgentOutput/WorkstreamTabs.d.ts.map +1 -1
  247. package/lib/types/features/agent/chat/ModernAgentOutput/utils.d.ts +18 -1
  248. package/lib/types/features/agent/chat/ModernAgentOutput/utils.d.ts.map +1 -1
  249. package/lib/types/features/agent/chat/SkillWidgetProvider.d.ts.map +1 -1
  250. package/lib/types/features/agent/chat/hooks/useAgentPlans.d.ts +22 -0
  251. package/lib/types/features/agent/chat/hooks/useAgentPlans.d.ts.map +1 -0
  252. package/lib/types/features/agent/chat/hooks/useAgentStream.d.ts +42 -0
  253. package/lib/types/features/agent/chat/hooks/useAgentStream.d.ts.map +1 -0
  254. package/lib/types/features/agent/chat/hooks/useDocumentPanel.d.ts +22 -0
  255. package/lib/types/features/agent/chat/hooks/useDocumentPanel.d.ts.map +1 -0
  256. package/lib/types/features/agent/chat/hooks/useFileProcessing.d.ts +27 -0
  257. package/lib/types/features/agent/chat/hooks/useFileProcessing.d.ts.map +1 -0
  258. package/lib/types/features/agent/chat/index.d.ts +12 -8
  259. package/lib/types/features/agent/chat/index.d.ts.map +1 -1
  260. package/lib/types/features/agent/chat/types/document.d.ts +5 -0
  261. package/lib/types/features/agent/chat/types/document.d.ts.map +1 -0
  262. package/lib/types/features/agent/index.d.ts +0 -2
  263. package/lib/types/features/agent/index.d.ts.map +1 -1
  264. package/lib/types/features/store/collections/BrowseCollectionView.d.ts.map +1 -1
  265. package/lib/types/features/store/objects/ExportPropertiesModal.d.ts.map +1 -1
  266. package/lib/types/features/store/objects/components/ContentOverview.d.ts.map +1 -1
  267. package/lib/types/features/store/objects/components/PropertiesEditorModal.d.ts.map +1 -1
  268. package/lib/types/features/store/objects/components/index.d.ts +1 -1
  269. package/lib/types/features/store/objects/components/index.d.ts.map +1 -1
  270. package/lib/types/features/store/objects/components/useDownloadFile.d.ts +35 -0
  271. package/lib/types/features/store/objects/components/useDownloadFile.d.ts.map +1 -0
  272. package/lib/types/features/store/objects/search/DocumentSearchContext.d.ts.map +1 -1
  273. package/lib/types/features/store/objects/selection/SelectionActions.d.ts +1 -1
  274. package/lib/types/features/store/objects/selection/SelectionActions.d.ts.map +1 -1
  275. package/lib/types/features/store/objects/selection/actions/ChangeTypeAction.d.ts.map +1 -1
  276. package/lib/types/features/store/objects/selection/actions/ExportPropertiesAction.d.ts.map +1 -1
  277. package/lib/types/features/store/objects/upload/useSmartFileUploadProcessing.d.ts.map +1 -1
  278. package/lib/types/features/store/types/ObjectSchemaEditor.d.ts +2 -1
  279. package/lib/types/features/store/types/ObjectSchemaEditor.d.ts.map +1 -1
  280. package/lib/types/features/store/types/SelectContentTypeModal.d.ts +1 -1
  281. package/lib/types/features/store/types/SelectContentTypeModal.d.ts.map +1 -1
  282. package/lib/types/features/store/types/TableLayoutEditor.d.ts +2 -1
  283. package/lib/types/features/store/types/TableLayoutEditor.d.ts.map +1 -1
  284. package/lib/types/features/user/UserInfo.d.ts +12 -1
  285. package/lib/types/features/user/UserInfo.d.ts.map +1 -1
  286. package/lib/types/features/utils/print.d.ts.map +1 -1
  287. package/lib/types/layout/AppLayout.d.ts.map +1 -1
  288. package/lib/types/layout/Sidebar.d.ts +4 -2
  289. package/lib/types/layout/Sidebar.d.ts.map +1 -1
  290. package/lib/types/router/HistoryNavigator.d.ts.map +1 -1
  291. package/lib/types/router/Nav.d.ts +6 -1
  292. package/lib/types/router/Nav.d.ts.map +1 -1
  293. package/lib/types/session/UserSession.d.ts.map +1 -1
  294. package/lib/types/session/UserSessionProvider.d.ts +1 -0
  295. package/lib/types/session/UserSessionProvider.d.ts.map +1 -1
  296. package/lib/types/widgets/json-view/JSONCode.d.ts.map +1 -1
  297. package/lib/types/widgets/markdown/ArtifactContentRenderer.d.ts +10 -1
  298. package/lib/types/widgets/markdown/ArtifactContentRenderer.d.ts.map +1 -1
  299. package/lib/types/widgets/markdown/MarkdownFigure.d.ts +15 -0
  300. package/lib/types/widgets/markdown/MarkdownFigure.d.ts.map +1 -0
  301. package/lib/types/widgets/markdown/MarkdownRenderer.d.ts.map +1 -1
  302. package/lib/types/widgets/markdown/MermaidDiagram.d.ts.map +1 -1
  303. package/lib/types/widgets/markdown/codeBlockHandlers.d.ts +5 -2
  304. package/lib/types/widgets/markdown/codeBlockHandlers.d.ts.map +1 -1
  305. package/lib/types/widgets/markdown/index.d.ts +1 -0
  306. package/lib/types/widgets/markdown/index.d.ts.map +1 -1
  307. package/lib/types/widgets/markdown/normalizeCustomSchemeLinks.d.ts +9 -0
  308. package/lib/types/widgets/markdown/normalizeCustomSchemeLinks.d.ts.map +1 -0
  309. package/lib/types/widgets/markdown/normalizeDirectives.d.ts +20 -0
  310. package/lib/types/widgets/markdown/normalizeDirectives.d.ts.map +1 -0
  311. package/lib/types/widgets/markdown/remarkDirectiveHandler.d.ts +2 -0
  312. package/lib/types/widgets/markdown/remarkDirectiveHandler.d.ts.map +1 -0
  313. package/lib/types/widgets/monacoEditor/MonacoEditor.d.ts +1 -3
  314. package/lib/types/widgets/monacoEditor/MonacoEditor.d.ts.map +1 -1
  315. package/lib/types/widgets/schema-editor/ManagedSchema.d.ts +1 -1
  316. package/lib/types/widgets/schema-editor/ManagedSchema.d.ts.map +1 -1
  317. package/lib/vertesia-ui-core.js +1 -1
  318. package/lib/vertesia-ui-core.js.map +1 -1
  319. package/lib/vertesia-ui-features.js +1 -1
  320. package/lib/vertesia-ui-features.js.map +1 -1
  321. package/lib/vertesia-ui-layout.js +1 -1
  322. package/lib/vertesia-ui-layout.js.map +1 -1
  323. package/lib/vertesia-ui-router.js +1 -1
  324. package/lib/vertesia-ui-router.js.map +1 -1
  325. package/lib/vertesia-ui-session.js +1 -1
  326. package/lib/vertesia-ui-session.js.map +1 -1
  327. package/lib/vertesia-ui-shell.js +1 -1
  328. package/lib/vertesia-ui-shell.js.map +1 -1
  329. package/lib/vertesia-ui-widgets.js +1 -1
  330. package/lib/vertesia-ui-widgets.js.map +1 -1
  331. package/package.json +14 -10
  332. package/src/core/components/InputList.tsx +1 -1
  333. package/src/core/components/Overlay.tsx +1 -1
  334. package/src/core/components/SidePanel.tsx +29 -15
  335. package/src/core/components/Switch.tsx +1 -1
  336. package/src/core/components/index.ts +0 -8
  337. package/src/core/components/shadcn/Panel.tsx +50 -0
  338. package/src/core/components/{Badge.tsx → shadcn/badge.tsx} +3 -3
  339. package/src/core/components/shadcn/command.tsx +1 -1
  340. package/src/core/components/shadcn/filters/filterBar.tsx +76 -87
  341. package/src/core/components/shadcn/index.ts +5 -3
  342. package/src/core/components/{ConfirmModal.tsx → shadcn/modal/ConfirmModal.tsx} +8 -8
  343. package/src/core/components/{DeleteModal.tsx → shadcn/modal/DeleteModal.tsx} +1 -1
  344. package/src/core/components/shadcn/{dialog.tsx → modal/dialog.tsx} +43 -32
  345. package/src/core/components/shadcn/modal/index.ts +3 -0
  346. package/src/core/components/shadcn/popover.tsx +4 -2
  347. package/src/core/components/shadcn/selectBox.tsx +71 -52
  348. package/src/core/components/shadcn/tabs.tsx +36 -19
  349. package/src/core/components/shadcn/textarea.tsx +43 -2
  350. package/src/core/components/shadcn/tooltip.tsx +23 -17
  351. package/src/features/agent/PayloadBuilder.tsx +70 -9
  352. package/src/features/agent/chat/AgentChart.tsx +46 -678
  353. package/src/features/agent/chat/AskUserWidget.tsx +4 -3
  354. package/src/features/agent/chat/DocumentPanel.tsx +120 -0
  355. package/src/features/agent/chat/DocumentTabBar.tsx +49 -0
  356. package/src/features/agent/chat/ModernAgentConversation.tsx +403 -549
  357. package/src/features/agent/chat/ModernAgentOutput/AllMessagesMixed.tsx +162 -55
  358. package/src/features/agent/chat/ModernAgentOutput/BatchProgressPanel.tsx +40 -10
  359. package/src/features/agent/chat/ModernAgentOutput/Header.tsx +12 -16
  360. package/src/features/agent/chat/ModernAgentOutput/InlineSlidingPlanPanel.tsx +3 -3
  361. package/src/features/agent/chat/ModernAgentOutput/MessageInput.tsx +68 -75
  362. package/src/features/agent/chat/ModernAgentOutput/MessageItem.tsx +206 -94
  363. package/src/features/agent/chat/ModernAgentOutput/StreamingMessage.tsx +22 -5
  364. package/src/features/agent/chat/ModernAgentOutput/ToolCallGroup.tsx +295 -113
  365. package/src/features/agent/chat/ModernAgentOutput/WorkstreamTabs.tsx +11 -8
  366. package/src/features/agent/chat/ModernAgentOutput/utils.ts +133 -4
  367. package/src/features/agent/chat/SkillWidgetProvider.tsx +32 -15
  368. package/src/features/agent/chat/hooks/useAgentPlans.ts +190 -0
  369. package/src/features/agent/chat/hooks/useAgentStream.ts +239 -0
  370. package/src/features/agent/chat/hooks/useDocumentPanel.ts +118 -0
  371. package/src/features/agent/chat/hooks/useFileProcessing.ts +126 -0
  372. package/src/features/agent/chat/index.ts +18 -17
  373. package/src/features/agent/chat/types/document.ts +4 -0
  374. package/src/features/agent/index.ts +0 -2
  375. package/src/features/store/collections/BrowseCollectionView.tsx +5 -8
  376. package/src/features/store/collections/CreateCollection.tsx +8 -8
  377. package/src/features/store/collections/EditCollectionView.tsx +1 -1
  378. package/src/features/store/objects/DocumentSearchResults.tsx +9 -13
  379. package/src/features/store/objects/ExportPropertiesModal.tsx +9 -7
  380. package/src/features/store/objects/components/ContentOverview.tsx +29 -155
  381. package/src/features/store/objects/components/PropertiesEditorModal.tsx +0 -1
  382. package/src/features/store/objects/components/SelectDocumentModal.tsx +6 -6
  383. package/src/features/store/objects/components/VectorSearchWidget.tsx +2 -2
  384. package/src/features/store/objects/components/index.ts +1 -1
  385. package/src/features/store/objects/components/useDownloadFile.ts +237 -0
  386. package/src/features/store/objects/search/DocumentSearchContext.ts +1 -2
  387. package/src/features/store/objects/selection/SelectionActions.tsx +0 -4
  388. package/src/features/store/objects/selection/actions/AddToCollectionAction.tsx +13 -13
  389. package/src/features/store/objects/selection/actions/ChangeTypeAction.tsx +2 -6
  390. package/src/features/store/objects/selection/actions/ExportPropertiesAction.tsx +1 -3
  391. package/src/features/store/objects/selection/actions/StartWorkflowComponent.tsx +8 -8
  392. package/src/features/store/objects/upload/DocumentUploadModal.tsx +25 -25
  393. package/src/features/store/objects/upload/useSmartFileUploadProcessing.ts +16 -10
  394. package/src/features/store/types/ObjectSchemaEditor.tsx +32 -29
  395. package/src/features/store/types/SelectContentType.tsx +3 -3
  396. package/src/features/store/types/SelectContentTypeModal.tsx +17 -30
  397. package/src/features/store/types/TableLayoutEditor.tsx +14 -18
  398. package/src/features/user/UserInfo.tsx +176 -10
  399. package/src/features/utils/print.ts +0 -1
  400. package/src/layout/AppLayout.tsx +16 -44
  401. package/src/layout/Sidebar.tsx +7 -5
  402. package/src/router/HistoryNavigator.ts +9 -1
  403. package/src/router/Nav.tsx +7 -2
  404. package/src/session/UserSession.ts +38 -9
  405. package/src/session/UserSessionProvider.tsx +3 -2
  406. package/src/shell/apps/AppProjectSelector.tsx +2 -2
  407. package/src/shell/apps/StandaloneApp.tsx +3 -3
  408. package/src/shell/login/InviteAcceptModal.tsx +6 -6
  409. package/src/shell/login/SignInModal.tsx +1 -1
  410. package/src/shell/login/SignupForm.tsx +3 -3
  411. package/src/shell/login/UserInfo.tsx +5 -5
  412. package/src/widgets/json-view/JSONCode.tsx +1 -3
  413. package/src/widgets/json-view/JSONDisplay.tsx +1 -1
  414. package/src/widgets/markdown/ArtifactContentRenderer.tsx +115 -14
  415. package/src/widgets/markdown/MarkdownFigure.tsx +100 -0
  416. package/src/widgets/markdown/MarkdownRenderer.tsx +62 -9
  417. package/src/widgets/markdown/MermaidDiagram.tsx +97 -5
  418. package/src/widgets/markdown/codeBlockHandlers.test.tsx +3 -34
  419. package/src/widgets/markdown/codeBlockHandlers.tsx +47 -42
  420. package/src/widgets/markdown/index.ts +1 -0
  421. package/src/widgets/markdown/markdown.css +192 -0
  422. package/src/widgets/markdown/normalizeCustomSchemeLinks.test.ts +86 -0
  423. package/src/widgets/markdown/normalizeCustomSchemeLinks.ts +91 -0
  424. package/src/widgets/markdown/normalizeDirectives.ts +50 -0
  425. package/src/widgets/markdown/remarkDirectiveHandler.ts +119 -0
  426. package/src/widgets/monacoEditor/MonacoEditor.tsx +8 -22
  427. package/src/widgets/schema-editor/ManagedSchema.ts +1 -1
  428. package/src/widgets/schema-editor/editor/PropertyEditor.tsx +5 -5
  429. package/src/widgets/schema-editor/json-schema4-utils.ts +1 -1
  430. package/lib/esm/core/components/Badge.js.map +0 -1
  431. package/lib/esm/core/components/Button.js +0 -32
  432. package/lib/esm/core/components/Button.js.map +0 -1
  433. package/lib/esm/core/components/ConfirmModal.js +0 -10
  434. package/lib/esm/core/components/ConfirmModal.js.map +0 -1
  435. package/lib/esm/core/components/DeleteModal.js.map +0 -1
  436. package/lib/esm/core/components/MessageBox.js.map +0 -1
  437. package/lib/esm/core/components/Modal.js +0 -26
  438. package/lib/esm/core/components/Modal.js.map +0 -1
  439. package/lib/esm/core/components/Panel.js +0 -8
  440. package/lib/esm/core/components/Panel.js.map +0 -1
  441. package/lib/esm/core/components/SelectBox.js +0 -67
  442. package/lib/esm/core/components/SelectBox.js.map +0 -1
  443. package/lib/esm/core/components/shadcn/dialog.js.map +0 -1
  444. package/lib/esm/core/components/tabs/Tabs.js +0 -78
  445. package/lib/esm/core/components/tabs/Tabs.js.map +0 -1
  446. package/lib/esm/core/components/tabs/TabsContext.js +0 -7
  447. package/lib/esm/core/components/tabs/TabsContext.js.map +0 -1
  448. package/lib/esm/core/components/tabs/index.js +0 -3
  449. package/lib/esm/core/components/tabs/index.js.map +0 -1
  450. package/lib/esm/features/agent/createChartTool.js +0 -632
  451. package/lib/esm/features/agent/createChartTool.js.map +0 -1
  452. package/lib/esm/features/agent/examples.js +0 -295
  453. package/lib/esm/features/agent/examples.js.map +0 -1
  454. package/lib/esm/features/agent/visualization.js +0 -165
  455. package/lib/esm/features/agent/visualization.js.map +0 -1
  456. package/lib/esm/features/store/objects/components/useDownloadObject.js +0 -21
  457. package/lib/esm/features/store/objects/components/useDownloadObject.js.map +0 -1
  458. package/lib/types/core/components/Badge.d.ts.map +0 -1
  459. package/lib/types/core/components/Button.d.ts +0 -14
  460. package/lib/types/core/components/Button.d.ts.map +0 -1
  461. package/lib/types/core/components/ConfirmModal.d.ts.map +0 -1
  462. package/lib/types/core/components/DeleteModal.d.ts.map +0 -1
  463. package/lib/types/core/components/MessageBox.d.ts.map +0 -1
  464. package/lib/types/core/components/Modal.d.ts +0 -30
  465. package/lib/types/core/components/Modal.d.ts.map +0 -1
  466. package/lib/types/core/components/Panel.d.ts.map +0 -1
  467. package/lib/types/core/components/SelectBox.d.ts +0 -36
  468. package/lib/types/core/components/SelectBox.d.ts.map +0 -1
  469. package/lib/types/core/components/shadcn/dialog.d.ts.map +0 -1
  470. package/lib/types/core/components/tabs/Tabs.d.ts +0 -25
  471. package/lib/types/core/components/tabs/Tabs.d.ts.map +0 -1
  472. package/lib/types/core/components/tabs/TabsContext.d.ts +0 -17
  473. package/lib/types/core/components/tabs/TabsContext.d.ts.map +0 -1
  474. package/lib/types/core/components/tabs/index.d.ts +0 -3
  475. package/lib/types/core/components/tabs/index.d.ts.map +0 -1
  476. package/lib/types/features/agent/createChartTool.d.ts +0 -178
  477. package/lib/types/features/agent/createChartTool.d.ts.map +0 -1
  478. package/lib/types/features/agent/examples.d.ts +0 -59
  479. package/lib/types/features/agent/examples.d.ts.map +0 -1
  480. package/lib/types/features/agent/visualization.d.ts +0 -95
  481. package/lib/types/features/agent/visualization.d.ts.map +0 -1
  482. package/lib/types/features/store/objects/components/useDownloadObject.d.ts +0 -4
  483. package/lib/types/features/store/objects/components/useDownloadObject.d.ts.map +0 -1
  484. package/src/core/components/Button.tsx +0 -63
  485. package/src/core/components/Modal.tsx +0 -144
  486. package/src/core/components/Panel.tsx +0 -34
  487. package/src/core/components/SelectBox.tsx +0 -188
  488. package/src/core/components/tabs/Tabs.tsx +0 -132
  489. package/src/core/components/tabs/TabsContext.ts +0 -25
  490. package/src/core/components/tabs/index.ts +0 -2
  491. package/src/features/agent/CHART_INSTRUCTIONS.md +0 -228
  492. package/src/features/agent/createChartTool.ts +0 -643
  493. package/src/features/agent/examples.ts +0 -321
  494. package/src/features/agent/visualization.ts +0 -227
  495. package/src/features/store/objects/components/useDownloadObject.ts +0 -29
  496. /package/lib/esm/core/components/{MessageBox.js → shadcn/MessageBox.js} +0 -0
  497. /package/lib/types/core/components/{MessageBox.d.ts → shadcn/MessageBox.d.ts} +0 -0
  498. /package/lib/types/core/components/{ConfirmModal.d.ts → shadcn/modal/ConfirmModal.d.ts} +0 -0
  499. /package/lib/types/core/components/{DeleteModal.d.ts → shadcn/modal/DeleteModal.d.ts} +0 -0
  500. /package/src/core/components/{MessageBox.tsx → shadcn/MessageBox.tsx} +0 -0
@@ -0,0 +1,239 @@
1
+ import { useCallback, useEffect, useRef, useState } from 'react';
2
+ import { AsyncExecutionResult, VertesiaClient } from '@vertesia/client';
3
+ import {
4
+ AgentMessage,
5
+ AgentMessageType,
6
+ ConversationFile,
7
+ FileProcessingDetails,
8
+ StreamingChunkDetails,
9
+ } from '@vertesia/common';
10
+ import { insertMessageInTimeline, isInProgress } from '../ModernAgentOutput/utils';
11
+
12
+ /** Streaming data for a single active stream, keyed by streaming/activity ID */
13
+ export interface StreamingData {
14
+ text: string;
15
+ workstreamId?: string;
16
+ isComplete?: boolean;
17
+ startTimestamp: number;
18
+ activityId?: string;
19
+ }
20
+
21
+ export interface UseAgentStreamResult {
22
+ messages: AgentMessage[];
23
+ streamingMessages: Map<string, StreamingData>;
24
+ isCompleted: boolean;
25
+ /** Whether we are receiving chunks right now (for visual indicators) */
26
+ debugChunkFlash: boolean;
27
+ /** Add an optimistic message (for user input) */
28
+ addOptimisticMessage: (msg: AgentMessage) => void;
29
+ /** Remove optimistic messages matching a predicate */
30
+ removeOptimisticMessages: (predicate: (msg: AgentMessage) => boolean) => void;
31
+ /** Workflow status fetched from API (RUNNING, COMPLETED, FAILED, etc.) */
32
+ workflowStatus: string | null;
33
+ /** Server-side file processing status updates (from SYSTEM messages) */
34
+ serverFileUpdates: Map<string, ConversationFile>;
35
+ }
36
+
37
+ /**
38
+ * Hook that manages the SSE message stream for an agent conversation.
39
+ *
40
+ * Encapsulates:
41
+ * - `client.store.workflows.streamMessages()` call and cleanup
42
+ * - STREAMING_CHUNK accumulation with RAF-batched flushing
43
+ * - Streaming→persisted message dedup (activity_id matching on THOUGHT/ANSWER arrival)
44
+ * - COMPLETE/IDLE streaming flush
45
+ * - Timestamp-based message dedup and optimistic QUESTION replacement
46
+ * - `isCompleted` derived state
47
+ * - State reset when `run.runId` changes
48
+ *
49
+ * File-processing SYSTEM messages are passed through to the messages array
50
+ * (Option A from the plan) so downstream hooks can react to them.
51
+ */
52
+ export function useAgentStream(
53
+ client: VertesiaClient,
54
+ run: AsyncExecutionResult,
55
+ ): UseAgentStreamResult {
56
+ const [messages, setMessages] = useState<AgentMessage[]>([]);
57
+ const [isCompleted, setIsCompleted] = useState(false);
58
+ const [workflowStatus, setWorkflowStatus] = useState<string | null>(null);
59
+
60
+ // Server-side file processing status updates
61
+ const [serverFileUpdates, setServerFileUpdates] = useState<Map<string, ConversationFile>>(new Map());
62
+
63
+ // Streaming messages by streaming_id for real-time chunk aggregation
64
+ const [streamingMessages, setStreamingMessages] = useState<Map<string, StreamingData>>(new Map());
65
+
66
+ // RAF-batched streaming updates
67
+ const pendingStreamingChunks = useRef<Map<string, StreamingData>>(new Map());
68
+ const streamingFlushScheduled = useRef<number | null>(null);
69
+
70
+ // Debug: visual flash indicator for incoming chunks
71
+ const [debugChunkFlash, setDebugChunkFlash] = useState(false);
72
+ const debugFlashTimeout = useRef<ReturnType<typeof setTimeout> | null>(null);
73
+
74
+ const flushStreamingChunks = useCallback(() => {
75
+ if (pendingStreamingChunks.current.size > 0) {
76
+ setStreamingMessages(new Map(pendingStreamingChunks.current));
77
+ setDebugChunkFlash(true);
78
+ if (debugFlashTimeout.current) clearTimeout(debugFlashTimeout.current);
79
+ debugFlashTimeout.current = setTimeout(() => setDebugChunkFlash(false), 50);
80
+ }
81
+ streamingFlushScheduled.current = null;
82
+ }, []);
83
+
84
+ // Update isCompleted when messages change
85
+ useEffect(() => {
86
+ setIsCompleted(!isInProgress(messages));
87
+ }, [messages]);
88
+
89
+ // Stream messages from the agent
90
+ useEffect(() => {
91
+ // Reset all state when runId changes (new agent)
92
+ setMessages([]);
93
+ setWorkflowStatus(null);
94
+ setStreamingMessages(new Map());
95
+ setServerFileUpdates(new Map());
96
+
97
+ // Check workflow status
98
+ client.store.workflows.getRunDetails(run.runId, run.workflowId)
99
+ .then((statusResult) => {
100
+ setWorkflowStatus(statusResult.status as string);
101
+ })
102
+ .catch((error) => {
103
+ console.error('Failed to check workflow status:', error);
104
+ });
105
+
106
+ client.store.workflows.streamMessages(run.workflowId, run.runId, (message) => {
107
+ // Handle streaming chunks separately for real-time aggregation
108
+ // PERFORMANCE: Batch updates using RAF instead of immediate state updates
109
+ if (message.type === AgentMessageType.STREAMING_CHUNK) {
110
+ const details = message.details as StreamingChunkDetails;
111
+ const streamKey = details?.activity_id || details?.streaming_id;
112
+ if (!streamKey) return;
113
+
114
+ // Accumulate chunks in the ref (no state update yet)
115
+ const current = pendingStreamingChunks.current.get(streamKey) || {
116
+ text: '',
117
+ workstreamId: message.workstream_id,
118
+ startTimestamp: Date.now(),
119
+ activityId: details?.activity_id,
120
+ };
121
+ const newText = current.text + (message.message || '');
122
+
123
+ pendingStreamingChunks.current.set(streamKey, {
124
+ text: newText,
125
+ workstreamId: message.workstream_id,
126
+ isComplete: details.is_final,
127
+ startTimestamp: current.startTimestamp,
128
+ activityId: details?.activity_id,
129
+ });
130
+
131
+ // Schedule a flush if not already scheduled (~60 updates/sec max)
132
+ if (streamingFlushScheduled.current === null) {
133
+ streamingFlushScheduled.current = requestAnimationFrame(flushStreamingChunks);
134
+ }
135
+ return;
136
+ }
137
+
138
+ // Handle file processing SYSTEM messages — update serverFileUpdates
139
+ // for downstream useFileProcessing hook, don't add to messages array
140
+ if (message.type === AgentMessageType.SYSTEM) {
141
+ const details = message.details as FileProcessingDetails | undefined;
142
+ if (details?.system_type === 'file_processing' && details.files) {
143
+ setServerFileUpdates(prev => {
144
+ const newMap = new Map(prev);
145
+ for (const file of details.files) {
146
+ newMap.set(file.id, file);
147
+ }
148
+ return newMap;
149
+ });
150
+ return;
151
+ }
152
+ // Other SYSTEM messages fall through to normal handling
153
+ }
154
+
155
+ // When THOUGHT or ANSWER arrives with activity_id, remove matching streaming message
156
+ if (
157
+ (message.type === AgentMessageType.THOUGHT || message.type === AgentMessageType.ANSWER) &&
158
+ message.details?.activity_id
159
+ ) {
160
+ const activityId = message.details.activity_id as string;
161
+ pendingStreamingChunks.current.delete(activityId);
162
+ setStreamingMessages(prev => {
163
+ if (prev.has(activityId)) {
164
+ const next = new Map(prev);
165
+ next.delete(activityId);
166
+ return next;
167
+ }
168
+ return prev;
169
+ });
170
+ }
171
+
172
+ // On COMPLETE or IDLE, flush any pending chunks
173
+ if (message.type === AgentMessageType.COMPLETE || message.type === AgentMessageType.IDLE) {
174
+ if (pendingStreamingChunks.current.size > 0) {
175
+ flushStreamingChunks();
176
+ }
177
+ }
178
+
179
+ if (message.message) {
180
+ setMessages((prev) => {
181
+ // Check for duplicate by timestamp
182
+ if (prev.find((m) => m.timestamp === message.timestamp)) {
183
+ return prev;
184
+ }
185
+
186
+ // For QUESTION messages from server, replace any optimistic version
187
+ if (message.type === AgentMessageType.QUESTION && !message.details?._optimistic) {
188
+ const withoutOptimistic = prev.filter(
189
+ (m) => !(m.type === AgentMessageType.QUESTION && m.details?._optimistic),
190
+ );
191
+ insertMessageInTimeline(withoutOptimistic, message);
192
+ return [...withoutOptimistic];
193
+ }
194
+
195
+ insertMessageInTimeline(prev, message);
196
+ return [...prev];
197
+ });
198
+ }
199
+ });
200
+
201
+ return () => {
202
+ setMessages([]);
203
+ if (streamingFlushScheduled.current !== null) {
204
+ cancelAnimationFrame(streamingFlushScheduled.current);
205
+ streamingFlushScheduled.current = null;
206
+ }
207
+ pendingStreamingChunks.current.clear();
208
+ };
209
+ }, [run.runId, client.store.workflows, flushStreamingChunks]);
210
+
211
+ // Add an optimistic message to the timeline
212
+ const addOptimisticMessage = useCallback((msg: AgentMessage) => {
213
+ setMessages((prev) => {
214
+ const newMessages = [...prev, msg];
215
+ newMessages.sort((a, b) => {
216
+ const timeA = typeof a.timestamp === 'number' ? a.timestamp : new Date(a.timestamp).getTime();
217
+ const timeB = typeof b.timestamp === 'number' ? b.timestamp : new Date(b.timestamp).getTime();
218
+ return timeA - timeB;
219
+ });
220
+ return newMessages;
221
+ });
222
+ }, []);
223
+
224
+ // Remove optimistic messages matching a predicate
225
+ const removeOptimisticMessages = useCallback((predicate: (msg: AgentMessage) => boolean) => {
226
+ setMessages((prev) => prev.filter((m) => !predicate(m)));
227
+ }, []);
228
+
229
+ return {
230
+ messages,
231
+ streamingMessages,
232
+ isCompleted,
233
+ debugChunkFlash,
234
+ addOptimisticMessage,
235
+ removeOptimisticMessages,
236
+ workflowStatus,
237
+ serverFileUpdates,
238
+ };
239
+ }
@@ -0,0 +1,118 @@
1
+ import { useCallback, useEffect, useRef, useState } from 'react';
2
+ import { AgentMessage, AgentMessageType } from '@vertesia/common';
3
+ import type { OpenDocument } from '../types/document.js';
4
+
5
+ export interface UseDocumentPanelResult {
6
+ openDocuments: OpenDocument[];
7
+ activeDocumentId: string | null;
8
+ isDocPanelOpen: boolean;
9
+ docRefreshKey: number;
10
+ closeDocPanel: () => void;
11
+ closeDocument: (docId: string) => void;
12
+ selectDocument: (docId: string) => void;
13
+ openDocInPanel: (docId: string) => void;
14
+ }
15
+
16
+ /**
17
+ * Hook that manages the document side panel.
18
+ *
19
+ * Listens for UPDATE messages with `event_class: 'document_created' | 'document_updated'`
20
+ * and manages panel open/close, tab selection, and refresh state.
21
+ *
22
+ * Uses incremental processing — only scans new messages.
23
+ */
24
+ export function useDocumentPanel(messages: AgentMessage[]): UseDocumentPanelResult {
25
+ const [openDocuments, setOpenDocuments] = useState<OpenDocument[]>([]);
26
+ const [activeDocumentId, setActiveDocumentId] = useState<string | null>(null);
27
+ const [isDocPanelOpen, setIsDocPanelOpen] = useState(false);
28
+ const [docRefreshKey, setDocRefreshKey] = useState(0);
29
+
30
+ // Incremental processing
31
+ const lastProcessedIndex = useRef<number>(-1);
32
+
33
+ // Reset when messages are cleared
34
+ useEffect(() => {
35
+ if (messages.length === 0) {
36
+ setOpenDocuments([]);
37
+ setActiveDocumentId(null);
38
+ setIsDocPanelOpen(false);
39
+ setDocRefreshKey(0);
40
+ lastProcessedIndex.current = -1;
41
+ }
42
+ }, [messages.length === 0]);
43
+
44
+ // Process new messages incrementally for document events
45
+ useEffect(() => {
46
+ const startIdx = lastProcessedIndex.current + 1;
47
+ if (startIdx >= messages.length) return;
48
+
49
+ for (let i = startIdx; i < messages.length; i++) {
50
+ const message = messages[i];
51
+
52
+ if (message.type === AgentMessageType.UPDATE && message.details) {
53
+ const details = message.details as Record<string, unknown>;
54
+ if (details.event_class === 'document_created' || details.event_class === 'document_updated') {
55
+ const docId = details.document_id as string;
56
+ const docTitle = details.title as string;
57
+ if (docId) {
58
+ setOpenDocuments(prev => {
59
+ if (prev.some(d => d.id === docId)) return prev;
60
+ return [...prev, { id: docId, title: docTitle || 'Document' }];
61
+ });
62
+ setActiveDocumentId(docId);
63
+ setIsDocPanelOpen(true);
64
+ if (details.event_class === 'document_updated') {
65
+ setDocRefreshKey(k => k + 1);
66
+ }
67
+ }
68
+ }
69
+ }
70
+ }
71
+
72
+ lastProcessedIndex.current = messages.length - 1;
73
+ }, [messages]);
74
+
75
+ const closeDocPanel = useCallback(() => {
76
+ setIsDocPanelOpen(false);
77
+ }, []);
78
+
79
+ const closeDocument = useCallback((docId: string) => {
80
+ setOpenDocuments(prev => {
81
+ const next = prev.filter(d => d.id !== docId);
82
+ if (next.length === 0) {
83
+ setIsDocPanelOpen(false);
84
+ setActiveDocumentId(null);
85
+ } else {
86
+ setActiveDocumentId(current => {
87
+ if (current === docId) return next[0].id;
88
+ return current;
89
+ });
90
+ }
91
+ return next;
92
+ });
93
+ }, []);
94
+
95
+ const selectDocument = useCallback((docId: string) => {
96
+ setActiveDocumentId(docId);
97
+ }, []);
98
+
99
+ const openDocInPanel = useCallback((docId: string) => {
100
+ setOpenDocuments(prev => {
101
+ if (prev.some(d => d.id === docId)) return prev;
102
+ return [...prev, { id: docId, title: 'Document' }];
103
+ });
104
+ setActiveDocumentId(docId);
105
+ setIsDocPanelOpen(true);
106
+ }, []);
107
+
108
+ return {
109
+ openDocuments,
110
+ activeDocumentId,
111
+ isDocPanelOpen,
112
+ docRefreshKey,
113
+ closeDocPanel,
114
+ closeDocument,
115
+ selectDocument,
116
+ openDocInPanel,
117
+ };
118
+ }
@@ -0,0 +1,126 @@
1
+ import { useCallback, useEffect, useMemo, useState } from 'react';
2
+ import { AsyncExecutionResult, VertesiaClient } from '@vertesia/client';
3
+ import {
4
+ ConversationFile,
5
+ ConversationFileRef,
6
+ FileProcessingStatus,
7
+ } from '@vertesia/common';
8
+
9
+ export interface UseFileProcessingResult {
10
+ processingFiles: Map<string, ConversationFile>;
11
+ hasProcessingFiles: boolean;
12
+ handleFileUpload: (files: File[]) => Promise<void>;
13
+ }
14
+
15
+ type ToastFn = (opts: { status: 'success' | 'error' | 'warning' | 'info'; title: string; description?: string; duration?: number }) => void;
16
+
17
+ /**
18
+ * Hook that manages file upload and processing state.
19
+ *
20
+ * Combines local optimistic upload state with server-side processing
21
+ * status updates (from `useAgentStream.serverFileUpdates`).
22
+ *
23
+ * @param client - Vertesia client for artifact uploads and workflow signals
24
+ * @param run - Current workflow execution
25
+ * @param serverFileUpdates - Server-side file processing updates from useAgentStream
26
+ * @param toast - Toast notification function for error display
27
+ */
28
+ export function useFileProcessing(
29
+ client: VertesiaClient,
30
+ run: AsyncExecutionResult,
31
+ serverFileUpdates: Map<string, ConversationFile>,
32
+ toast: ToastFn,
33
+ ): UseFileProcessingResult {
34
+ // Local optimistic file state (uploads initiated from the UI)
35
+ const [localFiles, setLocalFiles] = useState<Map<string, ConversationFile>>(new Map());
36
+
37
+ // Reset when run changes
38
+ useEffect(() => {
39
+ setLocalFiles(new Map());
40
+ }, [run.runId]);
41
+
42
+ // Merge local + server state (server takes precedence for same IDs)
43
+ const processingFiles = useMemo(() => {
44
+ const merged = new Map(localFiles);
45
+ serverFileUpdates.forEach((file, id) => {
46
+ merged.set(id, file);
47
+ });
48
+ return merged;
49
+ }, [localFiles, serverFileUpdates]);
50
+
51
+ const hasProcessingFiles = useMemo(() =>
52
+ Array.from(processingFiles.values()).some(
53
+ f => f.status === FileProcessingStatus.UPLOADING || f.status === FileProcessingStatus.PROCESSING
54
+ ), [processingFiles]);
55
+
56
+ const handleFileUpload = useCallback(async (files: File[]) => {
57
+ for (const file of files) {
58
+ const fileId = `file-${Date.now()}-${Math.random().toString(36).substr(2, 9)}`;
59
+ const artifactPath = `files/${file.name}`;
60
+
61
+ // Add to local state immediately (optimistic - uploading status)
62
+ const fileState: ConversationFile = {
63
+ id: fileId,
64
+ name: file.name,
65
+ content_type: file.type || 'application/octet-stream',
66
+ size: file.size,
67
+ status: FileProcessingStatus.UPLOADING,
68
+ started_at: Date.now(),
69
+ };
70
+
71
+ setLocalFiles(prev => new Map(prev).set(fileId, fileState));
72
+
73
+ try {
74
+ // Upload to artifact storage
75
+ await client.files.uploadArtifact(run.runId, artifactPath, file);
76
+
77
+ // Update local state to processing
78
+ setLocalFiles(prev => {
79
+ const newMap = new Map(prev);
80
+ const f = newMap.get(fileId);
81
+ if (f) {
82
+ f.status = FileProcessingStatus.PROCESSING;
83
+ f.artifact_path = artifactPath;
84
+ f.reference = `artifact:${artifactPath}`;
85
+ }
86
+ return newMap;
87
+ });
88
+
89
+ // Signal workflow that file was uploaded
90
+ await client.store.workflows.sendSignal(
91
+ run.workflowId,
92
+ run.runId,
93
+ 'FileUploaded',
94
+ {
95
+ id: fileId,
96
+ name: file.name,
97
+ content_type: file.type || 'application/octet-stream',
98
+ reference: `artifact:${artifactPath}`,
99
+ artifact_path: artifactPath,
100
+ } as ConversationFileRef
101
+ );
102
+ } catch (error) {
103
+ // Update local state to error
104
+ setLocalFiles(prev => {
105
+ const newMap = new Map(prev);
106
+ const f = newMap.get(fileId);
107
+ if (f) {
108
+ f.status = FileProcessingStatus.ERROR;
109
+ f.error = error instanceof Error ? error.message : 'Upload failed';
110
+ f.completed_at = Date.now();
111
+ }
112
+ return newMap;
113
+ });
114
+
115
+ toast({
116
+ status: 'error',
117
+ title: 'Upload Failed',
118
+ description: error instanceof Error ? error.message : 'Failed to upload file',
119
+ duration: 3000,
120
+ });
121
+ }
122
+ }
123
+ }, [client, run, toast]);
124
+
125
+ return { processingFiles, hasProcessingFiles, handleFileUpload };
126
+ }
@@ -1,29 +1,23 @@
1
- export * from "./JumpingDots";
2
- export { ModernAgentConversation } from "./ModernAgentConversation";
3
- export * from "./WaitingMessages";
4
- export * from "./AnimatedThinkingDots";
5
1
  export {
6
- AgentChart,
7
- type AgentChartSpec,
2
+ AgentChart, isRechartsSpec, isVegaLiteSpec, type AgentChartSpec,
8
3
  type RechartsChartSpec,
9
- type VegaLiteChartSpec,
10
- isVegaLiteSpec,
11
- isRechartsSpec,
4
+ type VegaLiteChartSpec
12
5
  } from "./AgentChart";
6
+ export * from "./AnimatedThinkingDots";
7
+ export * from "./JumpingDots";
8
+ export { ModernAgentConversation } from "./ModernAgentConversation";
13
9
  export { VegaLiteChart } from "./VegaLiteChart";
10
+ export * from "./WaitingMessages";
14
11
  // MessageInput types for external use
15
- export type { UploadedFile, SelectedDocument } from "./ModernAgentOutput/MessageInput";
12
+ export type { SelectedDocument, UploadedFile } from "./ModernAgentOutput/MessageInput";
16
13
  // AskUser widget for displaying agent prompts/questions
17
14
  export {
18
15
  AskUserWidget,
19
- ConfirmationWidget,
20
- type AskUserWidgetProps,
21
- type AskUserOption,
22
- type ConfirmationWidgetProps,
16
+ ConfirmationWidget, type AskUserOption, type AskUserWidgetProps, type ConfirmationWidgetProps
23
17
  } from "./AskUserWidget";
24
18
  // MessageItem widget and types for external use
25
- export { default as MessageItem } from "./ModernAgentOutput/MessageItem";
26
- export type { MessageItemProps } from "./ModernAgentOutput/MessageItem";
19
+ export { default as MessageItem, MESSAGE_STYLES } from "./ModernAgentOutput/MessageItem";
20
+ export type { MessageItemProps, MessageItemClassNames, MessageStyleConfig } from "./ModernAgentOutput/MessageItem";
27
21
  // MessagesContainer widget and types for external use
28
22
  export { default as MessagesContainer } from "./ModernAgentOutput/MessagesContainer";
29
23
  export type { MessagesContainerProps } from "./ModernAgentOutput/MessagesContainer";
@@ -32,4 +26,11 @@ export { default as Header } from "./ModernAgentOutput/Header";
32
26
  export type { HeaderProps } from "./ModernAgentOutput/Header";
33
27
  // StreamingMessage widget and types for external use
34
28
  export { default as StreamingMessage } from "./ModernAgentOutput/StreamingMessage";
35
- export type { StreamingMessageProps } from "./ModernAgentOutput/StreamingMessage";
29
+ export type { StreamingMessageProps, StreamingMessageClassNames } from "./ModernAgentOutput/StreamingMessage";
30
+ // ToolCallGroup types for external use
31
+ export type { ToolCallGroupClassNames } from "./ModernAgentOutput/ToolCallGroup";
32
+ // BatchProgressPanel types for external use
33
+ export type { BatchProgressPanelClassNames } from "./ModernAgentOutput/BatchProgressPanel";
34
+ export * from "./SkillWidgetProvider";
35
+ // AgentConversationViewMode type for external use
36
+ export type { AgentConversationViewMode } from "./ModernAgentOutput/AllMessagesMixed";
@@ -0,0 +1,4 @@
1
+ export interface OpenDocument {
2
+ id: string;
3
+ title: string;
4
+ }
@@ -1,4 +1,2 @@
1
1
  export * from "./chat";
2
2
  export * from "./PayloadBuilder";
3
- export * from "./visualization";
4
- export * from "./createChartTool";
@@ -1,8 +1,7 @@
1
- import { useUserSession, TypeRegistry } from "@vertesia/ui/session";
2
- import { Collection } from "@vertesia/common";
3
- import { DocumentSearchResultsWithDropZone, DocumentSearchResults } from "../objects/DocumentSearchResults";
1
+ import { Collection, getContentTypeRefId } from "@vertesia/common";
4
2
  import { useToast } from "@vertesia/ui/core";
5
- import { useDocumentSearch } from "../objects/search/DocumentSearchContext";
3
+ import { TypeRegistry, useUserSession } from "@vertesia/ui/session";
4
+ import { DocumentSearchResults, DocumentSearchResultsWithDropZone } from "../objects/DocumentSearchResults";
6
5
 
7
6
 
8
7
  interface BrowseCollectionViewProps {
@@ -11,9 +10,7 @@ interface BrowseCollectionViewProps {
11
10
  export function BrowseCollectionView({ collection }: BrowseCollectionViewProps) {
12
11
  const toast = useToast();
13
12
  const { client, typeRegistry } = useUserSession();
14
- const search = useDocumentSearch();
15
- search.query.all_revisions = true;
16
-
13
+
17
14
  const onUploadDone = async (objectIds: string[]) => {
18
15
  if (objectIds.length > 0) {
19
16
  await client.store.collections.addMembers(collection.id, objectIds).catch(err => {
@@ -39,7 +36,7 @@ function getTableLayout(collection: Collection, typeRegistry?: TypeRegistry | un
39
36
  return table_layout;
40
37
  }
41
38
  if (collection.type && typeRegistry) {
42
- table_layout = typeRegistry?.getTypeLayout(collection.type.id);
39
+ table_layout = typeRegistry?.getTypeLayout(getContentTypeRefId(collection.type));
43
40
  }
44
41
  if (table_layout && table_layout.length > 0) {
45
42
  return table_layout;
@@ -1,5 +1,5 @@
1
1
  import { CreateCollectionPayload } from "@vertesia/common";
2
- import { useToast, VModalBody, FormItem, VModalFooter, Input, Switch, Button, VModal, VModalTitle, Textarea } from "@vertesia/ui/core";
2
+ import { useToast, ModalBody, FormItem, ModalFooter, Input, Switch, Button, Modal, ModalTitle, Textarea } from "@vertesia/ui/core";
3
3
  import { SelectContentType } from "../types/SelectContentType";
4
4
  import { useNavigate } from "@vertesia/ui/router";
5
5
  import { useUserSession } from "@vertesia/ui/session";
@@ -75,7 +75,7 @@ export function CreateCollectionForm({ onClose, redirect = true, onAddToCollecti
75
75
 
76
76
  return (
77
77
  <form onSubmit={(e) => e.preventDefault()}>
78
- <VModalBody>
78
+ <ModalBody>
79
79
  <FormItem label="Name" required>
80
80
  <Input type="text" value={payload.name || ""} onChange={(value) => setPayloadProp("name", value)} />
81
81
  </FormItem>
@@ -116,12 +116,12 @@ export function CreateCollectionForm({ onClose, redirect = true, onAddToCollecti
116
116
  isClearable
117
117
  />
118
118
  </FormItem>
119
- </VModalBody>
120
- <VModalFooter>
119
+ </ModalBody>
120
+ <ModalFooter>
121
121
  <Button isDisabled={isProcessing} onClick={onCreate}>
122
122
  Create Collection
123
123
  </Button>
124
- </VModalFooter>
124
+ </ModalFooter>
125
125
  </form >
126
126
  );
127
127
  }
@@ -132,9 +132,9 @@ interface CreateCollectionModalProps {
132
132
  }
133
133
  export function CreateCollectionModal({ isOpen, onClose }: CreateCollectionModalProps) {
134
134
  return (
135
- <VModal onClose={onClose} isOpen={isOpen}>
136
- <VModalTitle>Create a Collection</VModalTitle>
135
+ <Modal onClose={onClose} isOpen={isOpen}>
136
+ <ModalTitle>Create a Collection</ModalTitle>
137
137
  <CreateCollectionForm onClose={onClose} />
138
- </VModal>
138
+ </Modal>
139
139
  );
140
140
  }
@@ -188,7 +188,7 @@ export function EditCollectionView({ refetch, collection }: EditCollectionViewPr
188
188
  </FormItem>
189
189
  )
190
190
  }
191
- <FormItem label="Table Layout" description="Define a custom layout for displaying the collection in tables.">
191
+ <FormItem label="Table Layout" description="Define a custom layout for displaying the collection in tables." className="h-[200px]">
192
192
  <MonacoEditor
193
193
  className="border-1 rounded-md border-border"
194
194
  value={tableLayoutValue}