@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.
- package/lib/esm/core/components/InputList.js +1 -1
- package/lib/esm/core/components/InputList.js.map +1 -1
- package/lib/esm/core/components/Overlay.js +1 -1
- package/lib/esm/core/components/Overlay.js.map +1 -1
- package/lib/esm/core/components/SidePanel.js +8 -2
- package/lib/esm/core/components/SidePanel.js.map +1 -1
- package/lib/esm/core/components/Switch.js +1 -1
- package/lib/esm/core/components/Switch.js.map +1 -1
- package/lib/esm/core/components/index.js +0 -8
- package/lib/esm/core/components/index.js.map +1 -1
- package/lib/esm/core/components/shadcn/MessageBox.js.map +1 -0
- package/lib/esm/core/components/shadcn/Panel.js +13 -0
- package/lib/esm/core/components/shadcn/Panel.js.map +1 -0
- package/lib/esm/core/components/{Badge.js → shadcn/badge.js} +2 -2
- package/lib/esm/core/components/shadcn/badge.js.map +1 -0
- package/lib/esm/core/components/shadcn/command.js +1 -1
- package/lib/esm/core/components/shadcn/command.js.map +1 -1
- package/lib/esm/core/components/shadcn/filters/filterBar.js +73 -83
- package/lib/esm/core/components/shadcn/filters/filterBar.js.map +1 -1
- package/lib/esm/core/components/shadcn/index.js +4 -2
- package/lib/esm/core/components/shadcn/index.js.map +1 -1
- package/lib/esm/core/components/shadcn/modal/ConfirmModal.js +10 -0
- package/lib/esm/core/components/shadcn/modal/ConfirmModal.js.map +1 -0
- package/lib/esm/core/components/{DeleteModal.js → shadcn/modal/DeleteModal.js} +1 -1
- package/lib/esm/core/components/shadcn/modal/DeleteModal.js.map +1 -0
- package/lib/esm/core/components/shadcn/{dialog.js → modal/dialog.js} +19 -15
- package/lib/esm/core/components/shadcn/modal/dialog.js.map +1 -0
- package/lib/esm/core/components/shadcn/modal/index.js +4 -0
- package/lib/esm/core/components/shadcn/modal/index.js.map +1 -0
- package/lib/esm/core/components/shadcn/popover.js +4 -2
- package/lib/esm/core/components/shadcn/popover.js.map +1 -1
- package/lib/esm/core/components/shadcn/selectBox.js +19 -15
- package/lib/esm/core/components/shadcn/selectBox.js.map +1 -1
- package/lib/esm/core/components/shadcn/tabs.js +16 -14
- package/lib/esm/core/components/shadcn/tabs.js.map +1 -1
- package/lib/esm/core/components/shadcn/textarea.js +30 -2
- package/lib/esm/core/components/shadcn/textarea.js.map +1 -1
- package/lib/esm/core/components/shadcn/tooltip.js +5 -1
- package/lib/esm/core/components/shadcn/tooltip.js.map +1 -1
- package/lib/esm/features/agent/PayloadBuilder.js +45 -0
- package/lib/esm/features/agent/PayloadBuilder.js.map +1 -1
- package/lib/esm/features/agent/chat/AgentChart.js +12 -232
- package/lib/esm/features/agent/chat/AgentChart.js.map +1 -1
- package/lib/esm/features/agent/chat/AskUserWidget.js +2 -1
- package/lib/esm/features/agent/chat/AskUserWidget.js.map +1 -1
- package/lib/esm/features/agent/chat/DocumentPanel.js +46 -0
- package/lib/esm/features/agent/chat/DocumentPanel.js.map +1 -0
- package/lib/esm/features/agent/chat/DocumentTabBar.js +17 -0
- package/lib/esm/features/agent/chat/DocumentTabBar.js.map +1 -0
- package/lib/esm/features/agent/chat/ModernAgentConversation.js +159 -402
- package/lib/esm/features/agent/chat/ModernAgentConversation.js.map +1 -1
- package/lib/esm/features/agent/chat/ModernAgentOutput/AllMessagesMixed.js +99 -57
- package/lib/esm/features/agent/chat/ModernAgentOutput/AllMessagesMixed.js.map +1 -1
- package/lib/esm/features/agent/chat/ModernAgentOutput/BatchProgressPanel.js +4 -4
- package/lib/esm/features/agent/chat/ModernAgentOutput/BatchProgressPanel.js.map +1 -1
- package/lib/esm/features/agent/chat/ModernAgentOutput/Header.js +4 -4
- package/lib/esm/features/agent/chat/ModernAgentOutput/Header.js.map +1 -1
- package/lib/esm/features/agent/chat/ModernAgentOutput/InlineSlidingPlanPanel.js +3 -3
- package/lib/esm/features/agent/chat/ModernAgentOutput/InlineSlidingPlanPanel.js.map +1 -1
- package/lib/esm/features/agent/chat/ModernAgentOutput/MessageInput.js +25 -22
- package/lib/esm/features/agent/chat/ModernAgentOutput/MessageInput.js.map +1 -1
- package/lib/esm/features/agent/chat/ModernAgentOutput/MessageItem.js +110 -55
- package/lib/esm/features/agent/chat/ModernAgentOutput/MessageItem.js.map +1 -1
- package/lib/esm/features/agent/chat/ModernAgentOutput/StreamingMessage.js +2 -2
- package/lib/esm/features/agent/chat/ModernAgentOutput/StreamingMessage.js.map +1 -1
- package/lib/esm/features/agent/chat/ModernAgentOutput/ToolCallGroup.js +146 -55
- package/lib/esm/features/agent/chat/ModernAgentOutput/ToolCallGroup.js.map +1 -1
- package/lib/esm/features/agent/chat/ModernAgentOutput/WorkstreamTabs.js +5 -6
- package/lib/esm/features/agent/chat/ModernAgentOutput/WorkstreamTabs.js.map +1 -1
- package/lib/esm/features/agent/chat/ModernAgentOutput/utils.js +110 -2
- package/lib/esm/features/agent/chat/ModernAgentOutput/utils.js.map +1 -1
- package/lib/esm/features/agent/chat/SkillWidgetProvider.js +28 -15
- package/lib/esm/features/agent/chat/SkillWidgetProvider.js.map +1 -1
- package/lib/esm/features/agent/chat/hooks/useAgentPlans.js +146 -0
- package/lib/esm/features/agent/chat/hooks/useAgentPlans.js.map +1 -0
- package/lib/esm/features/agent/chat/hooks/useAgentStream.js +180 -0
- package/lib/esm/features/agent/chat/hooks/useAgentStream.js.map +1 -0
- package/lib/esm/features/agent/chat/hooks/useDocumentPanel.js +100 -0
- package/lib/esm/features/agent/chat/hooks/useDocumentPanel.js.map +1 -0
- package/lib/esm/features/agent/chat/hooks/useFileProcessing.js +90 -0
- package/lib/esm/features/agent/chat/hooks/useFileProcessing.js.map +1 -0
- package/lib/esm/features/agent/chat/index.js +6 -5
- package/lib/esm/features/agent/chat/index.js.map +1 -1
- package/lib/esm/features/agent/chat/types/document.js +2 -0
- package/lib/esm/features/agent/chat/types/document.js.map +1 -0
- package/lib/esm/features/agent/index.js +0 -2
- package/lib/esm/features/agent/index.js.map +1 -1
- package/lib/esm/features/store/collections/BrowseCollectionView.js +4 -6
- package/lib/esm/features/store/collections/BrowseCollectionView.js.map +1 -1
- package/lib/esm/features/store/collections/CreateCollection.js +4 -4
- package/lib/esm/features/store/collections/CreateCollection.js.map +1 -1
- package/lib/esm/features/store/collections/EditCollectionView.js +1 -1
- package/lib/esm/features/store/collections/EditCollectionView.js.map +1 -1
- package/lib/esm/features/store/objects/DocumentSearchResults.js +5 -5
- package/lib/esm/features/store/objects/DocumentSearchResults.js.map +1 -1
- package/lib/esm/features/store/objects/ExportPropertiesModal.js +3 -3
- package/lib/esm/features/store/objects/ExportPropertiesModal.js.map +1 -1
- package/lib/esm/features/store/objects/components/ContentOverview.js +19 -120
- package/lib/esm/features/store/objects/components/ContentOverview.js.map +1 -1
- package/lib/esm/features/store/objects/components/PropertiesEditorModal.js +1 -1
- package/lib/esm/features/store/objects/components/PropertiesEditorModal.js.map +1 -1
- package/lib/esm/features/store/objects/components/SelectDocumentModal.js +2 -2
- package/lib/esm/features/store/objects/components/SelectDocumentModal.js.map +1 -1
- package/lib/esm/features/store/objects/components/VectorSearchWidget.js +1 -1
- package/lib/esm/features/store/objects/components/VectorSearchWidget.js.map +1 -1
- package/lib/esm/features/store/objects/components/index.js +1 -1
- package/lib/esm/features/store/objects/components/index.js.map +1 -1
- package/lib/esm/features/store/objects/components/useDownloadFile.js +192 -0
- package/lib/esm/features/store/objects/components/useDownloadFile.js.map +1 -0
- package/lib/esm/features/store/objects/search/DocumentSearchContext.js +1 -2
- package/lib/esm/features/store/objects/search/DocumentSearchContext.js.map +1 -1
- package/lib/esm/features/store/objects/selection/SelectionActions.js +5 -8
- package/lib/esm/features/store/objects/selection/SelectionActions.js.map +1 -1
- package/lib/esm/features/store/objects/selection/actions/AddToCollectionAction.js +4 -4
- package/lib/esm/features/store/objects/selection/actions/AddToCollectionAction.js.map +1 -1
- package/lib/esm/features/store/objects/selection/actions/ChangeTypeAction.js +2 -2
- package/lib/esm/features/store/objects/selection/actions/ChangeTypeAction.js.map +1 -1
- package/lib/esm/features/store/objects/selection/actions/ExportPropertiesAction.js +1 -1
- package/lib/esm/features/store/objects/selection/actions/ExportPropertiesAction.js.map +1 -1
- package/lib/esm/features/store/objects/selection/actions/StartWorkflowComponent.js +3 -3
- package/lib/esm/features/store/objects/selection/actions/StartWorkflowComponent.js.map +1 -1
- package/lib/esm/features/store/objects/upload/DocumentUploadModal.js +13 -13
- package/lib/esm/features/store/objects/upload/DocumentUploadModal.js.map +1 -1
- package/lib/esm/features/store/objects/upload/useSmartFileUploadProcessing.js +15 -8
- package/lib/esm/features/store/objects/upload/useSmartFileUploadProcessing.js.map +1 -1
- package/lib/esm/features/store/types/ObjectSchemaEditor.js +6 -5
- package/lib/esm/features/store/types/ObjectSchemaEditor.js.map +1 -1
- package/lib/esm/features/store/types/SelectContentType.js +3 -3
- package/lib/esm/features/store/types/SelectContentType.js.map +1 -1
- package/lib/esm/features/store/types/SelectContentTypeModal.js +5 -4
- package/lib/esm/features/store/types/SelectContentTypeModal.js.map +1 -1
- package/lib/esm/features/store/types/TableLayoutEditor.js +4 -4
- package/lib/esm/features/store/types/TableLayoutEditor.js.map +1 -1
- package/lib/esm/features/user/UserInfo.js +73 -9
- package/lib/esm/features/user/UserInfo.js.map +1 -1
- package/lib/esm/features/utils/print.js +0 -1
- package/lib/esm/features/utils/print.js.map +1 -1
- package/lib/esm/layout/AppLayout.js +3 -4
- package/lib/esm/layout/AppLayout.js.map +1 -1
- package/lib/esm/layout/Sidebar.js +5 -5
- package/lib/esm/layout/Sidebar.js.map +1 -1
- package/lib/esm/router/HistoryNavigator.js +7 -1
- package/lib/esm/router/HistoryNavigator.js.map +1 -1
- package/lib/esm/router/Nav.js +2 -2
- package/lib/esm/router/Nav.js.map +1 -1
- package/lib/esm/session/UserSession.js +35 -9
- package/lib/esm/session/UserSession.js.map +1 -1
- package/lib/esm/session/UserSessionProvider.js +3 -2
- package/lib/esm/session/UserSessionProvider.js.map +1 -1
- package/lib/esm/shell/apps/AppProjectSelector.js +2 -2
- package/lib/esm/shell/apps/AppProjectSelector.js.map +1 -1
- package/lib/esm/shell/apps/StandaloneApp.js +2 -2
- package/lib/esm/shell/apps/StandaloneApp.js.map +1 -1
- package/lib/esm/shell/login/InviteAcceptModal.js +2 -2
- package/lib/esm/shell/login/InviteAcceptModal.js.map +1 -1
- package/lib/esm/shell/login/SignInModal.js +1 -1
- package/lib/esm/shell/login/SignInModal.js.map +1 -1
- package/lib/esm/shell/login/SignupForm.js +2 -2
- package/lib/esm/shell/login/SignupForm.js.map +1 -1
- package/lib/esm/shell/login/UserInfo.js +2 -2
- package/lib/esm/shell/login/UserInfo.js.map +1 -1
- package/lib/esm/widgets/json-view/JSONCode.js +1 -1
- package/lib/esm/widgets/json-view/JSONCode.js.map +1 -1
- package/lib/esm/widgets/json-view/JSONDisplay.js +1 -1
- package/lib/esm/widgets/json-view/JSONDisplay.js.map +1 -1
- package/lib/esm/widgets/markdown/ArtifactContentRenderer.js +84 -13
- package/lib/esm/widgets/markdown/ArtifactContentRenderer.js.map +1 -1
- package/lib/esm/widgets/markdown/MarkdownFigure.js +40 -0
- package/lib/esm/widgets/markdown/MarkdownFigure.js.map +1 -0
- package/lib/esm/widgets/markdown/MarkdownRenderer.js +42 -7
- package/lib/esm/widgets/markdown/MarkdownRenderer.js.map +1 -1
- package/lib/esm/widgets/markdown/MermaidDiagram.js +80 -5
- package/lib/esm/widgets/markdown/MermaidDiagram.js.map +1 -1
- package/lib/esm/widgets/markdown/codeBlockHandlers.js +33 -33
- package/lib/esm/widgets/markdown/codeBlockHandlers.js.map +1 -1
- package/lib/esm/widgets/markdown/codeBlockHandlers.test.js +2 -29
- package/lib/esm/widgets/markdown/codeBlockHandlers.test.js.map +1 -1
- package/lib/esm/widgets/markdown/index.js +1 -0
- package/lib/esm/widgets/markdown/index.js.map +1 -1
- package/lib/esm/widgets/markdown/normalizeCustomSchemeLinks.js +77 -0
- package/lib/esm/widgets/markdown/normalizeCustomSchemeLinks.js.map +1 -0
- package/lib/esm/widgets/markdown/normalizeDirectives.js +45 -0
- package/lib/esm/widgets/markdown/normalizeDirectives.js.map +1 -0
- package/lib/esm/widgets/markdown/remarkDirectiveHandler.js +96 -0
- package/lib/esm/widgets/markdown/remarkDirectiveHandler.js.map +1 -0
- package/lib/esm/widgets/monacoEditor/MonacoEditor.js +8 -14
- package/lib/esm/widgets/monacoEditor/MonacoEditor.js.map +1 -1
- package/lib/esm/widgets/schema-editor/ManagedSchema.js.map +1 -1
- package/lib/esm/widgets/schema-editor/editor/PropertyEditor.js +3 -3
- package/lib/esm/widgets/schema-editor/editor/PropertyEditor.js.map +1 -1
- package/lib/esm/widgets/schema-editor/json-schema4-utils.js.map +1 -1
- package/lib/tsconfig.tsbuildinfo +1 -1
- package/lib/types/core/components/SidePanel.d.ts +4 -1
- package/lib/types/core/components/SidePanel.d.ts.map +1 -1
- package/lib/types/core/components/index.d.ts +0 -8
- package/lib/types/core/components/index.d.ts.map +1 -1
- package/lib/types/core/components/shadcn/MessageBox.d.ts.map +1 -0
- package/lib/types/core/components/{Panel.d.ts → shadcn/Panel.d.ts} +3 -1
- package/lib/types/core/components/shadcn/Panel.d.ts.map +1 -0
- package/lib/types/core/components/{Badge.d.ts → shadcn/badge.d.ts} +4 -4
- package/lib/types/core/components/shadcn/badge.d.ts.map +1 -0
- package/lib/types/core/components/shadcn/button.d.ts +1 -1
- package/lib/types/core/components/shadcn/filters/filterBar.d.ts.map +1 -1
- package/lib/types/core/components/shadcn/index.d.ts +4 -2
- package/lib/types/core/components/shadcn/index.d.ts.map +1 -1
- package/lib/types/core/components/shadcn/input.d.ts +1 -1
- package/lib/types/core/components/shadcn/modal/ConfirmModal.d.ts.map +1 -0
- package/lib/types/core/components/shadcn/modal/DeleteModal.d.ts.map +1 -0
- package/lib/types/core/components/shadcn/{dialog.d.ts → modal/dialog.d.ts} +7 -4
- package/lib/types/core/components/shadcn/modal/dialog.d.ts.map +1 -0
- package/lib/types/core/components/shadcn/modal/index.d.ts +4 -0
- package/lib/types/core/components/shadcn/modal/index.d.ts.map +1 -0
- package/lib/types/core/components/shadcn/popover.d.ts.map +1 -1
- package/lib/types/core/components/shadcn/selectBox.d.ts +9 -5
- package/lib/types/core/components/shadcn/selectBox.d.ts.map +1 -1
- package/lib/types/core/components/shadcn/tabs.d.ts +14 -5
- package/lib/types/core/components/shadcn/tabs.d.ts.map +1 -1
- package/lib/types/core/components/shadcn/textarea.d.ts +6 -2
- package/lib/types/core/components/shadcn/textarea.d.ts.map +1 -1
- package/lib/types/core/components/shadcn/tooltip.d.ts.map +1 -1
- package/lib/types/features/agent/PayloadBuilder.d.ts +22 -4
- package/lib/types/features/agent/PayloadBuilder.d.ts.map +1 -1
- package/lib/types/features/agent/chat/AgentChart.d.ts +3 -44
- package/lib/types/features/agent/chat/AgentChart.d.ts.map +1 -1
- package/lib/types/features/agent/chat/AskUserWidget.d.ts.map +1 -1
- package/lib/types/features/agent/chat/DocumentPanel.d.ts +16 -0
- package/lib/types/features/agent/chat/DocumentPanel.d.ts.map +1 -0
- package/lib/types/features/agent/chat/DocumentTabBar.d.ts +10 -0
- package/lib/types/features/agent/chat/DocumentTabBar.d.ts.map +1 -0
- package/lib/types/features/agent/chat/ModernAgentConversation.d.ts +69 -1
- package/lib/types/features/agent/chat/ModernAgentConversation.d.ts.map +1 -1
- package/lib/types/features/agent/chat/ModernAgentOutput/AllMessagesMixed.d.ts +36 -1
- package/lib/types/features/agent/chat/ModernAgentOutput/AllMessagesMixed.d.ts.map +1 -1
- package/lib/types/features/agent/chat/ModernAgentOutput/BatchProgressPanel.d.ts +18 -2
- package/lib/types/features/agent/chat/ModernAgentOutput/BatchProgressPanel.d.ts.map +1 -1
- package/lib/types/features/agent/chat/ModernAgentOutput/Header.d.ts +4 -7
- package/lib/types/features/agent/chat/ModernAgentOutput/Header.d.ts.map +1 -1
- package/lib/types/features/agent/chat/ModernAgentOutput/MessageInput.d.ts +2 -1
- package/lib/types/features/agent/chat/ModernAgentOutput/MessageInput.d.ts.map +1 -1
- package/lib/types/features/agent/chat/ModernAgentOutput/MessageItem.d.ts +35 -7
- package/lib/types/features/agent/chat/ModernAgentOutput/MessageItem.d.ts.map +1 -1
- package/lib/types/features/agent/chat/ModernAgentOutput/StreamingMessage.d.ts +11 -1
- package/lib/types/features/agent/chat/ModernAgentOutput/StreamingMessage.d.ts.map +1 -1
- package/lib/types/features/agent/chat/ModernAgentOutput/ToolCallGroup.d.ts +20 -2
- package/lib/types/features/agent/chat/ModernAgentOutput/ToolCallGroup.d.ts.map +1 -1
- package/lib/types/features/agent/chat/ModernAgentOutput/WorkstreamTabs.d.ts.map +1 -1
- package/lib/types/features/agent/chat/ModernAgentOutput/utils.d.ts +18 -1
- package/lib/types/features/agent/chat/ModernAgentOutput/utils.d.ts.map +1 -1
- package/lib/types/features/agent/chat/SkillWidgetProvider.d.ts.map +1 -1
- package/lib/types/features/agent/chat/hooks/useAgentPlans.d.ts +22 -0
- package/lib/types/features/agent/chat/hooks/useAgentPlans.d.ts.map +1 -0
- package/lib/types/features/agent/chat/hooks/useAgentStream.d.ts +42 -0
- package/lib/types/features/agent/chat/hooks/useAgentStream.d.ts.map +1 -0
- package/lib/types/features/agent/chat/hooks/useDocumentPanel.d.ts +22 -0
- package/lib/types/features/agent/chat/hooks/useDocumentPanel.d.ts.map +1 -0
- package/lib/types/features/agent/chat/hooks/useFileProcessing.d.ts +27 -0
- package/lib/types/features/agent/chat/hooks/useFileProcessing.d.ts.map +1 -0
- package/lib/types/features/agent/chat/index.d.ts +12 -8
- package/lib/types/features/agent/chat/index.d.ts.map +1 -1
- package/lib/types/features/agent/chat/types/document.d.ts +5 -0
- package/lib/types/features/agent/chat/types/document.d.ts.map +1 -0
- package/lib/types/features/agent/index.d.ts +0 -2
- package/lib/types/features/agent/index.d.ts.map +1 -1
- package/lib/types/features/store/collections/BrowseCollectionView.d.ts.map +1 -1
- package/lib/types/features/store/objects/ExportPropertiesModal.d.ts.map +1 -1
- package/lib/types/features/store/objects/components/ContentOverview.d.ts.map +1 -1
- package/lib/types/features/store/objects/components/PropertiesEditorModal.d.ts.map +1 -1
- package/lib/types/features/store/objects/components/index.d.ts +1 -1
- package/lib/types/features/store/objects/components/index.d.ts.map +1 -1
- package/lib/types/features/store/objects/components/useDownloadFile.d.ts +35 -0
- package/lib/types/features/store/objects/components/useDownloadFile.d.ts.map +1 -0
- package/lib/types/features/store/objects/search/DocumentSearchContext.d.ts.map +1 -1
- package/lib/types/features/store/objects/selection/SelectionActions.d.ts +1 -1
- package/lib/types/features/store/objects/selection/SelectionActions.d.ts.map +1 -1
- package/lib/types/features/store/objects/selection/actions/ChangeTypeAction.d.ts.map +1 -1
- package/lib/types/features/store/objects/selection/actions/ExportPropertiesAction.d.ts.map +1 -1
- package/lib/types/features/store/objects/upload/useSmartFileUploadProcessing.d.ts.map +1 -1
- package/lib/types/features/store/types/ObjectSchemaEditor.d.ts +2 -1
- package/lib/types/features/store/types/ObjectSchemaEditor.d.ts.map +1 -1
- package/lib/types/features/store/types/SelectContentTypeModal.d.ts +1 -1
- package/lib/types/features/store/types/SelectContentTypeModal.d.ts.map +1 -1
- package/lib/types/features/store/types/TableLayoutEditor.d.ts +2 -1
- package/lib/types/features/store/types/TableLayoutEditor.d.ts.map +1 -1
- package/lib/types/features/user/UserInfo.d.ts +12 -1
- package/lib/types/features/user/UserInfo.d.ts.map +1 -1
- package/lib/types/features/utils/print.d.ts.map +1 -1
- package/lib/types/layout/AppLayout.d.ts.map +1 -1
- package/lib/types/layout/Sidebar.d.ts +4 -2
- package/lib/types/layout/Sidebar.d.ts.map +1 -1
- package/lib/types/router/HistoryNavigator.d.ts.map +1 -1
- package/lib/types/router/Nav.d.ts +6 -1
- package/lib/types/router/Nav.d.ts.map +1 -1
- package/lib/types/session/UserSession.d.ts.map +1 -1
- package/lib/types/session/UserSessionProvider.d.ts +1 -0
- package/lib/types/session/UserSessionProvider.d.ts.map +1 -1
- package/lib/types/widgets/json-view/JSONCode.d.ts.map +1 -1
- package/lib/types/widgets/markdown/ArtifactContentRenderer.d.ts +10 -1
- package/lib/types/widgets/markdown/ArtifactContentRenderer.d.ts.map +1 -1
- package/lib/types/widgets/markdown/MarkdownFigure.d.ts +15 -0
- package/lib/types/widgets/markdown/MarkdownFigure.d.ts.map +1 -0
- package/lib/types/widgets/markdown/MarkdownRenderer.d.ts.map +1 -1
- package/lib/types/widgets/markdown/MermaidDiagram.d.ts.map +1 -1
- package/lib/types/widgets/markdown/codeBlockHandlers.d.ts +5 -2
- package/lib/types/widgets/markdown/codeBlockHandlers.d.ts.map +1 -1
- package/lib/types/widgets/markdown/index.d.ts +1 -0
- package/lib/types/widgets/markdown/index.d.ts.map +1 -1
- package/lib/types/widgets/markdown/normalizeCustomSchemeLinks.d.ts +9 -0
- package/lib/types/widgets/markdown/normalizeCustomSchemeLinks.d.ts.map +1 -0
- package/lib/types/widgets/markdown/normalizeDirectives.d.ts +20 -0
- package/lib/types/widgets/markdown/normalizeDirectives.d.ts.map +1 -0
- package/lib/types/widgets/markdown/remarkDirectiveHandler.d.ts +2 -0
- package/lib/types/widgets/markdown/remarkDirectiveHandler.d.ts.map +1 -0
- package/lib/types/widgets/monacoEditor/MonacoEditor.d.ts +1 -3
- package/lib/types/widgets/monacoEditor/MonacoEditor.d.ts.map +1 -1
- package/lib/types/widgets/schema-editor/ManagedSchema.d.ts +1 -1
- package/lib/types/widgets/schema-editor/ManagedSchema.d.ts.map +1 -1
- package/lib/vertesia-ui-core.js +1 -1
- package/lib/vertesia-ui-core.js.map +1 -1
- package/lib/vertesia-ui-features.js +1 -1
- package/lib/vertesia-ui-features.js.map +1 -1
- package/lib/vertesia-ui-layout.js +1 -1
- package/lib/vertesia-ui-layout.js.map +1 -1
- package/lib/vertesia-ui-router.js +1 -1
- package/lib/vertesia-ui-router.js.map +1 -1
- package/lib/vertesia-ui-session.js +1 -1
- package/lib/vertesia-ui-session.js.map +1 -1
- package/lib/vertesia-ui-shell.js +1 -1
- package/lib/vertesia-ui-shell.js.map +1 -1
- package/lib/vertesia-ui-widgets.js +1 -1
- package/lib/vertesia-ui-widgets.js.map +1 -1
- package/package.json +14 -10
- package/src/core/components/InputList.tsx +1 -1
- package/src/core/components/Overlay.tsx +1 -1
- package/src/core/components/SidePanel.tsx +29 -15
- package/src/core/components/Switch.tsx +1 -1
- package/src/core/components/index.ts +0 -8
- package/src/core/components/shadcn/Panel.tsx +50 -0
- package/src/core/components/{Badge.tsx → shadcn/badge.tsx} +3 -3
- package/src/core/components/shadcn/command.tsx +1 -1
- package/src/core/components/shadcn/filters/filterBar.tsx +76 -87
- package/src/core/components/shadcn/index.ts +5 -3
- package/src/core/components/{ConfirmModal.tsx → shadcn/modal/ConfirmModal.tsx} +8 -8
- package/src/core/components/{DeleteModal.tsx → shadcn/modal/DeleteModal.tsx} +1 -1
- package/src/core/components/shadcn/{dialog.tsx → modal/dialog.tsx} +43 -32
- package/src/core/components/shadcn/modal/index.ts +3 -0
- package/src/core/components/shadcn/popover.tsx +4 -2
- package/src/core/components/shadcn/selectBox.tsx +71 -52
- package/src/core/components/shadcn/tabs.tsx +36 -19
- package/src/core/components/shadcn/textarea.tsx +43 -2
- package/src/core/components/shadcn/tooltip.tsx +23 -17
- package/src/features/agent/PayloadBuilder.tsx +70 -9
- package/src/features/agent/chat/AgentChart.tsx +46 -678
- package/src/features/agent/chat/AskUserWidget.tsx +4 -3
- package/src/features/agent/chat/DocumentPanel.tsx +120 -0
- package/src/features/agent/chat/DocumentTabBar.tsx +49 -0
- package/src/features/agent/chat/ModernAgentConversation.tsx +403 -549
- package/src/features/agent/chat/ModernAgentOutput/AllMessagesMixed.tsx +162 -55
- package/src/features/agent/chat/ModernAgentOutput/BatchProgressPanel.tsx +40 -10
- package/src/features/agent/chat/ModernAgentOutput/Header.tsx +12 -16
- package/src/features/agent/chat/ModernAgentOutput/InlineSlidingPlanPanel.tsx +3 -3
- package/src/features/agent/chat/ModernAgentOutput/MessageInput.tsx +68 -75
- package/src/features/agent/chat/ModernAgentOutput/MessageItem.tsx +206 -94
- package/src/features/agent/chat/ModernAgentOutput/StreamingMessage.tsx +22 -5
- package/src/features/agent/chat/ModernAgentOutput/ToolCallGroup.tsx +295 -113
- package/src/features/agent/chat/ModernAgentOutput/WorkstreamTabs.tsx +11 -8
- package/src/features/agent/chat/ModernAgentOutput/utils.ts +133 -4
- package/src/features/agent/chat/SkillWidgetProvider.tsx +32 -15
- package/src/features/agent/chat/hooks/useAgentPlans.ts +190 -0
- package/src/features/agent/chat/hooks/useAgentStream.ts +239 -0
- package/src/features/agent/chat/hooks/useDocumentPanel.ts +118 -0
- package/src/features/agent/chat/hooks/useFileProcessing.ts +126 -0
- package/src/features/agent/chat/index.ts +18 -17
- package/src/features/agent/chat/types/document.ts +4 -0
- package/src/features/agent/index.ts +0 -2
- package/src/features/store/collections/BrowseCollectionView.tsx +5 -8
- package/src/features/store/collections/CreateCollection.tsx +8 -8
- package/src/features/store/collections/EditCollectionView.tsx +1 -1
- package/src/features/store/objects/DocumentSearchResults.tsx +9 -13
- package/src/features/store/objects/ExportPropertiesModal.tsx +9 -7
- package/src/features/store/objects/components/ContentOverview.tsx +29 -155
- package/src/features/store/objects/components/PropertiesEditorModal.tsx +0 -1
- package/src/features/store/objects/components/SelectDocumentModal.tsx +6 -6
- package/src/features/store/objects/components/VectorSearchWidget.tsx +2 -2
- package/src/features/store/objects/components/index.ts +1 -1
- package/src/features/store/objects/components/useDownloadFile.ts +237 -0
- package/src/features/store/objects/search/DocumentSearchContext.ts +1 -2
- package/src/features/store/objects/selection/SelectionActions.tsx +0 -4
- package/src/features/store/objects/selection/actions/AddToCollectionAction.tsx +13 -13
- package/src/features/store/objects/selection/actions/ChangeTypeAction.tsx +2 -6
- package/src/features/store/objects/selection/actions/ExportPropertiesAction.tsx +1 -3
- package/src/features/store/objects/selection/actions/StartWorkflowComponent.tsx +8 -8
- package/src/features/store/objects/upload/DocumentUploadModal.tsx +25 -25
- package/src/features/store/objects/upload/useSmartFileUploadProcessing.ts +16 -10
- package/src/features/store/types/ObjectSchemaEditor.tsx +32 -29
- package/src/features/store/types/SelectContentType.tsx +3 -3
- package/src/features/store/types/SelectContentTypeModal.tsx +17 -30
- package/src/features/store/types/TableLayoutEditor.tsx +14 -18
- package/src/features/user/UserInfo.tsx +176 -10
- package/src/features/utils/print.ts +0 -1
- package/src/layout/AppLayout.tsx +16 -44
- package/src/layout/Sidebar.tsx +7 -5
- package/src/router/HistoryNavigator.ts +9 -1
- package/src/router/Nav.tsx +7 -2
- package/src/session/UserSession.ts +38 -9
- package/src/session/UserSessionProvider.tsx +3 -2
- package/src/shell/apps/AppProjectSelector.tsx +2 -2
- package/src/shell/apps/StandaloneApp.tsx +3 -3
- package/src/shell/login/InviteAcceptModal.tsx +6 -6
- package/src/shell/login/SignInModal.tsx +1 -1
- package/src/shell/login/SignupForm.tsx +3 -3
- package/src/shell/login/UserInfo.tsx +5 -5
- package/src/widgets/json-view/JSONCode.tsx +1 -3
- package/src/widgets/json-view/JSONDisplay.tsx +1 -1
- package/src/widgets/markdown/ArtifactContentRenderer.tsx +115 -14
- package/src/widgets/markdown/MarkdownFigure.tsx +100 -0
- package/src/widgets/markdown/MarkdownRenderer.tsx +62 -9
- package/src/widgets/markdown/MermaidDiagram.tsx +97 -5
- package/src/widgets/markdown/codeBlockHandlers.test.tsx +3 -34
- package/src/widgets/markdown/codeBlockHandlers.tsx +47 -42
- package/src/widgets/markdown/index.ts +1 -0
- package/src/widgets/markdown/markdown.css +192 -0
- package/src/widgets/markdown/normalizeCustomSchemeLinks.test.ts +86 -0
- package/src/widgets/markdown/normalizeCustomSchemeLinks.ts +91 -0
- package/src/widgets/markdown/normalizeDirectives.ts +50 -0
- package/src/widgets/markdown/remarkDirectiveHandler.ts +119 -0
- package/src/widgets/monacoEditor/MonacoEditor.tsx +8 -22
- package/src/widgets/schema-editor/ManagedSchema.ts +1 -1
- package/src/widgets/schema-editor/editor/PropertyEditor.tsx +5 -5
- package/src/widgets/schema-editor/json-schema4-utils.ts +1 -1
- package/lib/esm/core/components/Badge.js.map +0 -1
- package/lib/esm/core/components/Button.js +0 -32
- package/lib/esm/core/components/Button.js.map +0 -1
- package/lib/esm/core/components/ConfirmModal.js +0 -10
- package/lib/esm/core/components/ConfirmModal.js.map +0 -1
- package/lib/esm/core/components/DeleteModal.js.map +0 -1
- package/lib/esm/core/components/MessageBox.js.map +0 -1
- package/lib/esm/core/components/Modal.js +0 -26
- package/lib/esm/core/components/Modal.js.map +0 -1
- package/lib/esm/core/components/Panel.js +0 -8
- package/lib/esm/core/components/Panel.js.map +0 -1
- package/lib/esm/core/components/SelectBox.js +0 -67
- package/lib/esm/core/components/SelectBox.js.map +0 -1
- package/lib/esm/core/components/shadcn/dialog.js.map +0 -1
- package/lib/esm/core/components/tabs/Tabs.js +0 -78
- package/lib/esm/core/components/tabs/Tabs.js.map +0 -1
- package/lib/esm/core/components/tabs/TabsContext.js +0 -7
- package/lib/esm/core/components/tabs/TabsContext.js.map +0 -1
- package/lib/esm/core/components/tabs/index.js +0 -3
- package/lib/esm/core/components/tabs/index.js.map +0 -1
- package/lib/esm/features/agent/createChartTool.js +0 -632
- package/lib/esm/features/agent/createChartTool.js.map +0 -1
- package/lib/esm/features/agent/examples.js +0 -295
- package/lib/esm/features/agent/examples.js.map +0 -1
- package/lib/esm/features/agent/visualization.js +0 -165
- package/lib/esm/features/agent/visualization.js.map +0 -1
- package/lib/esm/features/store/objects/components/useDownloadObject.js +0 -21
- package/lib/esm/features/store/objects/components/useDownloadObject.js.map +0 -1
- package/lib/types/core/components/Badge.d.ts.map +0 -1
- package/lib/types/core/components/Button.d.ts +0 -14
- package/lib/types/core/components/Button.d.ts.map +0 -1
- package/lib/types/core/components/ConfirmModal.d.ts.map +0 -1
- package/lib/types/core/components/DeleteModal.d.ts.map +0 -1
- package/lib/types/core/components/MessageBox.d.ts.map +0 -1
- package/lib/types/core/components/Modal.d.ts +0 -30
- package/lib/types/core/components/Modal.d.ts.map +0 -1
- package/lib/types/core/components/Panel.d.ts.map +0 -1
- package/lib/types/core/components/SelectBox.d.ts +0 -36
- package/lib/types/core/components/SelectBox.d.ts.map +0 -1
- package/lib/types/core/components/shadcn/dialog.d.ts.map +0 -1
- package/lib/types/core/components/tabs/Tabs.d.ts +0 -25
- package/lib/types/core/components/tabs/Tabs.d.ts.map +0 -1
- package/lib/types/core/components/tabs/TabsContext.d.ts +0 -17
- package/lib/types/core/components/tabs/TabsContext.d.ts.map +0 -1
- package/lib/types/core/components/tabs/index.d.ts +0 -3
- package/lib/types/core/components/tabs/index.d.ts.map +0 -1
- package/lib/types/features/agent/createChartTool.d.ts +0 -178
- package/lib/types/features/agent/createChartTool.d.ts.map +0 -1
- package/lib/types/features/agent/examples.d.ts +0 -59
- package/lib/types/features/agent/examples.d.ts.map +0 -1
- package/lib/types/features/agent/visualization.d.ts +0 -95
- package/lib/types/features/agent/visualization.d.ts.map +0 -1
- package/lib/types/features/store/objects/components/useDownloadObject.d.ts +0 -4
- package/lib/types/features/store/objects/components/useDownloadObject.d.ts.map +0 -1
- package/src/core/components/Button.tsx +0 -63
- package/src/core/components/Modal.tsx +0 -144
- package/src/core/components/Panel.tsx +0 -34
- package/src/core/components/SelectBox.tsx +0 -188
- package/src/core/components/tabs/Tabs.tsx +0 -132
- package/src/core/components/tabs/TabsContext.ts +0 -25
- package/src/core/components/tabs/index.ts +0 -2
- package/src/features/agent/CHART_INSTRUCTIONS.md +0 -228
- package/src/features/agent/createChartTool.ts +0 -643
- package/src/features/agent/examples.ts +0 -321
- package/src/features/agent/visualization.ts +0 -227
- package/src/features/store/objects/components/useDownloadObject.ts +0 -29
- /package/lib/esm/core/components/{MessageBox.js → shadcn/MessageBox.js} +0 -0
- /package/lib/types/core/components/{MessageBox.d.ts → shadcn/MessageBox.d.ts} +0 -0
- /package/lib/types/core/components/{ConfirmModal.d.ts → shadcn/modal/ConfirmModal.d.ts} +0 -0
- /package/lib/types/core/components/{DeleteModal.d.ts → shadcn/modal/DeleteModal.d.ts} +0 -0
- /package/src/core/components/{MessageBox.tsx → shadcn/MessageBox.tsx} +0 -0
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import { AgentMessage, AgentMessageType, AskUserMessageDetails } from "@vertesia/common";
|
|
2
|
-
import { Badge, Button, useToast } from "@vertesia/ui/core";
|
|
1
|
+
import { AgentMessage, AgentMessageType, AskUserMessageDetails, MarkdownRenditionFormat } from "@vertesia/common";
|
|
2
|
+
import { Badge, Button, cn, Dropdown, MenuItem, useToast } from "@vertesia/ui/core";
|
|
3
3
|
import { NavLink } from "@vertesia/ui/router";
|
|
4
4
|
import { useUserSession } from "@vertesia/ui/session";
|
|
5
5
|
import { MarkdownRenderer } from "@vertesia/ui/widgets";
|
|
6
6
|
import dayjs from "dayjs";
|
|
7
|
-
import { AlertCircle, Bot, CheckCircle, Clock, CopyIcon, Info, Layers, MessageSquare, User } from "lucide-react";
|
|
7
|
+
import { AlertCircle, Bot, CheckCircle, Clock, CopyIcon, Download, Info, Layers, type LucideIcon, MessageSquare, User } from "lucide-react";
|
|
8
8
|
import React, { useEffect, useState, useMemo, memo, useRef } from "react";
|
|
9
9
|
import { PulsatingCircle } from "../AnimatedThinkingDots";
|
|
10
10
|
import { AskUserWidget } from "../AskUserWidget";
|
|
@@ -12,6 +12,7 @@ import { useImageLightbox } from "../ImageLightbox";
|
|
|
12
12
|
import { ThinkingMessages } from "../WaitingMessages";
|
|
13
13
|
import { getWorkstreamId } from "./utils";
|
|
14
14
|
import { useArtifactUrlCache, getArtifactCacheKey } from "../useArtifactUrlCache.js";
|
|
15
|
+
import { useDownloadFile } from "../../../store/index.js";
|
|
15
16
|
|
|
16
17
|
// PERFORMANCE: Move pure function outside component to avoid recreation on every render
|
|
17
18
|
// Process content to enhance markdown detection for lists and thinking messages
|
|
@@ -65,11 +66,8 @@ function processContentForMarkdown(content: string | object, messageType: AgentM
|
|
|
65
66
|
return content;
|
|
66
67
|
}
|
|
67
68
|
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
showPulsatingCircle?: boolean;
|
|
71
|
-
/** Callback when user sends a message (e.g., from proposal selection) */
|
|
72
|
-
onSendMessage?: (message: string) => void;
|
|
69
|
+
/** className overrides for MessageItem — single source of truth for all className overrides. */
|
|
70
|
+
export interface MessageItemClassNames {
|
|
73
71
|
/** Additional className for the outer container */
|
|
74
72
|
className?: string;
|
|
75
73
|
/** Additional className for the card wrapper */
|
|
@@ -88,31 +86,68 @@ export interface MessageItemProps {
|
|
|
88
86
|
detailsClassName?: string;
|
|
89
87
|
/** Additional className for the artifacts section */
|
|
90
88
|
artifactsClassName?: string;
|
|
89
|
+
/** Additional className for the prose/markdown wrapper */
|
|
90
|
+
proseClassName?: string;
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
/** Keys of {@link MessageItemClassNames} — drives className merging and memo comparison. */
|
|
94
|
+
const MESSAGE_ITEM_CLASS_NAME_KEYS: (keyof MessageItemClassNames)[] = [
|
|
95
|
+
'className', 'cardClassName', 'headerClassName', 'contentClassName',
|
|
96
|
+
'timestampClassName', 'senderClassName', 'iconClassName',
|
|
97
|
+
'detailsClassName', 'artifactsClassName', 'proseClassName',
|
|
98
|
+
];
|
|
99
|
+
|
|
100
|
+
/** Merge className slots across base, prop, and override layers with consistent priority. */
|
|
101
|
+
function mergeClassNames(
|
|
102
|
+
base: MessageItemClassNames,
|
|
103
|
+
props: MessageItemClassNames,
|
|
104
|
+
...overrides: (Partial<MessageItemClassNames> | undefined)[]
|
|
105
|
+
): MessageItemClassNames {
|
|
106
|
+
const result: Record<string, string | undefined> = {};
|
|
107
|
+
for (const key of MESSAGE_ITEM_CLASS_NAME_KEYS) {
|
|
108
|
+
result[key] = cn(base[key], props[key], ...overrides.map(o => o?.[key]));
|
|
109
|
+
}
|
|
110
|
+
return result as MessageItemClassNames;
|
|
91
111
|
}
|
|
92
112
|
|
|
93
|
-
|
|
94
|
-
|
|
113
|
+
/** Per-message-type visual config (border, bg, icon color, sender label, icon component, optional className overrides). */
|
|
114
|
+
export interface MessageStyleConfig extends MessageItemClassNames {
|
|
95
115
|
borderColor: string;
|
|
96
|
-
bgColor: string;
|
|
97
116
|
iconColor: string;
|
|
98
117
|
sender: string;
|
|
99
|
-
Icon:
|
|
100
|
-
}
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
118
|
+
Icon: LucideIcon;
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
export interface MessageItemProps extends MessageItemClassNames {
|
|
122
|
+
message: AgentMessage;
|
|
123
|
+
showPulsatingCircle?: boolean;
|
|
124
|
+
/** Callback when user sends a message (e.g., from proposal selection) */
|
|
125
|
+
onSendMessage?: (message: string) => void;
|
|
126
|
+
/** Sparse per-type overrides for MESSAGE_STYLES (deep-merged with defaults) */
|
|
127
|
+
messageStyleOverrides?: Partial<Record<AgentMessageType | 'default', Partial<MessageStyleConfig>>>;
|
|
128
|
+
/** Custom component to render store/document links instead of default NavLink navigation */
|
|
129
|
+
StoreLinkComponent?: React.ComponentType<{ href: string; documentId: string; children: React.ReactNode }>;
|
|
130
|
+
/** Custom component to render store/collection links instead of default NavLink navigation */
|
|
131
|
+
CollectionLinkComponent?: React.ComponentType<{ href: string; collectionId: string; children: React.ReactNode }>;
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
// Consolidated Studio/default message styling - single source of truth
|
|
135
|
+
export const MESSAGE_STYLES: Record<AgentMessageType | 'default', MessageStyleConfig> = {
|
|
136
|
+
[AgentMessageType.ANSWER]: { borderColor: 'border-l-info', iconColor: 'text-info', sender: 'Agent', Icon: Bot },
|
|
137
|
+
[AgentMessageType.COMPLETE]: { borderColor: 'border-l-success', iconColor: 'text-success', sender: 'Completed', Icon: CheckCircle },
|
|
138
|
+
[AgentMessageType.IDLE]: { borderColor: 'border-l-info', iconColor: 'text-info', sender: 'Ready', Icon: Clock },
|
|
139
|
+
[AgentMessageType.REQUEST_INPUT]: { borderColor: 'border-l-attention', iconColor: 'text-attention', sender: 'Input', Icon: User },
|
|
140
|
+
[AgentMessageType.QUESTION]: { borderColor: 'border-l-muted', iconColor: 'text-muted', sender: 'User', Icon: User },
|
|
141
|
+
[AgentMessageType.THOUGHT]: { borderColor: 'border-l-purple-500', iconColor: 'text-purple-600 dark:text-purple-400', sender: 'Agent', Icon: Bot },
|
|
142
|
+
[AgentMessageType.ERROR]: { borderColor: 'border-l-destructive', iconColor: 'text-destructive', sender: 'Error', Icon: AlertCircle },
|
|
143
|
+
[AgentMessageType.UPDATE]: { borderColor: 'border-l-success', iconColor: 'text-success', sender: 'Update', Icon: Info },
|
|
144
|
+
[AgentMessageType.PLAN]: { borderColor: 'border-l-attention', iconColor: 'text-attention', sender: 'Plan', Icon: MessageSquare },
|
|
145
|
+
[AgentMessageType.TERMINATED]: { borderColor: 'border-l-muted', iconColor: 'text-muted', sender: 'Terminated', Icon: CheckCircle },
|
|
146
|
+
[AgentMessageType.WARNING]: { borderColor: 'border-l-attention', iconColor: 'text-attention', sender: 'Warning', Icon: AlertCircle },
|
|
147
|
+
[AgentMessageType.SYSTEM]: { borderColor: 'border-l-muted', iconColor: 'text-muted', sender: 'System', Icon: Info },
|
|
148
|
+
[AgentMessageType.STREAMING_CHUNK]: { borderColor: 'border-l-info', iconColor: 'text-info', sender: 'Agent', Icon: Bot },
|
|
149
|
+
[AgentMessageType.BATCH_PROGRESS]: { borderColor: 'border-l-blue-500', iconColor: 'text-blue-600 dark:text-blue-400', sender: 'Batch', Icon: Layers },
|
|
150
|
+
default: { borderColor: 'border-l-muted', iconColor: 'text-muted', sender: 'Agent', Icon: Bot },
|
|
116
151
|
};
|
|
117
152
|
|
|
118
153
|
function MessageItemComponent({
|
|
@@ -128,6 +163,10 @@ function MessageItemComponent({
|
|
|
128
163
|
iconClassName,
|
|
129
164
|
detailsClassName,
|
|
130
165
|
artifactsClassName,
|
|
166
|
+
proseClassName,
|
|
167
|
+
messageStyleOverrides,
|
|
168
|
+
StoreLinkComponent,
|
|
169
|
+
CollectionLinkComponent,
|
|
131
170
|
}: MessageItemProps) {
|
|
132
171
|
const [showDetails, setShowDetails] = useState(false);
|
|
133
172
|
const { client } = useUserSession();
|
|
@@ -139,9 +178,27 @@ function MessageItemComponent({
|
|
|
139
178
|
clientRef.current = client;
|
|
140
179
|
const urlCacheRef = useRef(urlCache);
|
|
141
180
|
urlCacheRef.current = urlCache;
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
181
|
+
const { renderContent: exportContent, isDownloading: isExportingFile } = useDownloadFile({ client, toast });
|
|
182
|
+
|
|
183
|
+
// Unified style resolution: merge MESSAGE_STYLES base, flat className props, and per-type overrides.
|
|
184
|
+
// Priority (lowest → highest): base MESSAGE_STYLES → flat props → overrides.default → overrides[type]
|
|
185
|
+
const resolvedStyle = useMemo(() => {
|
|
186
|
+
const base = MESSAGE_STYLES[message.type] || MESSAGE_STYLES.default;
|
|
187
|
+
const defaultOverrides = messageStyleOverrides?.default;
|
|
188
|
+
const typeOverrides = messageStyleOverrides?.[message.type];
|
|
189
|
+
|
|
190
|
+
return {
|
|
191
|
+
...base, ...defaultOverrides, ...typeOverrides,
|
|
192
|
+
...mergeClassNames(base, {
|
|
193
|
+
className, cardClassName, headerClassName, contentClassName,
|
|
194
|
+
timestampClassName, senderClassName, iconClassName,
|
|
195
|
+
detailsClassName, artifactsClassName, proseClassName,
|
|
196
|
+
}, defaultOverrides, typeOverrides),
|
|
197
|
+
};
|
|
198
|
+
}, [message.type, messageStyleOverrides,
|
|
199
|
+
className, cardClassName, headerClassName, contentClassName,
|
|
200
|
+
timestampClassName, senderClassName, iconClassName,
|
|
201
|
+
detailsClassName, artifactsClassName, proseClassName]);
|
|
145
202
|
|
|
146
203
|
// PERFORMANCE: Memoize message content extraction - only recalculates when message changes
|
|
147
204
|
const messageContent = useMemo(() => {
|
|
@@ -201,12 +258,88 @@ function MessageItemComponent({
|
|
|
201
258
|
});
|
|
202
259
|
};
|
|
203
260
|
|
|
261
|
+
// Export message content to PDF or DOCX
|
|
262
|
+
const exportToFormat = async (format: MarkdownRenditionFormat) => {
|
|
263
|
+
const content = typeof messageContent === 'string' ? messageContent : '';
|
|
264
|
+
|
|
265
|
+
if (!content.trim()) {
|
|
266
|
+
toast({
|
|
267
|
+
status: "error",
|
|
268
|
+
title: "No content to export",
|
|
269
|
+
duration: 2000,
|
|
270
|
+
});
|
|
271
|
+
return;
|
|
272
|
+
}
|
|
273
|
+
|
|
274
|
+
const title = `Message ${dayjs(message.timestamp).format("YYYY-MM-DD HH-mm-ss")}`;
|
|
275
|
+
await exportContent(content, {
|
|
276
|
+
format,
|
|
277
|
+
title,
|
|
278
|
+
artifactRunId: runId,
|
|
279
|
+
});
|
|
280
|
+
};
|
|
281
|
+
|
|
282
|
+
// Check if message has exportable content (markdown text)
|
|
283
|
+
const hasExportableContent = typeof messageContent === 'string' && messageContent.trim().length > 0;
|
|
284
|
+
|
|
285
|
+
// PERFORMANCE: Memoize markdown components to prevent MarkdownRenderer remounts
|
|
286
|
+
const markdownComponents = useMemo(() => ({
|
|
287
|
+
a: ({ node, ref, ...props }: { node?: any; ref?: any; href?: string; children?: React.ReactNode }) => {
|
|
288
|
+
const href = props.href || "";
|
|
289
|
+
if (href.includes("/store/objects")) {
|
|
290
|
+
if (StoreLinkComponent) {
|
|
291
|
+
const documentId = href.split("/store/objects/")[1] || "";
|
|
292
|
+
return <StoreLinkComponent href={href} documentId={documentId}>{props.children}</StoreLinkComponent>;
|
|
293
|
+
}
|
|
294
|
+
return (
|
|
295
|
+
<NavLink
|
|
296
|
+
href={href}
|
|
297
|
+
topLevelNav
|
|
298
|
+
>
|
|
299
|
+
{props.children}
|
|
300
|
+
</NavLink>
|
|
301
|
+
);
|
|
302
|
+
}
|
|
303
|
+
if (href.includes("/store/collections")) {
|
|
304
|
+
if (CollectionLinkComponent) {
|
|
305
|
+
const collectionId = href.split("/store/collections/")[1] || "";
|
|
306
|
+
return <CollectionLinkComponent href={href} collectionId={collectionId}>{props.children}</CollectionLinkComponent>;
|
|
307
|
+
}
|
|
308
|
+
return (
|
|
309
|
+
<NavLink
|
|
310
|
+
href={href}
|
|
311
|
+
topLevelNav
|
|
312
|
+
>
|
|
313
|
+
{props.children}
|
|
314
|
+
</NavLink>
|
|
315
|
+
);
|
|
316
|
+
}
|
|
317
|
+
return (
|
|
318
|
+
<a
|
|
319
|
+
{...props}
|
|
320
|
+
target="_blank"
|
|
321
|
+
rel="noopener noreferrer"
|
|
322
|
+
/>
|
|
323
|
+
);
|
|
324
|
+
},
|
|
325
|
+
img: ({ node, ref, ...props }: { node?: any; ref?: any; src?: string; alt?: string }) => {
|
|
326
|
+
return (
|
|
327
|
+
<img
|
|
328
|
+
{...props}
|
|
329
|
+
className="max-w-full h-auto rounded-lg shadow-md my-3 cursor-pointer hover:shadow-lg transition-shadow"
|
|
330
|
+
loading="lazy"
|
|
331
|
+
onClick={() => props.src && openImage(props.src, props.alt)}
|
|
332
|
+
/>
|
|
333
|
+
);
|
|
334
|
+
},
|
|
335
|
+
}), [openImage, StoreLinkComponent, CollectionLinkComponent]);
|
|
336
|
+
|
|
204
337
|
// Render content with markdown support - all messages now rendered as markdown
|
|
205
338
|
const renderContent = (content: string | object) => {
|
|
206
339
|
// Handle object content (JSON)
|
|
207
340
|
if (typeof content === "object") {
|
|
208
341
|
return (
|
|
209
|
-
<pre className="text-xs font-mono whitespace-pre-wrap overflow-x-auto bg-gray-100 dark:bg-gray-800 p-2 rounded text-gray-700
|
|
342
|
+
<pre className="text-xs font-mono whitespace-pre-wrap overflow-x-auto bg-gray-100 dark:bg-gray-800 p-2 rounded text-gray-700">
|
|
210
343
|
{JSON.stringify(content, null, 2)}
|
|
211
344
|
</pre>
|
|
212
345
|
);
|
|
@@ -216,43 +349,12 @@ function MessageItemComponent({
|
|
|
216
349
|
const runId = (message as any).workflow_run_id as string | undefined;
|
|
217
350
|
|
|
218
351
|
return (
|
|
219
|
-
<div className="vprose prose prose-slate dark:prose-invert prose-p:leading-relaxed prose-p:my-3 prose-headings:font-semibold prose-headings:tracking-normal prose-headings:mt-6 prose-headings:mb-3 prose-h1:text-xl prose-h2:text-lg prose-h3:text-base prose-li:my-1 prose-ul:my-3 prose-ol:my-3 prose-table:my-5 prose-pre:my-4 prose-hr:my-6 max-w-none text-[15px] break-words" style={{ overflowWrap: 'anywhere' }}>
|
|
352
|
+
<div className={cn("vprose prose prose-slate dark:prose-invert prose-p:leading-relaxed prose-p:my-3 prose-headings:font-semibold prose-headings:tracking-normal prose-headings:mt-6 prose-headings:mb-3 prose-h1:text-xl prose-h2:text-lg prose-h3:text-base prose-li:my-1 prose-ul:my-3 prose-ol:my-3 prose-table:my-5 prose-pre:my-4 prose-hr:my-6 max-w-none text-[15px] break-words", resolvedStyle.proseClassName)} style={{ overflowWrap: 'anywhere' }}>
|
|
220
353
|
<MarkdownRenderer
|
|
221
354
|
artifactRunId={runId}
|
|
222
355
|
onProposalSelect={(optionId) => onSendMessage?.(optionId)}
|
|
223
356
|
onProposalSubmit={(text) => onSendMessage?.(text)}
|
|
224
|
-
components={
|
|
225
|
-
a: ({ node, ref, ...props }: { node?: any; ref?: any; href?: string; children?: React.ReactNode }) => {
|
|
226
|
-
const href = props.href || "";
|
|
227
|
-
if (href.includes("/store/objects")) {
|
|
228
|
-
return (
|
|
229
|
-
<NavLink
|
|
230
|
-
href={href}
|
|
231
|
-
topLevelNav
|
|
232
|
-
>
|
|
233
|
-
{props.children}
|
|
234
|
-
</NavLink>
|
|
235
|
-
);
|
|
236
|
-
}
|
|
237
|
-
return (
|
|
238
|
-
<a
|
|
239
|
-
{...props}
|
|
240
|
-
target="_blank"
|
|
241
|
-
rel="noopener noreferrer"
|
|
242
|
-
/>
|
|
243
|
-
);
|
|
244
|
-
},
|
|
245
|
-
img: ({ node, ref, ...props }: { node?: any; ref?: any; src?: string; alt?: string }) => {
|
|
246
|
-
return (
|
|
247
|
-
<img
|
|
248
|
-
{...props}
|
|
249
|
-
className="max-w-full h-auto rounded-lg shadow-md my-3 cursor-pointer hover:shadow-lg transition-shadow"
|
|
250
|
-
loading="lazy"
|
|
251
|
-
onClick={() => props.src && openImage(props.src, props.alt)}
|
|
252
|
-
/>
|
|
253
|
-
);
|
|
254
|
-
},
|
|
255
|
-
}}
|
|
357
|
+
components={markdownComponents}
|
|
256
358
|
>
|
|
257
359
|
{content as string}
|
|
258
360
|
</MarkdownRenderer>
|
|
@@ -287,12 +389,8 @@ function MessageItemComponent({
|
|
|
287
389
|
outputFiles.map(async (name: unknown) => {
|
|
288
390
|
if (typeof name !== "string" || !name.trim()) return null;
|
|
289
391
|
const trimmed = name.trim();
|
|
290
|
-
//
|
|
291
|
-
|
|
292
|
-
const artifactPath =
|
|
293
|
-
trimmed.startsWith("out/") || trimmed.startsWith("files/") || trimmed.startsWith("scripts/")
|
|
294
|
-
? trimmed
|
|
295
|
-
: `out/${trimmed}`;
|
|
392
|
+
// Strip artifact: protocol prefix to get the artifact-relative path
|
|
393
|
+
const artifactPath = trimmed.startsWith("artifact:") ? trimmed.slice(9) : trimmed;
|
|
296
394
|
|
|
297
395
|
const ext = artifactPath.split(".").pop()?.toLowerCase() || "";
|
|
298
396
|
const imageExtensions = new Set(["png", "jpg", "jpeg", "gif", "webp", "bmp", "svg"]);
|
|
@@ -342,29 +440,29 @@ function MessageItemComponent({
|
|
|
342
440
|
}, [runId, outputFilesKey]);
|
|
343
441
|
|
|
344
442
|
const workstreamId = getWorkstreamId(message);
|
|
345
|
-
const { Icon } =
|
|
443
|
+
const { Icon } = resolvedStyle;
|
|
346
444
|
|
|
347
445
|
// Render icon - show pulsating animation for active messages
|
|
348
446
|
const renderIcon = () => {
|
|
349
447
|
if (showPulsatingCircle) {
|
|
350
448
|
return <PulsatingCircle size="sm" color="blue" />;
|
|
351
449
|
}
|
|
352
|
-
return <Icon className={`size-4 ${
|
|
450
|
+
return <Icon className={`size-4 ${resolvedStyle.iconColor}`} />;
|
|
353
451
|
};
|
|
354
452
|
|
|
355
453
|
return (
|
|
356
|
-
<div className={
|
|
454
|
+
<div className={cn("w-full max-w-full", resolvedStyle.className)}>
|
|
357
455
|
<div
|
|
358
|
-
className={
|
|
456
|
+
className={cn("border-l-4 bg-white dark:bg-gray-900 mb-4 w-full max-w-full overflow-hidden", resolvedStyle.borderColor, resolvedStyle.cardClassName)}
|
|
359
457
|
data-workstream-id={workstreamId}
|
|
360
458
|
>
|
|
361
459
|
{/* Compact header */}
|
|
362
|
-
<div className={
|
|
460
|
+
<div className={cn("flex items-center justify-between px-4 py-1.5", resolvedStyle.headerClassName)}>
|
|
363
461
|
<div className="flex items-center gap-1.5">
|
|
364
|
-
<div className={
|
|
462
|
+
<div className={cn(showPulsatingCircle ? "animate-fadeIn" : "", resolvedStyle.iconClassName)}>
|
|
365
463
|
{renderIcon()}
|
|
366
464
|
</div>
|
|
367
|
-
<span className={
|
|
465
|
+
<span className={cn("text-xs font-medium text-muted", resolvedStyle.senderClassName)}>{resolvedStyle.sender}</span>
|
|
368
466
|
{workstreamId !== "main" && workstreamId !== "all" && (
|
|
369
467
|
<Badge variant="default" className="text-xs text-muted ml-1">
|
|
370
468
|
{workstreamId}
|
|
@@ -372,7 +470,7 @@ function MessageItemComponent({
|
|
|
372
470
|
)}
|
|
373
471
|
</div>
|
|
374
472
|
<div className="flex items-center gap-1.5 print:hidden">
|
|
375
|
-
<span className={
|
|
473
|
+
<span className={cn("text-[11px] text-muted/70", resolvedStyle.timestampClassName)}>
|
|
376
474
|
{dayjs(message.timestamp).format("HH:mm:ss")}
|
|
377
475
|
</span>
|
|
378
476
|
<Button
|
|
@@ -383,11 +481,32 @@ function MessageItemComponent({
|
|
|
383
481
|
>
|
|
384
482
|
<CopyIcon className="size-3" />
|
|
385
483
|
</Button>
|
|
484
|
+
{hasExportableContent && (
|
|
485
|
+
<Dropdown
|
|
486
|
+
trigger={
|
|
487
|
+
<Button
|
|
488
|
+
variant="ghost" size="xs"
|
|
489
|
+
className="text-muted/50 hover:text-muted h-5 w-5 p-0"
|
|
490
|
+
title="Export message"
|
|
491
|
+
disabled={isExportingFile}
|
|
492
|
+
>
|
|
493
|
+
<Download className={`size-3 ${isExportingFile ? 'animate-pulse' : ''}`} />
|
|
494
|
+
</Button>
|
|
495
|
+
}
|
|
496
|
+
>
|
|
497
|
+
<MenuItem onClick={() => exportToFormat(MarkdownRenditionFormat.pdf)}>
|
|
498
|
+
Export as PDF
|
|
499
|
+
</MenuItem>
|
|
500
|
+
<MenuItem onClick={() => exportToFormat(MarkdownRenditionFormat.docx)}>
|
|
501
|
+
Export as Word
|
|
502
|
+
</MenuItem>
|
|
503
|
+
</Dropdown>
|
|
504
|
+
)}
|
|
386
505
|
</div>
|
|
387
506
|
</div>
|
|
388
507
|
|
|
389
508
|
{/* Message content */}
|
|
390
|
-
<div className={
|
|
509
|
+
<div className={cn("px-4 pb-3 bg-white dark:bg-gray-900 overflow-hidden", resolvedStyle.contentClassName)}>
|
|
391
510
|
{/* Check for REQUEST_INPUT with UX config - render AskUserWidget instead of plain text */}
|
|
392
511
|
{message.type === AgentMessageType.REQUEST_INPUT && (message.details as AskUserMessageDetails)?.ux ? (
|
|
393
512
|
(() => {
|
|
@@ -415,7 +534,7 @@ function MessageItemComponent({
|
|
|
415
534
|
|
|
416
535
|
{/* Auto-surfaced artifacts from tool details (e.g. execute_shell.outputFiles) */}
|
|
417
536
|
{artifactLinks.length > 0 && (
|
|
418
|
-
<div className={
|
|
537
|
+
<div className={cn("mt-3 text-xs", resolvedStyle.artifactsClassName)}>
|
|
419
538
|
<div className="font-medium text-muted mb-1">Artifacts</div>
|
|
420
539
|
|
|
421
540
|
{/* Inline previews for image artifacts */}
|
|
@@ -462,10 +581,10 @@ function MessageItemComponent({
|
|
|
462
581
|
|
|
463
582
|
{/* Optional details section */}
|
|
464
583
|
{message.details && (
|
|
465
|
-
<div className={
|
|
584
|
+
<div className={cn("mt-2 print:hidden", resolvedStyle.detailsClassName)}>
|
|
466
585
|
<button
|
|
467
586
|
onClick={() => setShowDetails(!showDetails)}
|
|
468
|
-
className="text-
|
|
587
|
+
className="text-[11px] text-muted flex items-center"
|
|
469
588
|
>
|
|
470
589
|
{showDetails ? "Hide" : "Show"} details
|
|
471
590
|
<svg
|
|
@@ -480,11 +599,11 @@ function MessageItemComponent({
|
|
|
480
599
|
</button>
|
|
481
600
|
|
|
482
601
|
{showDetails && (
|
|
483
|
-
<div className="mt-
|
|
602
|
+
<div className="mt-1 p-1.5 bg-muted border border-mixer-muted/40 rounded text-sm">
|
|
484
603
|
{typeof message.details === "string" ? (
|
|
485
604
|
renderContent(message.details)
|
|
486
605
|
) : (
|
|
487
|
-
<pre className="text-xs font-mono whitespace-pre-wrap overflow-x-auto bg-muted p-2 rounded text-muted
|
|
606
|
+
<pre className="text-xs font-mono whitespace-pre-wrap overflow-x-auto bg-muted p-2 rounded text-muted">
|
|
488
607
|
{JSON.stringify(message.details, null, 2)}
|
|
489
608
|
</pre>
|
|
490
609
|
)}
|
|
@@ -505,15 +624,8 @@ const MessageItem = memo(MessageItemComponent, (prevProps, nextProps) => {
|
|
|
505
624
|
prevProps.message.timestamp === nextProps.message.timestamp &&
|
|
506
625
|
prevProps.showPulsatingCircle === nextProps.showPulsatingCircle &&
|
|
507
626
|
prevProps.onSendMessage === nextProps.onSendMessage &&
|
|
508
|
-
prevProps.
|
|
509
|
-
|
|
510
|
-
prevProps.headerClassName === nextProps.headerClassName &&
|
|
511
|
-
prevProps.contentClassName === nextProps.contentClassName &&
|
|
512
|
-
prevProps.timestampClassName === nextProps.timestampClassName &&
|
|
513
|
-
prevProps.senderClassName === nextProps.senderClassName &&
|
|
514
|
-
prevProps.iconClassName === nextProps.iconClassName &&
|
|
515
|
-
prevProps.detailsClassName === nextProps.detailsClassName &&
|
|
516
|
-
prevProps.artifactsClassName === nextProps.artifactsClassName
|
|
627
|
+
prevProps.messageStyleOverrides === nextProps.messageStyleOverrides &&
|
|
628
|
+
MESSAGE_ITEM_CLASS_NAME_KEYS.every(key => prevProps[key] === nextProps[key])
|
|
517
629
|
);
|
|
518
630
|
});
|
|
519
631
|
|
|
@@ -20,12 +20,25 @@ export interface StreamingMessageProps {
|
|
|
20
20
|
timestamp?: number | string;
|
|
21
21
|
/** Additional className for the outer container */
|
|
22
22
|
className?: string;
|
|
23
|
+
/** Additional className for the card wrapper */
|
|
24
|
+
cardClassName?: string;
|
|
23
25
|
/** Additional className for the header section */
|
|
24
26
|
headerClassName?: string;
|
|
25
27
|
/** Additional className for the content section */
|
|
26
28
|
contentClassName?: string;
|
|
29
|
+
/** Additional className for the prose/markdown container */
|
|
30
|
+
proseClassName?: string;
|
|
31
|
+
/** Additional className for the sender label */
|
|
32
|
+
senderClassName?: string;
|
|
33
|
+
/** Additional className for the icon wrapper */
|
|
34
|
+
iconClassName?: string;
|
|
27
35
|
}
|
|
28
36
|
|
|
37
|
+
/** className overrides for StreamingMessage — subset of StreamingMessageProps containing only className props. */
|
|
38
|
+
export type StreamingMessageClassNames = Partial<Pick<StreamingMessageProps,
|
|
39
|
+
'className' | 'cardClassName' | 'headerClassName' | 'contentClassName' |
|
|
40
|
+
'proseClassName' | 'senderClassName' | 'iconClassName'>>;
|
|
41
|
+
|
|
29
42
|
/**
|
|
30
43
|
* Displays a streaming message with adaptive reveal effect.
|
|
31
44
|
* Automatically adjusts speed to match the model's generation rate,
|
|
@@ -38,8 +51,12 @@ function StreamingMessageComponent({
|
|
|
38
51
|
isComplete = false,
|
|
39
52
|
timestamp,
|
|
40
53
|
className,
|
|
54
|
+
cardClassName,
|
|
41
55
|
headerClassName,
|
|
42
56
|
contentClassName,
|
|
57
|
+
proseClassName,
|
|
58
|
+
senderClassName,
|
|
59
|
+
iconClassName,
|
|
43
60
|
}: StreamingMessageProps) {
|
|
44
61
|
const [displayedLength, setDisplayedLength] = useState(0);
|
|
45
62
|
const [throttledText, setThrottledText] = useState("");
|
|
@@ -247,20 +264,20 @@ function StreamingMessageComponent({
|
|
|
247
264
|
<div className={cn("w-full max-w-full", className)}>
|
|
248
265
|
{/* Card wrapper matching MessageItem structure */}
|
|
249
266
|
<div
|
|
250
|
-
className="border-l-4 bg-white dark:bg-gray-900 mb-4 border-l-purple-500 w-full max-w-full overflow-hidden"
|
|
267
|
+
className={cn("border-l-4 bg-white dark:bg-gray-900 mb-4 border-l-purple-500 w-full max-w-full overflow-hidden", cardClassName)}
|
|
251
268
|
data-workstream-id={workstreamId}
|
|
252
269
|
>
|
|
253
270
|
{/* Compact header */}
|
|
254
271
|
<div className={cn("flex items-center justify-between px-4 py-1.5", headerClassName)}>
|
|
255
272
|
<div className="flex items-center gap-1.5">
|
|
256
|
-
<div className="animate-fadeIn">
|
|
273
|
+
<div className={cn("animate-fadeIn", iconClassName)}>
|
|
257
274
|
{isTyping ? (
|
|
258
275
|
<span className="size-2 rounded-full bg-blue-500 animate-pulse inline-block" />
|
|
259
276
|
) : (
|
|
260
277
|
<Bot className="size-4 text-purple-600 dark:text-purple-400" />
|
|
261
278
|
)}
|
|
262
279
|
</div>
|
|
263
|
-
<span className="text-xs font-medium text-muted">Agent</span>
|
|
280
|
+
<span className={cn("text-xs font-medium text-muted", senderClassName)}>Agent</span>
|
|
264
281
|
{workstreamId && workstreamId !== "main" && (
|
|
265
282
|
<span className="text-xs text-muted">• Task {workstreamId}</span>
|
|
266
283
|
)}
|
|
@@ -282,12 +299,12 @@ function StreamingMessageComponent({
|
|
|
282
299
|
{/* Content - cursor character is appended directly to text (no DOM manipulation) */}
|
|
283
300
|
<div
|
|
284
301
|
className={cn(
|
|
285
|
-
"px-
|
|
302
|
+
"px-3 pb-2 streaming-content",
|
|
286
303
|
isTyping && "streaming-active",
|
|
287
304
|
contentClassName
|
|
288
305
|
)}
|
|
289
306
|
>
|
|
290
|
-
<div className="vprose prose prose-slate dark:prose-invert prose-p:leading-relaxed prose-p:my-3 prose-headings:font-semibold prose-headings:tracking-normal prose-headings:mt-6 prose-headings:mb-3 prose-h1:text-xl prose-h2:text-lg prose-h3:text-base prose-li:my-1 prose-ul:my-3 prose-ol:my-3 prose-table:my-5 prose-pre:my-4 prose-hr:my-6 max-w-none text-[15px] break-words" style={{ overflowWrap: 'anywhere' }}>
|
|
307
|
+
<div className={cn("vprose prose prose-slate dark:prose-invert prose-p:leading-relaxed prose-p:my-3 prose-headings:font-semibold prose-headings:tracking-normal prose-headings:mt-6 prose-headings:mb-3 prose-h1:text-xl prose-h2:text-lg prose-h3:text-base prose-li:my-1 prose-ul:my-3 prose-ol:my-3 prose-table:my-5 prose-pre:my-4 prose-hr:my-6 max-w-none text-[15px] break-words", proseClassName)} style={{ overflowWrap: 'anywhere' }}>
|
|
291
308
|
<MarkdownRenderer>
|
|
292
309
|
{displayTextWithCursor}
|
|
293
310
|
</MarkdownRenderer>
|