@parhelia/core 0.1.12788 → 0.1.12790
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/dist/agents-view/AgentCard.d.ts +6 -2
- package/dist/agents-view/AgentCard.js +79 -147
- package/dist/agents-view/AgentCard.js.map +1 -1
- package/dist/agents-view/AgentsSidebar.d.ts +4 -9
- package/dist/agents-view/AgentsSidebar.js +10 -13
- package/dist/agents-view/AgentsSidebar.js.map +1 -1
- package/dist/agents-view/AgentsTitlebar.d.ts +3 -3
- package/dist/agents-view/AgentsTitlebar.js +10 -7
- package/dist/agents-view/AgentsTitlebar.js.map +1 -1
- package/dist/agents-view/AgentsView.d.ts +20 -7
- package/dist/agents-view/AgentsView.js +79 -255
- package/dist/agents-view/AgentsView.js.map +1 -1
- package/dist/agents-view/AgentsWorkspaceView.d.ts +1 -1
- package/dist/agents-view/AgentsWorkspaceView.js +66 -53
- package/dist/agents-view/AgentsWorkspaceView.js.map +1 -1
- package/dist/agents-view/DateAgentsGroup.d.ts +17 -0
- package/dist/agents-view/DateAgentsGroup.js +8 -0
- package/dist/agents-view/DateAgentsGroup.js.map +1 -0
- package/dist/agents-view/ProfileAgentsGroup.d.ts +2 -2
- package/dist/agents-view/ProfileAgentsGroup.js +9 -5
- package/dist/agents-view/ProfileAgentsGroup.js.map +1 -1
- package/dist/agents-view/agentsNavStore.d.ts +8 -0
- package/dist/agents-view/agentsNavStore.js +24 -0
- package/dist/agents-view/agentsNavStore.js.map +1 -0
- package/dist/components/PageHeader.d.ts +5 -1
- package/dist/components/PageHeader.js +2 -2
- package/dist/components/PageHeader.js.map +1 -1
- package/dist/components/ui/LanguageSelector.d.ts +3 -1
- package/dist/components/ui/LanguageSelector.js +8 -4
- package/dist/components/ui/LanguageSelector.js.map +1 -1
- package/dist/components/ui/PlaceholderInput.d.ts +0 -8
- package/dist/components/ui/PlaceholderInput.js +1 -42
- package/dist/components/ui/PlaceholderInput.js.map +1 -1
- package/dist/components/ui/PlaceholderInputParser.d.ts +9 -0
- package/dist/components/ui/PlaceholderInputParser.js +98 -0
- package/dist/components/ui/PlaceholderInputParser.js.map +1 -0
- package/dist/components/ui/PlaceholderInputTypes.d.ts +1 -1
- package/dist/components/ui/UserPicker.d.ts +34 -0
- package/dist/components/ui/UserPicker.js +73 -0
- package/dist/components/ui/UserPicker.js.map +1 -0
- package/dist/components/ui/copy-button.js +2 -1
- package/dist/components/ui/copy-button.js.map +1 -1
- package/dist/components/ui/popover.js +22 -4
- package/dist/components/ui/popover.js.map +1 -1
- package/dist/components/ui/select.js +1 -2
- package/dist/components/ui/select.js.map +1 -1
- package/dist/config/config.js +15 -2
- package/dist/config/config.js.map +1 -1
- package/dist/editor/ContentTree.d.ts +14 -1
- package/dist/editor/ContentTree.js +69 -19
- package/dist/editor/ContentTree.js.map +1 -1
- package/dist/editor/Editor.js +5 -8
- package/dist/editor/Editor.js.map +1 -1
- package/dist/editor/EditorLoadingOverlay.d.ts +1 -0
- package/dist/editor/EditorLoadingOverlay.js +7 -0
- package/dist/editor/EditorLoadingOverlay.js.map +1 -0
- package/dist/editor/FieldActionsOverlay.js +31 -4
- package/dist/editor/FieldActionsOverlay.js.map +1 -1
- package/dist/editor/FieldListField.js +6 -1
- package/dist/editor/FieldListField.js.map +1 -1
- package/dist/editor/GlobalMenuBar.js +9 -6
- package/dist/editor/GlobalMenuBar.js.map +1 -1
- package/dist/editor/ai/AgentSharingSection.js +15 -2
- package/dist/editor/ai/AgentSharingSection.js.map +1 -1
- package/dist/editor/ai/Agents.js +2 -3
- package/dist/editor/ai/Agents.js.map +1 -1
- package/dist/editor/ai/InlineAiDialog.d.ts +5 -0
- package/dist/editor/ai/InlineAiDialog.js +77 -64
- package/dist/editor/ai/InlineAiDialog.js.map +1 -1
- package/dist/editor/ai/InlineAiTrigger.js +4 -0
- package/dist/editor/ai/InlineAiTrigger.js.map +1 -1
- package/dist/editor/ai/agentTodoExtraction.d.ts +7 -1
- package/dist/editor/ai/agentTodoExtraction.js +33 -0
- package/dist/editor/ai/agentTodoExtraction.js.map +1 -1
- package/dist/editor/ai/terminal/components/AgentDocumentList.d.ts +13 -0
- package/dist/editor/ai/terminal/components/AgentDocumentList.js +61 -46
- package/dist/editor/ai/terminal/components/AgentDocumentList.js.map +1 -1
- package/dist/editor/ai/terminal/components/AgentProfileModelSettingsSection.d.ts +4 -3
- package/dist/editor/ai/terminal/components/AgentProfileModelSettingsSection.js +6 -9
- package/dist/editor/ai/terminal/components/AgentProfileModelSettingsSection.js.map +1 -1
- package/dist/editor/ai/terminal/components/AgentPromptInputArea.d.ts +10 -2
- package/dist/editor/ai/terminal/components/AgentPromptInputArea.js +42 -9
- package/dist/editor/ai/terminal/components/AgentPromptInputArea.js.map +1 -1
- package/dist/editor/ai/terminal/components/AgentPromptTrayPopovers.d.ts +19 -0
- package/dist/editor/ai/terminal/components/AgentPromptTrayPopovers.js +71 -0
- package/dist/editor/ai/terminal/components/AgentPromptTrayPopovers.js.map +1 -0
- package/dist/editor/ai/terminal/components/AgentSettingsContent.d.ts +4 -3
- package/dist/editor/ai/terminal/components/AgentSettingsContent.js +2 -2
- package/dist/editor/ai/terminal/components/AgentSettingsContent.js.map +1 -1
- package/dist/editor/ai/terminal/components/AgentTerminalContextChrome.d.ts +2 -0
- package/dist/editor/ai/terminal/components/AgentTerminalContextChrome.js.map +1 -1
- package/dist/editor/ai/terminal/components/AgentTerminalContextPanels.js +4 -2
- package/dist/editor/ai/terminal/components/AgentTerminalContextPanels.js.map +1 -1
- package/dist/editor/ai/terminal/components/AgentTerminalFullLayout.d.ts +3 -1
- package/dist/editor/ai/terminal/components/AgentTerminalFullLayout.js +2 -2
- package/dist/editor/ai/terminal/components/AgentTerminalFullLayout.js.map +1 -1
- package/dist/editor/ai/terminal/components/AgentTerminalFullPromptControls.d.ts +1 -1
- package/dist/editor/ai/terminal/components/AgentTerminalFullPromptControls.js +2 -2
- package/dist/editor/ai/terminal/components/AgentTerminalFullPromptControls.js.map +1 -1
- package/dist/editor/ai/terminal/components/AgentTerminalFullUpperContent.d.ts +5 -1
- package/dist/editor/ai/terminal/components/AgentTerminalFullUpperContent.js +2 -2
- package/dist/editor/ai/terminal/components/AgentTerminalFullUpperContent.js.map +1 -1
- package/dist/editor/ai/terminal/components/AgentTerminalStatusBar.d.ts +2 -1
- package/dist/editor/ai/terminal/components/AgentTerminalStatusBar.js +2 -2
- package/dist/editor/ai/terminal/components/AgentTerminalStatusBar.js.map +1 -1
- package/dist/editor/ai/terminal/components/AgentTerminalView.d.ts +2 -1
- package/dist/editor/ai/terminal/components/AgentTerminalView.js +7 -2
- package/dist/editor/ai/terminal/components/AgentTerminalView.js.map +1 -1
- package/dist/editor/ai/terminal/components/ContextInfoBar.d.ts +3 -1
- package/dist/editor/ai/terminal/components/ContextInfoBar.js +12 -3
- package/dist/editor/ai/terminal/components/ContextInfoBar.js.map +1 -1
- package/dist/editor/ai/terminal/components/EditOperationsPanel.d.ts +3 -1
- package/dist/editor/ai/terminal/components/EditOperationsPanel.js +13 -2
- package/dist/editor/ai/terminal/components/EditOperationsPanel.js.map +1 -1
- package/dist/editor/ai/terminal/components/QueuedPromptsPanel.d.ts +5 -1
- package/dist/editor/ai/terminal/components/QueuedPromptsPanel.js +12 -12
- package/dist/editor/ai/terminal/components/QueuedPromptsPanel.js.map +1 -1
- package/dist/editor/ai/terminal/components/SpawnedAgentsPanel.d.ts +2 -1
- package/dist/editor/ai/terminal/components/SpawnedAgentsPanel.js +18 -14
- package/dist/editor/ai/terminal/components/SpawnedAgentsPanel.js.map +1 -1
- package/dist/editor/ai/terminal/components/TodoListPanel.d.ts +2 -1
- package/dist/editor/ai/terminal/components/TodoListPanel.js +10 -6
- package/dist/editor/ai/terminal/components/TodoListPanel.js.map +1 -1
- package/dist/editor/ai/terminal/useAgentPromptComposerSurface.d.ts +3 -2
- package/dist/editor/ai/terminal/useAgentSessionSync.d.ts +9 -1
- package/dist/editor/ai/terminal/useAgentSessionSync.js +7 -1
- package/dist/editor/ai/terminal/useAgentSessionSync.js.map +1 -1
- package/dist/editor/ai/terminal/useAgentSettingsNavigation.d.ts +3 -2
- package/dist/editor/ai/terminal/useAgentSettingsNavigation.js +3 -21
- package/dist/editor/ai/terminal/useAgentSettingsNavigation.js.map +1 -1
- package/dist/editor/ai/terminal/useAgentSettingsPanel.d.ts +3 -2
- package/dist/editor/ai/terminal/useAgentSettingsPanel.js +1 -2
- package/dist/editor/ai/terminal/useAgentSettingsPanel.js.map +1 -1
- package/dist/editor/ai/terminal/useAgentSettingsSelectOptions.js +2 -2
- package/dist/editor/ai/terminal/useAgentSettingsSelectOptions.js.map +1 -1
- package/dist/editor/ai/terminal/useAgentStatusBarContent.js +1 -1
- package/dist/editor/ai/terminal/useAgentStatusBarContent.js.map +1 -1
- package/dist/editor/ai/terminal/useAgentSubmitHandlers.d.ts +2 -1
- package/dist/editor/ai/terminal/useAgentSubmitHandlers.js +122 -2
- package/dist/editor/ai/terminal/useAgentSubmitHandlers.js.map +1 -1
- package/dist/editor/ai/terminal/useAgentSubmitLifecycle.d.ts +1 -0
- package/dist/editor/ai/terminal/useAgentSubmitLifecycle.js +2 -1
- package/dist/editor/ai/terminal/useAgentSubmitLifecycle.js.map +1 -1
- package/dist/editor/ai/terminal/useAgentSubmitResponseHandler.js +1 -0
- package/dist/editor/ai/terminal/useAgentSubmitResponseHandler.js.map +1 -1
- package/dist/editor/ai/terminal/useAgentTerminalActions.d.ts +6 -5
- package/dist/editor/ai/terminal/useAgentTerminalActions.js +3 -10
- package/dist/editor/ai/terminal/useAgentTerminalActions.js.map +1 -1
- package/dist/editor/ai/terminal/useAgentTerminalController.js +45 -6
- package/dist/editor/ai/terminal/useAgentTerminalController.js.map +1 -1
- package/dist/editor/ai/terminal/useAgentTerminalViewProps.d.ts +1 -0
- package/dist/editor/ai/terminal/useAgentTerminalViewProps.js +2 -1
- package/dist/editor/ai/terminal/useAgentTerminalViewProps.js.map +1 -1
- package/dist/editor/ai/terminal/useAgentTextareaDropHandlers.d.ts +25 -0
- package/dist/editor/ai/terminal/useAgentTextareaDropHandlers.js +187 -0
- package/dist/editor/ai/terminal/useAgentTextareaDropHandlers.js.map +1 -0
- package/dist/editor/client/AboutDialog.js +2 -1
- package/dist/editor/client/AboutDialog.js.map +1 -1
- package/dist/editor/client/EditorShell.js +118 -30
- package/dist/editor/client/EditorShell.js.map +1 -1
- package/dist/editor/client/editContext.d.ts +4 -1
- package/dist/editor/client/editContext.js.map +1 -1
- package/dist/editor/client/fieldModificationStore.d.ts +5 -2
- package/dist/editor/client/fieldModificationStore.js +31 -21
- package/dist/editor/client/fieldModificationStore.js.map +1 -1
- package/dist/editor/client/hooks/useEditorWebSocket.js +0 -47
- package/dist/editor/client/hooks/useEditorWebSocket.js.map +1 -1
- package/dist/editor/client/hooks/useSocketMessageHandler.d.ts +1 -0
- package/dist/editor/client/hooks/useSocketMessageHandler.js +47 -49
- package/dist/editor/client/hooks/useSocketMessageHandler.js.map +1 -1
- package/dist/editor/client/itemsRepository.d.ts +8 -5
- package/dist/editor/client/itemsRepository.js +30 -37
- package/dist/editor/client/itemsRepository.js.map +1 -1
- package/dist/editor/client/operations.d.ts +8 -1
- package/dist/editor/client/operations.js +29 -9
- package/dist/editor/client/operations.js.map +1 -1
- package/dist/editor/client/ui/EditorChrome.js +7 -1
- package/dist/editor/client/ui/EditorChrome.js.map +1 -1
- package/dist/editor/commands/createVersionCommand.js +8 -2
- package/dist/editor/commands/createVersionCommand.js.map +1 -1
- package/dist/editor/field-types/DropLinkEditor.js +4 -1
- package/dist/editor/field-types/DropLinkEditor.js.map +1 -1
- package/dist/editor/field-types/MultiLineText.js +3 -1
- package/dist/editor/field-types/MultiLineText.js.map +1 -1
- package/dist/editor/field-types/NameValueListEditor.js +4 -1
- package/dist/editor/field-types/NameValueListEditor.js.map +1 -1
- package/dist/editor/field-types/PictureFieldEditor.js +8 -4
- package/dist/editor/field-types/PictureFieldEditor.js.map +1 -1
- package/dist/editor/field-types/RichTextEditorComponent.js +6 -2
- package/dist/editor/field-types/RichTextEditorComponent.js.map +1 -1
- package/dist/editor/field-types/SingleLineText.js +3 -1
- package/dist/editor/field-types/SingleLineText.js.map +1 -1
- package/dist/editor/field-types/TreeListEditor.js +6 -1
- package/dist/editor/field-types/TreeListEditor.js.map +1 -1
- package/dist/editor/field-types/richtext/contextMenuFactory.d.ts +2 -1
- package/dist/editor/field-types/richtext/contextMenuFactory.js +7 -5
- package/dist/editor/field-types/richtext/contextMenuFactory.js.map +1 -1
- package/dist/editor/hooks/useNavigationPanelLogic.d.ts +3 -3
- package/dist/editor/hooks/useNavigationPanelLogic.js +5 -5
- package/dist/editor/hooks/useNavigationPanelLogic.js.map +1 -1
- package/dist/editor/menubar/ItemLanguageVersion.d.ts +4 -1
- package/dist/editor/menubar/ItemLanguageVersion.js +11 -3
- package/dist/editor/menubar/ItemLanguageVersion.js.map +1 -1
- package/dist/editor/menubar/VersionPreviewCard.js +26 -6
- package/dist/editor/menubar/VersionPreviewCard.js.map +1 -1
- package/dist/editor/menubar/VersionSelector.js +17 -6
- package/dist/editor/menubar/VersionSelector.js.map +1 -1
- package/dist/editor/menubar/toolbar-sections/DeviceSwitchToolbar.d.ts +7 -0
- package/dist/editor/menubar/toolbar-sections/DeviceSwitchToolbar.js +37 -0
- package/dist/editor/menubar/toolbar-sections/DeviceSwitchToolbar.js.map +1 -0
- package/dist/editor/menubar/toolbar-sections/ManualBrowser.js +2 -2
- package/dist/editor/menubar/toolbar-sections/ManualBrowser.js.map +1 -1
- package/dist/editor/menubar/toolbar-sections/ViewportControls.js +7 -11
- package/dist/editor/menubar/toolbar-sections/ViewportControls.js.map +1 -1
- package/dist/editor/menubar/toolbar-sections/index.d.ts +1 -0
- package/dist/editor/menubar/toolbar-sections/index.js +1 -0
- package/dist/editor/menubar/toolbar-sections/index.js.map +1 -1
- package/dist/editor/notifications/useNotifications.js +11 -4
- package/dist/editor/notifications/useNotifications.js.map +1 -1
- package/dist/editor/page-editor-chrome/FieldEditedIndicator.js +3 -1
- package/dist/editor/page-editor-chrome/FieldEditedIndicator.js.map +1 -1
- package/dist/editor/page-editor-chrome/FrameMenu.d.ts +4 -2
- package/dist/editor/page-editor-chrome/FrameMenu.js +33 -9
- package/dist/editor/page-editor-chrome/FrameMenu.js.map +1 -1
- package/dist/editor/page-editor-chrome/InlineEditor.d.ts +4 -2
- package/dist/editor/page-editor-chrome/InlineEditor.js +125 -20
- package/dist/editor/page-editor-chrome/InlineEditor.js.map +1 -1
- package/dist/editor/page-editor-chrome/PageEditorChrome.d.ts +4 -2
- package/dist/editor/page-editor-chrome/PageEditorChrome.js +16 -3
- package/dist/editor/page-editor-chrome/PageEditorChrome.js.map +1 -1
- package/dist/editor/page-editor-chrome/PictureEditorOverlay.js +36 -13
- package/dist/editor/page-editor-chrome/PictureEditorOverlay.js.map +1 -1
- package/dist/editor/page-editor-chrome/VersionDiffHighlightings.js +24 -4
- package/dist/editor/page-editor-chrome/VersionDiffHighlightings.js.map +1 -1
- package/dist/editor/page-editor-chrome/useInlineAICompletion.js +52 -22
- package/dist/editor/page-editor-chrome/useInlineAICompletion.js.map +1 -1
- package/dist/editor/page-viewer/MiniMap.js +29 -21
- package/dist/editor/page-viewer/MiniMap.js.map +1 -1
- package/dist/editor/page-viewer/PageViewer.d.ts +4 -2
- package/dist/editor/page-viewer/PageViewer.js +14 -6
- package/dist/editor/page-viewer/PageViewer.js.map +1 -1
- package/dist/editor/page-viewer/PageViewerFrame.d.ts +4 -2
- package/dist/editor/page-viewer/PageViewerFrame.js +171 -52
- package/dist/editor/page-viewer/PageViewerFrame.js.map +1 -1
- package/dist/editor/reviews/Comment.js +24 -0
- package/dist/editor/reviews/Comment.js.map +1 -1
- package/dist/editor/services/agentService.d.ts +18 -1
- package/dist/editor/services/agentService.js +34 -3
- package/dist/editor/services/agentService.js.map +1 -1
- package/dist/editor/services/aiService.d.ts +0 -36
- package/dist/editor/services/aiService.js +7 -64
- package/dist/editor/services/aiService.js.map +1 -1
- package/dist/editor/services/manualService.d.ts +31 -0
- package/dist/editor/services/manualService.js +77 -0
- package/dist/editor/services/manualService.js.map +1 -0
- package/dist/editor/services/serviceHelper.js +0 -14
- package/dist/editor/services/serviceHelper.js.map +1 -1
- package/dist/editor/services/systemService.d.ts +4 -0
- package/dist/editor/services/systemService.js +3 -0
- package/dist/editor/services/systemService.js.map +1 -1
- package/dist/editor/services/userService.d.ts +6 -0
- package/dist/editor/services/userService.js +13 -0
- package/dist/editor/services/userService.js.map +1 -0
- package/dist/editor/settings/About.js +178 -1
- package/dist/editor/settings/About.js.map +1 -1
- package/dist/editor/settings/QuotaInfo.js +7 -7
- package/dist/editor/settings/QuotaInfo.js.map +1 -1
- package/dist/editor/settings/QuotaUserPicker.js +15 -55
- package/dist/editor/settings/QuotaUserPicker.js.map +1 -1
- package/dist/editor/settings/SettingsBreadcrumb.js +1 -1
- package/dist/editor/settings/SettingsBreadcrumb.js.map +1 -1
- package/dist/editor/settings/SettingsView.js +1 -1
- package/dist/editor/settings/SettingsView.js.map +1 -1
- package/dist/editor/settings/panels/AgentProfileConfigPanel.d.ts +2 -1
- package/dist/editor/settings/panels/AgentProfileConfigPanel.js +4 -2
- package/dist/editor/settings/panels/AgentProfileConfigPanel.js.map +1 -1
- package/dist/editor/settings/panels/AgentProfileEditorPanel.d.ts +1 -0
- package/dist/editor/settings/panels/AgentProfileEditorPanel.js +1 -1
- package/dist/editor/settings/panels/AgentProfileEditorPanel.js.map +1 -1
- package/dist/editor/settings/panels/AgentsPanel.js +15 -10
- package/dist/editor/settings/panels/AgentsPanel.js.map +1 -1
- package/dist/editor/settings/panels/ClusterInstancesPanel.js +37 -10
- package/dist/editor/settings/panels/ClusterInstancesPanel.js.map +1 -1
- package/dist/editor/settings/panels/CreateMcpServerDialog.d.ts +7 -0
- package/dist/editor/settings/panels/CreateMcpServerDialog.js +71 -0
- package/dist/editor/settings/panels/CreateMcpServerDialog.js.map +1 -0
- package/dist/editor/settings/panels/JavaScriptToolsPanel.js +13 -17
- package/dist/editor/settings/panels/JavaScriptToolsPanel.js.map +1 -1
- package/dist/editor/settings/panels/McpToolsPanel.js +17 -8
- package/dist/editor/settings/panels/McpToolsPanel.js.map +1 -1
- package/dist/editor/settings/panels/ModelsPanel.js +92 -56
- package/dist/editor/settings/panels/ModelsPanel.js.map +1 -1
- package/dist/editor/settings/panels/ProvidersPanel.js +46 -47
- package/dist/editor/settings/panels/ProvidersPanel.js.map +1 -1
- package/dist/editor/settings/panels/SearchConfigPanel.js +2 -2
- package/dist/editor/settings/panels/SearchConfigPanel.js.map +1 -1
- package/dist/editor/settings/panels/UserPreferencesPanel.d.ts +2 -0
- package/dist/editor/settings/panels/UserPreferencesPanel.js +17 -0
- package/dist/editor/settings/panels/UserPreferencesPanel.js.map +1 -0
- package/dist/editor/settings/panels/index.d.ts +1 -0
- package/dist/editor/settings/panels/index.js +1 -0
- package/dist/editor/settings/panels/index.js.map +1 -1
- package/dist/editor/sidebar/EditHistory.js +18 -3
- package/dist/editor/sidebar/EditHistory.js.map +1 -1
- package/dist/editor/sidebar/LabelButton.d.ts +3 -3
- package/dist/editor/sidebar/LabelButton.js +4 -4
- package/dist/editor/sidebar/LabelButton.js.map +1 -1
- package/dist/editor/sidebar/MobileWorkspacePopover.d.ts +2 -2
- package/dist/editor/sidebar/MobileWorkspacePopover.js +2 -2
- package/dist/editor/sidebar/MobileWorkspacePopover.js.map +1 -1
- package/dist/editor/sidebar/NavigationPanelItem.js +3 -3
- package/dist/editor/sidebar/NavigationPanelItem.js.map +1 -1
- package/dist/editor/sidebar/WorkspaceButton.d.ts +3 -1
- package/dist/editor/sidebar/WorkspaceButton.js +15 -7
- package/dist/editor/sidebar/WorkspaceButton.js.map +1 -1
- package/dist/editor/sidebar/WorkspaceRail.js +6 -5
- package/dist/editor/sidebar/WorkspaceRail.js.map +1 -1
- package/dist/editor/sidebar/WorkspaceRailMobile.js +2 -2
- package/dist/editor/sidebar/WorkspaceRailMobile.js.map +1 -1
- package/dist/editor/ui/ItemCollectionEditor.d.ts +27 -3
- package/dist/editor/ui/ItemCollectionEditor.js +44 -5
- package/dist/editor/ui/ItemCollectionEditor.js.map +1 -1
- package/dist/editor/ui/PerfectTree.js +1 -1
- package/dist/editor/ui/PerfectTree.js.map +1 -1
- package/dist/editor/utils.js +33 -11
- package/dist/editor/utils.js.map +1 -1
- package/dist/editor/version-diff/versionDiffTargets.js +7 -1
- package/dist/editor/version-diff/versionDiffTargets.js.map +1 -1
- package/dist/editor/views/EditorSlot.js +3 -2
- package/dist/editor/views/EditorSlot.js.map +1 -1
- package/dist/editor/views/ItemEditorPane.d.ts +11 -0
- package/dist/editor/views/ItemEditorPane.js +19 -0
- package/dist/editor/views/ItemEditorPane.js.map +1 -0
- package/dist/editor/views/editorSlotContext.d.ts +2 -0
- package/dist/editor/views/editorSlotContext.js +3 -0
- package/dist/editor/views/editorSlotContext.js.map +1 -1
- package/dist/index.d.ts +10 -0
- package/dist/index.js +7 -0
- package/dist/index.js.map +1 -1
- package/dist/revision.d.ts +2 -2
- package/dist/revision.js +2 -2
- package/dist/setup/services/setupWizardService.d.ts +10 -0
- package/dist/setup/services/setupWizardService.js +7 -0
- package/dist/setup/services/setupWizardService.js.map +1 -1
- package/dist/task-board/TaskBoardWorkspace.js +1 -0
- package/dist/task-board/TaskBoardWorkspace.js.map +1 -1
- package/dist/task-board/components/ProjectExecutionUserPicker.js +15 -61
- package/dist/task-board/components/ProjectExecutionUserPicker.js.map +1 -1
- package/dist/task-board/components/ProjectListContent.d.ts +1 -0
- package/dist/task-board/components/ProjectListContent.js.map +1 -1
- package/dist/task-board/components/ProjectSelector.d.ts +1 -0
- package/dist/task-board/components/ProjectSelector.js +7 -1
- package/dist/task-board/components/ProjectSelector.js.map +1 -1
- package/dist/task-board/components/TaskBoardTitlebar.js +1 -1
- package/dist/task-board/components/TaskBoardTitlebar.js.map +1 -1
- package/dist/task-board/taskBoardNavStore.d.ts +1 -0
- package/dist/task-board/taskBoardNavStore.js +1 -0
- package/dist/task-board/taskBoardNavStore.js.map +1 -1
- package/dist/types.d.ts +2 -1
- package/package.json +1 -1
- package/dist/agents-view/AgentsInbox.d.ts +0 -26
- package/dist/agents-view/AgentsInbox.js +0 -31
- package/dist/agents-view/AgentsInbox.js.map +0 -1
- package/dist/editor/ai/agentDiagnostics.test.d.ts +0 -1
- package/dist/editor/ai/agentDiagnostics.test.js +0 -298
- package/dist/editor/ai/agentDiagnostics.test.js.map +0 -1
- package/dist/editor/ai/terminal/agentQuestionnaireTranscriptRecovery.test.d.ts +0 -1
- package/dist/editor/ai/terminal/agentQuestionnaireTranscriptRecovery.test.js +0 -109
- package/dist/editor/ai/terminal/agentQuestionnaireTranscriptRecovery.test.js.map +0 -1
- package/dist/editor/ai/terminal/agentSessionSelectors.test.d.ts +0 -1
- package/dist/editor/ai/terminal/agentSessionSelectors.test.js +0 -219
- package/dist/editor/ai/terminal/agentSessionSelectors.test.js.map +0 -1
- package/dist/editor/ai/terminal/agentSessionSnapshot.test.d.ts +0 -1
- package/dist/editor/ai/terminal/agentSessionSnapshot.test.js +0 -136
- package/dist/editor/ai/terminal/agentSessionSnapshot.test.js.map +0 -1
- package/dist/editor/ai/terminal/agentSessionState.test.d.ts +0 -1
- package/dist/editor/ai/terminal/agentSessionState.test.js +0 -476
- package/dist/editor/ai/terminal/agentSessionState.test.js.map +0 -1
- package/dist/editor/ai/terminal/useAgentInitialPrompt.test.d.ts +0 -1
- package/dist/editor/ai/terminal/useAgentInitialPrompt.test.js +0 -63
- package/dist/editor/ai/terminal/useAgentInitialPrompt.test.js.map +0 -1
- package/dist/editor/ai/terminal/useAgentPendingDialogRecovery.test.d.ts +0 -1
- package/dist/editor/ai/terminal/useAgentPendingDialogRecovery.test.js +0 -80
- package/dist/editor/ai/terminal/useAgentPendingDialogRecovery.test.js.map +0 -1
- package/dist/editor/ai/terminal/useAgentQuestionnaireDialogRecovery.test.d.ts +0 -1
- package/dist/editor/ai/terminal/useAgentQuestionnaireDialogRecovery.test.js +0 -135
- package/dist/editor/ai/terminal/useAgentQuestionnaireDialogRecovery.test.js.map +0 -1
- package/dist/editor/ai/terminal/useAgentSession.test.d.ts +0 -1
- package/dist/editor/ai/terminal/useAgentSession.test.js +0 -181
- package/dist/editor/ai/terminal/useAgentSession.test.js.map +0 -1
- package/dist/editor/ai/terminal/useAgentSubmitHandlers.test.d.ts +0 -1
- package/dist/editor/ai/terminal/useAgentSubmitHandlers.test.js +0 -88
- package/dist/editor/ai/terminal/useAgentSubmitHandlers.test.js.map +0 -1
- package/dist/editor/ai/useAgentPanes.test.d.ts +0 -1
- package/dist/editor/ai/useAgentPanes.test.js +0 -198
- package/dist/editor/ai/useAgentPanes.test.js.map +0 -1
- package/dist/editor/debugSessionLog.d.ts +0 -9
- package/dist/editor/debugSessionLog.js +0 -19
- package/dist/editor/debugSessionLog.js.map +0 -1
- package/dist/editor/services/agentDialogService.test.d.ts +0 -1
- package/dist/editor/services/agentDialogService.test.js +0 -56
- package/dist/editor/services/agentDialogService.test.js.map +0 -1
- package/dist/editor/services/agentSubscriptionRegistry.test.d.ts +0 -1
- package/dist/editor/services/agentSubscriptionRegistry.test.js +0 -104
- package/dist/editor/services/agentSubscriptionRegistry.test.js.map +0 -1
- package/dist/test/setup.d.ts +0 -0
- package/dist/test/setup.js +0 -37
- package/dist/test/setup.js.map +0 -1
|
@@ -1,39 +1,24 @@
|
|
|
1
|
-
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
2
2
|
import { useState, useEffect, useMemo, useCallback } from "react";
|
|
3
|
-
import {
|
|
4
|
-
import { getAgentsGrouped, getClosedAgentsByProfile, cancelAgent, closeAgent, deleteAgent, } from "../editor/services/agentService";
|
|
3
|
+
import { getAgentsGrouped, getClosedAgentsByProfile, closeAgent, deleteAgent, } from "../editor/services/agentService";
|
|
5
4
|
import { isRunningAgentStatus, parseAgentRunStatusData, shouldIgnoreReplayRunStart, } from "../editor/services/agentStatus";
|
|
6
5
|
import { cn } from "../lib/utils";
|
|
7
|
-
import { RefreshCw, List, Layers,
|
|
8
|
-
import { SimpleIconButton } from "../editor/ui/SimpleIconButton";
|
|
6
|
+
import { RefreshCw, List, Layers, Plus, ArrowLeft } from "lucide-react";
|
|
9
7
|
import { FilterInput } from "../components/FilterInput";
|
|
10
8
|
import { PageHeader } from "../components/PageHeader";
|
|
11
9
|
import { useEditContext } from "../editor/client/editContext";
|
|
12
10
|
import { AgentCard } from "./AgentCard";
|
|
13
11
|
import { ProfileAgentsGroup } from "./ProfileAgentsGroup";
|
|
14
|
-
import {
|
|
15
|
-
import {
|
|
16
|
-
import { AgentsInbox, agentNeedsAttention } from "./AgentsInbox";
|
|
12
|
+
import { DateAgentsGroup } from "./DateAgentsGroup";
|
|
13
|
+
import { Switch } from "../components/ui/switch";
|
|
17
14
|
import { CreateAgentView } from "./CreateAgentView";
|
|
18
15
|
import { SecretAgentIcon } from "../editor/ui/Icons";
|
|
19
16
|
import { Spinner } from "../editor/ui/Spinner";
|
|
20
17
|
/**
|
|
21
|
-
*
|
|
22
|
-
*
|
|
23
|
-
* - All Agents: Active and closed agents with search/filter
|
|
24
|
-
* - Create New: Profile selection to start a new agent
|
|
18
|
+
* Unified agents overview: search/filter, active agents and closed history.
|
|
19
|
+
* Creating a new agent happens in a modal accessed from the toolbar.
|
|
25
20
|
*/
|
|
26
|
-
|
|
27
|
-
inbox: 0,
|
|
28
|
-
all: 1,
|
|
29
|
-
create: 2,
|
|
30
|
-
};
|
|
31
|
-
const SECTION_LABELS = {
|
|
32
|
-
inbox: "Inbox",
|
|
33
|
-
all: "All Agents",
|
|
34
|
-
create: "Create New",
|
|
35
|
-
};
|
|
36
|
-
export function AgentsView({ onSelectAgent, selectedAgentId, compact = false, activeSection: controlledSection, onInboxCountChange, } = {}) {
|
|
21
|
+
export function AgentsView({ onSelectAgent, selectedAgentId, compact = false, onRequestCreateAgent, hideNewAgentButton = false, } = {}) {
|
|
37
22
|
const getAgentSortDate = useCallback((agent) => agent.lastMessageDate || agent.updatedDate, []);
|
|
38
23
|
const sortAgentsByRecentActivity = useCallback((agents) => [...agents].sort((a, b) => new Date(getAgentSortDate(b)).getTime() -
|
|
39
24
|
new Date(getAgentSortDate(a)).getTime()), [getAgentSortDate]);
|
|
@@ -42,29 +27,28 @@ export function AgentsView({ onSelectAgent, selectedAgentId, compact = false, ac
|
|
|
42
27
|
agents: sortAgentsByRecentActivity(group.agents),
|
|
43
28
|
})), [sortAgentsByRecentActivity]);
|
|
44
29
|
const editContext = useEditContext();
|
|
45
|
-
const [internalTabIndex, setInternalTabIndex] = useState(1);
|
|
46
|
-
const activeTabIndex = controlledSection !== undefined
|
|
47
|
-
? SECTION_TO_INDEX[controlledSection]
|
|
48
|
-
: internalTabIndex;
|
|
49
|
-
const setActiveTabIndex = (index) => {
|
|
50
|
-
if (controlledSection === undefined)
|
|
51
|
-
setInternalTabIndex(index);
|
|
52
|
-
};
|
|
53
30
|
const [activeAgents, setActiveAgents] = useState([]);
|
|
54
31
|
const [profileGroups, setProfileGroups] = useState([]);
|
|
55
32
|
const [expandedProfiles, setExpandedProfiles] = useState(new Set());
|
|
33
|
+
const [collapsedDateBuckets, setCollapsedDateBuckets] = useState(new Set());
|
|
56
34
|
const [loadingMoreForProfile, setLoadingMoreForProfile] = useState(null);
|
|
57
35
|
const [loading, setLoading] = useState(true);
|
|
58
36
|
const [initialLoad, setInitialLoad] = useState(true);
|
|
59
37
|
const [error, setError] = useState(null);
|
|
60
|
-
const [
|
|
61
|
-
const [stoppingAgentIds, setStoppingAgentIds] = useState(new Set());
|
|
38
|
+
const [, setRefreshing] = useState(false);
|
|
62
39
|
const [searchTerm, setSearchTerm] = useState("");
|
|
63
40
|
const [debouncedSearchTerm, setDebouncedSearchTerm] = useState("");
|
|
64
|
-
// Single shared toggle for both the Inbox and All Agents tabs.
|
|
65
|
-
// Defaults to true so the inbox's "Close All" can't sweep up agents shared with you.
|
|
66
41
|
const [showOnlyMyAgents, setShowOnlyMyAgents] = useState(true);
|
|
67
42
|
const [historyViewMode, setHistoryViewMode] = useState("grouped");
|
|
43
|
+
const [viewMode, setViewMode] = useState("list");
|
|
44
|
+
const handleNewAgentClick = () => {
|
|
45
|
+
if (onRequestCreateAgent) {
|
|
46
|
+
onRequestCreateAgent();
|
|
47
|
+
}
|
|
48
|
+
else {
|
|
49
|
+
setViewMode("create");
|
|
50
|
+
}
|
|
51
|
+
};
|
|
68
52
|
// Debounce search term
|
|
69
53
|
useEffect(() => {
|
|
70
54
|
const timer = setTimeout(() => {
|
|
@@ -111,11 +95,9 @@ export function AgentsView({ onSelectAgent, selectedAgentId, compact = false, ac
|
|
|
111
95
|
console.warn("Invalid agent:run:start message payload:", message.payload);
|
|
112
96
|
return;
|
|
113
97
|
}
|
|
114
|
-
// Update or add agent in active agents list
|
|
115
98
|
setActiveAgents((prevAgents) => {
|
|
116
99
|
const existingAgentIndex = prevAgents.findIndex((agent) => agent.id === agentId);
|
|
117
100
|
if (existingAgentIndex !== -1) {
|
|
118
|
-
// Update existing agent
|
|
119
101
|
const updatedAgents = [...prevAgents];
|
|
120
102
|
const existingAgent = updatedAgents[existingAgentIndex];
|
|
121
103
|
if (shouldIgnoreReplayRunStart(existingAgent.status, existingAgent.updatedDate, typeof timestamp === "string" ? timestamp : undefined)) {
|
|
@@ -130,7 +112,6 @@ export function AgentsView({ onSelectAgent, selectedAgentId, compact = false, ac
|
|
|
130
112
|
return updatedAgents;
|
|
131
113
|
}
|
|
132
114
|
else {
|
|
133
|
-
// Agent not found - reload to get full details
|
|
134
115
|
loadAgents();
|
|
135
116
|
return prevAgents;
|
|
136
117
|
}
|
|
@@ -140,7 +121,6 @@ export function AgentsView({ onSelectAgent, selectedAgentId, compact = false, ac
|
|
|
140
121
|
const { agentId, agentName, agentDescription } = message.payload || {};
|
|
141
122
|
if (!agentId)
|
|
142
123
|
return;
|
|
143
|
-
// Update agent in active agents list
|
|
144
124
|
setActiveAgents((prevAgents) => {
|
|
145
125
|
const existingIndex = prevAgents.findIndex((a) => a.id === agentId);
|
|
146
126
|
if (existingIndex === -1)
|
|
@@ -159,7 +139,6 @@ export function AgentsView({ onSelectAgent, selectedAgentId, compact = false, ac
|
|
|
159
139
|
});
|
|
160
140
|
}
|
|
161
141
|
else if (message.type === "agent:run:closed") {
|
|
162
|
-
// Reload agents when one is closed - it should move to closed section
|
|
163
142
|
loadAgents();
|
|
164
143
|
}
|
|
165
144
|
else if (message.type === "agent:run:status") {
|
|
@@ -186,112 +165,18 @@ export function AgentsView({ onSelectAgent, selectedAgentId, compact = false, ac
|
|
|
186
165
|
}
|
|
187
166
|
else if (message.type === "agent:run:complete" ||
|
|
188
167
|
message.type === "agent:run:error") {
|
|
189
|
-
// Reload to update status when agent completes or errors
|
|
190
168
|
loadAgents();
|
|
191
169
|
}
|
|
192
170
|
});
|
|
193
171
|
return unsubscribe;
|
|
194
172
|
}, [editContext?.addSocketMessageListener, loadAgents]);
|
|
195
|
-
// Inbox shows agents that need attention. Defaults to "My agents only" so
|
|
196
|
-
// destructive actions like "Close All" can't sweep up other people's work.
|
|
197
|
-
const inboxAgents = useMemo(() => {
|
|
198
|
-
return activeAgents
|
|
199
|
-
.filter(agentNeedsAttention)
|
|
200
|
-
.filter((agent) => !showOnlyMyAgents || !agent.isShared);
|
|
201
|
-
}, [activeAgents, showOnlyMyAgents]);
|
|
202
|
-
const inboxCount = inboxAgents.length;
|
|
203
|
-
// Report inbox count to parent for sidebar badge
|
|
204
|
-
useEffect(() => {
|
|
205
|
-
onInboxCountChange?.(inboxCount);
|
|
206
|
-
}, [inboxCount, onInboxCountChange]);
|
|
207
|
-
// Sort active agents by most recent activity (newest first)
|
|
208
173
|
const sortedActiveAgents = useMemo(() => {
|
|
209
174
|
return sortAgentsByRecentActivity(activeAgents);
|
|
210
175
|
}, [activeAgents, sortAgentsByRecentActivity]);
|
|
211
|
-
// Calculate running agents (agents that are currently executing)
|
|
212
|
-
// Excludes agents waiting for tool call approval - they're shown in inbox
|
|
213
|
-
const runningAgents = useMemo(() => {
|
|
214
|
-
return sortedActiveAgents.filter((agent) => isRunningAgentStatus(agent.status));
|
|
215
|
-
}, [sortedActiveAgents]);
|
|
216
176
|
const handleRefresh = async () => {
|
|
217
177
|
setRefreshing(true);
|
|
218
178
|
await loadAgents();
|
|
219
179
|
};
|
|
220
|
-
const handleStopAgent = useCallback(async (agentId, agentName) => {
|
|
221
|
-
setStoppingAgentIds((prev) => {
|
|
222
|
-
const next = new Set(prev);
|
|
223
|
-
next.add(agentId);
|
|
224
|
-
return next;
|
|
225
|
-
});
|
|
226
|
-
try {
|
|
227
|
-
await cancelAgent(agentId);
|
|
228
|
-
setActiveAgents((prevAgents) => prevAgents.map((agent) => agent.id === agentId
|
|
229
|
-
? {
|
|
230
|
-
...agent,
|
|
231
|
-
status: "idle",
|
|
232
|
-
updatedDate: new Date().toISOString(),
|
|
233
|
-
}
|
|
234
|
-
: agent));
|
|
235
|
-
await loadAgents();
|
|
236
|
-
}
|
|
237
|
-
catch (err) {
|
|
238
|
-
console.error("Failed to stop agent:", err);
|
|
239
|
-
editContext?.showToast(`Failed to stop ${agentName}: ${err?.message || "Unknown error"}`);
|
|
240
|
-
}
|
|
241
|
-
finally {
|
|
242
|
-
setStoppingAgentIds((prev) => {
|
|
243
|
-
const next = new Set(prev);
|
|
244
|
-
next.delete(agentId);
|
|
245
|
-
return next;
|
|
246
|
-
});
|
|
247
|
-
}
|
|
248
|
-
}, [activeAgents, editContext, loadAgents, runningAgents]);
|
|
249
|
-
const handleStopAllRunning = useCallback(async () => {
|
|
250
|
-
if (runningAgents.length === 0)
|
|
251
|
-
return;
|
|
252
|
-
const runningIds = runningAgents.map((agent) => agent.id);
|
|
253
|
-
const runningNames = new Map(runningAgents.map((agent) => [agent.id, agent.name]));
|
|
254
|
-
setStoppingAgentIds((prev) => {
|
|
255
|
-
const next = new Set(prev);
|
|
256
|
-
runningIds.forEach((id) => next.add(id));
|
|
257
|
-
return next;
|
|
258
|
-
});
|
|
259
|
-
try {
|
|
260
|
-
const results = await Promise.allSettled(runningIds.map((agentId) => cancelAgent(agentId)));
|
|
261
|
-
const failedIds = results
|
|
262
|
-
.map((result, index) => ({ result, agentId: runningIds[index] }))
|
|
263
|
-
.filter((entry) => entry.result.status === "rejected")
|
|
264
|
-
.map((entry) => entry.agentId);
|
|
265
|
-
if (failedIds.length < runningIds.length) {
|
|
266
|
-
const stoppedIds = new Set(runningIds.filter((id) => !failedIds.includes(id)));
|
|
267
|
-
setActiveAgents((prevAgents) => prevAgents.map((agent) => stoppedIds.has(agent.id)
|
|
268
|
-
? {
|
|
269
|
-
...agent,
|
|
270
|
-
status: "idle",
|
|
271
|
-
updatedDate: new Date().toISOString(),
|
|
272
|
-
}
|
|
273
|
-
: agent));
|
|
274
|
-
}
|
|
275
|
-
if (failedIds.length > 0) {
|
|
276
|
-
const failedNames = failedIds
|
|
277
|
-
.map((id) => runningNames.get(id) || id)
|
|
278
|
-
.join(", ");
|
|
279
|
-
editContext?.showToast(`Failed to stop: ${failedNames}`);
|
|
280
|
-
}
|
|
281
|
-
await loadAgents();
|
|
282
|
-
}
|
|
283
|
-
catch (err) {
|
|
284
|
-
console.error("Failed to stop running agents:", err);
|
|
285
|
-
editContext?.showToast(`Failed to stop running agents: ${err?.message || "Unknown error"}`);
|
|
286
|
-
}
|
|
287
|
-
finally {
|
|
288
|
-
setStoppingAgentIds((prev) => {
|
|
289
|
-
const next = new Set(prev);
|
|
290
|
-
runningIds.forEach((id) => next.delete(id));
|
|
291
|
-
return next;
|
|
292
|
-
});
|
|
293
|
-
}
|
|
294
|
-
}, [editContext, loadAgents, runningAgents]);
|
|
295
180
|
const handleToggleProfile = (profileId) => {
|
|
296
181
|
const key = profileId || "null";
|
|
297
182
|
setExpandedProfiles((prev) => {
|
|
@@ -305,19 +190,28 @@ export function AgentsView({ onSelectAgent, selectedAgentId, compact = false, ac
|
|
|
305
190
|
return newSet;
|
|
306
191
|
});
|
|
307
192
|
};
|
|
193
|
+
const handleToggleDateBucket = (key) => {
|
|
194
|
+
setCollapsedDateBuckets((prev) => {
|
|
195
|
+
const newSet = new Set(prev);
|
|
196
|
+
if (newSet.has(key)) {
|
|
197
|
+
newSet.delete(key);
|
|
198
|
+
}
|
|
199
|
+
else {
|
|
200
|
+
newSet.add(key);
|
|
201
|
+
}
|
|
202
|
+
return newSet;
|
|
203
|
+
});
|
|
204
|
+
};
|
|
308
205
|
const handleLoadMoreForProfile = async (profileId) => {
|
|
309
206
|
if (!profileId || loadingMoreForProfile)
|
|
310
207
|
return;
|
|
311
208
|
try {
|
|
312
209
|
setLoadingMoreForProfile(profileId);
|
|
313
|
-
// Find the current profile group
|
|
314
210
|
const profileGroup = profileGroups.find((g) => g.profileId === profileId);
|
|
315
211
|
if (!profileGroup)
|
|
316
212
|
return;
|
|
317
213
|
const currentCount = profileGroup.agents.length;
|
|
318
|
-
// Load more agents for this profile
|
|
319
214
|
const response = await getClosedAgentsByProfile(profileId, currentCount, 10, debouncedSearchTerm || undefined);
|
|
320
|
-
// Update the profile group with new agents
|
|
321
215
|
setProfileGroups((prevGroups) => prevGroups.map((group) => {
|
|
322
216
|
if (group.profileId === profileId) {
|
|
323
217
|
return {
|
|
@@ -339,15 +233,12 @@ export function AgentsView({ onSelectAgent, selectedAgentId, compact = false, ac
|
|
|
339
233
|
setLoadingMoreForProfile(null);
|
|
340
234
|
}
|
|
341
235
|
};
|
|
342
|
-
const handleOpenAgent = (agent) => {
|
|
343
|
-
// If onSelectAgent callback is provided, use it directly
|
|
236
|
+
const handleOpenAgent = (agent, event) => {
|
|
344
237
|
if (onSelectAgent) {
|
|
345
|
-
onSelectAgent(agent);
|
|
238
|
+
onSelectAgent(agent, { split: !!event?.altKey });
|
|
346
239
|
return;
|
|
347
240
|
}
|
|
348
|
-
// Ensure agents panel is visible, but don't switch views
|
|
349
241
|
editContext?.setShowAgentsPanel?.(true);
|
|
350
|
-
// Delay briefly for any UI updates, then dispatch event to open existing agent
|
|
351
242
|
setTimeout(() => {
|
|
352
243
|
window.dispatchEvent(new CustomEvent("editor:openAgent", {
|
|
353
244
|
detail: { agentId: agent.id },
|
|
@@ -355,13 +246,11 @@ export function AgentsView({ onSelectAgent, selectedAgentId, compact = false, ac
|
|
|
355
246
|
}, 100);
|
|
356
247
|
};
|
|
357
248
|
const handleCloseAgent = async (agentId, agentName) => {
|
|
358
|
-
// Find the agent to check its status
|
|
359
249
|
const agent = activeAgents.find((a) => a.id === agentId);
|
|
360
250
|
const isRunning = isRunningAgentStatus(agent?.status);
|
|
361
251
|
const doClose = async () => {
|
|
362
252
|
try {
|
|
363
253
|
await closeAgent(agentId);
|
|
364
|
-
// Reload to move agent from active to closed section
|
|
365
254
|
loadAgents();
|
|
366
255
|
}
|
|
367
256
|
catch (err) {
|
|
@@ -369,7 +258,6 @@ export function AgentsView({ onSelectAgent, selectedAgentId, compact = false, ac
|
|
|
369
258
|
editContext?.showToast(`Failed to close agent: ${err?.message || "Unknown error"}`);
|
|
370
259
|
}
|
|
371
260
|
};
|
|
372
|
-
// Only confirm if agent is running
|
|
373
261
|
if (isRunning) {
|
|
374
262
|
editContext?.confirm({
|
|
375
263
|
header: "Close Agent",
|
|
@@ -380,49 +268,9 @@ export function AgentsView({ onSelectAgent, selectedAgentId, compact = false, ac
|
|
|
380
268
|
});
|
|
381
269
|
}
|
|
382
270
|
else {
|
|
383
|
-
// Close immediately without confirmation
|
|
384
271
|
await doClose();
|
|
385
272
|
}
|
|
386
273
|
};
|
|
387
|
-
const handleCloseAllInbox = () => {
|
|
388
|
-
// Only close agents currently visible in the inbox — respects the
|
|
389
|
-
// "Show shared agents" toggle so we never close someone else's agent
|
|
390
|
-
// unless the user has explicitly opted in.
|
|
391
|
-
const agentsToClose = inboxAgents;
|
|
392
|
-
if (agentsToClose.length === 0)
|
|
393
|
-
return;
|
|
394
|
-
const runningAgents = agentsToClose.filter((a) => isRunningAgentStatus(a.status));
|
|
395
|
-
const doCloseAll = async () => {
|
|
396
|
-
try {
|
|
397
|
-
await Promise.all(agentsToClose.map((agent) => closeAgent(agent.id)));
|
|
398
|
-
loadAgents();
|
|
399
|
-
}
|
|
400
|
-
catch (err) {
|
|
401
|
-
console.error("Failed to close all agents:", err);
|
|
402
|
-
editContext?.showToast(`Failed to close some agents: ${err?.message || "Unknown error"}`);
|
|
403
|
-
}
|
|
404
|
-
};
|
|
405
|
-
const sharedCount = agentsToClose.filter((a) => a.isShared).length;
|
|
406
|
-
const sharedWarning = sharedCount > 0
|
|
407
|
-
? ` This includes ${sharedCount} shared agent${sharedCount !== 1 ? "s" : ""} that other users may be working with.`
|
|
408
|
-
: "";
|
|
409
|
-
// Confirm if any agents are running, or whenever shared agents are about to be closed.
|
|
410
|
-
if (runningAgents.length > 0 || sharedCount > 0) {
|
|
411
|
-
const runningPart = runningAgents.length > 0
|
|
412
|
-
? ` ${runningAgents.length} running agent${runningAgents.length !== 1 ? "s" : ""} will be stopped.`
|
|
413
|
-
: "";
|
|
414
|
-
editContext?.confirm({
|
|
415
|
-
header: "Close All Agents",
|
|
416
|
-
message: `Are you sure you want to close all ${agentsToClose.length} agents in your inbox?${runningPart}${sharedWarning}`,
|
|
417
|
-
acceptLabel: "Close All",
|
|
418
|
-
accept: doCloseAll,
|
|
419
|
-
showCancel: true,
|
|
420
|
-
});
|
|
421
|
-
}
|
|
422
|
-
else {
|
|
423
|
-
doCloseAll();
|
|
424
|
-
}
|
|
425
|
-
};
|
|
426
274
|
const handleDeleteAgent = async (agentId, agentName, event) => {
|
|
427
275
|
event.stopPropagation();
|
|
428
276
|
editContext?.confirm({
|
|
@@ -432,7 +280,6 @@ export function AgentsView({ onSelectAgent, selectedAgentId, compact = false, ac
|
|
|
432
280
|
accept: async () => {
|
|
433
281
|
try {
|
|
434
282
|
await deleteAgent(agentId);
|
|
435
|
-
// Remove from both active and closed lists
|
|
436
283
|
setActiveAgents((prev) => prev.filter((a) => a.id !== agentId));
|
|
437
284
|
setProfileGroups((prevGroups) => prevGroups.map((group) => ({
|
|
438
285
|
...group,
|
|
@@ -448,18 +295,17 @@ export function AgentsView({ onSelectAgent, selectedAgentId, compact = false, ac
|
|
|
448
295
|
showCancel: true,
|
|
449
296
|
});
|
|
450
297
|
};
|
|
451
|
-
const handleAgentClick = (agent) => {
|
|
452
|
-
// If onSelectAgent callback is provided, use it directly
|
|
298
|
+
const handleAgentClick = (agent, event) => {
|
|
453
299
|
if (onSelectAgent) {
|
|
454
|
-
onSelectAgent(agent);
|
|
300
|
+
onSelectAgent(agent, { split: !!event?.altKey });
|
|
455
301
|
return;
|
|
456
302
|
}
|
|
457
|
-
// Otherwise, dispatch event for the agents panel
|
|
458
303
|
window.dispatchEvent(new CustomEvent("editor:selectAgent", {
|
|
459
304
|
detail: { agentId: agent.id },
|
|
460
305
|
}));
|
|
461
306
|
};
|
|
462
307
|
const handleCreateAgent = (profile) => {
|
|
308
|
+
setViewMode("list");
|
|
463
309
|
const agentDisplayName = profile.agentName || profile.displayTitle || profile.name;
|
|
464
310
|
const agentId = crypto.randomUUID();
|
|
465
311
|
const newAgent = {
|
|
@@ -472,12 +318,10 @@ export function AgentsView({ onSelectAgent, selectedAgentId, compact = false, ac
|
|
|
472
318
|
profileName: profile.name,
|
|
473
319
|
profileSvgIcon: profile.svgIcon,
|
|
474
320
|
};
|
|
475
|
-
// If onSelectAgent callback is provided (workspace mode), use it directly
|
|
476
321
|
if (onSelectAgent) {
|
|
477
322
|
onSelectAgent(newAgent);
|
|
478
323
|
return;
|
|
479
324
|
}
|
|
480
|
-
// Otherwise, open the agents panel with the new agent via event
|
|
481
325
|
editContext?.setShowAgentsPanel?.(true);
|
|
482
326
|
setTimeout(() => {
|
|
483
327
|
window.dispatchEvent(new CustomEvent("editor:createAgentWithProfile", {
|
|
@@ -496,86 +340,66 @@ export function AgentsView({ onSelectAgent, selectedAgentId, compact = false, ac
|
|
|
496
340
|
};
|
|
497
341
|
const totalActiveCount = activeAgents.length;
|
|
498
342
|
const totalClosedCount = profileGroups.reduce((sum, group) => sum + group.totalClosedCount, 0);
|
|
499
|
-
const isStoppingAllRunning = runningAgents.length > 0 &&
|
|
500
|
-
runningAgents.every((agent) => stoppingAgentIds.has(agent.id));
|
|
501
343
|
// Flatten all closed agents from all profile groups and sort by date (newest first)
|
|
502
344
|
const flatClosedAgents = useMemo(() => {
|
|
503
345
|
const allAgents = [];
|
|
504
346
|
profileGroups.forEach((group) => {
|
|
505
347
|
allAgents.push(...group.agents);
|
|
506
348
|
});
|
|
507
|
-
// Sort by lastMessageDate if available, otherwise by updatedDate (newest first)
|
|
508
349
|
return allAgents.sort((a, b) => new Date(getAgentSortDate(b)).getTime() -
|
|
509
350
|
new Date(getAgentSortDate(a)).getTime());
|
|
510
351
|
}, [profileGroups, getAgentSortDate]);
|
|
511
|
-
|
|
512
|
-
|
|
513
|
-
|
|
514
|
-
|
|
515
|
-
|
|
516
|
-
|
|
517
|
-
|
|
518
|
-
|
|
519
|
-
|
|
520
|
-
|
|
521
|
-
|
|
522
|
-
}
|
|
352
|
+
// Bucket flat closed agents by recency. Empty buckets are omitted.
|
|
353
|
+
const dateBuckets = useMemo(() => {
|
|
354
|
+
const startOfToday = new Date();
|
|
355
|
+
startOfToday.setHours(0, 0, 0, 0);
|
|
356
|
+
const startOfYesterday = new Date(startOfToday);
|
|
357
|
+
startOfYesterday.setDate(startOfYesterday.getDate() - 1);
|
|
358
|
+
const sevenDaysAgo = new Date(startOfToday);
|
|
359
|
+
sevenDaysAgo.setDate(sevenDaysAgo.getDate() - 7);
|
|
360
|
+
const thirtyDaysAgo = new Date(startOfToday);
|
|
361
|
+
thirtyDaysAgo.setDate(thirtyDaysAgo.getDate() - 30);
|
|
362
|
+
const buckets = [
|
|
363
|
+
{ key: "today", label: "Today", agents: [] },
|
|
364
|
+
{ key: "yesterday", label: "Yesterday", agents: [] },
|
|
365
|
+
{ key: "last7", label: "Last 7 Days", agents: [] },
|
|
366
|
+
{ key: "last30", label: "Last 30 Days", agents: [] },
|
|
367
|
+
{ key: "older", label: "Older", agents: [] },
|
|
368
|
+
];
|
|
369
|
+
for (const agent of flatClosedAgents) {
|
|
370
|
+
const d = new Date(getAgentSortDate(agent));
|
|
371
|
+
if (d >= startOfToday)
|
|
372
|
+
buckets[0].agents.push(agent);
|
|
373
|
+
else if (d >= startOfYesterday)
|
|
374
|
+
buckets[1].agents.push(agent);
|
|
375
|
+
else if (d >= sevenDaysAgo)
|
|
376
|
+
buckets[2].agents.push(agent);
|
|
377
|
+
else if (d >= thirtyDaysAgo)
|
|
378
|
+
buckets[3].agents.push(agent);
|
|
379
|
+
else
|
|
380
|
+
buckets[4].agents.push(agent);
|
|
523
381
|
}
|
|
524
|
-
return
|
|
525
|
-
}, [
|
|
526
|
-
|
|
527
|
-
if (initialLoad && loading && currentSection !== "create") {
|
|
382
|
+
return buckets.filter((b) => b.agents.length > 0);
|
|
383
|
+
}, [flatClosedAgents, getAgentSortDate]);
|
|
384
|
+
if (initialLoad && loading) {
|
|
528
385
|
return (_jsxs("div", { className: "flex h-full items-center justify-center gap-2", children: [_jsx(Spinner, { size: "sm" }), _jsx("div", { className: "text-sm text-gray-500", children: "Loading agents..." })] }));
|
|
529
386
|
}
|
|
530
|
-
|
|
531
|
-
|
|
532
|
-
|
|
533
|
-
|
|
534
|
-
|
|
535
|
-
|
|
536
|
-
|
|
537
|
-
|
|
538
|
-
|
|
539
|
-
|
|
540
|
-
}, disabled: isStopping, title: "Stop agent", className: "flex shrink-0 items-center justify-center rounded p-1 text-gray-400 opacity-0 transition-all group-hover:opacity-100 hover:bg-red-50 hover:text-red-500 disabled:cursor-not-allowed disabled:opacity-60", children: isStopping ? (_jsx(Spinner, { size: "sm" })) : (_jsx(Square, { className: "size-3 fill-current", strokeWidth: 2 })) })] }, agent.id));
|
|
541
|
-
}) }) })] })), controlledSection === undefined && (_jsx("div", { className: "shrink-0 border-b border-gray-100 bg-white px-6 shadow-[0_1px_2px_rgba(0,0,0,0.03)]", children: _jsx(SimpleTabs, { tabs: [
|
|
542
|
-
{
|
|
543
|
-
id: "inbox",
|
|
544
|
-
label: inboxCount > 0 ? `Inbox (${inboxCount})` : "Inbox",
|
|
545
|
-
content: null,
|
|
546
|
-
testId: "agents-tab-inbox",
|
|
547
|
-
},
|
|
548
|
-
{
|
|
549
|
-
id: "all",
|
|
550
|
-
label: "All Agents",
|
|
551
|
-
content: null,
|
|
552
|
-
testId: "agents-tab-all",
|
|
553
|
-
},
|
|
554
|
-
{
|
|
555
|
-
id: "create",
|
|
556
|
-
label: "Create New",
|
|
557
|
-
content: null,
|
|
558
|
-
testId: "agents-tab-create",
|
|
559
|
-
},
|
|
560
|
-
], activeTab: activeTabIndex, setActiveTab: setActiveTabIndex, hideContent: true, variant: "elegant", className: "gap-6" }) })), _jsxs("div", { className: "relative flex-1 overflow-hidden", children: [activeTabIndex === 0 && (_jsx("div", { className: "absolute inset-0 overflow-y-auto", children: _jsx(AgentsInbox, { agents: activeAgents, onOpenAgent: handleOpenAgent, onDismissAgent: handleCloseAgent, onCloseAll: handleCloseAllInbox, formatDateTime: formatDateTime, loading: loading && initialLoad, selectedAgentId: selectedAgentId, showOnlyMyAgents: showOnlyMyAgents, onShowOnlyMyAgentsChange: setShowOnlyMyAgents }) })), activeTabIndex === 1 && (_jsxs("div", { className: "absolute inset-0 flex flex-col", children: [_jsxs("div", { className: "shrink-0 border-b border-gray-100 bg-white p-6", children: [_jsxs("div", { className: "mb-4 flex items-center justify-between", children: [_jsxs("div", { children: [_jsx("h2", { className: "text-lg font-semibold tracking-tight text-gray-900", children: "Agent History" }), _jsxs("p", { className: "text-[13px] text-gray-500", children: [totalActiveCount, " active, ", totalClosedCount, " closed agents"] })] }), _jsx(SimpleIconButton, { onClick: handleRefresh, icon: _jsx(RefreshCw, { className: cn("size-4 text-gray-400", refreshing && "animate-spin"), strokeWidth: 2 }), label: "Refresh list", disabled: refreshing, className: "h-9 w-9 rounded-full bg-gray-50 shadow-sm transition-colors hover:bg-gray-100" })] }), _jsxs("div", { className: "flex flex-col gap-4 sm:flex-row sm:items-center", children: [_jsx("div", { className: "flex-1", children: _jsx(FilterInput, { value: searchTerm, onChange: setSearchTerm, placeholder: "Search by name, description, or agent ID (GUID)...", loading: loading && !initialLoad, size: "md", className: "border-gray-100 shadow-sm focus-within:border-gray-300" }) }), _jsxs("div", { className: "flex items-center gap-2", children: [profileGroups.length > 0 && (_jsxs("div", { className: "flex items-center gap-1 rounded-lg border border-gray-100 bg-gray-50/50 p-1", children: [_jsxs("button", { onClick: () => setHistoryViewMode("grouped"), className: cn("flex items-center gap-1.5 rounded-md px-2.5 py-1.5 text-[12px] font-medium transition-colors", historyViewMode === "grouped"
|
|
561
|
-
? "bg-white text-gray-900 shadow-sm"
|
|
562
|
-
: "text-gray-600 hover:text-gray-900"), title: "Grouped by profile", children: [_jsx(Layers, { className: "size-3.5", strokeWidth: 2 }), _jsx("span", { children: "Grouped" })] }), _jsxs("button", { onClick: () => setHistoryViewMode("flat"), className: cn("flex items-center gap-1.5 rounded-md px-2.5 py-1.5 text-[12px] font-medium transition-colors", historyViewMode === "flat"
|
|
563
|
-
? "bg-white text-gray-900 shadow-sm"
|
|
564
|
-
: "text-gray-600 hover:text-gray-900"), title: "Flat list (newest first)", children: [_jsx(List, { className: "size-3.5", strokeWidth: 2 }), _jsx("span", { children: "Flat" })] })] })), _jsxs("label", { className: "flex cursor-pointer items-center gap-2.5 rounded-lg border border-gray-100 bg-gray-50/50 px-3 py-2 text-sm transition-colors hover:bg-gray-100", children: [_jsx(Checkbox, { checked: showOnlyMyAgents, onCheckedChange: (checked) => setShowOnlyMyAgents(checked === true), className: "border-gray-300 data-[state=checked]:border-black data-[state=checked]:bg-black" }), _jsx("span", { className: "text-[13px] font-medium text-gray-700 select-none", children: "My agents only" })] })] })] })] }), _jsxs("div", { className: "relative flex-1 overflow-y-auto", children: [loading && !initialLoad && (_jsx("div", { className: "absolute top-2 left-1/2 z-10 -translate-x-1/2 rounded-md bg-white px-3 py-1.5 shadow-md", children: _jsxs("div", { className: "flex items-center gap-2 text-sm text-gray-600", children: [_jsx(RefreshCw, { className: "size-3 animate-spin", strokeWidth: 1 }), _jsx("span", { children: "Loading..." })] }) })), error ? (_jsx("div", { className: "flex h-full items-center justify-center", children: _jsxs("div", { className: "max-w-md text-center", children: [_jsx("div", { className: "mb-4 text-sm text-red-600", children: error }), _jsx("button", { onClick: handleRefresh, className: "rounded bg-blue-500 px-4 py-2 text-xs text-white hover:bg-blue-600", children: "Retry" })] }) })) : totalActiveCount === 0 &&
|
|
565
|
-
totalClosedCount === 0 &&
|
|
566
|
-
!loading ? (_jsx("div", { className: "flex h-full items-center justify-center text-sm text-gray-500", children: searchTerm.trim()
|
|
567
|
-
? "No agents match your search"
|
|
568
|
-
: "No agents found" })) : (_jsxs("div", { className: cn("space-y-4 p-4", loading && "opacity-60"), children: [activeAgents.length > 0 && (_jsxs("div", { className: "space-y-2", children: [_jsx("h3", { className: "text-sm font-semibold text-gray-700", children: "Active Agents" }), sortedActiveAgents.map((agent) => (_jsx(AgentCard, { agent: agent, onClick: handleAgentClick, onResume: handleOpenAgent, onClose: handleCloseAgent, onDelete: handleDeleteAgent, formatDateTime: formatDateTime, selected: selectedAgentId === agent.id }, agent.id)))] })), profileGroups.length > 0 && (_jsxs("div", { className: "space-y-2", children: [_jsx("h3", { className: "text-sm font-semibold text-gray-700", children: "History" }), historyViewMode === "grouped" ? (
|
|
569
|
-
// Grouped by profile view
|
|
570
|
-
profileGroups.map((profileGroup) => {
|
|
387
|
+
const newAgentButton = viewMode === "list" && !hideNewAgentButton && (_jsxs("button", { type: "button", onClick: handleNewAgentClick, className: "inline-flex items-center gap-1.5 rounded-lg bg-theme-secondary px-3 py-2 text-[13px] font-medium text-white shadow-sm transition-colors hover:bg-theme-secondary/90", "data-testid": "agents-new-agent-button", children: [_jsx(Plus, { className: "size-4", strokeWidth: 2.25 }), "New Agent"] }));
|
|
388
|
+
return (_jsxs("div", { className: "absolute inset-0 flex flex-col bg-[#fcfcfc]", children: [!compact && (_jsx(PageHeader, { icon: _jsx(SecretAgentIcon, { size: 28, strokeWidth: 1.5 }), title: "AI Agents", description: "Build, run and orchestrate your AI workforce", variant: "compact", actions: newAgentButton })), _jsx("div", { className: "relative flex flex-1 flex-col overflow-hidden", children: viewMode === "create" ? (_jsxs(_Fragment, { children: [_jsx("div", { className: "shrink-0 border-b border-gray-100 bg-white px-6 py-4", children: _jsxs("div", { className: "flex items-center gap-3", children: [_jsxs("button", { type: "button", onClick: () => setViewMode("list"), className: "inline-flex items-center gap-1.5 rounded-md px-2 py-1.5 text-[13px] font-medium text-gray-600 transition-colors hover:bg-gray-100 hover:text-gray-900", "data-testid": "agents-create-back-button", children: [_jsx(ArrowLeft, { className: "size-4", strokeWidth: 2 }), "Back"] }), _jsx("span", { className: "text-gray-300", children: "/" }), _jsx("h2", { className: "text-[15px] font-semibold tracking-tight text-gray-900", children: "New Agent" }), _jsx("p", { className: "ml-1 hidden text-[12px] text-gray-500 sm:inline", children: "Pick a profile to start with" })] }) }), _jsx("div", { className: "relative flex-1 overflow-y-auto bg-white", children: _jsx(CreateAgentView, { onCreateAgent: handleCreateAgent }) })] })) : (_jsxs(_Fragment, { children: [compact && newAgentButton && (_jsx("div", { className: "flex shrink-0 items-center justify-end border-b border-gray-100 bg-white px-6 py-3", children: newAgentButton })), _jsx("div", { className: "shrink-0 border-b border-gray-100 bg-white px-4 py-1.5", children: _jsxs("div", { className: "flex flex-col gap-2 sm:flex-row sm:items-center", children: [_jsx("div", { className: "min-w-0 flex-1", children: _jsx(FilterInput, { value: searchTerm, onChange: setSearchTerm, placeholder: "Search agents\u2026", loading: loading && !initialLoad, size: "md", className: "border-gray-200" }) }), _jsxs("div", { className: "flex items-center gap-2", children: [profileGroups.length > 0 && (_jsxs("div", { className: "flex h-8 items-center rounded-md border border-gray-200 p-0.5", children: [_jsx("button", { onClick: () => setHistoryViewMode("grouped"), className: cn("flex size-6 items-center justify-center rounded transition-colors", historyViewMode === "grouped"
|
|
389
|
+
? "bg-gray-100 text-gray-900"
|
|
390
|
+
: "text-gray-500 hover:text-gray-900"), title: "Grouped by profile", "aria-label": "Grouped by profile", children: _jsx(Layers, { className: "size-3.5", strokeWidth: 2 }) }), _jsx("button", { onClick: () => setHistoryViewMode("flat"), className: cn("flex size-6 items-center justify-center rounded transition-colors", historyViewMode === "flat"
|
|
391
|
+
? "bg-gray-100 text-gray-900"
|
|
392
|
+
: "text-gray-500 hover:text-gray-900"), title: "Grouped by date", "aria-label": "Grouped by date", children: _jsx(List, { className: "size-3.5", strokeWidth: 2 }) })] })), _jsxs("label", { className: "flex h-8 cursor-pointer items-center gap-2 rounded-md px-2 text-[12px] font-medium text-gray-600 transition-colors hover:text-gray-900", children: [_jsx(Switch, { checked: showOnlyMyAgents, onCheckedChange: (checked) => setShowOnlyMyAgents(checked === true) }), _jsx("span", { className: "select-none", children: "My agents" })] })] })] }) }), _jsxs("div", { className: "relative flex-1 overflow-y-auto", children: [loading && !initialLoad && (_jsx("div", { className: "absolute top-2 left-1/2 z-10 -translate-x-1/2 rounded-md bg-white px-3 py-1.5 shadow-md", children: _jsxs("div", { className: "flex items-center gap-2 text-sm text-gray-600", children: [_jsx(RefreshCw, { className: "size-3 animate-spin", strokeWidth: 1 }), _jsx("span", { children: "Loading..." })] }) })), error ? (_jsx("div", { className: "flex h-full items-center justify-center", children: _jsxs("div", { className: "max-w-md text-center", children: [_jsx("div", { className: "mb-4 text-sm text-red-600", children: error }), _jsx("button", { onClick: handleRefresh, className: "rounded bg-blue-500 px-4 py-2 text-xs text-white hover:bg-blue-600", children: "Retry" })] }) })) : totalActiveCount === 0 &&
|
|
393
|
+
totalClosedCount === 0 &&
|
|
394
|
+
!loading ? (_jsx("div", { className: "flex h-full items-center justify-center text-sm text-gray-500", children: searchTerm.trim()
|
|
395
|
+
? "No agents match your search"
|
|
396
|
+
: "No agents found" })) : (_jsxs("div", { className: cn("space-y-4 p-4", loading && "opacity-60"), children: [activeAgents.length > 0 && (_jsxs("div", { className: "space-y-2", children: [_jsx("h3", { className: "text-sm font-semibold text-gray-700", children: "Active Agents" }), _jsx("div", { className: "divide-y divide-gray-100 overflow-hidden rounded-lg border border-gray-100 bg-white", children: sortedActiveAgents.map((agent) => (_jsx(AgentCard, { agent: agent, onClick: handleAgentClick, onResume: handleOpenAgent, onClose: handleCloseAgent, onDelete: handleDeleteAgent, formatDateTime: formatDateTime, selected: selectedAgentId === agent.id }, agent.id))) })] })), profileGroups.length > 0 && (_jsxs("div", { className: "space-y-2", children: [_jsx("h3", { className: "text-sm font-semibold text-gray-700", children: "History" }), historyViewMode === "grouped" ? (_jsx("div", { className: "divide-y divide-gray-100 overflow-hidden rounded-lg border border-gray-100 bg-white", children: profileGroups.map((profileGroup) => {
|
|
571
397
|
const profileKey = profileGroup.profileId || "null";
|
|
572
398
|
const isExpanded = expandedProfiles.has(profileKey);
|
|
573
399
|
const isLoadingMore = loadingMoreForProfile === profileGroup.profileId;
|
|
574
400
|
const hasMore = profileGroup.agents.length <
|
|
575
401
|
profileGroup.totalClosedCount;
|
|
576
402
|
return (_jsx(ProfileAgentsGroup, { profileGroup: profileGroup, isExpanded: isExpanded, isLoadingMore: isLoadingMore, hasMore: hasMore, onToggle: () => handleToggleProfile(profileGroup.profileId), onLoadMore: () => handleLoadMoreForProfile(profileGroup.profileId), onAgentClick: handleAgentClick, onResumeAgent: handleOpenAgent, onCloseAgent: handleCloseAgent, onDeleteAgent: handleDeleteAgent, formatDateTime: formatDateTime, selectedAgentId: selectedAgentId }, profileKey));
|
|
577
|
-
})) : (
|
|
578
|
-
// Flat list view (newest first)
|
|
579
|
-
_jsx("div", { className: "space-y-3", children: flatClosedAgents.map((agent) => (_jsx(AgentCard, { agent: agent, onClick: handleAgentClick, onResume: handleOpenAgent, onClose: handleCloseAgent, onDelete: handleDeleteAgent, formatDateTime: formatDateTime, selected: selectedAgentId === agent.id }, agent.id))) }))] }))] }))] })] })), activeTabIndex === 2 && (_jsx("div", { className: "absolute inset-0 overflow-y-auto bg-white p-2", children: _jsx(CreateAgentView, { onCreateAgent: handleCreateAgent }) }))] })] }));
|
|
403
|
+
}) })) : (_jsx("div", { className: "space-y-3", children: dateBuckets.map((bucket) => (_jsx(DateAgentsGroup, { bucketKey: bucket.key, label: bucket.label, agents: bucket.agents, isExpanded: !collapsedDateBuckets.has(bucket.key), onToggle: () => handleToggleDateBucket(bucket.key), onAgentClick: handleAgentClick, onResumeAgent: handleOpenAgent, onCloseAgent: handleCloseAgent, onDeleteAgent: handleDeleteAgent, formatDateTime: formatDateTime, selectedAgentId: selectedAgentId }, bucket.key))) }))] }))] }))] })] })) })] }));
|
|
580
404
|
}
|
|
581
405
|
//# sourceMappingURL=AgentsView.js.map
|