@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
|
@@ -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 {
|
|
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";
|
|
@@ -1,8 +1,7 @@
|
|
|
1
|
-
import {
|
|
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 {
|
|
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
|
-
|
|
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
|
|
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,
|
|
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
|
-
<
|
|
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
|
-
</
|
|
120
|
-
<
|
|
119
|
+
</ModalBody>
|
|
120
|
+
<ModalFooter>
|
|
121
121
|
<Button isDisabled={isProcessing} onClick={onCreate}>
|
|
122
122
|
Create Collection
|
|
123
123
|
</Button>
|
|
124
|
-
</
|
|
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
|
-
<
|
|
136
|
-
<
|
|
135
|
+
<Modal onClose={onClose} isOpen={isOpen}>
|
|
136
|
+
<ModalTitle>Create a Collection</ModalTitle>
|
|
137
137
|
<CreateCollectionForm onClose={onClose} />
|
|
138
|
-
</
|
|
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}
|