@vertesia/ui 1.5.0-dev.20260717.131047Z → 1.5.0-dev.20260725.083715Z
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/core/components/SidePanel.js +1 -1
- package/lib/core/components/SidePanel.js.map +1 -1
- package/lib/core/components/shadcn/button.d.ts +10 -3
- package/lib/core/components/shadcn/button.d.ts.map +1 -1
- package/lib/core/components/shadcn/button.js +41 -9
- package/lib/core/components/shadcn/button.js.map +1 -1
- package/lib/core/components/shadcn/filters/filterBar.d.ts.map +1 -1
- package/lib/core/components/shadcn/filters/filterBar.js +1 -1
- package/lib/core/components/shadcn/filters/filterBar.js.map +1 -1
- package/lib/core/components/shadcn/modal/dialog.d.ts +1 -1
- package/lib/core/components/shadcn/modal/dialog.d.ts.map +1 -1
- package/lib/core/components/shadcn/modal/dialog.js +3 -1
- package/lib/core/components/shadcn/modal/dialog.js.map +1 -1
- package/lib/core/components/shadcn/tabs.d.ts +12 -1
- package/lib/core/components/shadcn/tabs.d.ts.map +1 -1
- package/lib/core/components/shadcn/tabs.js +12 -4
- package/lib/core/components/shadcn/tabs.js.map +1 -1
- package/lib/core/components/shadcn/theme/ThemeSwitcher.js +1 -1
- package/lib/core/components/shadcn/theme/ThemeSwitcher.js.map +1 -1
- package/lib/features/agent/chat/AgentChatPlaybackControls.d.ts.map +1 -1
- package/lib/features/agent/chat/AgentChatPlaybackControls.js +2 -2
- package/lib/features/agent/chat/AgentChatPlaybackControls.js.map +1 -1
- package/lib/features/agent/chat/AgentRequestInputOverlay.d.ts.map +1 -1
- package/lib/features/agent/chat/AgentRequestInputOverlay.js +2 -2
- package/lib/features/agent/chat/AgentRequestInputOverlay.js.map +1 -1
- package/lib/features/agent/chat/AgentRightPanel.d.ts +5 -1
- package/lib/features/agent/chat/AgentRightPanel.d.ts.map +1 -1
- package/lib/features/agent/chat/AgentRightPanel.js +2 -2
- package/lib/features/agent/chat/AgentRightPanel.js.map +1 -1
- package/lib/features/agent/chat/ArtifactsTab.d.ts +5 -1
- package/lib/features/agent/chat/ArtifactsTab.d.ts.map +1 -1
- package/lib/features/agent/chat/ArtifactsTab.js +53 -13
- package/lib/features/agent/chat/ArtifactsTab.js.map +1 -1
- package/lib/features/agent/chat/DocumentEditingActionCard.d.ts +6 -0
- package/lib/features/agent/chat/DocumentEditingActionCard.d.ts.map +1 -0
- package/lib/features/agent/chat/DocumentEditingActionCard.js +129 -0
- package/lib/features/agent/chat/DocumentEditingActionCard.js.map +1 -0
- package/lib/features/agent/chat/ImageLightbox.d.ts.map +1 -1
- package/lib/features/agent/chat/ImageLightbox.js +1 -1
- package/lib/features/agent/chat/ImageLightbox.js.map +1 -1
- package/lib/features/agent/chat/ModernAgentConversation.d.ts +19 -1
- package/lib/features/agent/chat/ModernAgentConversation.d.ts.map +1 -1
- package/lib/features/agent/chat/ModernAgentConversation.js +125 -27
- package/lib/features/agent/chat/ModernAgentConversation.js.map +1 -1
- package/lib/features/agent/chat/ModernAgentOutput/AgentMarkdownAnchor.d.ts +45 -0
- package/lib/features/agent/chat/ModernAgentOutput/AgentMarkdownAnchor.d.ts.map +1 -0
- package/lib/features/agent/chat/ModernAgentOutput/AgentMarkdownAnchor.js +40 -0
- package/lib/features/agent/chat/ModernAgentOutput/AgentMarkdownAnchor.js.map +1 -0
- package/lib/features/agent/chat/ModernAgentOutput/AllMessagesMixed.d.ts +3 -1
- package/lib/features/agent/chat/ModernAgentOutput/AllMessagesMixed.d.ts.map +1 -1
- package/lib/features/agent/chat/ModernAgentOutput/AllMessagesMixed.js +96 -51
- package/lib/features/agent/chat/ModernAgentOutput/AllMessagesMixed.js.map +1 -1
- package/lib/features/agent/chat/ModernAgentOutput/AttachmentPreview.d.ts +2 -1
- package/lib/features/agent/chat/ModernAgentOutput/AttachmentPreview.d.ts.map +1 -1
- package/lib/features/agent/chat/ModernAgentOutput/AttachmentPreview.js +9 -5
- package/lib/features/agent/chat/ModernAgentOutput/AttachmentPreview.js.map +1 -1
- package/lib/features/agent/chat/ModernAgentOutput/CollapsibleAgentMarkdown.d.ts +25 -0
- package/lib/features/agent/chat/ModernAgentOutput/CollapsibleAgentMarkdown.d.ts.map +1 -0
- package/lib/features/agent/chat/ModernAgentOutput/CollapsibleAgentMarkdown.js +33 -0
- package/lib/features/agent/chat/ModernAgentOutput/CollapsibleAgentMarkdown.js.map +1 -0
- package/lib/features/agent/chat/ModernAgentOutput/Header.d.ts.map +1 -1
- package/lib/features/agent/chat/ModernAgentOutput/Header.js +4 -2
- package/lib/features/agent/chat/ModernAgentOutput/Header.js.map +1 -1
- package/lib/features/agent/chat/ModernAgentOutput/MessageInput.d.ts.map +1 -1
- package/lib/features/agent/chat/ModernAgentOutput/MessageInput.js +2 -2
- package/lib/features/agent/chat/ModernAgentOutput/MessageInput.js.map +1 -1
- package/lib/features/agent/chat/ModernAgentOutput/MessageItem.d.ts +3 -1
- package/lib/features/agent/chat/ModernAgentOutput/MessageItem.d.ts.map +1 -1
- package/lib/features/agent/chat/ModernAgentOutput/MessageItem.js +23 -24
- package/lib/features/agent/chat/ModernAgentOutput/MessageItem.js.map +1 -1
- package/lib/features/agent/chat/ModernAgentOutput/ResourceChangeSummary.d.ts +14 -0
- package/lib/features/agent/chat/ModernAgentOutput/ResourceChangeSummary.d.ts.map +1 -0
- package/lib/features/agent/chat/ModernAgentOutput/ResourceChangeSummary.js +21 -0
- package/lib/features/agent/chat/ModernAgentOutput/ResourceChangeSummary.js.map +1 -0
- package/lib/features/agent/chat/ModernAgentOutput/ResourceChip.d.ts +30 -0
- package/lib/features/agent/chat/ModernAgentOutput/ResourceChip.d.ts.map +1 -0
- package/lib/features/agent/chat/ModernAgentOutput/ResourceChip.js +53 -0
- package/lib/features/agent/chat/ModernAgentOutput/ResourceChip.js.map +1 -0
- package/lib/features/agent/chat/ModernAgentOutput/ToolCallGroup.d.ts.map +1 -1
- package/lib/features/agent/chat/ModernAgentOutput/ToolCallGroup.js +21 -2
- package/lib/features/agent/chat/ModernAgentOutput/ToolCallGroup.js.map +1 -1
- package/lib/features/agent/chat/ModernAgentOutput/requestInputMessages.d.ts +6 -0
- package/lib/features/agent/chat/ModernAgentOutput/requestInputMessages.d.ts.map +1 -1
- package/lib/features/agent/chat/ModernAgentOutput/requestInputMessages.js +15 -1
- package/lib/features/agent/chat/ModernAgentOutput/requestInputMessages.js.map +1 -1
- package/lib/features/agent/chat/ModernAgentOutput/resourceLinks.d.ts +6 -0
- package/lib/features/agent/chat/ModernAgentOutput/resourceLinks.d.ts.map +1 -0
- package/lib/features/agent/chat/ModernAgentOutput/resourceLinks.js +29 -0
- package/lib/features/agent/chat/ModernAgentOutput/resourceLinks.js.map +1 -0
- package/lib/features/agent/chat/ModernAgentOutput/resourceSummary.d.ts +33 -0
- package/lib/features/agent/chat/ModernAgentOutput/resourceSummary.d.ts.map +1 -0
- package/lib/features/agent/chat/ModernAgentOutput/resourceSummary.js +129 -0
- package/lib/features/agent/chat/ModernAgentOutput/resourceSummary.js.map +1 -0
- package/lib/features/agent/chat/ModernAgentOutput/utils.d.ts +7 -0
- package/lib/features/agent/chat/ModernAgentOutput/utils.d.ts.map +1 -1
- package/lib/features/agent/chat/ModernAgentOutput/utils.js +11 -1
- package/lib/features/agent/chat/ModernAgentOutput/utils.js.map +1 -1
- package/lib/features/agent/chat/hooks/useAgentStream.d.ts +1 -1
- package/lib/features/agent/chat/hooks/useAgentStream.d.ts.map +1 -1
- package/lib/features/agent/chat/hooks/useAgentStream.js +24 -9
- package/lib/features/agent/chat/hooks/useAgentStream.js.map +1 -1
- package/lib/features/agent/chat/index.d.ts +2 -1
- package/lib/features/agent/chat/index.d.ts.map +1 -1
- package/lib/features/agent/chat/index.js +3 -0
- package/lib/features/agent/chat/index.js.map +1 -1
- package/lib/features/environment/SelectEnvironment.d.ts +28 -0
- package/lib/features/environment/SelectEnvironment.d.ts.map +1 -0
- package/lib/features/environment/SelectEnvironment.js +97 -0
- package/lib/features/environment/SelectEnvironment.js.map +1 -0
- package/lib/features/environment/index.d.ts +2 -0
- package/lib/features/environment/index.d.ts.map +1 -0
- package/lib/features/environment/index.js +2 -0
- package/lib/features/environment/index.js.map +1 -0
- package/lib/features/index.d.ts +2 -0
- package/lib/features/index.d.ts.map +1 -1
- package/lib/features/index.js +2 -0
- package/lib/features/index.js.map +1 -1
- package/lib/features/magic-pdf/AnnotatedImageSlider.js +12 -12
- package/lib/features/magic-pdf/AnnotatedImageSlider.js.map +1 -1
- package/lib/features/magic-pdf/DownloadPopover.d.ts.map +1 -1
- package/lib/features/magic-pdf/DownloadPopover.js +3 -17
- package/lib/features/magic-pdf/DownloadPopover.js.map +1 -1
- package/lib/features/magic-pdf/ExtractedContentView.js +2 -6
- package/lib/features/magic-pdf/ExtractedContentView.js.map +1 -1
- package/lib/features/magic-pdf/GroundedExtractionAssistantPanel.d.ts +25 -0
- package/lib/features/magic-pdf/GroundedExtractionAssistantPanel.d.ts.map +1 -0
- package/lib/features/magic-pdf/GroundedExtractionAssistantPanel.js +42 -0
- package/lib/features/magic-pdf/GroundedExtractionAssistantPanel.js.map +1 -0
- package/lib/features/magic-pdf/GroundedExtractionView.d.ts +27 -0
- package/lib/features/magic-pdf/GroundedExtractionView.d.ts.map +1 -0
- package/lib/features/magic-pdf/GroundedExtractionView.js +377 -0
- package/lib/features/magic-pdf/GroundedExtractionView.js.map +1 -0
- package/lib/features/magic-pdf/MagicPdfProvider.d.ts +0 -2
- package/lib/features/magic-pdf/MagicPdfProvider.d.ts.map +1 -1
- package/lib/features/magic-pdf/MagicPdfProvider.js +15 -42
- package/lib/features/magic-pdf/MagicPdfProvider.js.map +1 -1
- package/lib/features/magic-pdf/MagicPdfView.d.ts.map +1 -1
- package/lib/features/magic-pdf/MagicPdfView.js +2 -19
- package/lib/features/magic-pdf/MagicPdfView.js.map +1 -1
- package/lib/features/magic-pdf/index.d.ts +1 -0
- package/lib/features/magic-pdf/index.d.ts.map +1 -1
- package/lib/features/magic-pdf/index.js +1 -0
- package/lib/features/magic-pdf/index.js.map +1 -1
- package/lib/features/magic-pdf/types.d.ts +1 -1
- package/lib/features/magic-pdf/types.d.ts.map +1 -1
- package/lib/features/oauth/McpConnectionsButton.d.ts.map +1 -1
- package/lib/features/oauth/McpConnectionsButton.js +2 -2
- package/lib/features/oauth/McpConnectionsButton.js.map +1 -1
- package/lib/features/oauth/McpConnectionsDialog.d.ts.map +1 -1
- package/lib/features/oauth/McpConnectionsDialog.js +1 -1
- package/lib/features/oauth/McpConnectionsDialog.js.map +1 -1
- package/lib/features/oauth/RemoteMcpConnectionButton.d.ts.map +1 -1
- package/lib/features/oauth/RemoteMcpConnectionButton.js +1 -1
- package/lib/features/oauth/RemoteMcpConnectionButton.js.map +1 -1
- package/lib/features/pdf-viewer/PdfPageSlider.js +2 -2
- package/lib/features/pdf-viewer/PdfPageSlider.js.map +1 -1
- package/lib/features/pdf-viewer/SimplePdfViewer.d.ts.map +1 -1
- package/lib/features/pdf-viewer/SimplePdfViewer.js +3 -3
- package/lib/features/pdf-viewer/SimplePdfViewer.js.map +1 -1
- package/lib/features/permissions/UserPermissionsProvider.js +1 -1
- package/lib/features/permissions/UserPermissionsProvider.js.map +1 -1
- package/lib/features/store/objects/DocumentQuickFilter.d.ts.map +1 -1
- package/lib/features/store/objects/DocumentQuickFilter.js +5 -5
- package/lib/features/store/objects/DocumentQuickFilter.js.map +1 -1
- package/lib/features/store/objects/DocumentSearchResults.d.ts.map +1 -1
- package/lib/features/store/objects/DocumentSearchResults.js +4 -4
- package/lib/features/store/objects/DocumentSearchResults.js.map +1 -1
- package/lib/features/store/objects/components/ContentDispositionButton.d.ts.map +1 -1
- package/lib/features/store/objects/components/ContentDispositionButton.js +1 -1
- package/lib/features/store/objects/components/ContentDispositionButton.js.map +1 -1
- package/lib/features/store/objects/components/ContentOverview.d.ts +2 -1
- package/lib/features/store/objects/components/ContentOverview.d.ts.map +1 -1
- package/lib/features/store/objects/components/ContentOverview.js +159 -31
- package/lib/features/store/objects/components/ContentOverview.js.map +1 -1
- package/lib/features/store/objects/components/DocumentEditingConfigurationSelector.d.ts +16 -0
- package/lib/features/store/objects/components/DocumentEditingConfigurationSelector.d.ts.map +1 -0
- package/lib/features/store/objects/components/DocumentEditingConfigurationSelector.js +116 -0
- package/lib/features/store/objects/components/DocumentEditingConfigurationSelector.js.map +1 -0
- package/lib/features/store/objects/components/DocumentEditingLockStatus.d.ts +7 -0
- package/lib/features/store/objects/components/DocumentEditingLockStatus.d.ts.map +1 -0
- package/lib/features/store/objects/components/DocumentEditingLockStatus.js +13 -0
- package/lib/features/store/objects/components/DocumentEditingLockStatus.js.map +1 -0
- package/lib/features/store/objects/components/DocumentEditingPanel.d.ts +48 -0
- package/lib/features/store/objects/components/DocumentEditingPanel.d.ts.map +1 -0
- package/lib/features/store/objects/components/DocumentEditingPanel.js +720 -0
- package/lib/features/store/objects/components/DocumentEditingPanel.js.map +1 -0
- package/lib/features/store/objects/components/DocumentIcon.js +1 -1
- package/lib/features/store/objects/components/TextEditorPanel.d.ts.map +1 -1
- package/lib/features/store/objects/components/TextEditorPanel.js +22 -9
- package/lib/features/store/objects/components/TextEditorPanel.js.map +1 -1
- package/lib/features/store/objects/components/VectorSearchWidget.js +1 -1
- package/lib/features/store/objects/components/VectorSearchWidget.js.map +1 -1
- package/lib/features/store/objects/components/documentArtifactRefs.d.ts +26 -0
- package/lib/features/store/objects/components/documentArtifactRefs.d.ts.map +1 -0
- package/lib/features/store/objects/components/documentArtifactRefs.js +52 -0
- package/lib/features/store/objects/components/documentArtifactRefs.js.map +1 -0
- package/lib/features/store/objects/components/documentEditingAgentConfig.d.ts +4 -0
- package/lib/features/store/objects/components/documentEditingAgentConfig.d.ts.map +1 -0
- package/lib/features/store/objects/components/documentEditingAgentConfig.js +40 -0
- package/lib/features/store/objects/components/documentEditingAgentConfig.js.map +1 -0
- package/lib/features/store/objects/components/documentEditingPrompts.d.ts +3 -0
- package/lib/features/store/objects/components/documentEditingPrompts.d.ts.map +1 -0
- package/lib/features/store/objects/components/documentEditingPrompts.js +13 -0
- package/lib/features/store/objects/components/documentEditingPrompts.js.map +1 -0
- package/lib/features/store/objects/components/documentEditingRun.d.ts +27 -0
- package/lib/features/store/objects/components/documentEditingRun.d.ts.map +1 -0
- package/lib/features/store/objects/components/documentEditingRun.js +126 -0
- package/lib/features/store/objects/components/documentEditingRun.js.map +1 -0
- package/lib/features/store/objects/components/documentEditingTarget.d.ts +20 -0
- package/lib/features/store/objects/components/documentEditingTarget.d.ts.map +1 -0
- package/lib/features/store/objects/components/documentEditingTarget.js +40 -0
- package/lib/features/store/objects/components/documentEditingTarget.js.map +1 -0
- package/lib/features/store/objects/components/index.d.ts +1 -0
- package/lib/features/store/objects/components/index.d.ts.map +1 -1
- package/lib/features/store/objects/components/index.js +1 -0
- package/lib/features/store/objects/components/index.js.map +1 -1
- package/lib/features/store/objects/components/useContentPanelHooks.d.ts +6 -3
- package/lib/features/store/objects/components/useContentPanelHooks.d.ts.map +1 -1
- package/lib/features/store/objects/components/useContentPanelHooks.js +57 -37
- package/lib/features/store/objects/components/useContentPanelHooks.js.map +1 -1
- package/lib/features/store/objects/components/useDownloadFile.d.ts +2 -1
- package/lib/features/store/objects/components/useDownloadFile.d.ts.map +1 -1
- package/lib/features/store/objects/components/useDownloadFile.js +3 -0
- package/lib/features/store/objects/components/useDownloadFile.js.map +1 -1
- package/lib/features/store/objects/layout/renderers.d.ts.map +1 -1
- package/lib/features/store/objects/layout/renderers.js +2 -2
- package/lib/features/store/objects/layout/renderers.js.map +1 -1
- package/lib/features/store/objects/selection/SelectionActions.js +1 -1
- package/lib/features/store/objects/selection/SelectionActions.js.map +1 -1
- package/lib/features/store/objects/selection/actions/StartWorkflowButton.js +1 -1
- package/lib/features/store/objects/selection/actions/StartWorkflowButton.js.map +1 -1
- package/lib/features/store/types/ContentObjectTypesTable.d.ts.map +1 -1
- package/lib/features/store/types/ContentObjectTypesTable.js +4 -4
- package/lib/features/store/types/ContentObjectTypesTable.js.map +1 -1
- package/lib/features/store/types/IntakePolicyEditor.d.ts +15 -0
- package/lib/features/store/types/IntakePolicyEditor.d.ts.map +1 -0
- package/lib/features/store/types/IntakePolicyEditor.js +455 -0
- package/lib/features/store/types/IntakePolicyEditor.js.map +1 -0
- package/lib/features/store/types/IntakePolicyForm.d.ts +11 -0
- package/lib/features/store/types/IntakePolicyForm.d.ts.map +1 -0
- package/lib/features/store/types/IntakePolicyForm.js +91 -0
- package/lib/features/store/types/IntakePolicyForm.js.map +1 -0
- package/lib/features/store/types/SelectContentTypeModal.js +1 -1
- package/lib/features/store/types/SelectContentTypeModal.js.map +1 -1
- package/lib/features/store/types/index.d.ts +2 -0
- package/lib/features/store/types/index.d.ts.map +1 -1
- package/lib/features/store/types/index.js +2 -0
- package/lib/features/store/types/index.js.map +1 -1
- package/lib/features/store/types/intake-policy-editor.logic.d.ts +7 -0
- package/lib/features/store/types/intake-policy-editor.logic.d.ts.map +1 -0
- package/lib/features/store/types/intake-policy-editor.logic.js +60 -0
- package/lib/features/store/types/intake-policy-editor.logic.js.map +1 -0
- package/lib/features/store/types/typeCatalogCache.d.ts +5 -0
- package/lib/features/store/types/typeCatalogCache.d.ts.map +1 -0
- package/lib/features/store/types/typeCatalogCache.js +40 -0
- package/lib/features/store/types/typeCatalogCache.js.map +1 -0
- package/lib/features/user/UserInfo.js +7 -3
- package/lib/features/user/UserInfo.js.map +1 -1
- package/lib/features/views/ViewExperience.d.ts +20 -0
- package/lib/features/views/ViewExperience.d.ts.map +1 -0
- package/lib/features/views/ViewExperience.js +188 -0
- package/lib/features/views/ViewExperience.js.map +1 -0
- package/lib/features/views/ViewNavigation.d.ts +3 -0
- package/lib/features/views/ViewNavigation.d.ts.map +1 -0
- package/lib/features/views/ViewNavigation.js +36 -0
- package/lib/features/views/ViewNavigation.js.map +1 -0
- package/lib/features/views/ViewResults.d.ts +9 -0
- package/lib/features/views/ViewResults.d.ts.map +1 -0
- package/lib/features/views/ViewResults.js +229 -0
- package/lib/features/views/ViewResults.js.map +1 -0
- package/lib/features/views/ViewSearch.d.ts +3 -0
- package/lib/features/views/ViewSearch.d.ts.map +1 -0
- package/lib/features/views/ViewSearch.js +74 -0
- package/lib/features/views/ViewSearch.js.map +1 -0
- package/lib/features/views/index.d.ts +7 -0
- package/lib/features/views/index.d.ts.map +1 -0
- package/lib/features/views/index.js +7 -0
- package/lib/features/views/index.js.map +1 -0
- package/lib/features/views/types.d.ts +39 -0
- package/lib/features/views/types.d.ts.map +1 -0
- package/lib/features/views/types.js +2 -0
- package/lib/features/views/types.js.map +1 -0
- package/lib/features/views/viewState.d.ts +14 -0
- package/lib/features/views/viewState.d.ts.map +1 -0
- package/lib/features/views/viewState.js +117 -0
- package/lib/features/views/viewState.js.map +1 -0
- package/lib/i18n/locales/ar.json +134 -1
- package/lib/i18n/locales/de.json +130 -1
- package/lib/i18n/locales/en.json +363 -33
- package/lib/i18n/locales/es.json +131 -1
- package/lib/i18n/locales/fr.json +131 -1
- package/lib/i18n/locales/it.json +131 -1
- package/lib/i18n/locales/ja.json +129 -1
- package/lib/i18n/locales/ko.json +129 -1
- package/lib/i18n/locales/pt.json +131 -1
- package/lib/i18n/locales/ru.json +132 -1
- package/lib/i18n/locales/tr.json +130 -1
- package/lib/i18n/locales/zh-TW.json +129 -1
- package/lib/i18n/locales/zh.json +129 -1
- package/lib/rich-text/EditorToolbar.d.ts +37 -0
- package/lib/rich-text/EditorToolbar.d.ts.map +1 -0
- package/lib/rich-text/EditorToolbar.js +215 -0
- package/lib/rich-text/EditorToolbar.js.map +1 -0
- package/lib/rich-text/VertesiaRichTextEditor.d.ts +26 -0
- package/lib/rich-text/VertesiaRichTextEditor.d.ts.map +1 -0
- package/lib/rich-text/VertesiaRichTextEditor.js +67 -0
- package/lib/rich-text/VertesiaRichTextEditor.js.map +1 -0
- package/lib/rich-text/index.d.ts +2 -0
- package/lib/rich-text/index.d.ts.map +1 -0
- package/lib/rich-text/index.js +2 -0
- package/lib/rich-text/index.js.map +1 -0
- package/lib/router/HistoryNavigator.d.ts.map +1 -1
- package/lib/router/HistoryNavigator.js +23 -13
- package/lib/router/HistoryNavigator.js.map +1 -1
- package/lib/router/Nav.d.ts.map +1 -1
- package/lib/router/Nav.js +15 -6
- package/lib/router/Nav.js.map +1 -1
- package/lib/session/UserSession.d.ts.map +1 -1
- package/lib/session/UserSession.js +5 -3
- package/lib/session/UserSession.js.map +1 -1
- package/lib/vertesia-ui-core.js +4 -4
- package/lib/vertesia-ui-core.js.map +1 -1
- package/lib/vertesia-ui-features.js +40 -28
- package/lib/vertesia-ui-features.js.map +1 -1
- package/lib/vertesia-ui-i18n.js +15 -15
- package/lib/vertesia-ui-i18n.js.map +1 -1
- package/lib/vertesia-ui-rich-text.js +5 -0
- package/lib/vertesia-ui-rich-text.js.map +1 -0
- 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 +25 -7
- package/lib/vertesia-ui-widgets.js.map +1 -1
- package/lib/widgets/form/Form.js +1 -1
- package/lib/widgets/form/Form.js.map +1 -1
- package/lib/widgets/json-view/JSONSwitcher.js +1 -1
- package/lib/widgets/json-view/JSONSwitcher.js.map +1 -1
- package/lib/widgets/json-view/JSONView.js +6 -6
- package/lib/widgets/json-view/JSONView.js.map +1 -1
- package/lib/widgets/markdown/AgentResourceResolver.d.ts +31 -0
- package/lib/widgets/markdown/AgentResourceResolver.d.ts.map +1 -0
- package/lib/widgets/markdown/AgentResourceResolver.js +39 -0
- package/lib/widgets/markdown/AgentResourceResolver.js.map +1 -0
- package/lib/widgets/markdown/ArtifactEditingSurface.d.ts +63 -0
- package/lib/widgets/markdown/ArtifactEditingSurface.d.ts.map +1 -0
- package/lib/widgets/markdown/ArtifactEditingSurface.js +582 -0
- package/lib/widgets/markdown/ArtifactEditingSurface.js.map +1 -0
- package/lib/widgets/markdown/CollaborativeMarkdownRenderer.d.ts +69 -0
- package/lib/widgets/markdown/CollaborativeMarkdownRenderer.d.ts.map +1 -0
- package/lib/widgets/markdown/CollaborativeMarkdownRenderer.js +374 -0
- package/lib/widgets/markdown/CollaborativeMarkdownRenderer.js.map +1 -0
- package/lib/widgets/markdown/MarkdownLink.d.ts +3 -1
- package/lib/widgets/markdown/MarkdownLink.d.ts.map +1 -1
- package/lib/widgets/markdown/MarkdownLink.js +41 -14
- package/lib/widgets/markdown/MarkdownLink.js.map +1 -1
- package/lib/widgets/markdown/MarkdownRenderer.d.ts +8 -1
- package/lib/widgets/markdown/MarkdownRenderer.d.ts.map +1 -1
- package/lib/widgets/markdown/MarkdownRenderer.js +20 -4
- package/lib/widgets/markdown/MarkdownRenderer.js.map +1 -1
- package/lib/widgets/markdown/index.d.ts +5 -1
- package/lib/widgets/markdown/index.d.ts.map +1 -1
- package/lib/widgets/markdown/index.js +5 -1
- package/lib/widgets/markdown/index.js.map +1 -1
- package/lib/widgets/markdown/normalizeCustomSchemeLinks.d.ts.map +1 -1
- package/lib/widgets/markdown/normalizeCustomSchemeLinks.js +14 -2
- package/lib/widgets/markdown/normalizeCustomSchemeLinks.js.map +1 -1
- package/lib/widgets/markdown/textDiff.d.ts +52 -0
- package/lib/widgets/markdown/textDiff.d.ts.map +1 -0
- package/lib/widgets/markdown/textDiff.js +362 -0
- package/lib/widgets/markdown/textDiff.js.map +1 -0
- package/lib/widgets/markdown/useArtifactContent.d.ts +5 -3
- package/lib/widgets/markdown/useArtifactContent.d.ts.map +1 -1
- package/lib/widgets/markdown/useArtifactContent.js +6 -3
- package/lib/widgets/markdown/useArtifactContent.js.map +1 -1
- package/lib/widgets/markdown/useResolvedUrl.d.ts +1 -5
- package/lib/widgets/markdown/useResolvedUrl.d.ts.map +1 -1
- package/lib/widgets/markdown/useResolvedUrl.js +19 -31
- package/lib/widgets/markdown/useResolvedUrl.js.map +1 -1
- package/lib/widgets/monacoEditor/MonacoEditor.d.ts.map +1 -1
- package/lib/widgets/monacoEditor/MonacoEditor.js +29 -0
- package/lib/widgets/monacoEditor/MonacoEditor.js.map +1 -1
- package/lib/widgets/schema-editor/ManagedSchema.d.ts +8 -0
- package/lib/widgets/schema-editor/ManagedSchema.d.ts.map +1 -1
- package/lib/widgets/schema-editor/ManagedSchema.js +16 -0
- package/lib/widgets/schema-editor/ManagedSchema.js.map +1 -1
- package/lib/widgets/schema-editor/editor/EditableSchemaProperty.d.ts +2 -0
- package/lib/widgets/schema-editor/editor/EditableSchemaProperty.d.ts.map +1 -1
- package/lib/widgets/schema-editor/editor/EditableSchemaProperty.js +1 -0
- package/lib/widgets/schema-editor/editor/EditableSchemaProperty.js.map +1 -1
- package/lib/widgets/schema-editor/editor/PropertyViewer.d.ts.map +1 -1
- package/lib/widgets/schema-editor/editor/PropertyViewer.js +4 -1
- package/lib/widgets/schema-editor/editor/PropertyViewer.js.map +1 -1
- package/lib/widgets/schema-editor/editor/SchemaEditor.d.ts.map +1 -1
- package/lib/widgets/schema-editor/editor/SchemaEditor.js +22 -11
- package/lib/widgets/schema-editor/editor/SchemaEditor.js.map +1 -1
- package/lib/widgets/xml-viewer/hooks/useXMLViewer.d.ts +9 -0
- package/lib/widgets/xml-viewer/hooks/useXMLViewer.d.ts.map +1 -1
- package/lib/widgets/xml-viewer/hooks/useXMLViewer.js +20 -17
- package/lib/widgets/xml-viewer/hooks/useXMLViewer.js.map +1 -1
- package/package.json +37 -33
- package/src/__tests__/a11y.test.tsx +77 -1
- package/src/__tests__/axe-helper.ts +17 -7
- package/src/__tests__/setup.ts +25 -0
- package/src/core/components/SidePanel.tsx +1 -1
- package/src/core/components/shadcn/button.tsx +67 -12
- package/src/core/components/shadcn/filters/filterBar.tsx +1 -0
- package/src/core/components/shadcn/modal/dialog.tsx +4 -2
- package/src/core/components/shadcn/tabs.test.tsx +65 -0
- package/src/core/components/shadcn/tabs.tsx +25 -3
- package/src/core/components/shadcn/theme/ThemeSwitcher.tsx +1 -1
- package/src/features/agent/chat/AgentChatPlaybackControls.tsx +0 -5
- package/src/features/agent/chat/AgentRequestInputOverlay.test.tsx +31 -0
- package/src/features/agent/chat/AgentRequestInputOverlay.tsx +6 -2
- package/src/features/agent/chat/AgentRightPanel.tsx +16 -1
- package/src/features/agent/chat/ArtifactsTab.test.tsx +55 -0
- package/src/features/agent/chat/ArtifactsTab.tsx +222 -61
- package/src/features/agent/chat/DocumentEditingActionCard.test.tsx +105 -0
- package/src/features/agent/chat/DocumentEditingActionCard.tsx +210 -0
- package/src/features/agent/chat/ImageLightbox.tsx +0 -1
- package/src/features/agent/chat/ModernAgentConversation.test.tsx +285 -40
- package/src/features/agent/chat/ModernAgentConversation.tsx +247 -77
- package/src/features/agent/chat/ModernAgentOutput/AgentMarkdownAnchor.test.tsx +79 -0
- package/src/features/agent/chat/ModernAgentOutput/AgentMarkdownAnchor.tsx +94 -0
- package/src/features/agent/chat/ModernAgentOutput/AllMessagesMixed.test.tsx +263 -35
- package/src/features/agent/chat/ModernAgentOutput/AllMessagesMixed.tsx +236 -118
- package/src/features/agent/chat/ModernAgentOutput/AttachmentPreview.tsx +17 -0
- package/src/features/agent/chat/ModernAgentOutput/CollapsibleAgentMarkdown.test.tsx +44 -0
- package/src/features/agent/chat/ModernAgentOutput/CollapsibleAgentMarkdown.tsx +88 -0
- package/src/features/agent/chat/ModernAgentOutput/Header.tsx +3 -3
- package/src/features/agent/chat/ModernAgentOutput/MessageInput.tsx +0 -2
- package/src/features/agent/chat/ModernAgentOutput/MessageItem.tsx +34 -47
- package/src/features/agent/chat/ModernAgentOutput/ResourceChangeSummary.tsx +40 -0
- package/src/features/agent/chat/ModernAgentOutput/ResourceChip.test.tsx +148 -0
- package/src/features/agent/chat/ModernAgentOutput/ResourceChip.tsx +141 -0
- package/src/features/agent/chat/ModernAgentOutput/ToolCallGroup.tsx +33 -1
- package/src/features/agent/chat/ModernAgentOutput/requestInputMessages.test.ts +80 -0
- package/src/features/agent/chat/ModernAgentOutput/requestInputMessages.ts +21 -1
- package/src/features/agent/chat/ModernAgentOutput/resourceLinks.tsx +43 -0
- package/src/features/agent/chat/ModernAgentOutput/resourceSummary.test.ts +229 -0
- package/src/features/agent/chat/ModernAgentOutput/resourceSummary.ts +152 -0
- package/src/features/agent/chat/ModernAgentOutput/utils.test.ts +17 -0
- package/src/features/agent/chat/ModernAgentOutput/utils.ts +14 -1
- package/src/features/agent/chat/hooks/useAgentStream.test.tsx +188 -0
- package/src/features/agent/chat/hooks/useAgentStream.ts +28 -8
- package/src/features/agent/chat/index.ts +11 -0
- package/src/features/environment/SelectEnvironment.tsx +186 -0
- package/src/features/environment/index.ts +1 -0
- package/src/features/index.ts +2 -0
- package/src/features/magic-pdf/AnnotatedImageSlider.tsx +62 -66
- package/src/features/magic-pdf/DownloadPopover.tsx +5 -48
- package/src/features/magic-pdf/ExtractedContentView.tsx +2 -14
- package/src/features/magic-pdf/GroundedExtractionAssistantPanel.tsx +86 -0
- package/src/features/magic-pdf/GroundedExtractionView.test.tsx +65 -0
- package/src/features/magic-pdf/GroundedExtractionView.tsx +1055 -0
- package/src/features/magic-pdf/MagicPdfProvider.tsx +17 -47
- package/src/features/magic-pdf/MagicPdfView.tsx +3 -51
- package/src/features/magic-pdf/index.ts +1 -0
- package/src/features/magic-pdf/types.ts +1 -1
- package/src/features/oauth/McpConnectionsButton.tsx +0 -2
- package/src/features/oauth/McpConnectionsDialog.tsx +0 -1
- package/src/features/oauth/RemoteMcpConnectionButton.tsx +0 -1
- package/src/features/pdf-viewer/PdfPageSlider.tsx +5 -5
- package/src/features/pdf-viewer/SimplePdfViewer.tsx +11 -12
- package/src/features/permissions/UserPermissionsProvider.tsx +1 -1
- package/src/features/store/objects/DocumentQuickFilter.tsx +13 -15
- package/src/features/store/objects/DocumentSearchResults.tsx +5 -8
- package/src/features/store/objects/components/ContentDispositionButton.tsx +5 -1
- package/src/features/store/objects/components/ContentOverview.tsx +356 -105
- package/src/features/store/objects/components/DocumentEditingConfigurationSelector.test.ts +34 -0
- package/src/features/store/objects/components/DocumentEditingConfigurationSelector.tsx +211 -0
- package/src/features/store/objects/components/DocumentEditingLockStatus.test.tsx +32 -0
- package/src/features/store/objects/components/DocumentEditingLockStatus.tsx +45 -0
- package/src/features/store/objects/components/DocumentEditingPanel.test.tsx +336 -0
- package/src/features/store/objects/components/DocumentEditingPanel.tsx +1236 -0
- package/src/features/store/objects/components/DocumentIcon.tsx +1 -1
- package/src/features/store/objects/components/TextEditorPanel.test.tsx +48 -0
- package/src/features/store/objects/components/TextEditorPanel.tsx +41 -20
- package/src/features/store/objects/components/VectorSearchWidget.tsx +2 -2
- package/src/features/store/objects/components/documentArtifactRefs.test.ts +65 -0
- package/src/features/store/objects/components/documentArtifactRefs.ts +72 -0
- package/src/features/store/objects/components/documentEditingAgentConfig.test.ts +28 -0
- package/src/features/store/objects/components/documentEditingAgentConfig.ts +41 -0
- package/src/features/store/objects/components/documentEditingPrompts.test.ts +26 -0
- package/src/features/store/objects/components/documentEditingPrompts.ts +12 -0
- package/src/features/store/objects/components/documentEditingRun.test.ts +176 -0
- package/src/features/store/objects/components/documentEditingRun.ts +184 -0
- package/src/features/store/objects/components/documentEditingTarget.test.ts +96 -0
- package/src/features/store/objects/components/documentEditingTarget.ts +63 -0
- package/src/features/store/objects/components/index.ts +1 -0
- package/src/features/store/objects/components/useContentPanelHooks.ts +55 -42
- package/src/features/store/objects/components/useDownloadFile.test.ts +20 -0
- package/src/features/store/objects/components/useDownloadFile.ts +5 -1
- package/src/features/store/objects/layout/renderers.tsx +1 -2
- package/src/features/store/objects/selection/SelectionActions.tsx +1 -1
- package/src/features/store/objects/selection/actions/StartWorkflowButton.tsx +2 -2
- package/src/features/store/types/ContentObjectTypesTable.tsx +12 -14
- package/src/features/store/types/IntakePolicyEditor.tsx +679 -0
- package/src/features/store/types/IntakePolicyForm.tsx +838 -0
- package/src/features/store/types/SelectContentTypeModal.tsx +2 -2
- package/src/features/store/types/index.ts +2 -0
- package/src/features/store/types/intake-policy-editor.logic.test.ts +109 -0
- package/src/features/store/types/intake-policy-editor.logic.ts +87 -0
- package/src/features/store/types/typeCatalogCache.ts +45 -0
- package/src/features/user/UserInfo.tsx +7 -7
- package/src/features/views/ViewExperience.test.tsx +273 -0
- package/src/features/views/ViewExperience.tsx +408 -0
- package/src/features/views/ViewNavigation.test.tsx +86 -0
- package/src/features/views/ViewNavigation.tsx +187 -0
- package/src/features/views/ViewResults.test.ts +82 -0
- package/src/features/views/ViewResults.tsx +609 -0
- package/src/features/views/ViewSearch.test.tsx +147 -0
- package/src/features/views/ViewSearch.tsx +205 -0
- package/src/features/views/index.ts +6 -0
- package/src/features/views/types.ts +57 -0
- package/src/features/views/viewState.test.ts +111 -0
- package/src/features/views/viewState.ts +132 -0
- package/src/i18n/locales/ar.json +134 -1
- package/src/i18n/locales/de.json +130 -1
- package/src/i18n/locales/en.json +1083 -753
- package/src/i18n/locales/es.json +131 -1
- package/src/i18n/locales/fr.json +131 -1
- package/src/i18n/locales/it.json +131 -1
- package/src/i18n/locales/ja.json +129 -1
- package/src/i18n/locales/ko.json +129 -1
- package/src/i18n/locales/pt.json +131 -1
- package/src/i18n/locales/ru.json +132 -1
- package/src/i18n/locales/tr.json +130 -1
- package/src/i18n/locales/zh-TW.json +129 -1
- package/src/i18n/locales/zh.json +129 -1
- package/src/rich-text/EditorToolbar.tsx +708 -0
- package/src/rich-text/VertesiaRichTextEditor.test.tsx +211 -0
- package/src/rich-text/VertesiaRichTextEditor.tsx +241 -0
- package/src/rich-text/index.ts +9 -0
- package/src/router/HistoryNavigator.test.ts +48 -0
- package/src/router/HistoryNavigator.ts +24 -13
- package/src/router/Nav.tsx +18 -8
- package/src/session/UserSession.test.ts +39 -0
- package/src/session/UserSession.ts +5 -3
- package/src/widgets/form/Form.tsx +1 -1
- package/src/widgets/json-view/JSONSwitcher.tsx +2 -2
- package/src/widgets/json-view/JSONView.tsx +7 -7
- package/src/widgets/markdown/AgentResourceResolver.test.ts +24 -0
- package/src/widgets/markdown/AgentResourceResolver.tsx +70 -0
- package/src/widgets/markdown/ArtifactEditingSurface.test.tsx +537 -0
- package/src/widgets/markdown/ArtifactEditingSurface.tsx +878 -0
- package/src/widgets/markdown/CollaborativeMarkdownRenderer.test.tsx +484 -0
- package/src/widgets/markdown/CollaborativeMarkdownRenderer.tsx +825 -0
- package/src/widgets/markdown/MarkdownLink.test.tsx +122 -0
- package/src/widgets/markdown/MarkdownLink.tsx +102 -17
- package/src/widgets/markdown/MarkdownRenderer.tsx +30 -3
- package/src/widgets/markdown/index.ts +39 -1
- package/src/widgets/markdown/normalizeCustomSchemeLinks.ts +15 -2
- package/src/widgets/markdown/textDiff.test.ts +156 -0
- package/src/widgets/markdown/textDiff.ts +399 -0
- package/src/widgets/markdown/useArtifactContent.ts +9 -3
- package/src/widgets/markdown/useResolvedUrl.test.ts +29 -40
- package/src/widgets/markdown/useResolvedUrl.ts +33 -35
- package/src/widgets/monacoEditor/MonacoEditor.tsx +29 -0
- package/src/widgets/schema-editor/ManagedSchema.ts +22 -0
- package/src/widgets/schema-editor/editor/EditableSchemaProperty.tsx +3 -0
- package/src/widgets/schema-editor/editor/PropertyViewer.tsx +14 -3
- package/src/widgets/schema-editor/editor/SchemaEditor.tsx +80 -29
- package/src/widgets/xml-viewer/hooks/useXMLViewer.test.ts +26 -0
- package/src/widgets/xml-viewer/hooks/useXMLViewer.ts +23 -18
|
@@ -1,14 +1,16 @@
|
|
|
1
1
|
import {
|
|
2
2
|
type AgentMessage,
|
|
3
3
|
AgentMessageType,
|
|
4
|
+
type AgentResourceReference,
|
|
4
5
|
type AskUserMessageDetails,
|
|
5
6
|
type BatchProgressDetails,
|
|
7
|
+
getResourcesFromMessage,
|
|
6
8
|
type JSONSchema,
|
|
7
9
|
type Plan,
|
|
8
10
|
} from '@vertesia/common';
|
|
9
11
|
import { Badge, Button, cn, VTooltip } from '@vertesia/ui/core';
|
|
10
12
|
import { i18nInstance, NAMESPACE, useUITranslation } from '@vertesia/ui/i18n';
|
|
11
|
-
import {
|
|
13
|
+
import { useRouterContext } from '@vertesia/ui/router';
|
|
12
14
|
import { MarkdownRenderer, type MarkdownRendererProps } from '@vertesia/ui/widgets';
|
|
13
15
|
import type { Element } from 'hast';
|
|
14
16
|
import {
|
|
@@ -29,6 +31,7 @@ import {
|
|
|
29
31
|
import React, { Component, type ReactNode, useCallback, useEffect, useMemo, useRef, useState } from 'react';
|
|
30
32
|
import { AnimatedThinkingDots, PulsatingCircle } from '../AnimatedThinkingDots';
|
|
31
33
|
import { AskUserWidget } from '../AskUserWidget';
|
|
34
|
+
import { DocumentEditingActionCard, parseMarkdownEditingAction } from '../DocumentEditingActionCard.js';
|
|
32
35
|
import { ThinkingMessages } from '../WaitingMessages';
|
|
33
36
|
import {
|
|
34
37
|
formatWorkstreamName,
|
|
@@ -37,10 +40,19 @@ import {
|
|
|
37
40
|
getWorkstreamLaunchDetails,
|
|
38
41
|
type WorkstreamLaunchDetails,
|
|
39
42
|
} from '../workstreams.js';
|
|
43
|
+
import { createAgentMarkdownAnchor } from './AgentMarkdownAnchor';
|
|
40
44
|
import { AttachmentPreviewList, parseUserMessageAttachments } from './AttachmentPreview';
|
|
41
45
|
import BatchProgressPanel, { type BatchProgressPanelClassNames } from './BatchProgressPanel';
|
|
46
|
+
import {
|
|
47
|
+
AGENT_LINE_CLAMP_CLASS,
|
|
48
|
+
AGENT_PROSE_CLASS as SUMMARY_PROSE_CLASS,
|
|
49
|
+
AGENT_COLLAPSE_LINES as SUMMARY_THOUGHT_COLLAPSE_LINES,
|
|
50
|
+
AGENT_COLLAPSE_THRESHOLD as SUMMARY_THOUGHT_COLLAPSE_THRESHOLD,
|
|
51
|
+
} from './CollapsibleAgentMarkdown.js';
|
|
42
52
|
import { getMessageDeliveryStatus, MessageDeliveryStatus } from './MessageDeliveryStatus';
|
|
43
53
|
import MessageItem, { type MessageItemClassNames, type MessageItemProps } from './MessageItem';
|
|
54
|
+
import { ResourceChangeSummary } from './ResourceChangeSummary';
|
|
55
|
+
import { ResourceActivityLinkList } from './ResourceChip';
|
|
44
56
|
import {
|
|
45
57
|
getAnsweredRequestInputKeys,
|
|
46
58
|
getAnsweredToolApprovalRequestInputKeys,
|
|
@@ -49,6 +61,7 @@ import {
|
|
|
49
61
|
getRequestInputDisplayText,
|
|
50
62
|
getRequestInputMessageKey,
|
|
51
63
|
getResolvedToolApprovalKeys,
|
|
64
|
+
getToolApprovalResponseMetadata,
|
|
52
65
|
hasRequestInputUx,
|
|
53
66
|
isRequestInputAnswered,
|
|
54
67
|
isToolApprovalAnswerHidden,
|
|
@@ -56,6 +69,12 @@ import {
|
|
|
56
69
|
isToolApprovalRequestInputHidden,
|
|
57
70
|
type RequestInputMessageWithUx,
|
|
58
71
|
} from './requestInputMessages';
|
|
72
|
+
import {
|
|
73
|
+
interleaveTurnSummaries,
|
|
74
|
+
isResourceSummaryReady,
|
|
75
|
+
type ResourceSummaryRenderItem,
|
|
76
|
+
segmentTurnResources,
|
|
77
|
+
} from './resourceSummary';
|
|
59
78
|
import StreamingMessage, { type StreamingMessageClassNames } from './StreamingMessage';
|
|
60
79
|
import {
|
|
61
80
|
buildSummaryConversationItems,
|
|
@@ -282,6 +301,7 @@ function getMessageText(message: AgentMessage): string {
|
|
|
282
301
|
interface SummaryMessageProps {
|
|
283
302
|
message: AgentMessage;
|
|
284
303
|
onSendMessage?: (message: string, metadata?: Record<string, unknown>) => void;
|
|
304
|
+
onOpenArtifact?: (path: string) => void;
|
|
285
305
|
onSelectWorkstream?: (workstreamId: string) => void;
|
|
286
306
|
requestInputAnswered?: boolean;
|
|
287
307
|
StoreLinkComponent?: React.ComponentType<{ href: string; documentId: string; children: React.ReactNode }>;
|
|
@@ -329,17 +349,7 @@ function SummaryWorkstreamLaunchMessage({
|
|
|
329
349
|
);
|
|
330
350
|
}
|
|
331
351
|
|
|
332
|
-
const SUMMARY_PROSE_CLASS = [
|
|
333
|
-
'agent-markdown vprose prose max-w-none break-words text-sm leading-6 text-foreground/80',
|
|
334
|
-
'prose-p:my-2 prose-p:leading-6 prose-li:my-0.5 prose-pre:my-3 prose-headings:tracking-normal',
|
|
335
|
-
'prose-headings:text-foreground prose-strong:text-foreground prose-code:text-foreground',
|
|
336
|
-
'prose-a:text-foreground prose-a:underline prose-a:decoration-muted prose-a:underline-offset-4',
|
|
337
|
-
'[&_p]:text-foreground/80 [&_li]:text-foreground/80 [&_li::marker]:text-muted',
|
|
338
|
-
].join(' ');
|
|
339
|
-
|
|
340
352
|
const USER_BUBBLE_COLLAPSE_THRESHOLD = 520;
|
|
341
|
-
const SUMMARY_THOUGHT_COLLAPSE_LINES = 6;
|
|
342
|
-
const SUMMARY_THOUGHT_COLLAPSE_THRESHOLD = 520;
|
|
343
353
|
const STORE_LINK_MARKDOWN_RE =
|
|
344
354
|
/\[[^\]]+\]\((?:\/store\/(?:objects|collections)\/|store:|document:|document:\/\/|collection:)[^)]+\)/;
|
|
345
355
|
const DEFAULT_AGENT_MARKDOWN_COMPONENTS: MarkdownRendererProps['components'] = {
|
|
@@ -560,6 +570,7 @@ function SummaryUserBubble({
|
|
|
560
570
|
workstreamId,
|
|
561
571
|
className,
|
|
562
572
|
artifactRunId,
|
|
573
|
+
onOpenArtifact,
|
|
563
574
|
markdownComponents,
|
|
564
575
|
}: {
|
|
565
576
|
children: React.ReactNode;
|
|
@@ -567,6 +578,7 @@ function SummaryUserBubble({
|
|
|
567
578
|
workstreamId?: string;
|
|
568
579
|
className?: string;
|
|
569
580
|
artifactRunId?: string;
|
|
581
|
+
onOpenArtifact?: (path: string) => void;
|
|
570
582
|
markdownComponents?: MarkdownRendererProps['components'];
|
|
571
583
|
}) {
|
|
572
584
|
const { t } = useUITranslation();
|
|
@@ -606,6 +618,7 @@ function SummaryUserBubble({
|
|
|
606
618
|
{shouldRenderMarkdown ? (
|
|
607
619
|
<MarkdownRenderer
|
|
608
620
|
artifactRunId={artifactRunId}
|
|
621
|
+
onArtifactOpen={onOpenArtifact}
|
|
609
622
|
components={markdownComponents}
|
|
610
623
|
className={cn(
|
|
611
624
|
'agent-markdown vprose prose max-w-none break-words text-sm leading-6 text-foreground/90',
|
|
@@ -646,11 +659,13 @@ function SummaryUserBubble({
|
|
|
646
659
|
function SummaryMessage({
|
|
647
660
|
message,
|
|
648
661
|
onSendMessage,
|
|
662
|
+
onOpenArtifact,
|
|
649
663
|
onSelectWorkstream,
|
|
650
664
|
requestInputAnswered = false,
|
|
651
665
|
StoreLinkComponent,
|
|
652
666
|
CollectionLinkComponent,
|
|
653
667
|
}: SummaryMessageProps) {
|
|
668
|
+
const { router } = useRouterContext();
|
|
654
669
|
const content =
|
|
655
670
|
message.type === AgentMessageType.REQUEST_INPUT ? getRequestInputDisplayText(message) : getMessageText(message);
|
|
656
671
|
const workstreamLaunchDetails = getWorkstreamLaunchDetails(message) ?? getWorkstreamActivityDetails(message);
|
|
@@ -660,55 +675,24 @@ function SummaryMessage({
|
|
|
660
675
|
() => (message.type === AgentMessageType.QUESTION ? parseUserMessageAttachments(content) : null),
|
|
661
676
|
[content, message.type],
|
|
662
677
|
);
|
|
678
|
+
const editingAction = useMemo(
|
|
679
|
+
() =>
|
|
680
|
+
message.type === AgentMessageType.QUESTION
|
|
681
|
+
? parseMarkdownEditingAction(message.details?.editing_action)
|
|
682
|
+
: undefined,
|
|
683
|
+
[message.details, message.type],
|
|
684
|
+
);
|
|
663
685
|
|
|
664
686
|
const markdownComponents = useMemo(
|
|
665
687
|
() => ({
|
|
666
688
|
...DEFAULT_AGENT_MARKDOWN_COMPONENTS,
|
|
667
|
-
a: ({
|
|
668
|
-
|
|
669
|
-
|
|
670
|
-
|
|
671
|
-
}
|
|
672
|
-
node?: unknown;
|
|
673
|
-
ref?: unknown;
|
|
674
|
-
href?: string;
|
|
675
|
-
children?: React.ReactNode;
|
|
676
|
-
}) => {
|
|
677
|
-
const href = props.href || '';
|
|
678
|
-
if (href.includes('/store/objects')) {
|
|
679
|
-
const documentId = href.split('/store/objects/')[1] || '';
|
|
680
|
-
if (StoreLinkComponent) {
|
|
681
|
-
return (
|
|
682
|
-
<StoreLinkComponent href={href} documentId={documentId}>
|
|
683
|
-
{props.children}
|
|
684
|
-
</StoreLinkComponent>
|
|
685
|
-
);
|
|
686
|
-
}
|
|
687
|
-
return (
|
|
688
|
-
<NavLink href={href} topLevelNav>
|
|
689
|
-
{props.children}
|
|
690
|
-
</NavLink>
|
|
691
|
-
);
|
|
692
|
-
}
|
|
693
|
-
if (href.includes('/store/collections')) {
|
|
694
|
-
const collectionId = href.split('/store/collections/')[1] || '';
|
|
695
|
-
if (CollectionLinkComponent) {
|
|
696
|
-
return (
|
|
697
|
-
<CollectionLinkComponent href={href} collectionId={collectionId}>
|
|
698
|
-
{props.children}
|
|
699
|
-
</CollectionLinkComponent>
|
|
700
|
-
);
|
|
701
|
-
}
|
|
702
|
-
return (
|
|
703
|
-
<NavLink href={href} topLevelNav>
|
|
704
|
-
{props.children}
|
|
705
|
-
</NavLink>
|
|
706
|
-
);
|
|
707
|
-
}
|
|
708
|
-
return <a {...props} target="_blank" rel="noopener noreferrer" />;
|
|
709
|
-
},
|
|
689
|
+
a: createAgentMarkdownAnchor({
|
|
690
|
+
StoreLinkComponent,
|
|
691
|
+
CollectionLinkComponent,
|
|
692
|
+
addStickyParams: (href: string) => router.getTopRouter().navigator.addStickyParams(href),
|
|
693
|
+
}),
|
|
710
694
|
}),
|
|
711
|
-
[StoreLinkComponent, CollectionLinkComponent],
|
|
695
|
+
[StoreLinkComponent, CollectionLinkComponent, router],
|
|
712
696
|
);
|
|
713
697
|
|
|
714
698
|
if (workstreamLaunchDetails) {
|
|
@@ -732,6 +716,7 @@ function SummaryMessage({
|
|
|
732
716
|
<AttachmentPreviewList
|
|
733
717
|
items={attachments}
|
|
734
718
|
artifactRunId={runId}
|
|
719
|
+
onOpenArtifact={onOpenArtifact}
|
|
735
720
|
align="end"
|
|
736
721
|
variant="message"
|
|
737
722
|
StoreLinkComponent={StoreLinkComponent}
|
|
@@ -744,9 +729,13 @@ function SummaryMessage({
|
|
|
744
729
|
message={message}
|
|
745
730
|
workstreamId={workstreamId}
|
|
746
731
|
artifactRunId={runId}
|
|
732
|
+
onOpenArtifact={onOpenArtifact}
|
|
747
733
|
markdownComponents={markdownComponents}
|
|
734
|
+
// Comments/edits are user actions: keep the user-message background and end
|
|
735
|
+
// alignment, just give the card a little more room for tables and diffs.
|
|
736
|
+
className={editingAction ? 'max-w-[min(44rem,90%)]' : undefined}
|
|
748
737
|
>
|
|
749
|
-
{questionBody}
|
|
738
|
+
{editingAction ? <DocumentEditingActionCard action={editingAction} /> : questionBody}
|
|
750
739
|
</SummaryUserBubble>
|
|
751
740
|
)}
|
|
752
741
|
</>
|
|
@@ -763,7 +752,9 @@ function SummaryMessage({
|
|
|
763
752
|
options={uxConfig.options}
|
|
764
753
|
variant={uxConfig.variant}
|
|
765
754
|
multiSelect={uxConfig.multiSelect}
|
|
766
|
-
onSelect={(optionId) =>
|
|
755
|
+
onSelect={(optionId) =>
|
|
756
|
+
onSendMessage?.(optionId, getToolApprovalResponseMetadata(message, optionId))
|
|
757
|
+
}
|
|
767
758
|
onMultiSelect={(optionIds) => onSendMessage?.(optionIds.join(', '))}
|
|
768
759
|
allowFreeResponse={!uxConfig.options?.length || !!uxConfig.free_response}
|
|
769
760
|
placeholder={uxConfig.free_response?.placeholder}
|
|
@@ -796,6 +787,7 @@ function SummaryMessage({
|
|
|
796
787
|
>
|
|
797
788
|
<MarkdownRenderer
|
|
798
789
|
artifactRunId={runId}
|
|
790
|
+
onArtifactOpen={onOpenArtifact}
|
|
799
791
|
onProposalSelect={(optionId) => onSendMessage?.(optionId)}
|
|
800
792
|
onProposalSubmit={(text) => onSendMessage?.(text)}
|
|
801
793
|
components={markdownComponents}
|
|
@@ -1025,6 +1017,8 @@ interface SummaryToolDetailItem {
|
|
|
1025
1017
|
finishedAt?: number | string;
|
|
1026
1018
|
status?: ToolExecutionStatus;
|
|
1027
1019
|
decisionText?: string;
|
|
1020
|
+
resources: AgentResourceReference[];
|
|
1021
|
+
workflowRunId?: string;
|
|
1028
1022
|
sections: SummaryToolDetailSection[];
|
|
1029
1023
|
}
|
|
1030
1024
|
|
|
@@ -1040,6 +1034,7 @@ const TOOL_DETAIL_SYSTEM_KEYS = new Set([
|
|
|
1040
1034
|
'collection_id',
|
|
1041
1035
|
'document_id',
|
|
1042
1036
|
'display_role',
|
|
1037
|
+
'duration_ms',
|
|
1043
1038
|
'event_class',
|
|
1044
1039
|
'id',
|
|
1045
1040
|
'object_id',
|
|
@@ -1057,6 +1052,7 @@ const TOOL_DETAIL_SYSTEM_KEYS = new Set([
|
|
|
1057
1052
|
'tools',
|
|
1058
1053
|
'message_to_human',
|
|
1059
1054
|
'progress_messages',
|
|
1055
|
+
'resources',
|
|
1060
1056
|
'source',
|
|
1061
1057
|
'token_usage',
|
|
1062
1058
|
'checkpoint_at',
|
|
@@ -1391,7 +1387,12 @@ function getRenderableGroupKey(group: RenderableGroup): string {
|
|
|
1391
1387
|
return ['group', group.toolRunId, group.firstTimestamp, firstKey, lastKey].filter(Boolean).join(':');
|
|
1392
1388
|
}
|
|
1393
1389
|
|
|
1394
|
-
|
|
1390
|
+
// Accepts the augmented render list (which may contain interleaved resource_summary items); those
|
|
1391
|
+
// are skipped so the previous *group* timestamp is found regardless of inserted summaries.
|
|
1392
|
+
function getPreviousRenderableGroupTimestamp(
|
|
1393
|
+
groups: Array<RenderableGroup | ResourceSummaryRenderItem>,
|
|
1394
|
+
index: number,
|
|
1395
|
+
): number | string | undefined {
|
|
1395
1396
|
for (let previousIndex = index - 1; previousIndex >= 0; previousIndex--) {
|
|
1396
1397
|
const group = groups[previousIndex];
|
|
1397
1398
|
if (group.type === 'single') return group.message.timestamp;
|
|
@@ -1509,6 +1510,8 @@ function buildSummaryToolDetailItem(message: AgentMessage, index: number): Summa
|
|
|
1509
1510
|
finishedAt: getTimestampDetail(details[SUMMARY_TOOL_FINISHED_AT_DETAIL_KEY]) ?? message.timestamp,
|
|
1510
1511
|
status: approvalDecisionTitle ? 'error' : (details.tool_status as ToolExecutionStatus | undefined),
|
|
1511
1512
|
decisionText,
|
|
1513
|
+
resources: getResourcesFromMessage(message),
|
|
1514
|
+
workflowRunId: message.workflow_run_id,
|
|
1512
1515
|
sections: getToolDetailSections(message),
|
|
1513
1516
|
};
|
|
1514
1517
|
}
|
|
@@ -1843,6 +1846,13 @@ function formatToolDetailCopyText(item: SummaryToolDetailItem): string {
|
|
|
1843
1846
|
const metadata = getToolDetailMetadata(item).map((entry) => `${entry.label}: ${entry.value}`);
|
|
1844
1847
|
if (metadata.length > 0) parts.push(metadata.join('\n'));
|
|
1845
1848
|
if (item.text) parts.push(item.text);
|
|
1849
|
+
if (item.resources.length > 0) {
|
|
1850
|
+
parts.push(
|
|
1851
|
+
`Resources\n${item.resources
|
|
1852
|
+
.map((resource) => `${resource.label} (${resource.type}:${resource.id}) — ${resource.action}`)
|
|
1853
|
+
.join('\n')}`,
|
|
1854
|
+
);
|
|
1855
|
+
}
|
|
1846
1856
|
|
|
1847
1857
|
for (const section of item.sections) {
|
|
1848
1858
|
parts.push(`${section.label}\n${formatToolSectionValue(section.value)}`);
|
|
@@ -1950,52 +1960,80 @@ function SummaryToolDetailPanel({ item }: { item: SummaryToolDetailItem }) {
|
|
|
1950
1960
|
}
|
|
1951
1961
|
|
|
1952
1962
|
function SummaryToolTimelineItem({ item }: { item: SummaryToolDetailItem }) {
|
|
1963
|
+
const { t } = useUITranslation();
|
|
1953
1964
|
const isDecision = Boolean(item.decisionText);
|
|
1954
1965
|
const isAttention = !isDecision && (item.status === 'error' || item.status === 'warning');
|
|
1955
1966
|
const hasMetadata = getToolDetailMetadata(item).length > 0;
|
|
1956
1967
|
const hasDetails = Boolean(item.command || item.text || item.sections.length || hasMetadata);
|
|
1968
|
+
const hasResources = item.resources.length > 0;
|
|
1957
1969
|
const [isExpanded, setIsExpanded] = useState(false);
|
|
1958
1970
|
const iconStatus = isDecision ? undefined : item.status;
|
|
1971
|
+
const toggleDetailsLabel = isExpanded ? t('agent.hideDetails') : t('agent.showDetails');
|
|
1972
|
+
const detailsSubject = hasResources ? item.resources.map((resource) => resource.label).join(', ') : item.title;
|
|
1973
|
+
|
|
1974
|
+
const icon = (
|
|
1975
|
+
<span
|
|
1976
|
+
className={cn(
|
|
1977
|
+
'flex size-5 items-center justify-center pt-0.5',
|
|
1978
|
+
isAttention ? 'text-attention' : 'text-muted',
|
|
1979
|
+
)}
|
|
1980
|
+
>
|
|
1981
|
+
<ToolDetailIcon kind={item.kind} status={iconStatus} />
|
|
1982
|
+
</span>
|
|
1983
|
+
);
|
|
1984
|
+
|
|
1985
|
+
const chevron = (
|
|
1986
|
+
<ChevronDown
|
|
1987
|
+
className={cn('size-4 shrink-0 text-muted opacity-50 transition-transform', !isExpanded && '-rotate-90')}
|
|
1988
|
+
aria-hidden="true"
|
|
1989
|
+
/>
|
|
1990
|
+
);
|
|
1959
1991
|
|
|
1960
1992
|
return (
|
|
1961
1993
|
<div className="min-w-0">
|
|
1962
|
-
|
|
1963
|
-
|
|
1964
|
-
|
|
1965
|
-
|
|
1966
|
-
|
|
1967
|
-
|
|
1968
|
-
|
|
1969
|
-
|
|
1970
|
-
|
|
1971
|
-
|
|
1972
|
-
|
|
1973
|
-
|
|
1994
|
+
{hasResources ? (
|
|
1995
|
+
<div className="grid w-full grid-cols-[1.5rem_1fr_auto] items-center gap-2 text-start">
|
|
1996
|
+
{icon}
|
|
1997
|
+
<ResourceActivityLinkList resources={item.resources} workflowRunId={item.workflowRunId} />
|
|
1998
|
+
{hasDetails ? (
|
|
1999
|
+
<VTooltip description={toggleDetailsLabel} asChild>
|
|
2000
|
+
<Button
|
|
2001
|
+
variant="ghost"
|
|
2002
|
+
size="xs"
|
|
2003
|
+
className="size-6 p-0 text-muted"
|
|
2004
|
+
onClick={() => setIsExpanded((current) => !current)}
|
|
2005
|
+
aria-expanded={isExpanded}
|
|
2006
|
+
aria-label={`${toggleDetailsLabel}: ${detailsSubject}`}
|
|
2007
|
+
>
|
|
2008
|
+
{chevron}
|
|
2009
|
+
</Button>
|
|
2010
|
+
</VTooltip>
|
|
2011
|
+
) : null}
|
|
2012
|
+
</div>
|
|
2013
|
+
) : (
|
|
2014
|
+
<button
|
|
2015
|
+
type="button"
|
|
1974
2016
|
className={cn(
|
|
1975
|
-
'
|
|
1976
|
-
|
|
2017
|
+
'grid w-full grid-cols-[1.5rem_1fr_auto] gap-2 text-start outline-none transition-colors',
|
|
2018
|
+
'focus-visible:text-foreground focus-visible:underline focus-visible:underline-offset-4',
|
|
2019
|
+
hasDetails ? 'cursor-pointer hover:text-foreground' : 'cursor-default',
|
|
1977
2020
|
)}
|
|
2021
|
+
onClick={() => hasDetails && setIsExpanded((current) => !current)}
|
|
2022
|
+
aria-expanded={hasDetails ? isExpanded : undefined}
|
|
2023
|
+
disabled={!hasDetails}
|
|
1978
2024
|
>
|
|
1979
|
-
|
|
1980
|
-
|
|
1981
|
-
|
|
1982
|
-
|
|
1983
|
-
|
|
1984
|
-
|
|
1985
|
-
|
|
1986
|
-
|
|
1987
|
-
|
|
1988
|
-
|
|
1989
|
-
|
|
1990
|
-
|
|
1991
|
-
className={cn(
|
|
1992
|
-
'mt-0.5 size-4 shrink-0 text-muted opacity-50 transition-transform',
|
|
1993
|
-
!isExpanded && '-rotate-90',
|
|
1994
|
-
)}
|
|
1995
|
-
aria-hidden="true"
|
|
1996
|
-
/>
|
|
1997
|
-
) : null}
|
|
1998
|
-
</button>
|
|
2025
|
+
{icon}
|
|
2026
|
+
<span className="min-w-0 text-sm text-muted">
|
|
2027
|
+
<span className="break-words">{item.title}</span>
|
|
2028
|
+
{item.decisionText ? (
|
|
2029
|
+
<Badge variant="destructive" className="ms-2 rounded-full shadow-sm shadow-destructive/10">
|
|
2030
|
+
{item.decisionText}
|
|
2031
|
+
</Badge>
|
|
2032
|
+
) : null}
|
|
2033
|
+
</span>
|
|
2034
|
+
{hasDetails ? chevron : null}
|
|
2035
|
+
</button>
|
|
2036
|
+
)}
|
|
1999
2037
|
{hasDetails && isExpanded ? (
|
|
2000
2038
|
<div className="mt-1">
|
|
2001
2039
|
<SummaryToolDetailPanel item={item} />
|
|
@@ -2028,13 +2066,7 @@ function SummaryThoughtProseItem({
|
|
|
2028
2066
|
<div className="min-w-0 py-1">
|
|
2029
2067
|
<div
|
|
2030
2068
|
data-testid="summary-thought-prose"
|
|
2031
|
-
className={cn(
|
|
2032
|
-
SUMMARY_PROSE_CLASS,
|
|
2033
|
-
isLong &&
|
|
2034
|
-
!disableCollapse &&
|
|
2035
|
-
!isExpanded &&
|
|
2036
|
-
'[display:-webkit-box] overflow-hidden [-webkit-box-orient:vertical] [-webkit-line-clamp:6]',
|
|
2037
|
-
)}
|
|
2069
|
+
className={cn(SUMMARY_PROSE_CLASS, isLong && !disableCollapse && !isExpanded && AGENT_LINE_CLAMP_CLASS)}
|
|
2038
2070
|
style={{ overflowWrap: 'anywhere' }}
|
|
2039
2071
|
>
|
|
2040
2072
|
<MarkdownRenderer artifactRunId={artifactRunId} components={DEFAULT_AGENT_MARKDOWN_COMPONENTS}>
|
|
@@ -2133,9 +2165,9 @@ function SummaryStoppedMessage({
|
|
|
2133
2165
|
|
|
2134
2166
|
return (
|
|
2135
2167
|
<div className={cn('mx-auto w-full max-w-3xl px-1', className)} data-testid="summary-stopped-message">
|
|
2136
|
-
<div className="flex items-center justify-end gap-2 text-
|
|
2168
|
+
<div className="flex items-center justify-end gap-2 text-sm font-medium text-muted">
|
|
2137
2169
|
<span>{t('agent.youStoppedAfter', { duration })}</span>
|
|
2138
|
-
<MessageDeliveryStatus message={message} className="h-
|
|
2170
|
+
<MessageDeliveryStatus message={message} className="h-4 w-4" />
|
|
2139
2171
|
</div>
|
|
2140
2172
|
<div className="mt-5 border-b border-border/70" />
|
|
2141
2173
|
</div>
|
|
@@ -2240,7 +2272,12 @@ function SummaryActivityRow({
|
|
|
2240
2272
|
options={uxConfig.options}
|
|
2241
2273
|
variant={uxConfig.variant}
|
|
2242
2274
|
multiSelect={uxConfig.multiSelect}
|
|
2243
|
-
onSelect={(optionId) =>
|
|
2275
|
+
onSelect={(optionId) =>
|
|
2276
|
+
onSendMessage?.(
|
|
2277
|
+
optionId,
|
|
2278
|
+
getToolApprovalResponseMetadata(message, optionId),
|
|
2279
|
+
)
|
|
2280
|
+
}
|
|
2244
2281
|
onMultiSelect={(optionIds) => onSendMessage?.(optionIds.join(', '))}
|
|
2245
2282
|
allowFreeResponse={
|
|
2246
2283
|
!uxConfig.options?.length || !!uxConfig.free_response
|
|
@@ -2379,6 +2416,8 @@ interface AllMessagesMixedProps {
|
|
|
2379
2416
|
streamingMessages?: Map<string, StreamingData>; // Real-time streaming chunks
|
|
2380
2417
|
/** Callback when user sends a message (e.g., from proposal selection) */
|
|
2381
2418
|
onSendMessage?: (message: string, metadata?: Record<string, unknown>) => void;
|
|
2419
|
+
/** Open a Markdown artifact in the surrounding agent panel. */
|
|
2420
|
+
onOpenArtifact?: (path: string) => void;
|
|
2382
2421
|
/** Stable index for thinking messages (changes on 4s interval) */
|
|
2383
2422
|
thinkingMessageIndex?: number;
|
|
2384
2423
|
/** className overrides passed to every MessageItem */
|
|
@@ -2438,6 +2477,7 @@ function AllMessagesMixedComponent({
|
|
|
2438
2477
|
isCompleted = false,
|
|
2439
2478
|
streamingMessages = new Map(),
|
|
2440
2479
|
onSendMessage,
|
|
2480
|
+
onOpenArtifact,
|
|
2441
2481
|
messageItemClassNames,
|
|
2442
2482
|
messageStyleOverrides,
|
|
2443
2483
|
toolCallGroupClassNames,
|
|
@@ -2759,6 +2799,36 @@ function AllMessagesMixedComponent({
|
|
|
2759
2799
|
return isCompleted || !isInProgress(completionDisplayMessages);
|
|
2760
2800
|
}, [completionDisplayMessages, hasLatestToolApprovalAllow, hasPendingToolApprovalRequest, isCompleted]);
|
|
2761
2801
|
|
|
2802
|
+
// Per-turn resource summaries. Derived from the full source stream (not the active-tab view) so
|
|
2803
|
+
// child-workstream resources are included, but CLIPPED to the playback cursor so scrubbing back
|
|
2804
|
+
// never reveals resources created later in the turn. Gated on the MAIN workstream reaching either
|
|
2805
|
+
// a terminal state or its final ANSWER, so a completed child tab can't surface a summary early while
|
|
2806
|
+
// reusable interactive workflows can summarize a completed turn. Built from structured tool metadata
|
|
2807
|
+
// (details.resources), never parsed from prose.
|
|
2808
|
+
//
|
|
2809
|
+
// Clip by the cursor message's POSITION in the ordered source, not by `timestamp <= cursor`:
|
|
2810
|
+
// millisecond timestamps are not unique, so a later message sharing the cursor's timestamp would
|
|
2811
|
+
// otherwise leak. indexOf works because sortAndDedupeMessages preserves message references; a
|
|
2812
|
+
// timestamp compare is the fallback if the cursor can't be located (e.g. collapsed by dedup).
|
|
2813
|
+
const clippedResourceSource = useMemo(() => {
|
|
2814
|
+
if (workstreamSourceSorted.length === 0) return workstreamSourceSorted;
|
|
2815
|
+
const cursorMessage = messages[messages.length - 1];
|
|
2816
|
+
if (!cursorMessage) return [];
|
|
2817
|
+
const cursorIndex = workstreamSourceSorted.indexOf(cursorMessage);
|
|
2818
|
+
if (cursorIndex >= 0) {
|
|
2819
|
+
return cursorIndex >= workstreamSourceSorted.length - 1
|
|
2820
|
+
? workstreamSourceSorted
|
|
2821
|
+
: workstreamSourceSorted.slice(0, cursorIndex + 1);
|
|
2822
|
+
}
|
|
2823
|
+
const cursorTs = getTimestampMs(cursorMessage.timestamp);
|
|
2824
|
+
return workstreamSourceSorted.filter((m) => getTimestampMs(m.timestamp) <= cursorTs);
|
|
2825
|
+
}, [workstreamSourceSorted, messages]);
|
|
2826
|
+
const isLatestResourceTurnComplete = useMemo(
|
|
2827
|
+
() => isCompleted || isResourceSummaryReady(clippedResourceSource),
|
|
2828
|
+
[isCompleted, clippedResourceSource],
|
|
2829
|
+
);
|
|
2830
|
+
const turnResourceSummaries = useMemo(() => segmentTurnResources(clippedResourceSource), [clippedResourceSource]);
|
|
2831
|
+
|
|
2762
2832
|
// Split streaming messages:
|
|
2763
2833
|
// - complete (or stale incomplete) ones are interleaved chronologically
|
|
2764
2834
|
// - actively incomplete ones render at the end
|
|
@@ -2828,6 +2898,19 @@ function AllMessagesMixedComponent({
|
|
|
2828
2898
|
[visibleSummaryDisplayMessages, isDisplayCompleted, latestSummaryObservedTimestamp],
|
|
2829
2899
|
);
|
|
2830
2900
|
|
|
2901
|
+
// Interleave per-turn resource summaries into the sliding (summary) timeline, mirroring the
|
|
2902
|
+
// stacked view. Turn boundaries are user QUESTION message items.
|
|
2903
|
+
const slidingRenderItems = React.useMemo(
|
|
2904
|
+
() =>
|
|
2905
|
+
interleaveTurnSummaries(
|
|
2906
|
+
summaryConversationItems,
|
|
2907
|
+
(item) => item.type === 'message' && item.message.type === AgentMessageType.QUESTION,
|
|
2908
|
+
turnResourceSummaries,
|
|
2909
|
+
isLatestResourceTurnComplete,
|
|
2910
|
+
),
|
|
2911
|
+
[summaryConversationItems, turnResourceSummaries, isLatestResourceTurnComplete],
|
|
2912
|
+
);
|
|
2913
|
+
|
|
2831
2914
|
// Group messages with ONLY complete streaming interleaved for stacked view.
|
|
2832
2915
|
// Incomplete streaming is rendered separately at the end (avoids re-grouping on every chunk).
|
|
2833
2916
|
// Assistant prose stays as its own timeline item so thoughts remain visible between tool calls.
|
|
@@ -2839,6 +2922,19 @@ function AllMessagesMixedComponent({
|
|
|
2839
2922
|
[displayMessages, completeStreaming, activeWorkstream],
|
|
2840
2923
|
);
|
|
2841
2924
|
|
|
2925
|
+
// Interleave per-turn resource summaries into the stacked timeline. Turn boundaries are user
|
|
2926
|
+
// QUESTION groups; turn N's resources come from the full-stream segmentation.
|
|
2927
|
+
const stackedRenderItems = React.useMemo(
|
|
2928
|
+
() =>
|
|
2929
|
+
interleaveTurnSummaries(
|
|
2930
|
+
groupedMessages,
|
|
2931
|
+
(group) => group.type === 'single' && group.message.type === AgentMessageType.QUESTION,
|
|
2932
|
+
turnResourceSummaries,
|
|
2933
|
+
isLatestResourceTurnComplete,
|
|
2934
|
+
),
|
|
2935
|
+
[groupedMessages, turnResourceSummaries, isLatestResourceTurnComplete],
|
|
2936
|
+
);
|
|
2937
|
+
|
|
2842
2938
|
// Show an activity indicator when the latest visible conversation state is not terminal.
|
|
2843
2939
|
// Older idle/complete messages from previous turns must not suppress the new turn.
|
|
2844
2940
|
const isAgentWorking = useMemo(() => {
|
|
@@ -3246,18 +3342,16 @@ function AllMessagesMixedComponent({
|
|
|
3246
3342
|
{isSummaryView && activeWorkstream !== 'all' && activeWorkstreamName && (
|
|
3247
3343
|
<div className="sticky top-0 z-20 -mx-2 bg-background/95 px-2 pb-2 pt-1 backdrop-blur sm:-mx-4 sm:px-4">
|
|
3248
3344
|
<div className="mx-auto flex w-full max-w-3xl items-center gap-2 border-b border-border/70 pb-3">
|
|
3249
|
-
<
|
|
3250
|
-
|
|
3251
|
-
|
|
3252
|
-
|
|
3253
|
-
|
|
3254
|
-
|
|
3255
|
-
|
|
3256
|
-
|
|
3257
|
-
|
|
3258
|
-
|
|
3259
|
-
</Button>
|
|
3260
|
-
</VTooltip>
|
|
3345
|
+
<Button
|
|
3346
|
+
type="button"
|
|
3347
|
+
variant="ghost"
|
|
3348
|
+
size="icon"
|
|
3349
|
+
className="size-8 shrink-0 text-muted hover:text-foreground"
|
|
3350
|
+
title={t('agent.backToMainAgent')}
|
|
3351
|
+
onClick={handleShowMainAgentChat}
|
|
3352
|
+
>
|
|
3353
|
+
<ArrowLeft className="size-4" aria-hidden="true" />
|
|
3354
|
+
</Button>
|
|
3261
3355
|
<div className="min-w-0 flex-1 truncate text-sm font-medium text-foreground">
|
|
3262
3356
|
{activeWorkstreamName}
|
|
3263
3357
|
</div>
|
|
@@ -3293,8 +3387,19 @@ function AllMessagesMixedComponent({
|
|
|
3293
3387
|
{viewMode === 'stacked' ? (
|
|
3294
3388
|
// Details view - show ALL messages with streaming interleaved
|
|
3295
3389
|
<>
|
|
3296
|
-
{
|
|
3297
|
-
const isLastGroup = groupIndex ===
|
|
3390
|
+
{stackedRenderItems.map((group, groupIndex) => {
|
|
3391
|
+
const isLastGroup = groupIndex === stackedRenderItems.length - 1;
|
|
3392
|
+
|
|
3393
|
+
if (group.type === 'resource_summary') {
|
|
3394
|
+
return (
|
|
3395
|
+
<ResourceChangeSummary
|
|
3396
|
+
key={group.key}
|
|
3397
|
+
resources={group.resources}
|
|
3398
|
+
workflowRunId={artifactRunId}
|
|
3399
|
+
className="my-2"
|
|
3400
|
+
/>
|
|
3401
|
+
);
|
|
3402
|
+
}
|
|
3298
3403
|
|
|
3299
3404
|
if (group.type === 'tool_group') {
|
|
3300
3405
|
// Render grouped tool calls
|
|
@@ -3367,7 +3472,7 @@ function AllMessagesMixedComponent({
|
|
|
3367
3472
|
message={message}
|
|
3368
3473
|
startTimestamp={
|
|
3369
3474
|
getPreviousRenderableGroupTimestamp(
|
|
3370
|
-
|
|
3475
|
+
stackedRenderItems,
|
|
3371
3476
|
groupIndex,
|
|
3372
3477
|
) ?? message.timestamp
|
|
3373
3478
|
}
|
|
@@ -3403,6 +3508,7 @@ function AllMessagesMixedComponent({
|
|
|
3403
3508
|
message={message}
|
|
3404
3509
|
showPulsatingCircle={isLatestMessage}
|
|
3405
3510
|
onSendMessage={onSendMessage}
|
|
3511
|
+
onOpenArtifact={onOpenArtifact}
|
|
3406
3512
|
requestInputAnswered={isRequestInputAnswered(
|
|
3407
3513
|
message,
|
|
3408
3514
|
answeredRequestInputKeys,
|
|
@@ -3463,7 +3569,18 @@ function AllMessagesMixedComponent({
|
|
|
3463
3569
|
) : (
|
|
3464
3570
|
// Summary view - conversation turns with per-turn work disclosure
|
|
3465
3571
|
<>
|
|
3466
|
-
{
|
|
3572
|
+
{slidingRenderItems.map((item) => {
|
|
3573
|
+
if (item.type === 'resource_summary') {
|
|
3574
|
+
return (
|
|
3575
|
+
<ResourceChangeSummary
|
|
3576
|
+
key={item.key}
|
|
3577
|
+
resources={item.resources}
|
|
3578
|
+
workflowRunId={artifactRunId}
|
|
3579
|
+
className="my-2"
|
|
3580
|
+
/>
|
|
3581
|
+
);
|
|
3582
|
+
}
|
|
3583
|
+
|
|
3467
3584
|
if (item.type === 'work') {
|
|
3468
3585
|
if (hideToolCallsInViewMode?.includes(viewMode)) return null;
|
|
3469
3586
|
const isThinkingOnlyWork = isTransientThinkingWork(item.messages);
|
|
@@ -3523,6 +3640,7 @@ function AllMessagesMixedComponent({
|
|
|
3523
3640
|
<SummaryMessage
|
|
3524
3641
|
message={message}
|
|
3525
3642
|
onSendMessage={onSendMessage}
|
|
3643
|
+
onOpenArtifact={onOpenArtifact}
|
|
3526
3644
|
onSelectWorkstream={handleSelectWorkstream}
|
|
3527
3645
|
requestInputAnswered={isRequestInputAnswered(
|
|
3528
3646
|
message,
|