@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
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
import {
|
|
2
|
+
type AgentMessage,
|
|
3
|
+
AgentMessageType,
|
|
4
|
+
type AgentResourceReference,
|
|
5
|
+
getResourcesFromMessage,
|
|
6
|
+
} from '@vertesia/common';
|
|
7
|
+
import { getWorkstreamId, isInProgress } from './utils';
|
|
8
|
+
|
|
9
|
+
interface ResourceAccumulator {
|
|
10
|
+
ref: AgentResourceReference;
|
|
11
|
+
/** The first action observed for this resource in the turn — indicates whether it pre-existed. */
|
|
12
|
+
firstAction: AgentResourceReference['action'];
|
|
13
|
+
/** The most recent action observed, in message order. */
|
|
14
|
+
lastAction: AgentResourceReference['action'];
|
|
15
|
+
/** True once a `created` action was seen for this resource within the turn. */
|
|
16
|
+
createdInTurn: boolean;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
/**
|
|
20
|
+
* Dedupe the resources referenced across a set of messages by (type, id), modeling operations
|
|
21
|
+
* sequentially (in message order):
|
|
22
|
+
* - first created then finally deleted (create → … → delete) → transient scratch work that never
|
|
23
|
+
* existed before the turn, omitted;
|
|
24
|
+
* - a resource that pre-existed (first action was delete/update) and ends deleted → kept as `deleted`
|
|
25
|
+
* (e.g. delete → create → delete reports `deleted`, not transient);
|
|
26
|
+
* - any sequence ending in create, or containing a create when not ending deleted → kept as `created`;
|
|
27
|
+
* - otherwise `updated`.
|
|
28
|
+
* The most recently seen label/revision is retained, and first-mention order is preserved.
|
|
29
|
+
*/
|
|
30
|
+
function dedupeResources(messages: AgentMessage[]): AgentResourceReference[] {
|
|
31
|
+
const order: string[] = [];
|
|
32
|
+
const byKey = new Map<string, ResourceAccumulator>();
|
|
33
|
+
|
|
34
|
+
for (const message of messages) {
|
|
35
|
+
for (const ref of getResourcesFromMessage(message)) {
|
|
36
|
+
const key = `${ref.type}:${ref.id}`;
|
|
37
|
+
let entry = byKey.get(key);
|
|
38
|
+
if (!entry) {
|
|
39
|
+
entry = { ref, firstAction: ref.action, lastAction: ref.action, createdInTurn: false };
|
|
40
|
+
byKey.set(key, entry);
|
|
41
|
+
order.push(key);
|
|
42
|
+
}
|
|
43
|
+
entry.ref = ref;
|
|
44
|
+
entry.lastAction = ref.action;
|
|
45
|
+
if (ref.action === 'created') entry.createdInTurn = true;
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
const result: AgentResourceReference[] = [];
|
|
50
|
+
for (const key of order) {
|
|
51
|
+
const entry = byKey.get(key);
|
|
52
|
+
if (!entry) continue;
|
|
53
|
+
// Created first and ultimately deleted → never existed before the turn, transient: omit.
|
|
54
|
+
if (entry.firstAction === 'created' && entry.lastAction === 'deleted') continue;
|
|
55
|
+
const action: AgentResourceReference['action'] =
|
|
56
|
+
entry.lastAction === 'deleted'
|
|
57
|
+
? 'deleted'
|
|
58
|
+
: entry.lastAction === 'created' || entry.createdInTurn
|
|
59
|
+
? 'created'
|
|
60
|
+
: 'updated';
|
|
61
|
+
result.push({ ...entry.ref, action });
|
|
62
|
+
}
|
|
63
|
+
return result;
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
/**
|
|
67
|
+
* Split the conversation into turns at user QUESTION boundaries and return the deduped resources for
|
|
68
|
+
* each turn, in order. A turn spans from one user message up to (but excluding) the next. Turns with
|
|
69
|
+
* no resources still produce an entry (empty list) so callers can align positions with turn indices.
|
|
70
|
+
*/
|
|
71
|
+
export function segmentTurnResources(messages: AgentMessage[]): AgentResourceReference[][] {
|
|
72
|
+
if (messages.length === 0) return [];
|
|
73
|
+
const turns: AgentMessage[][] = [];
|
|
74
|
+
let current: AgentMessage[] = [];
|
|
75
|
+
let currentHasQuestion = false;
|
|
76
|
+
for (const message of messages) {
|
|
77
|
+
// Start a new turn at each user QUESTION, but fold any leading non-question messages (e.g. an
|
|
78
|
+
// initial system prompt) into the first turn so turn indices align with QUESTION order.
|
|
79
|
+
if (message.type === AgentMessageType.QUESTION && currentHasQuestion) {
|
|
80
|
+
turns.push(current);
|
|
81
|
+
current = [];
|
|
82
|
+
currentHasQuestion = false;
|
|
83
|
+
}
|
|
84
|
+
if (message.type === AgentMessageType.QUESTION) currentHasQuestion = true;
|
|
85
|
+
current.push(message);
|
|
86
|
+
}
|
|
87
|
+
if (current.length > 0) turns.push(current);
|
|
88
|
+
|
|
89
|
+
return turns.map(dedupeResources);
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
/**
|
|
93
|
+
* Aggregate the resources created/updated/deleted during the most recent turn. Convenience wrapper
|
|
94
|
+
* over {@link segmentTurnResources} for callers that only need the latest turn.
|
|
95
|
+
*/
|
|
96
|
+
export function aggregateLatestTurnResources(messages: AgentMessage[]): AgentResourceReference[] {
|
|
97
|
+
const turns = segmentTurnResources(messages);
|
|
98
|
+
return turns.length > 0 ? turns[turns.length - 1] : [];
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
/**
|
|
102
|
+
* Whether the latest main-workstream turn has produced its final response and its resource summary
|
|
103
|
+
* can be shown. Interactive conversations commonly remain alive after an ANSWER so they can accept
|
|
104
|
+
* another user message; requiring the entire workflow to become terminal would hide the summary for
|
|
105
|
+
* those otherwise-complete turns.
|
|
106
|
+
*/
|
|
107
|
+
export function isResourceSummaryReady(messages: AgentMessage[]): boolean {
|
|
108
|
+
if (!isInProgress(messages)) return true;
|
|
109
|
+
|
|
110
|
+
const mainMessages = messages.filter((message) => getWorkstreamId(message) === 'main');
|
|
111
|
+
const lastMainMessage = mainMessages[mainMessages.length - 1];
|
|
112
|
+
return lastMainMessage?.type === AgentMessageType.ANSWER;
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
export interface ResourceSummaryRenderItem {
|
|
116
|
+
type: 'resource_summary';
|
|
117
|
+
key: string;
|
|
118
|
+
resources: AgentResourceReference[];
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
/**
|
|
122
|
+
* Interleave per-turn resource summaries into a rendered timeline of `items`. A completed turn's
|
|
123
|
+
* summary is emitted right before the next turn begins, and the most recent completed turn's summary
|
|
124
|
+
* at the end. `isTurnBoundary` identifies the user-message item that starts a new turn; the i-th
|
|
125
|
+
* boundary maps to `turnResources[i - 1]`. The final (most recent) turn is only summarized when
|
|
126
|
+
* `isLatestTurnComplete` is true, so an in-progress turn shows no summary. Empty turns are skipped.
|
|
127
|
+
*/
|
|
128
|
+
export function interleaveTurnSummaries<T>(
|
|
129
|
+
items: T[],
|
|
130
|
+
isTurnBoundary: (item: T) => boolean,
|
|
131
|
+
turnResources: AgentResourceReference[][],
|
|
132
|
+
isLatestTurnComplete: boolean,
|
|
133
|
+
): Array<T | ResourceSummaryRenderItem> {
|
|
134
|
+
if (turnResources.length === 0) return items;
|
|
135
|
+
const out: Array<T | ResourceSummaryRenderItem> = [];
|
|
136
|
+
const pushSummary = (turnIndex: number) => {
|
|
137
|
+
const resources = turnResources[turnIndex];
|
|
138
|
+
if (!resources || resources.length === 0) return;
|
|
139
|
+
const isLastTurn = turnIndex >= turnResources.length - 1;
|
|
140
|
+
if (isLastTurn && !isLatestTurnComplete) return;
|
|
141
|
+
out.push({ type: 'resource_summary', key: `resource-summary-${turnIndex}`, resources });
|
|
142
|
+
};
|
|
143
|
+
let boundariesSeen = 0;
|
|
144
|
+
for (const item of items) {
|
|
145
|
+
const boundary = isTurnBoundary(item);
|
|
146
|
+
if (boundary && boundariesSeen > 0) pushSummary(boundariesSeen - 1);
|
|
147
|
+
if (boundary) boundariesSeen += 1;
|
|
148
|
+
out.push(item);
|
|
149
|
+
}
|
|
150
|
+
pushSummary(boundariesSeen > 0 ? boundariesSeen - 1 : turnResources.length - 1);
|
|
151
|
+
return out;
|
|
152
|
+
}
|
|
@@ -154,6 +154,23 @@ describe('ModernAgentOutput utils - progress state', () => {
|
|
|
154
154
|
|
|
155
155
|
expect(isInProgress([idle, question])).toBe(true);
|
|
156
156
|
});
|
|
157
|
+
|
|
158
|
+
it('ignores passive artifact working-copy saves after the agent goes idle', () => {
|
|
159
|
+
const idle = makeMessage({
|
|
160
|
+
timestamp: 1000,
|
|
161
|
+
type: AgentMessageType.IDLE,
|
|
162
|
+
message: 'Waiting for your command...',
|
|
163
|
+
});
|
|
164
|
+
const userAutosave = makeMessage({
|
|
165
|
+
timestamp: 2000,
|
|
166
|
+
type: AgentMessageType.UPDATE,
|
|
167
|
+
message: 'Updated working copy files/blog_post_draft.md',
|
|
168
|
+
details: { event_class: 'artifact_updated', source: 'user_edit', generation: '1784609448394436' },
|
|
169
|
+
});
|
|
170
|
+
|
|
171
|
+
// The user editing their artifact while the agent is idle must not resurrect "Working".
|
|
172
|
+
expect(isInProgress([idle, userAutosave])).toBe(false);
|
|
173
|
+
});
|
|
157
174
|
});
|
|
158
175
|
|
|
159
176
|
describe('ModernAgentOutput utils - sliding view thinking', () => {
|
|
@@ -55,6 +55,19 @@ export const DONE_STATES = [
|
|
|
55
55
|
AgentMessageType.TERMINATED,
|
|
56
56
|
];
|
|
57
57
|
|
|
58
|
+
/**
|
|
59
|
+
* Passive artifact working-copy saves (e.g. the user autosaving their edits in the collaborative
|
|
60
|
+
* editor) arrive as UPDATE messages with an `artifact_updated` event class. They are not agent
|
|
61
|
+
* activity: they must not flip the conversation back to "Working" and must not render as tool-call
|
|
62
|
+
* cards in the timeline.
|
|
63
|
+
*/
|
|
64
|
+
export function isPassiveArtifactUpdate(message: AgentMessage): boolean {
|
|
65
|
+
return (
|
|
66
|
+
message.type === AgentMessageType.UPDATE &&
|
|
67
|
+
(message.details as { event_class?: string } | undefined)?.event_class === 'artifact_updated'
|
|
68
|
+
);
|
|
69
|
+
}
|
|
70
|
+
|
|
58
71
|
export function isInProgress(messages: AgentMessage[]) {
|
|
59
72
|
if (!messages.length) return true;
|
|
60
73
|
|
|
@@ -63,7 +76,7 @@ export function isInProgress(messages: AgentMessage[]) {
|
|
|
63
76
|
message.details?._deliveryStatus === 'failed' &&
|
|
64
77
|
DONE_STATES.includes(message.type);
|
|
65
78
|
|
|
66
|
-
const progressMessages = messages.filter((m) => !isTerminalOptimisticFailure(m));
|
|
79
|
+
const progressMessages = messages.filter((m) => !isTerminalOptimisticFailure(m) && !isPassiveArtifactUpdate(m));
|
|
67
80
|
|
|
68
81
|
// Only the main workstream determines whether the conversation is in progress.
|
|
69
82
|
// Child workstream COMPLETE/IDLE messages must not flip this flag.
|
|
@@ -124,6 +124,194 @@ describe('useAgentStream', () => {
|
|
|
124
124
|
});
|
|
125
125
|
});
|
|
126
126
|
|
|
127
|
+
it('retains structured update events even when their display message is empty', async () => {
|
|
128
|
+
const structuredUpdate: AgentMessage = {
|
|
129
|
+
...createMessage(AgentMessageType.UPDATE, 1_000, ''),
|
|
130
|
+
details: { event_class: 'document_updated', document_id: 'document-1' },
|
|
131
|
+
};
|
|
132
|
+
const streamMessages = vi.fn<
|
|
133
|
+
(
|
|
134
|
+
id: string,
|
|
135
|
+
onMessage?: (message: AgentMessage, exitFn?: (payload: unknown) => void) => void,
|
|
136
|
+
since?: number,
|
|
137
|
+
signal?: AbortSignal,
|
|
138
|
+
options?: AgentRunStreamMessagesOptions,
|
|
139
|
+
) => Promise<unknown>
|
|
140
|
+
>(async (_id, _onMessage, _since, _signal, options) => {
|
|
141
|
+
options?.onHistoryLoaded?.([structuredUpdate]);
|
|
142
|
+
return null;
|
|
143
|
+
});
|
|
144
|
+
const client = createClient(streamMessages);
|
|
145
|
+
|
|
146
|
+
const { result } = renderHook(() => useAgentStream(client, 'agent-run-1'));
|
|
147
|
+
|
|
148
|
+
await waitFor(() => {
|
|
149
|
+
expect(result.current.messages).toEqual([structuredUpdate]);
|
|
150
|
+
});
|
|
151
|
+
});
|
|
152
|
+
|
|
153
|
+
it('retains resource-bearing lifecycle messages loaded from history even when their text is empty', async () => {
|
|
154
|
+
const resourceMessage: AgentMessage = {
|
|
155
|
+
...createMessage(AgentMessageType.THOUGHT, 1_000, ''),
|
|
156
|
+
details: {
|
|
157
|
+
event_class: 'activity',
|
|
158
|
+
tool: 'create_document',
|
|
159
|
+
tool_event: 'completed',
|
|
160
|
+
resources: [{ type: 'document', id: 'doc-1', label: 'Doc One', action: 'created' }],
|
|
161
|
+
},
|
|
162
|
+
};
|
|
163
|
+
const streamMessages = vi.fn<
|
|
164
|
+
(
|
|
165
|
+
id: string,
|
|
166
|
+
onMessage?: (message: AgentMessage, exitFn?: (payload: unknown) => void) => void,
|
|
167
|
+
since?: number,
|
|
168
|
+
signal?: AbortSignal,
|
|
169
|
+
options?: AgentRunStreamMessagesOptions,
|
|
170
|
+
) => Promise<unknown>
|
|
171
|
+
>(async (_id, _onMessage, _since, _signal, options) => {
|
|
172
|
+
options?.onHistoryLoaded?.([resourceMessage]);
|
|
173
|
+
return null;
|
|
174
|
+
});
|
|
175
|
+
const client = createClient(streamMessages);
|
|
176
|
+
|
|
177
|
+
const { result } = renderHook(() => useAgentStream(client, 'agent-run-1'));
|
|
178
|
+
|
|
179
|
+
await waitFor(() => {
|
|
180
|
+
expect(result.current.messages).toEqual([resourceMessage]);
|
|
181
|
+
});
|
|
182
|
+
});
|
|
183
|
+
|
|
184
|
+
it('retains resource-bearing lifecycle messages received from the live stream', async () => {
|
|
185
|
+
let onStreamMessage: ((message: AgentMessage) => void) | undefined;
|
|
186
|
+
const streamMessages = vi.fn<
|
|
187
|
+
(
|
|
188
|
+
id: string,
|
|
189
|
+
onMessage?: (message: AgentMessage, exitFn?: (payload: unknown) => void) => void,
|
|
190
|
+
since?: number,
|
|
191
|
+
signal?: AbortSignal,
|
|
192
|
+
) => Promise<unknown>
|
|
193
|
+
>(async (_id, onMessage) => {
|
|
194
|
+
onStreamMessage = onMessage;
|
|
195
|
+
return null;
|
|
196
|
+
});
|
|
197
|
+
const client = createClient(streamMessages);
|
|
198
|
+
const resourceMessage: AgentMessage = {
|
|
199
|
+
...createMessage(AgentMessageType.THOUGHT, 1_000, ''),
|
|
200
|
+
details: {
|
|
201
|
+
event_class: 'activity',
|
|
202
|
+
tool: 'create_interaction',
|
|
203
|
+
tool_event: 'completed',
|
|
204
|
+
resources: [{ type: 'interaction', id: 'interaction-1', label: 'Daily News Agent', action: 'created' }],
|
|
205
|
+
},
|
|
206
|
+
};
|
|
207
|
+
|
|
208
|
+
const { result } = renderHook(() => useAgentStream(client, 'agent-run-1'));
|
|
209
|
+
|
|
210
|
+
await waitFor(() => {
|
|
211
|
+
expect(onStreamMessage).toBeDefined();
|
|
212
|
+
});
|
|
213
|
+
|
|
214
|
+
act(() => {
|
|
215
|
+
onStreamMessage?.(resourceMessage);
|
|
216
|
+
});
|
|
217
|
+
|
|
218
|
+
await waitFor(() => {
|
|
219
|
+
expect(result.current.messages).toEqual([resourceMessage]);
|
|
220
|
+
});
|
|
221
|
+
});
|
|
222
|
+
|
|
223
|
+
it('continues to discard empty housekeeping messages without resources', async () => {
|
|
224
|
+
const emptyThought = createMessage(AgentMessageType.THOUGHT, 1_000, '');
|
|
225
|
+
const streamMessages = vi.fn<
|
|
226
|
+
(
|
|
227
|
+
id: string,
|
|
228
|
+
onMessage?: (message: AgentMessage, exitFn?: (payload: unknown) => void) => void,
|
|
229
|
+
since?: number,
|
|
230
|
+
signal?: AbortSignal,
|
|
231
|
+
options?: AgentRunStreamMessagesOptions,
|
|
232
|
+
) => Promise<unknown>
|
|
233
|
+
>(async (_id, onMessage, _since, _signal, options) => {
|
|
234
|
+
options?.onHistoryLoaded?.([emptyThought]);
|
|
235
|
+
onMessage?.(emptyThought);
|
|
236
|
+
return null;
|
|
237
|
+
});
|
|
238
|
+
const client = createClient(streamMessages);
|
|
239
|
+
|
|
240
|
+
const { result } = renderHook(() => useAgentStream(client, 'agent-run-1'));
|
|
241
|
+
|
|
242
|
+
await waitFor(() => {
|
|
243
|
+
expect(result.current.initialHistoryStatus).toBe('has_messages');
|
|
244
|
+
});
|
|
245
|
+
expect(result.current.messages).toEqual([]);
|
|
246
|
+
});
|
|
247
|
+
|
|
248
|
+
it('forwards delivered stream messages without reconnecting when the callback changes', async () => {
|
|
249
|
+
let deliver: ((message: AgentMessage) => void) | undefined;
|
|
250
|
+
const streamMessages = vi.fn<
|
|
251
|
+
(
|
|
252
|
+
id: string,
|
|
253
|
+
onMessage?: (message: AgentMessage, exitFn?: (payload: unknown) => void) => void,
|
|
254
|
+
since?: number,
|
|
255
|
+
signal?: AbortSignal,
|
|
256
|
+
options?: AgentRunStreamMessagesOptions,
|
|
257
|
+
) => Promise<unknown>
|
|
258
|
+
>(async (_id, onMessage, _since, _signal, options) => {
|
|
259
|
+
deliver = onMessage;
|
|
260
|
+
options?.onHistoryLoaded?.([]);
|
|
261
|
+
return null;
|
|
262
|
+
});
|
|
263
|
+
const client = createClient(streamMessages);
|
|
264
|
+
const firstCallback = vi.fn();
|
|
265
|
+
const secondCallback = vi.fn();
|
|
266
|
+
const { rerender } = renderHook(
|
|
267
|
+
({ onMessage }: { onMessage: (message: AgentMessage) => void }) =>
|
|
268
|
+
useAgentStream(client, 'agent-run-1', onMessage),
|
|
269
|
+
{ initialProps: { onMessage: firstCallback } },
|
|
270
|
+
);
|
|
271
|
+
|
|
272
|
+
await waitFor(() => expect(deliver).toBeDefined());
|
|
273
|
+
act(() => deliver?.(createMessage(AgentMessageType.UPDATE, 1_000, 'first update')));
|
|
274
|
+
expect(firstCallback).toHaveBeenCalledTimes(1);
|
|
275
|
+
|
|
276
|
+
rerender({ onMessage: secondCallback });
|
|
277
|
+
act(() => deliver?.(createMessage(AgentMessageType.UPDATE, 1_100, 'second update')));
|
|
278
|
+
|
|
279
|
+
expect(firstCallback).toHaveBeenCalledTimes(1);
|
|
280
|
+
expect(secondCallback).toHaveBeenCalledTimes(1);
|
|
281
|
+
expect(streamMessages).toHaveBeenCalledTimes(1);
|
|
282
|
+
});
|
|
283
|
+
|
|
284
|
+
it('does not forward replayed history deliveries to onMessage', async () => {
|
|
285
|
+
let deliver: ((message: AgentMessage) => void) | undefined;
|
|
286
|
+
const historical = createMessage(AgentMessageType.UPDATE, 1_000, 'historical update');
|
|
287
|
+
const streamMessages = vi.fn<
|
|
288
|
+
(
|
|
289
|
+
id: string,
|
|
290
|
+
onMessage?: (message: AgentMessage, exitFn?: (payload: unknown) => void) => void,
|
|
291
|
+
since?: number,
|
|
292
|
+
signal?: AbortSignal,
|
|
293
|
+
options?: AgentRunStreamMessagesOptions,
|
|
294
|
+
) => Promise<unknown>
|
|
295
|
+
>(async (_id, onMessage, _since, _signal, options) => {
|
|
296
|
+
deliver = onMessage;
|
|
297
|
+
options?.onHistoryLoaded?.([historical]);
|
|
298
|
+
// Mirror completed-run behavior where archived events can be replayed
|
|
299
|
+
// immediately, before React has rendered the history state update.
|
|
300
|
+
onMessage?.(historical);
|
|
301
|
+
onMessage?.(createMessage(AgentMessageType.UPDATE, 900, 'older replay'));
|
|
302
|
+
return null;
|
|
303
|
+
});
|
|
304
|
+
const client = createClient(streamMessages);
|
|
305
|
+
const onMessage = vi.fn();
|
|
306
|
+
renderHook(() => useAgentStream(client, 'agent-run-1', onMessage));
|
|
307
|
+
|
|
308
|
+
await waitFor(() => expect(deliver).toBeDefined());
|
|
309
|
+
expect(onMessage).not.toHaveBeenCalled();
|
|
310
|
+
|
|
311
|
+
act(() => deliver?.(createMessage(AgentMessageType.UPDATE, 1_100, 'live update')));
|
|
312
|
+
expect(onMessage).toHaveBeenCalledTimes(1);
|
|
313
|
+
});
|
|
314
|
+
|
|
127
315
|
it('marks initial history as errored when the history fetch fails', async () => {
|
|
128
316
|
const streamMessages = vi.fn<
|
|
129
317
|
(
|
|
@@ -5,6 +5,7 @@ import {
|
|
|
5
5
|
AgentMessageType,
|
|
6
6
|
type ConversationFile,
|
|
7
7
|
type FileProcessingDetails,
|
|
8
|
+
getResourcesFromMessage,
|
|
8
9
|
} from '@vertesia/common';
|
|
9
10
|
import { useCallback, useEffect, useRef, useState } from 'react';
|
|
10
11
|
import {
|
|
@@ -98,12 +99,16 @@ function isTimelineStateMessage(message: AgentMessage): boolean {
|
|
|
98
99
|
function shouldStoreTimelineMessage(message: AgentMessage): boolean {
|
|
99
100
|
if (message.type === AgentMessageType.STREAMING_CHUNK) return false;
|
|
100
101
|
|
|
102
|
+
// Structured resource events must survive replay even if a producer accidentally
|
|
103
|
+
// omits the human-readable display message.
|
|
104
|
+
if (message.type === AgentMessageType.UPDATE && typeof message.details?.event_class === 'string') return true;
|
|
105
|
+
|
|
101
106
|
if (message.type === AgentMessageType.SYSTEM) {
|
|
102
107
|
const details = message.details as FileProcessingDetails | undefined;
|
|
103
108
|
if (details?.system_type === 'file_processing' && details.files) return false;
|
|
104
109
|
}
|
|
105
110
|
|
|
106
|
-
return Boolean(message.message) || isTimelineStateMessage(message);
|
|
111
|
+
return Boolean(message.message) || isTimelineStateMessage(message) || getResourcesFromMessage(message).length > 0;
|
|
107
112
|
}
|
|
108
113
|
|
|
109
114
|
function summarizeMessage(message: AgentMessage | undefined): Record<string, unknown> | undefined {
|
|
@@ -210,13 +215,19 @@ function getStreamingReplacementKeys(message: AgentMessage): string[] {
|
|
|
210
215
|
* File-processing SYSTEM messages are passed through to the messages array
|
|
211
216
|
* (Option A from the plan) so downstream hooks can react to them.
|
|
212
217
|
*/
|
|
213
|
-
export function useAgentStream(
|
|
218
|
+
export function useAgentStream(
|
|
219
|
+
client: VertesiaClient,
|
|
220
|
+
agentRunId: string,
|
|
221
|
+
onMessage?: (message: AgentMessage) => void,
|
|
222
|
+
): UseAgentStreamResult {
|
|
214
223
|
const [messages, setMessages] = useState<AgentMessage[]>([]);
|
|
215
224
|
const [isCompleted, setIsCompleted] = useState(false);
|
|
216
225
|
const [initialHistoryStatus, setInitialHistoryStatus] =
|
|
217
226
|
useState<UseAgentStreamResult['initialHistoryStatus']>('loading');
|
|
218
227
|
const [agentRunStatus, setAgentRunStatus] = useState<string | null>(null);
|
|
219
228
|
const [workflowRunId, setWorkflowRunId] = useState<string | null>(null);
|
|
229
|
+
const onMessageRef = useRef(onMessage);
|
|
230
|
+
onMessageRef.current = onMessage;
|
|
220
231
|
|
|
221
232
|
// Server-side file processing status updates
|
|
222
233
|
const [serverFileUpdates, setServerFileUpdates] = useState<Map<string, ConversationFile>>(new Map());
|
|
@@ -345,6 +356,12 @@ export function useAgentStream(client: VertesiaClient, agentRunId: string): UseA
|
|
|
345
356
|
agentRunId,
|
|
346
357
|
(message) => {
|
|
347
358
|
if (abortController.signal.aborted) return;
|
|
359
|
+
// Completed and idle runs replay their archived history through the live
|
|
360
|
+
// stream. Only forward genuinely new deliveries so onMessage consumers
|
|
361
|
+
// never treat replayed events as fresh ones.
|
|
362
|
+
if (!message.timestamp || message.timestamp > lastDeliveredTsRef.current) {
|
|
363
|
+
onMessageRef.current?.(message);
|
|
364
|
+
}
|
|
348
365
|
|
|
349
366
|
debugAgentChat('stream message', {
|
|
350
367
|
agentRunId,
|
|
@@ -450,6 +467,14 @@ export function useAgentStream(client: VertesiaClient, agentRunId: string): UseA
|
|
|
450
467
|
onHistoryLoaded: (historical) => {
|
|
451
468
|
if (abortController.signal.aborted) return;
|
|
452
469
|
const timelineMessages = historical.filter(shouldStoreTimelineMessage);
|
|
470
|
+
// Advance the watermark synchronously before React processes the
|
|
471
|
+
// history state update. Some completed streams replay history via
|
|
472
|
+
// the live callback immediately after onHistoryLoaded returns.
|
|
473
|
+
for (const message of historical) {
|
|
474
|
+
if (message.timestamp && message.timestamp > lastDeliveredTsRef.current) {
|
|
475
|
+
lastDeliveredTsRef.current = message.timestamp;
|
|
476
|
+
}
|
|
477
|
+
}
|
|
453
478
|
debugAgentChat('history loaded', {
|
|
454
479
|
agentRunId,
|
|
455
480
|
count: historical.length,
|
|
@@ -461,12 +486,7 @@ export function useAgentStream(client: VertesiaClient, agentRunId: string): UseA
|
|
|
461
486
|
setInitialHistoryStatus(historical.length > 0 ? 'has_messages' : 'empty');
|
|
462
487
|
if (timelineMessages.length > 0) {
|
|
463
488
|
setMessages((prev) =>
|
|
464
|
-
timelineMessages.reduce((next, message) =>
|
|
465
|
-
if (message.timestamp && message.timestamp > lastDeliveredTsRef.current) {
|
|
466
|
-
lastDeliveredTsRef.current = message.timestamp;
|
|
467
|
-
}
|
|
468
|
-
return insertTimelineMessage(next, message);
|
|
469
|
-
}, prev),
|
|
489
|
+
timelineMessages.reduce((next, message) => insertTimelineMessage(next, message), prev),
|
|
470
490
|
);
|
|
471
491
|
}
|
|
472
492
|
},
|
|
@@ -1,3 +1,13 @@
|
|
|
1
|
+
// Resource deep-link resolver — lets an embedding app override how agent resource references
|
|
2
|
+
// (documents, collections, interactions, ...) map to routes/links in the chat.
|
|
3
|
+
export {
|
|
4
|
+
type AgentResourceLinkReference,
|
|
5
|
+
type AgentResourceResolver,
|
|
6
|
+
AgentResourceResolverProvider,
|
|
7
|
+
type AgentResourceTarget,
|
|
8
|
+
type ResourceResolveContext,
|
|
9
|
+
useAgentResourceResolver,
|
|
10
|
+
} from '@vertesia/ui/widgets';
|
|
1
11
|
export {
|
|
2
12
|
AgentApprovalModeSelector,
|
|
3
13
|
type AgentApprovalModeSelectorProps,
|
|
@@ -31,6 +41,7 @@ export * from './JumpingDots';
|
|
|
31
41
|
export {
|
|
32
42
|
ModernAgentConversation,
|
|
33
43
|
type ModernAgentConversationProps,
|
|
44
|
+
type SendAgentMessageFn,
|
|
34
45
|
type StartWorkflowFn,
|
|
35
46
|
type StartWorkflowOptions,
|
|
36
47
|
} from './ModernAgentConversation';
|