@vertesia/ui 1.0.0 → 1.1.0-dev.20260427.060440Z
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/ComboBox.js +23 -24
- package/lib/esm/core/components/ComboBox.js.map +1 -1
- package/lib/esm/core/components/FormItem.js +2 -2
- package/lib/esm/core/components/FormItem.js.map +1 -1
- package/lib/esm/core/components/SidePanel.js +1 -1
- package/lib/esm/core/components/SidePanel.js.map +1 -1
- package/lib/esm/core/components/shadcn/collaspible.js +3 -4
- package/lib/esm/core/components/shadcn/collaspible.js.map +1 -1
- package/lib/esm/core/components/shadcn/dropdown.js +37 -12
- package/lib/esm/core/components/shadcn/dropdown.js.map +1 -1
- package/lib/esm/core/components/shadcn/filters/comboBox/DateCombobox.js +6 -6
- package/lib/esm/core/components/shadcn/filters/comboBox/DateCombobox.js.map +1 -1
- package/lib/esm/core/components/shadcn/filters/filterBar.js +5 -3
- package/lib/esm/core/components/shadcn/filters/filterBar.js.map +1 -1
- package/lib/esm/core/components/shadcn/radioGroup.js +1 -2
- package/lib/esm/core/components/shadcn/radioGroup.js.map +1 -1
- package/lib/esm/core/components/shadcn/switch.js +0 -1
- package/lib/esm/core/components/shadcn/switch.js.map +1 -1
- package/lib/esm/core/components/shadcn/tabs.js +2 -2
- package/lib/esm/core/components/shadcn/tabs.js.map +1 -1
- package/lib/esm/core/components/shadcn/tooltip.js +17 -1
- package/lib/esm/core/components/shadcn/tooltip.js.map +1 -1
- package/lib/esm/core/hooks/PortalContainerProvider.js +9 -3
- package/lib/esm/core/hooks/PortalContainerProvider.js.map +1 -1
- package/lib/esm/env/index.js +5 -8
- package/lib/esm/env/index.js.map +1 -1
- package/lib/esm/features/agent/chat/AgentRightPanel.js +21 -11
- package/lib/esm/features/agent/chat/AgentRightPanel.js.map +1 -1
- package/lib/esm/features/agent/chat/AskUserWidget.js +2 -6
- package/lib/esm/features/agent/chat/AskUserWidget.js.map +1 -1
- package/lib/esm/features/agent/chat/DocumentPanel.js +8 -5
- package/lib/esm/features/agent/chat/DocumentPanel.js.map +1 -1
- package/lib/esm/features/agent/chat/DocumentTabBar.js +5 -13
- package/lib/esm/features/agent/chat/DocumentTabBar.js.map +1 -1
- package/lib/esm/features/agent/chat/ModernAgentConversation.js +57 -26
- package/lib/esm/features/agent/chat/ModernAgentConversation.js.map +1 -1
- package/lib/esm/features/agent/chat/ModernAgentOutput/AllMessagesMixed.js +20 -16
- package/lib/esm/features/agent/chat/ModernAgentOutput/AllMessagesMixed.js.map +1 -1
- package/lib/esm/features/agent/chat/ModernAgentOutput/Header.js +56 -45
- package/lib/esm/features/agent/chat/ModernAgentOutput/Header.js.map +1 -1
- package/lib/esm/features/agent/chat/ModernAgentOutput/MessageItem.js +1 -1
- package/lib/esm/features/agent/chat/ModernAgentOutput/MessageItem.js.map +1 -1
- package/lib/esm/features/agent/chat/SlidingThinkingIndicator.js +3 -9
- package/lib/esm/features/agent/chat/SlidingThinkingIndicator.js.map +1 -1
- package/lib/esm/features/agent/chat/hooks/useAgentStream.js +9 -5
- package/lib/esm/features/agent/chat/hooks/useAgentStream.js.map +1 -1
- package/lib/esm/features/agent/chat/hooks/useDocumentPanel.js +4 -0
- package/lib/esm/features/agent/chat/hooks/useDocumentPanel.js.map +1 -1
- package/lib/esm/features/facets/AgentRunnerFacetsNav.js +1 -1
- package/lib/esm/features/facets/AgentRunnerFacetsNav.js.map +1 -1
- package/lib/esm/features/facets/DocumentsFacetsNav.js +3 -2
- package/lib/esm/features/facets/DocumentsFacetsNav.js.map +1 -1
- package/lib/esm/features/facets/RunsFacetsNav.js +8 -1
- package/lib/esm/features/facets/RunsFacetsNav.js.map +1 -1
- package/lib/esm/features/facets/WorkflowExecutionsFacetsNav.js +1 -1
- package/lib/esm/features/facets/WorkflowExecutionsFacetsNav.js.map +1 -1
- package/lib/esm/features/facets/index.js +1 -0
- package/lib/esm/features/facets/index.js.map +1 -1
- package/lib/esm/features/facets/utils/VInteractionFacet.js +5 -5
- package/lib/esm/features/facets/utils/VInteractionFacet.js.map +1 -1
- package/lib/esm/features/index.js +1 -0
- package/lib/esm/features/index.js.map +1 -1
- package/lib/esm/features/oauth/OAuthProviderConnectButton.js +85 -0
- package/lib/esm/features/oauth/OAuthProviderConnectButton.js.map +1 -0
- package/lib/esm/features/oauth/RemoteMcpConnectionButton.js +119 -0
- package/lib/esm/features/oauth/RemoteMcpConnectionButton.js.map +1 -0
- package/lib/esm/features/oauth/index.js +4 -0
- package/lib/esm/features/oauth/index.js.map +1 -0
- package/lib/esm/features/oauth/useOAuthPopup.js +89 -0
- package/lib/esm/features/oauth/useOAuthPopup.js.map +1 -0
- package/lib/esm/features/store/collections/BrowseCollectionView.js.map +1 -1
- package/lib/esm/features/store/collections/EditCollectionView.js +9 -2
- package/lib/esm/features/store/collections/EditCollectionView.js.map +1 -1
- package/lib/esm/features/store/objects/components/ContentOverview.js +19 -7
- package/lib/esm/features/store/objects/components/ContentOverview.js.map +1 -1
- package/lib/esm/features/store/objects/components/useContentPanelHooks.js +35 -15
- package/lib/esm/features/store/objects/components/useContentPanelHooks.js.map +1 -1
- package/lib/esm/features/store/objects/selection/ObjectsActionContext.js +3 -3
- package/lib/esm/features/store/objects/selection/ObjectsActionContext.js.map +1 -1
- package/lib/esm/features/store/objects/selection/SelectionActions.js +4 -3
- package/lib/esm/features/store/objects/selection/SelectionActions.js.map +1 -1
- package/lib/esm/features/store/objects/selection/actions/ExportPropertiesAction.js +11 -3
- package/lib/esm/features/store/objects/selection/actions/ExportPropertiesAction.js.map +1 -1
- package/lib/esm/features/store/objects/upload/DocumentUploadModal.js +1 -5
- package/lib/esm/features/store/objects/upload/DocumentUploadModal.js.map +1 -1
- package/lib/esm/features/user/UserInfo.js +33 -10
- package/lib/esm/features/user/UserInfo.js.map +1 -1
- package/lib/esm/i18n/locales/ar.json +81 -98
- package/lib/esm/i18n/locales/de.json +44 -73
- package/lib/esm/i18n/locales/en.json +31 -61
- package/lib/esm/i18n/locales/es.json +55 -79
- package/lib/esm/i18n/locales/fr.json +55 -81
- package/lib/esm/i18n/locales/it.json +55 -79
- package/lib/esm/i18n/locales/ja.json +46 -75
- package/lib/esm/i18n/locales/ko.json +44 -73
- package/lib/esm/i18n/locales/pt.json +55 -79
- package/lib/esm/i18n/locales/ru.json +58 -81
- package/lib/esm/i18n/locales/tr.json +46 -75
- package/lib/esm/i18n/locales/zh-TW.json +46 -75
- package/lib/esm/i18n/locales/zh.json +46 -75
- package/lib/esm/session/UserSession.js +2 -4
- package/lib/esm/session/UserSession.js.map +1 -1
- package/lib/esm/session/UserSessionProvider.js +22 -17
- package/lib/esm/session/UserSessionProvider.js.map +1 -1
- package/lib/esm/session/auth/composable.js +20 -2
- package/lib/esm/session/auth/composable.js.map +1 -1
- package/lib/esm/session/auth/domainRouting.js +7 -0
- package/lib/esm/session/auth/domainRouting.js.map +1 -0
- package/lib/esm/shell/login/InviteAcceptModal.js +1 -0
- package/lib/esm/shell/login/InviteAcceptModal.js.map +1 -1
- package/lib/esm/widgets/form/Form.js +2 -2
- package/lib/esm/widgets/form/Form.js.map +1 -1
- package/lib/esm/widgets/markdown/MarkdownRenderer.js +2 -1
- package/lib/esm/widgets/markdown/MarkdownRenderer.js.map +1 -1
- package/lib/esm/widgets/markdown/preprocessMathDelimiters.js +226 -0
- package/lib/esm/widgets/markdown/preprocessMathDelimiters.js.map +1 -0
- package/lib/esm/widgets/monacoEditor/MonacoEditor.js +40 -5
- package/lib/esm/widgets/monacoEditor/MonacoEditor.js.map +1 -1
- package/lib/esm/widgets/monacoEditor/foldingProviders.js +132 -0
- package/lib/esm/widgets/monacoEditor/foldingProviders.js.map +1 -0
- package/lib/tsconfig.tsbuildinfo +1 -1
- package/lib/types/core/components/ComboBox.d.ts +12 -2
- package/lib/types/core/components/ComboBox.d.ts.map +1 -1
- package/lib/types/core/components/FormItem.d.ts +5 -2
- package/lib/types/core/components/FormItem.d.ts.map +1 -1
- package/lib/types/core/components/SidePanel.d.ts.map +1 -1
- package/lib/types/core/components/shadcn/badge.d.ts +2 -2
- package/lib/types/core/components/shadcn/collaspible.d.ts +3 -3
- package/lib/types/core/components/shadcn/collaspible.d.ts.map +1 -1
- package/lib/types/core/components/shadcn/dropdown.d.ts +11 -3
- package/lib/types/core/components/shadcn/dropdown.d.ts.map +1 -1
- package/lib/types/core/components/shadcn/filters/filterBar.d.ts +2 -1
- package/lib/types/core/components/shadcn/filters/filterBar.d.ts.map +1 -1
- package/lib/types/core/components/shadcn/input.d.ts +1 -1
- package/lib/types/core/components/shadcn/radioGroup.d.ts.map +1 -1
- package/lib/types/core/components/shadcn/switch.d.ts.map +1 -1
- package/lib/types/core/components/shadcn/tabs.d.ts +4 -2
- package/lib/types/core/components/shadcn/tabs.d.ts.map +1 -1
- package/lib/types/core/components/shadcn/text.d.ts +1 -1
- package/lib/types/core/components/shadcn/tooltip.d.ts +1 -1
- package/lib/types/core/components/shadcn/tooltip.d.ts.map +1 -1
- package/lib/types/core/hooks/PortalContainerProvider.d.ts +1 -0
- package/lib/types/core/hooks/PortalContainerProvider.d.ts.map +1 -1
- package/lib/types/env/index.d.ts +2 -2
- package/lib/types/env/index.d.ts.map +1 -1
- package/lib/types/features/agent/chat/AgentChart.d.ts +1 -1
- package/lib/types/features/agent/chat/AgentChart.d.ts.map +1 -1
- package/lib/types/features/agent/chat/AgentRightPanel.d.ts +7 -2
- package/lib/types/features/agent/chat/AgentRightPanel.d.ts.map +1 -1
- package/lib/types/features/agent/chat/DocumentPanel.d.ts +2 -2
- package/lib/types/features/agent/chat/DocumentPanel.d.ts.map +1 -1
- package/lib/types/features/agent/chat/DocumentTabBar.d.ts +1 -2
- package/lib/types/features/agent/chat/DocumentTabBar.d.ts.map +1 -1
- package/lib/types/features/agent/chat/ModernAgentConversation.d.ts +5 -3
- package/lib/types/features/agent/chat/ModernAgentConversation.d.ts.map +1 -1
- package/lib/types/features/agent/chat/ModernAgentOutput/AllMessagesMixed.d.ts +4 -2
- package/lib/types/features/agent/chat/ModernAgentOutput/AllMessagesMixed.d.ts.map +1 -1
- package/lib/types/features/agent/chat/ModernAgentOutput/Header.d.ts +4 -4
- package/lib/types/features/agent/chat/ModernAgentOutput/Header.d.ts.map +1 -1
- package/lib/types/features/agent/chat/ModernAgentOutput/MessageItem.d.ts.map +1 -1
- package/lib/types/features/agent/chat/VegaLiteChart.d.ts +1 -1
- package/lib/types/features/agent/chat/VegaLiteChart.d.ts.map +1 -1
- package/lib/types/features/agent/chat/hooks/useAgentStream.d.ts +4 -2
- package/lib/types/features/agent/chat/hooks/useAgentStream.d.ts.map +1 -1
- package/lib/types/features/agent/chat/hooks/useDocumentPanel.d.ts +1 -0
- package/lib/types/features/agent/chat/hooks/useDocumentPanel.d.ts.map +1 -1
- package/lib/types/features/facets/DocumentsFacetsNav.d.ts.map +1 -1
- package/lib/types/features/facets/RunsFacetsNav.d.ts.map +1 -1
- package/lib/types/features/facets/index.d.ts +1 -0
- package/lib/types/features/facets/index.d.ts.map +1 -1
- package/lib/types/features/index.d.ts +1 -0
- package/lib/types/features/index.d.ts.map +1 -1
- package/lib/types/features/oauth/OAuthProviderConnectButton.d.ts +11 -0
- package/lib/types/features/oauth/OAuthProviderConnectButton.d.ts.map +1 -0
- package/lib/types/features/oauth/RemoteMcpConnectionButton.d.ts +25 -0
- package/lib/types/features/oauth/RemoteMcpConnectionButton.d.ts.map +1 -0
- package/lib/types/features/oauth/index.d.ts +4 -0
- package/lib/types/features/oauth/index.d.ts.map +1 -0
- package/lib/types/features/oauth/useOAuthPopup.d.ts +12 -0
- package/lib/types/features/oauth/useOAuthPopup.d.ts.map +1 -0
- package/lib/types/features/store/collections/BrowseCollectionView.d.ts.map +1 -1
- package/lib/types/features/store/collections/EditCollectionView.d.ts.map +1 -1
- package/lib/types/features/store/objects/components/useContentPanelHooks.d.ts.map +1 -1
- package/lib/types/features/store/objects/selection/ObjectsActionContext.d.ts +3 -3
- package/lib/types/features/store/objects/selection/ObjectsActionContext.d.ts.map +1 -1
- package/lib/types/features/store/objects/selection/ObjectsActionSpec.d.ts +2 -1
- package/lib/types/features/store/objects/selection/ObjectsActionSpec.d.ts.map +1 -1
- package/lib/types/features/store/objects/selection/SelectionActions.d.ts +3 -3
- package/lib/types/features/store/objects/selection/SelectionActions.d.ts.map +1 -1
- package/lib/types/features/store/objects/selection/actions/ExportPropertiesAction.d.ts.map +1 -1
- package/lib/types/features/user/UserInfo.d.ts +2 -1
- package/lib/types/features/user/UserInfo.d.ts.map +1 -1
- package/lib/types/session/UserSession.d.ts.map +1 -1
- package/lib/types/session/UserSessionProvider.d.ts +0 -1
- package/lib/types/session/UserSessionProvider.d.ts.map +1 -1
- package/lib/types/session/auth/composable.d.ts +4 -0
- package/lib/types/session/auth/composable.d.ts.map +1 -1
- package/lib/types/session/auth/domainRouting.d.ts +8 -0
- package/lib/types/session/auth/domainRouting.d.ts.map +1 -0
- package/lib/types/shell/login/InviteAcceptModal.d.ts.map +1 -1
- package/lib/types/widgets/markdown/MarkdownRenderer.d.ts.map +1 -1
- package/lib/types/widgets/markdown/preprocessMathDelimiters.d.ts +24 -0
- package/lib/types/widgets/markdown/preprocessMathDelimiters.d.ts.map +1 -0
- package/lib/types/widgets/monacoEditor/MonacoEditor.d.ts +2 -1
- package/lib/types/widgets/monacoEditor/MonacoEditor.d.ts.map +1 -1
- package/lib/types/widgets/monacoEditor/foldingProviders.d.ts +2 -0
- package/lib/types/widgets/monacoEditor/foldingProviders.d.ts.map +1 -0
- package/lib/vertesia-ui-core.js +1 -1
- package/lib/vertesia-ui-core.js.map +1 -1
- package/lib/vertesia-ui-env.js +1 -1
- package/lib/vertesia-ui-env.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-i18n.js +1 -1
- package/lib/vertesia-ui-i18n.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-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 +15 -15
- package/src/core/components/ComboBox.tsx +66 -29
- package/src/core/components/FormItem.tsx +9 -6
- package/src/core/components/SidePanel.tsx +5 -3
- package/src/core/components/shadcn/collaspible.tsx +5 -7
- package/src/core/components/shadcn/dropdown.tsx +68 -13
- package/src/core/components/shadcn/filters/comboBox/DateCombobox.tsx +6 -6
- package/src/core/components/shadcn/filters/filterBar.tsx +5 -3
- package/src/core/components/shadcn/radioGroup.tsx +1 -3
- package/src/core/components/shadcn/switch.tsx +0 -2
- package/src/core/components/shadcn/tabs.tsx +15 -2
- package/src/core/components/shadcn/tooltip.tsx +20 -3
- package/src/core/hooks/PortalContainerProvider.tsx +11 -3
- package/src/env/index.ts +7 -10
- package/src/features/agent/chat/AgentRightPanel.tsx +43 -23
- package/src/features/agent/chat/DocumentPanel.tsx +21 -19
- package/src/features/agent/chat/DocumentTabBar.tsx +21 -32
- package/src/features/agent/chat/ModernAgentConversation.tsx +72 -27
- package/src/features/agent/chat/ModernAgentOutput/AllMessagesMixed.tsx +21 -9
- package/src/features/agent/chat/ModernAgentOutput/Header.tsx +136 -115
- package/src/features/agent/chat/ModernAgentOutput/MessageItem.tsx +0 -3
- package/src/features/agent/chat/hooks/useAgentStream.ts +13 -7
- package/src/features/agent/chat/hooks/useDocumentPanel.ts +8 -0
- package/src/features/facets/AgentRunnerFacetsNav.tsx +1 -1
- package/src/features/facets/DocumentsFacetsNav.tsx +3 -1
- package/src/features/facets/RunsFacetsNav.tsx +9 -1
- package/src/features/facets/WorkflowExecutionsFacetsNav.tsx +1 -1
- package/src/features/facets/index.ts +1 -0
- package/src/features/facets/utils/VInteractionFacet.tsx +12 -12
- package/src/features/index.ts +1 -0
- package/src/features/oauth/OAuthProviderConnectButton.tsx +125 -0
- package/src/features/oauth/RemoteMcpConnectionButton.tsx +274 -0
- package/src/features/oauth/index.ts +3 -0
- package/src/features/oauth/useOAuthPopup.ts +125 -0
- package/src/features/store/collections/BrowseCollectionView.tsx +3 -3
- package/src/features/store/collections/EditCollectionView.tsx +10 -1
- package/src/features/store/objects/components/ContentOverview.tsx +108 -87
- package/src/features/store/objects/components/useContentPanelHooks.ts +50 -15
- package/src/features/store/objects/selection/ObjectsActionContext.tsx +5 -5
- package/src/features/store/objects/selection/ObjectsActionSpec.ts +2 -1
- package/src/features/store/objects/selection/SelectionActions.tsx +6 -5
- package/src/features/store/objects/selection/actions/ExportPropertiesAction.tsx +12 -3
- package/src/features/user/UserInfo.tsx +82 -10
- package/src/i18n/locales/ar.json +81 -98
- package/src/i18n/locales/de.json +44 -73
- package/src/i18n/locales/en.json +31 -61
- package/src/i18n/locales/es.json +55 -79
- package/src/i18n/locales/fr.json +55 -81
- package/src/i18n/locales/it.json +55 -79
- package/src/i18n/locales/ja.json +46 -75
- package/src/i18n/locales/ko.json +44 -73
- package/src/i18n/locales/pt.json +55 -79
- package/src/i18n/locales/ru.json +58 -81
- package/src/i18n/locales/tr.json +46 -75
- package/src/i18n/locales/zh-TW.json +46 -75
- package/src/i18n/locales/zh.json +46 -75
- package/src/session/UserSession.ts +2 -5
- package/src/session/UserSessionProvider.tsx +23 -18
- package/src/session/auth/auth-flow.md +1 -1
- package/src/session/auth/composable.ts +21 -2
- package/src/session/auth/domainRouting.test.ts +26 -0
- package/src/session/auth/domainRouting.ts +13 -0
- package/src/shell/login/InviteAcceptModal.tsx +1 -0
- package/src/widgets/form/Form.tsx +2 -2
- package/src/widgets/markdown/MarkdownRenderer.tsx +2 -1
- package/src/widgets/markdown/markdown.css +12 -0
- package/src/widgets/markdown/preprocessMathDelimiters.test.ts +87 -0
- package/src/widgets/markdown/preprocessMathDelimiters.ts +229 -0
- package/src/widgets/monacoEditor/MonacoEditor.tsx +47 -4
- package/src/widgets/monacoEditor/foldingProviders.ts +122 -0
|
@@ -100,8 +100,8 @@ interface ModernAgentConversationProps {
|
|
|
100
100
|
resetWorkflow?: () => void;
|
|
101
101
|
/** Called after a restart succeeds — receives the new AgentRun for navigation */
|
|
102
102
|
onRestart?: (newRun: AgentRun) => void;
|
|
103
|
-
/** Called after a
|
|
104
|
-
|
|
103
|
+
/** Called after a clone succeeds — receives the new AgentRun for navigation */
|
|
104
|
+
onClone?: (newRun: AgentRun) => void;
|
|
105
105
|
/** Called to show run details/internals modal */
|
|
106
106
|
onShowDetails?: () => void;
|
|
107
107
|
|
|
@@ -169,6 +169,8 @@ interface ModernAgentConversationProps {
|
|
|
169
169
|
showArtifacts?: boolean;
|
|
170
170
|
/** Hide the document preview panel that auto-opens on create_document */
|
|
171
171
|
hideDocumentPanel?: boolean;
|
|
172
|
+
/** Message types to exclude from the conversation view */
|
|
173
|
+
hiddenMessageTypes?: AgentMessageType[];
|
|
172
174
|
|
|
173
175
|
// Callback to get attached documents when sending messages
|
|
174
176
|
// Returns array of { id, name } to include in message metadata and display
|
|
@@ -673,7 +675,7 @@ function ModernAgentConversationInner({
|
|
|
673
675
|
placeholder,
|
|
674
676
|
resetWorkflow,
|
|
675
677
|
onRestart,
|
|
676
|
-
|
|
678
|
+
onClone,
|
|
677
679
|
onShowDetails,
|
|
678
680
|
// File upload props (onFilesSelected handled internally by handleFileUpload)
|
|
679
681
|
uploadedFiles,
|
|
@@ -695,6 +697,7 @@ function ModernAgentConversationInner({
|
|
|
695
697
|
hideFileUpload,
|
|
696
698
|
showArtifacts = false,
|
|
697
699
|
hideDocumentPanel: _hideDocumentPanel,
|
|
700
|
+
hiddenMessageTypes,
|
|
698
701
|
// Attachment callback
|
|
699
702
|
getAttachedDocs,
|
|
700
703
|
onAttachmentsSent,
|
|
@@ -759,7 +762,8 @@ function ModernAgentConversationInner({
|
|
|
759
762
|
debugChunkFlash,
|
|
760
763
|
addOptimisticMessage,
|
|
761
764
|
removeOptimisticMessages,
|
|
762
|
-
|
|
765
|
+
agentRunStatus,
|
|
766
|
+
workflowRunId,
|
|
763
767
|
serverFileUpdates,
|
|
764
768
|
} = useAgentStream(client, agentRunId);
|
|
765
769
|
|
|
@@ -782,6 +786,7 @@ function ModernAgentConversationInner({
|
|
|
782
786
|
closeDocument: handleCloseDocument,
|
|
783
787
|
selectDocument,
|
|
784
788
|
openDocInPanel,
|
|
789
|
+
updateDocumentTitle,
|
|
785
790
|
} = useDocumentPanel(messages);
|
|
786
791
|
|
|
787
792
|
const {
|
|
@@ -810,6 +815,7 @@ function ModernAgentConversationInner({
|
|
|
810
815
|
const [thinkingMessageIndex, setThinkingMessageIndex] = useState(0);
|
|
811
816
|
const [isDragOver, setIsDragOver] = useState(false);
|
|
812
817
|
const [activeWorkstreams, setActiveWorkstreams] = useState<ActiveWorkstreamEntry[]>([]);
|
|
818
|
+
const [completedWorkstreams, setCompletedWorkstreams] = useState<Array<{ launch_id: string; workstream_id: string; status: 'completed' | 'canceled' }>>([]);
|
|
813
819
|
const workstreamFetchFailedRef = useRef(false);
|
|
814
820
|
const dragCounterRef = useRef(0);
|
|
815
821
|
|
|
@@ -819,13 +825,32 @@ function ModernAgentConversationInner({
|
|
|
819
825
|
const hasProcessingFilesRef = useRef(hasProcessingFiles);
|
|
820
826
|
hasProcessingFilesRef.current = hasProcessingFiles;
|
|
821
827
|
|
|
822
|
-
|
|
823
|
-
const effectiveWorkflowStatus = useMemo(() => {
|
|
828
|
+
const lastMainMessage = useMemo(() => {
|
|
824
829
|
const mainMessages = messages.filter(m => (m.workstream_id || 'main') === 'main');
|
|
825
|
-
|
|
826
|
-
|
|
827
|
-
|
|
828
|
-
|
|
830
|
+
return mainMessages[mainMessages.length - 1];
|
|
831
|
+
}, [messages]);
|
|
832
|
+
|
|
833
|
+
// Derive effective status from AgentRun state; main workstream terminal events cover live-stream races.
|
|
834
|
+
const effectiveWorkflowStatus = useMemo(() => {
|
|
835
|
+
if (lastMainMessage?.type === AgentMessageType.TERMINATED) return "TERMINATED";
|
|
836
|
+
if (
|
|
837
|
+
lastMainMessage?.type === AgentMessageType.COMPLETE &&
|
|
838
|
+
(!agentRunStatus || agentRunStatus === "RUNNING")
|
|
839
|
+
) {
|
|
840
|
+
return "COMPLETED";
|
|
841
|
+
}
|
|
842
|
+
return agentRunStatus;
|
|
843
|
+
}, [lastMainMessage, agentRunStatus]);
|
|
844
|
+
|
|
845
|
+
const isWorkflowTerminal = useMemo(() => {
|
|
846
|
+
const normalizedStatus = effectiveWorkflowStatus?.toUpperCase();
|
|
847
|
+
return normalizedStatus === "COMPLETED"
|
|
848
|
+
|| normalizedStatus === "FAILED"
|
|
849
|
+
|| normalizedStatus === "CANCELED"
|
|
850
|
+
|| normalizedStatus === "CANCELLED"
|
|
851
|
+
|| normalizedStatus === "TERMINATED"
|
|
852
|
+
|| normalizedStatus === "TIMED_OUT";
|
|
853
|
+
}, [effectiveWorkflowStatus]);
|
|
829
854
|
|
|
830
855
|
console.debug("[ModernAgentConversation] render", {
|
|
831
856
|
agentRunId,
|
|
@@ -865,7 +890,7 @@ function ModernAgentConversationInner({
|
|
|
865
890
|
}, [plans, activePlanIndex, workstreamStatusMap]);
|
|
866
891
|
|
|
867
892
|
const panelWorkstreams = useMemo<WorkstreamInfo[]>(() => {
|
|
868
|
-
|
|
893
|
+
const running: WorkstreamInfo[] = activeWorkstreams.map((ws) => ({
|
|
869
894
|
workstream_id: ws.workstream_id,
|
|
870
895
|
launch_id: ws.launch_id,
|
|
871
896
|
elapsed_ms: ws.elapsed_ms,
|
|
@@ -876,7 +901,16 @@ function ModernAgentConversationInner({
|
|
|
876
901
|
child_workflow_id: ws.child_workflow_id,
|
|
877
902
|
child_workflow_run_id: ws.child_workflow_run_id,
|
|
878
903
|
}));
|
|
879
|
-
|
|
904
|
+
const completed: WorkstreamInfo[] = completedWorkstreams.map((ws) => ({
|
|
905
|
+
workstream_id: ws.workstream_id,
|
|
906
|
+
launch_id: ws.launch_id,
|
|
907
|
+
elapsed_ms: 0,
|
|
908
|
+
deadline_ms: 0,
|
|
909
|
+
remaining_ms: 0,
|
|
910
|
+
status: ws.status,
|
|
911
|
+
}));
|
|
912
|
+
return [...running, ...completed];
|
|
913
|
+
}, [activeWorkstreams, completedWorkstreams]);
|
|
880
914
|
|
|
881
915
|
// ────────────────────────────────────────────
|
|
882
916
|
// Stable callbacks
|
|
@@ -897,8 +931,8 @@ function ModernAgentConversationInner({
|
|
|
897
931
|
// ────────────────────────────────────────────
|
|
898
932
|
// Unified right panel state
|
|
899
933
|
// ────────────────────────────────────────────
|
|
900
|
-
type RightPanelTab = 'plan' | 'workstreams' | 'documents' | 'uploads' | 'artifacts' | 'conversation';
|
|
901
|
-
const [rightPanelTab,
|
|
934
|
+
type RightPanelTab = 'plan' | 'workstreams' | 'documents' | 'uploads' | 'artifacts' | 'payload' | 'conversation';
|
|
935
|
+
const [rightPanelTab, setRightPanelTab] = useState<RightPanelTab>((conversationContent || conversationTab) ? 'conversation' : 'plan');
|
|
902
936
|
const [rightPanelWidth, setRightPanelWidth] = useState(400);
|
|
903
937
|
const [isRightPanelResizing, setIsRightPanelResizing] = useState(false);
|
|
904
938
|
|
|
@@ -963,12 +997,13 @@ const handleCloseRightPanel = useCallback(() => {
|
|
|
963
997
|
e.preventDefault();
|
|
964
998
|
e.stopPropagation();
|
|
965
999
|
openDocInPanel(documentId);
|
|
1000
|
+
setRightPanelTab('documents');
|
|
966
1001
|
}}
|
|
967
1002
|
>
|
|
968
1003
|
{children}
|
|
969
1004
|
</a>
|
|
970
1005
|
),
|
|
971
|
-
[openDocInPanel]
|
|
1006
|
+
[openDocInPanel, setRightPanelTab]
|
|
972
1007
|
);
|
|
973
1008
|
|
|
974
1009
|
const effectiveStoreLinkComponent = StoreLinkComponent ?? internalStoreLinkComponent;
|
|
@@ -1025,6 +1060,12 @@ const handleCloseRightPanel = useCallback(() => {
|
|
|
1025
1060
|
const result = await client.agents.getActiveWorkstreams(agentRunId);
|
|
1026
1061
|
if (isCancelled) return;
|
|
1027
1062
|
setActiveWorkstreams(result.running ?? []);
|
|
1063
|
+
const completed = (result as unknown as { completed?: Array<{ launch_id: string; workstream_id: string; status: string }> }).completed ?? [];
|
|
1064
|
+
setCompletedWorkstreams(completed.map(c => ({
|
|
1065
|
+
launch_id: c.launch_id,
|
|
1066
|
+
workstream_id: c.workstream_id,
|
|
1067
|
+
status: c.status === 'canceled' ? 'canceled' : 'completed',
|
|
1068
|
+
})));
|
|
1028
1069
|
workstreamFetchFailedRef.current = false;
|
|
1029
1070
|
} catch (error) {
|
|
1030
1071
|
if (isCancelled) return;
|
|
@@ -1045,6 +1086,15 @@ const handleCloseRightPanel = useCallback(() => {
|
|
|
1045
1086
|
};
|
|
1046
1087
|
}, [client.agents, agentRunId, isCompleted, activeWorkstreams.length]);
|
|
1047
1088
|
|
|
1089
|
+
// Auto-switch to Workstreams tab the first time workstreams become active
|
|
1090
|
+
const hasAutoSwitchedToWorkstreamsRef = useRef(false);
|
|
1091
|
+
useEffect(() => {
|
|
1092
|
+
if (panelWorkstreams.length > 0 && !hasAutoSwitchedToWorkstreamsRef.current) {
|
|
1093
|
+
hasAutoSwitchedToWorkstreamsRef.current = true;
|
|
1094
|
+
setRightPanelTab('workstreams');
|
|
1095
|
+
}
|
|
1096
|
+
}, [panelWorkstreams.length]);
|
|
1097
|
+
|
|
1048
1098
|
// Notify parent when input availability is determined
|
|
1049
1099
|
useEffect(() => {
|
|
1050
1100
|
if (messages.length === 0) return;
|
|
@@ -1268,16 +1318,6 @@ const handleCloseRightPanel = useCallback(() => {
|
|
|
1268
1318
|
}
|
|
1269
1319
|
};
|
|
1270
1320
|
|
|
1271
|
-
// Handle copying run ID
|
|
1272
|
-
const copyRunId = () => {
|
|
1273
|
-
navigator.clipboard.writeText(agentRunId);
|
|
1274
|
-
toast({
|
|
1275
|
-
status: "success",
|
|
1276
|
-
title: t('agent.runIdCopied'),
|
|
1277
|
-
duration: 2000,
|
|
1278
|
-
});
|
|
1279
|
-
};
|
|
1280
|
-
|
|
1281
1321
|
const [isPdfModalOpen, setIsPdfModalOpen] = useState(false);
|
|
1282
1322
|
|
|
1283
1323
|
const exportConversationPdf = () => {
|
|
@@ -1367,9 +1407,11 @@ const handleCloseRightPanel = useCallback(() => {
|
|
|
1367
1407
|
<Header
|
|
1368
1408
|
title={actualTitle}
|
|
1369
1409
|
isCompleted={isCompleted}
|
|
1410
|
+
isTerminal={isWorkflowTerminal}
|
|
1370
1411
|
onClose={onClose}
|
|
1371
1412
|
isModal={isModal}
|
|
1372
1413
|
agentRunId={agentRunId}
|
|
1414
|
+
workflowRunId={workflowRunId || ''}
|
|
1373
1415
|
viewMode={viewMode}
|
|
1374
1416
|
onViewModeChange={handleViewModeChange}
|
|
1375
1417
|
showPlanPanel={showRightPanelProp && showSlidingPanel}
|
|
@@ -1377,10 +1419,9 @@ const handleCloseRightPanel = useCallback(() => {
|
|
|
1377
1419
|
showPlanButton={showRightPanelProp && !conversationTab}
|
|
1378
1420
|
onTogglePlanPanel={handleTogglePlanPanel}
|
|
1379
1421
|
onDownload={downloadConversation}
|
|
1380
|
-
onCopyRunId={copyRunId}
|
|
1381
1422
|
resetWorkflow={resetWorkflow}
|
|
1382
1423
|
onRestart={onRestart}
|
|
1383
|
-
|
|
1424
|
+
onClone={onClone}
|
|
1384
1425
|
onShowDetails={onShowDetails}
|
|
1385
1426
|
onExportPdf={exportConversationPdf}
|
|
1386
1427
|
isReceivingChunks={debugChunkFlash}
|
|
@@ -1432,6 +1473,7 @@ const handleCloseRightPanel = useCallback(() => {
|
|
|
1432
1473
|
StoreLinkComponent={effectiveStoreLinkComponent}
|
|
1433
1474
|
CollectionLinkComponent={CollectionLinkComponent}
|
|
1434
1475
|
prependFriendlyMessage={prependFriendlyMessage}
|
|
1476
|
+
hiddenMessageTypes={hiddenMessageTypes}
|
|
1435
1477
|
/>
|
|
1436
1478
|
)}
|
|
1437
1479
|
|
|
@@ -1535,6 +1577,7 @@ const handleCloseRightPanel = useCallback(() => {
|
|
|
1535
1577
|
activeDocumentId={activeDocumentId}
|
|
1536
1578
|
onSelectDocument={selectDocument}
|
|
1537
1579
|
onCloseDocument={handleCloseDocument}
|
|
1580
|
+
onUpdateDocumentTitle={updateDocumentTitle}
|
|
1538
1581
|
docRefreshKey={docRefreshKey}
|
|
1539
1582
|
runId={agentRunId}
|
|
1540
1583
|
// Uploads
|
|
@@ -1551,6 +1594,8 @@ const handleCloseRightPanel = useCallback(() => {
|
|
|
1551
1594
|
// Panel control
|
|
1552
1595
|
onClose={handleCloseRightPanel}
|
|
1553
1596
|
defaultTab={rightPanelTab}
|
|
1597
|
+
activeTab={rightPanelTab}
|
|
1598
|
+
onTabChange={setRightPanelTab}
|
|
1554
1599
|
/>
|
|
1555
1600
|
</div>
|
|
1556
1601
|
</>
|
|
@@ -166,6 +166,8 @@ interface AllMessagesMixedProps {
|
|
|
166
166
|
/** Optional message to display as the first user message in the conversation.
|
|
167
167
|
* Purely visual/UI — not sent to temporal. Renders as a QUESTION MessageItem before real messages. */
|
|
168
168
|
prependFriendlyMessage?: string;
|
|
169
|
+
/** Message types to exclude from the conversation view */
|
|
170
|
+
hiddenMessageTypes?: AgentMessageType[];
|
|
169
171
|
}
|
|
170
172
|
|
|
171
173
|
// PERFORMANCE: Throttle interval for auto-scroll (ms)
|
|
@@ -192,6 +194,7 @@ function AllMessagesMixedComponent({
|
|
|
192
194
|
StoreLinkComponent,
|
|
193
195
|
CollectionLinkComponent,
|
|
194
196
|
prependFriendlyMessage,
|
|
197
|
+
hiddenMessageTypes,
|
|
195
198
|
}: AllMessagesMixedProps) {
|
|
196
199
|
if (!artifactRunId) {
|
|
197
200
|
console.warn('[AllMessagesMixed] artifactRunId prop is missing!');
|
|
@@ -290,7 +293,11 @@ function AllMessagesMixedComponent({
|
|
|
290
293
|
// Low-signal messages are suppressed at the source (server-side) via shouldSuppressLowSignalMessage
|
|
291
294
|
const sortedMessages = React.useMemo(
|
|
292
295
|
() => {
|
|
293
|
-
const
|
|
296
|
+
const filtered = hiddenMessageTypes?.length
|
|
297
|
+
? messages.filter(m => !hiddenMessageTypes.includes(m.type))
|
|
298
|
+
: messages;
|
|
299
|
+
|
|
300
|
+
const sorted = [...filtered].sort((a, b) => {
|
|
294
301
|
const timeA = typeof a.timestamp === "number" ? a.timestamp : new Date(a.timestamp).getTime();
|
|
295
302
|
const timeB = typeof b.timestamp === "number" ? b.timestamp : new Date(b.timestamp).getTime();
|
|
296
303
|
return timeA - timeB;
|
|
@@ -310,7 +317,7 @@ function AllMessagesMixedComponent({
|
|
|
310
317
|
}
|
|
311
318
|
return deduped;
|
|
312
319
|
},
|
|
313
|
-
[messages],
|
|
320
|
+
[messages, hiddenMessageTypes],
|
|
314
321
|
);
|
|
315
322
|
|
|
316
323
|
// Get workstreams from messages - only from message.workstream_id
|
|
@@ -439,13 +446,18 @@ function AllMessagesMixedComponent({
|
|
|
439
446
|
// Check if each workstream is completed
|
|
440
447
|
for (const [workstreamId, msgs] of workstreamMessages.entries()) {
|
|
441
448
|
if (msgs.length > 0) {
|
|
442
|
-
const
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
AgentMessageType.
|
|
448
|
-
|
|
449
|
+
const isCompleted = msgs.some(m => {
|
|
450
|
+
if ([AgentMessageType.COMPLETE, AgentMessageType.IDLE, AgentMessageType.REQUEST_INPUT, AgentMessageType.TERMINATED].includes(m.type)) {
|
|
451
|
+
return true;
|
|
452
|
+
}
|
|
453
|
+
// Workstream completion is sent as UPDATE with workstream_event: 'completed' or status: 'completed'/'canceled'
|
|
454
|
+
if (m.type === AgentMessageType.UPDATE && m.details) {
|
|
455
|
+
const d = m.details as Record<string, unknown>;
|
|
456
|
+
return d.workstream_event === 'completed' || d.status === 'completed' || d.status === 'canceled';
|
|
457
|
+
}
|
|
458
|
+
return false;
|
|
459
|
+
});
|
|
460
|
+
statusMap.set(workstreamId, isCompleted);
|
|
449
461
|
}
|
|
450
462
|
}
|
|
451
463
|
|