@parhelia/core 0.1.12888 → 0.1.12890
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 +2 -1
- package/dist/agents-view/AgentCard.js +14 -38
- package/dist/agents-view/AgentCard.js.map +1 -1
- package/dist/agents-view/AgentGalleryCard.d.ts +12 -0
- package/dist/agents-view/AgentGalleryCard.js +12 -0
- package/dist/agents-view/AgentGalleryCard.js.map +1 -0
- package/dist/agents-view/AgentGalleryView.d.ts +18 -0
- package/dist/agents-view/AgentGalleryView.js +88 -0
- package/dist/agents-view/AgentGalleryView.js.map +1 -0
- package/dist/agents-view/AgentProfileIcon.d.ts +9 -0
- package/dist/agents-view/AgentProfileIcon.js +28 -0
- package/dist/agents-view/AgentProfileIcon.js.map +1 -0
- package/dist/agents-view/AgentsView.d.ts +6 -1
- package/dist/agents-view/AgentsView.js +40 -12
- package/dist/agents-view/AgentsView.js.map +1 -1
- package/dist/agents-view/AgentsWorkspaceView.js +40 -21
- package/dist/agents-view/AgentsWorkspaceView.js.map +1 -1
- package/dist/agents-view/DateAgentsGroup.d.ts +2 -1
- package/dist/agents-view/DateAgentsGroup.js +2 -2
- package/dist/agents-view/DateAgentsGroup.js.map +1 -1
- package/dist/agents-view/ProfileAgentsGroup.d.ts +2 -1
- package/dist/agents-view/ProfileAgentsGroup.js +5 -8
- package/dist/agents-view/ProfileAgentsGroup.js.map +1 -1
- package/dist/agents-view/RenameAgentDialog.d.ts +12 -0
- package/dist/agents-view/RenameAgentDialog.js +40 -0
- package/dist/agents-view/RenameAgentDialog.js.map +1 -0
- package/dist/components/FilterInput.d.ts +2 -0
- package/dist/components/FilterInput.js +4 -2
- package/dist/components/FilterInput.js.map +1 -1
- package/dist/components/ui/alert-dialog.d.ts +1 -1
- package/dist/components/ui/alert-dialog.js +5 -5
- package/dist/components/ui/alert-dialog.js.map +1 -1
- package/dist/components/ui/alert.d.ts +3 -2
- package/dist/components/ui/alert.js +9 -4
- package/dist/components/ui/alert.js.map +1 -1
- package/dist/components/ui/badge.d.ts +1 -1
- package/dist/components/ui/button.d.ts +9 -4
- package/dist/components/ui/button.js +16 -9
- package/dist/components/ui/button.js.map +1 -1
- package/dist/components/ui/dialog.d.ts +1 -1
- package/dist/components/ui/dialog.js +4 -3
- package/dist/components/ui/dialog.js.map +1 -1
- package/dist/components/ui/styled-dialog-title.js +1 -1
- package/dist/components/ui/styled-dialog-title.js.map +1 -1
- package/dist/config/config.js +4 -3
- package/dist/config/config.js.map +1 -1
- package/dist/editor/FieldListField.js +6 -2
- package/dist/editor/FieldListField.js.map +1 -1
- package/dist/editor/GlobalMenuBar.js +3 -1
- package/dist/editor/GlobalMenuBar.js.map +1 -1
- package/dist/editor/LinkEditorDialog.js +3 -3
- package/dist/editor/LinkEditorDialog.js.map +1 -1
- package/dist/editor/MainLayout.js +11 -9
- package/dist/editor/MainLayout.js.map +1 -1
- package/dist/editor/WorkspaceTitleSwitcher.d.ts +5 -0
- package/dist/editor/WorkspaceTitleSwitcher.js +86 -0
- package/dist/editor/WorkspaceTitleSwitcher.js.map +1 -0
- package/dist/editor/ai/AgentInlineDialogContent.js +1 -1
- package/dist/editor/ai/AgentInlineDialogContent.js.map +1 -1
- package/dist/editor/ai/Agents.js +155 -43
- package/dist/editor/ai/Agents.js.map +1 -1
- package/dist/editor/ai/InlineAiDialog.js +1 -1
- package/dist/editor/ai/InlineAiDialog.js.map +1 -1
- package/dist/editor/ai/dialogs/QuestionnaireInline.js +52 -82
- package/dist/editor/ai/dialogs/QuestionnaireInline.js.map +1 -1
- package/dist/editor/ai/terminal/agentQuestionnaireRecap.d.ts +82 -0
- package/dist/editor/ai/terminal/agentQuestionnaireRecap.js +277 -0
- package/dist/editor/ai/terminal/agentQuestionnaireRecap.js.map +1 -0
- package/dist/editor/ai/terminal/agentQuestionnaireTranscriptRecovery.d.ts +3 -0
- package/dist/editor/ai/terminal/agentQuestionnaireTranscriptRecovery.js +3 -3
- package/dist/editor/ai/terminal/agentQuestionnaireTranscriptRecovery.js.map +1 -1
- package/dist/editor/ai/terminal/agentSessionLiveTotals.d.ts +5 -0
- package/dist/editor/ai/terminal/agentSessionLiveTotals.js +14 -0
- package/dist/editor/ai/terminal/agentSessionLiveTotals.js.map +1 -1
- package/dist/editor/ai/terminal/agentSessionSnapshot.js +2 -0
- package/dist/editor/ai/terminal/agentSessionSnapshot.js.map +1 -1
- package/dist/editor/ai/terminal/components/AgentFullPromptControls.js +1 -1
- package/dist/editor/ai/terminal/components/AgentFullPromptControls.js.map +1 -1
- package/dist/editor/ai/terminal/components/AgentGreeting.js +5 -2
- package/dist/editor/ai/terminal/components/AgentGreeting.js.map +1 -1
- package/dist/editor/ai/terminal/components/AgentProjectProgress.d.ts +12 -0
- package/dist/editor/ai/terminal/components/AgentProjectProgress.js +207 -0
- package/dist/editor/ai/terminal/components/AgentProjectProgress.js.map +1 -0
- package/dist/editor/ai/terminal/components/AgentPromptActionButtons.js +3 -3
- package/dist/editor/ai/terminal/components/AgentPromptActionButtons.js.map +1 -1
- package/dist/editor/ai/terminal/components/AgentPromptComposer.d.ts +2 -1
- package/dist/editor/ai/terminal/components/AgentPromptComposer.js +5 -2
- package/dist/editor/ai/terminal/components/AgentPromptComposer.js.map +1 -1
- package/dist/editor/ai/terminal/components/AgentPromptInputArea.d.ts +2 -1
- package/dist/editor/ai/terminal/components/AgentPromptInputArea.js +5 -3
- package/dist/editor/ai/terminal/components/AgentPromptInputArea.js.map +1 -1
- package/dist/editor/ai/terminal/components/AgentTerminalFullLayout.d.ts +4 -3
- package/dist/editor/ai/terminal/components/AgentTerminalFullLayout.js +6 -19
- package/dist/editor/ai/terminal/components/AgentTerminalFullLayout.js.map +1 -1
- package/dist/editor/ai/terminal/components/AgentTerminalFullUpperContent.d.ts +5 -1
- package/dist/editor/ai/terminal/components/AgentTerminalFullUpperContent.js +33 -2
- package/dist/editor/ai/terminal/components/AgentTerminalFullUpperContent.js.map +1 -1
- package/dist/editor/ai/terminal/components/AgentTerminalStatusBar.d.ts +2 -0
- package/dist/editor/ai/terminal/components/AgentTerminalStatusBar.js +20 -1
- package/dist/editor/ai/terminal/components/AgentTerminalStatusBar.js.map +1 -1
- package/dist/editor/ai/terminal/components/AgentTerminalSummaryLayout.js +2 -1
- package/dist/editor/ai/terminal/components/AgentTerminalSummaryLayout.js.map +1 -1
- package/dist/editor/ai/terminal/components/AgentTerminalView.d.ts +3 -2
- package/dist/editor/ai/terminal/components/AgentTerminalView.js +11 -2
- package/dist/editor/ai/terminal/components/AgentTerminalView.js.map +1 -1
- package/dist/editor/ai/terminal/components/AiResponseMessage.js +59 -7
- package/dist/editor/ai/terminal/components/AiResponseMessage.js.map +1 -1
- package/dist/editor/ai/terminal/components/QuestionnaireRecap.d.ts +9 -0
- package/dist/editor/ai/terminal/components/QuestionnaireRecap.js +56 -0
- package/dist/editor/ai/terminal/components/QuestionnaireRecap.js.map +1 -0
- package/dist/editor/ai/terminal/contextBreakdown.d.ts +17 -0
- package/dist/editor/ai/terminal/contextBreakdown.js +58 -0
- package/dist/editor/ai/terminal/contextBreakdown.js.map +1 -0
- package/dist/editor/ai/terminal/types.d.ts +2 -0
- package/dist/editor/ai/terminal/useAgentAutoStartOnCreate.d.ts +29 -0
- package/dist/editor/ai/terminal/useAgentAutoStartOnCreate.js +68 -0
- package/dist/editor/ai/terminal/useAgentAutoStartOnCreate.js.map +1 -0
- package/dist/editor/ai/terminal/useAgentInlineDialogEvents.js +8 -3
- package/dist/editor/ai/terminal/useAgentInlineDialogEvents.js.map +1 -1
- package/dist/editor/ai/terminal/useAgentInlineDialogState.d.ts +10 -3
- package/dist/editor/ai/terminal/useAgentInlineDialogState.js +33 -4
- package/dist/editor/ai/terminal/useAgentInlineDialogState.js.map +1 -1
- package/dist/editor/ai/terminal/useAgentRunResyncSocketHandler.js +16 -2
- package/dist/editor/ai/terminal/useAgentRunResyncSocketHandler.js.map +1 -1
- package/dist/editor/ai/terminal/useAgentRunStatusSocketHandler.js +3 -1
- package/dist/editor/ai/terminal/useAgentRunStatusSocketHandler.js.map +1 -1
- package/dist/editor/ai/terminal/useAgentSession.js +12 -1
- package/dist/editor/ai/terminal/useAgentSession.js.map +1 -1
- package/dist/editor/ai/terminal/useAgentSubmitLifecycle.d.ts +3 -0
- package/dist/editor/ai/terminal/useAgentSubmitLifecycle.js +6 -1
- package/dist/editor/ai/terminal/useAgentSubmitLifecycle.js.map +1 -1
- package/dist/editor/ai/terminal/useAgentTerminalController.js +48 -4
- 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/useAgentToolCallHandler.js +13 -1
- package/dist/editor/ai/terminal/useAgentToolCallHandler.js.map +1 -1
- package/dist/editor/ai/terminal/useAgentToolResultHandler.js +31 -7
- package/dist/editor/ai/terminal/useAgentToolResultHandler.js.map +1 -1
- package/dist/editor/bridge/BridgeClient.d.ts +1 -8
- package/dist/editor/bridge/BridgeClient.js +2 -4
- package/dist/editor/bridge/BridgeClient.js.map +1 -1
- package/dist/editor/bridge/protocol.d.ts +512 -0
- package/dist/editor/bridge/protocol.js +188 -0
- package/dist/editor/bridge/protocol.js.map +1 -0
- package/dist/editor/client/AboutDialog.js +15 -4
- package/dist/editor/client/AboutDialog.js.map +1 -1
- package/dist/editor/client/EditorShell.js +50 -13
- package/dist/editor/client/EditorShell.js.map +1 -1
- package/dist/editor/client/editContext.d.ts +6 -0
- package/dist/editor/client/editContext.js.map +1 -1
- package/dist/editor/client/hooks/useSocketMessageHandler.d.ts +3 -0
- package/dist/editor/client/hooks/useSocketMessageHandler.js +57 -25
- package/dist/editor/client/hooks/useSocketMessageHandler.js.map +1 -1
- package/dist/editor/client/hooks/useWorkbox.d.ts +1 -0
- package/dist/editor/client/hooks/useWorkbox.js +14 -1
- package/dist/editor/client/hooks/useWorkbox.js.map +1 -1
- package/dist/editor/client/operationToasts.d.ts +2 -0
- package/dist/editor/client/operationToasts.js +35 -0
- package/dist/editor/client/operationToasts.js.map +1 -0
- package/dist/editor/client/operations.d.ts +4 -0
- package/dist/editor/client/operations.js +134 -74
- package/dist/editor/client/operations.js.map +1 -1
- package/dist/editor/client/pageModelBuilder.d.ts +1 -0
- package/dist/editor/client/pageModelBuilder.js +22 -13
- package/dist/editor/client/pageModelBuilder.js.map +1 -1
- package/dist/editor/client/waitForEditOperationTerminal.d.ts +1 -0
- package/dist/editor/client/waitForEditOperationTerminal.js +1 -1
- package/dist/editor/client/waitForEditOperationTerminal.js.map +1 -1
- package/dist/editor/commands/itemCommands.js +5 -16
- package/dist/editor/commands/itemCommands.js.map +1 -1
- package/dist/editor/content-tree/IndicatorSettings.js +3 -2
- package/dist/editor/content-tree/IndicatorSettings.js.map +1 -1
- package/dist/editor/field-types/CheckboxEditor.js +3 -1
- package/dist/editor/field-types/CheckboxEditor.js.map +1 -1
- package/dist/editor/field-types/MultiLineText.js +24 -7
- package/dist/editor/field-types/MultiLineText.js.map +1 -1
- package/dist/editor/field-types/SingleLineText.js +19 -2
- package/dist/editor/field-types/SingleLineText.js.map +1 -1
- package/dist/editor/field-types/useTextCompletion.d.ts +20 -0
- package/dist/editor/field-types/useTextCompletion.js +166 -0
- package/dist/editor/field-types/useTextCompletion.js.map +1 -0
- package/dist/editor/menubar/ItemLanguageVersion.js +3 -14
- package/dist/editor/menubar/ItemLanguageVersion.js.map +1 -1
- package/dist/editor/menubar/OperationsIndicator.d.ts +7 -0
- package/dist/editor/menubar/OperationsIndicator.js +87 -0
- package/dist/editor/menubar/OperationsIndicator.js.map +1 -0
- package/dist/editor/menubar/ToolbarFactory.js +4 -1
- package/dist/editor/menubar/ToolbarFactory.js.map +1 -1
- package/dist/editor/menubar/VersionSelector.d.ts +3 -2
- package/dist/editor/menubar/VersionSelector.js +28 -12
- package/dist/editor/menubar/VersionSelector.js.map +1 -1
- package/dist/editor/menubar/WorkflowButton.js +7 -4
- package/dist/editor/menubar/WorkflowButton.js.map +1 -1
- package/dist/editor/menubar/toolbar-sections/EditControls.js +7 -3
- package/dist/editor/menubar/toolbar-sections/EditControls.js.map +1 -1
- package/dist/editor/menubar/toolbar-sections/ViewportControls.js +4 -1
- package/dist/editor/menubar/toolbar-sections/ViewportControls.js.map +1 -1
- package/dist/editor/notifications/NotificationCenter.js +28 -27
- package/dist/editor/notifications/NotificationCenter.js.map +1 -1
- package/dist/editor/notifications/NotificationItem.js +100 -15
- package/dist/editor/notifications/NotificationItem.js.map +1 -1
- package/dist/editor/notifications/watchEventOptions.js +3 -2
- package/dist/editor/notifications/watchEventOptions.js.map +1 -1
- package/dist/editor/page-editor-chrome/BridgeInlineFormatOverlay.d.ts +1 -1
- package/dist/editor/page-editor-chrome/BridgeInlineFormatOverlay.js +8 -2
- package/dist/editor/page-editor-chrome/BridgeInlineFormatOverlay.js.map +1 -1
- package/dist/editor/page-editor-chrome/PageEditorChrome.d.ts +1 -1
- package/dist/editor/page-editor-chrome/PlaceholderDropZone.js +7 -1
- package/dist/editor/page-editor-chrome/PlaceholderDropZone.js.map +1 -1
- package/dist/editor/page-editor-chrome/overlay/IframeOverlayProvider.js +3 -10
- package/dist/editor/page-editor-chrome/overlay/IframeOverlayProvider.js.map +1 -1
- package/dist/editor/page-editor-chrome/overlay/geometry.d.ts +2 -2
- package/dist/editor/page-editor-chrome/useBridgeInlineEditing.d.ts +1 -1
- package/dist/editor/page-viewer/MiniMap.d.ts +21 -0
- package/dist/editor/page-viewer/MiniMap.js +113 -11
- package/dist/editor/page-viewer/MiniMap.js.map +1 -1
- package/dist/editor/page-viewer/PageViewerFrame.js +155 -22
- package/dist/editor/page-viewer/PageViewerFrame.js.map +1 -1
- package/dist/editor/page-viewer/bridgeFieldPatch.d.ts +1 -2
- package/dist/editor/page-viewer/bridgeFieldPatch.js.map +1 -1
- package/dist/editor/page-viewer/pageViewContext.d.ts +1 -1
- package/dist/editor/reviews/DecisionsMatrix.js +5 -1
- package/dist/editor/reviews/DecisionsMatrix.js.map +1 -1
- package/dist/editor/reviews/SuggestedEdit.js +12 -2
- package/dist/editor/reviews/SuggestedEdit.js.map +1 -1
- package/dist/editor/reviews/latestFeedbackData.js +7 -1
- package/dist/editor/reviews/latestFeedbackData.js.map +1 -1
- package/dist/editor/reviews/suggestedEditState.d.ts +2 -0
- package/dist/editor/reviews/suggestedEditState.js +20 -0
- package/dist/editor/reviews/suggestedEditState.js.map +1 -1
- package/dist/editor/reviews/suggestionContentChange.d.ts +1 -1
- package/dist/editor/reviews/suggestionContentChange.js +23 -3
- package/dist/editor/reviews/suggestionContentChange.js.map +1 -1
- package/dist/editor/services/agentService.d.ts +6 -0
- package/dist/editor/services/agentService.js +14 -0
- package/dist/editor/services/agentService.js.map +1 -1
- package/dist/editor/services/aiService.d.ts +5 -0
- package/dist/editor/services/aiService.js.map +1 -1
- package/dist/editor/settings/About.js +1 -1
- package/dist/editor/settings/About.js.map +1 -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/AgentToolsPanel.js +61 -33
- package/dist/editor/settings/panels/AgentToolsPanel.js.map +1 -1
- package/dist/editor/settings/panels/ClusterInstancesPanel.js +2 -1
- package/dist/editor/settings/panels/ClusterInstancesPanel.js.map +1 -1
- package/dist/editor/settings/panels/JavaScriptToolAgentPanel.js +3 -2
- package/dist/editor/settings/panels/JavaScriptToolAgentPanel.js.map +1 -1
- package/dist/editor/settings/panels/ProjectTemplateAgentPanel.js +3 -2
- package/dist/editor/settings/panels/ProjectTemplateAgentPanel.js.map +1 -1
- package/dist/editor/settings/panels/StatusPanel.js +10 -7
- package/dist/editor/settings/panels/StatusPanel.js.map +1 -1
- package/dist/editor/sidebar/Completions.js +1 -1
- package/dist/editor/sidebar/Completions.js.map +1 -1
- package/dist/editor/sidebar/ComponentTree.js +1 -1
- package/dist/editor/sidebar/ComponentTree.js.map +1 -1
- package/dist/editor/sidebar/OperationItem.js +1 -1
- package/dist/editor/sidebar/OperationItem.js.map +1 -1
- package/dist/editor/sidebar/Workbox.js +18 -4
- package/dist/editor/sidebar/Workbox.js.map +1 -1
- package/dist/editor/template-wizard/TemplateStructureInlineEditor.js +3 -2
- package/dist/editor/template-wizard/TemplateStructureInlineEditor.js.map +1 -1
- package/dist/editor/tree-indicators/GutterColumns.js +3 -2
- package/dist/editor/tree-indicators/GutterColumns.js.map +1 -1
- package/dist/editor/ui/DialogButtons.d.ts +3 -1
- package/dist/editor/ui/DialogButtons.js +3 -2
- package/dist/editor/ui/DialogButtons.js.map +1 -1
- package/dist/editor/ui/Icons.js +1 -1
- package/dist/editor/ui/Icons.js.map +1 -1
- package/dist/editor/ui/ItemCollectionEditor.js +2 -2
- package/dist/editor/ui/ItemCollectionEditor.js.map +1 -1
- package/dist/editor/ui/PublishItemDialog.js +4 -6
- package/dist/editor/ui/PublishItemDialog.js.map +1 -1
- package/dist/editor/ui/SimpleTabs.d.ts +2 -1
- package/dist/editor/ui/SimpleTabs.js +23 -5
- package/dist/editor/ui/SimpleTabs.js.map +1 -1
- package/dist/editor/ui/Splitter.js +120 -3
- package/dist/editor/ui/Splitter.js.map +1 -1
- package/dist/editor/ui/splitterResizeEvent.d.ts +7 -0
- package/dist/editor/ui/splitterResizeEvent.js +6 -0
- package/dist/editor/ui/splitterResizeEvent.js.map +1 -1
- package/dist/editor/version-diff/versionDiffTargets.d.ts +1 -1
- package/dist/editor/workflowFields.d.ts +1 -0
- package/dist/editor/workflowFields.js +16 -0
- package/dist/editor/workflowFields.js.map +1 -0
- package/dist/index.d.ts +4 -2
- package/dist/index.js +3 -2
- package/dist/index.js.map +1 -1
- package/dist/revision.d.ts +2 -2
- package/dist/revision.js +2 -2
- package/dist/splash-screen/ModernSplashScreen.js +20 -11
- package/dist/splash-screen/ModernSplashScreen.js.map +1 -1
- package/dist/splash-screen/NewPage.js +26 -7
- package/dist/splash-screen/NewPage.js.map +1 -1
- package/dist/task-board/TaskBoardWorkspace.js +154 -121
- package/dist/task-board/TaskBoardWorkspace.js.map +1 -1
- package/dist/task-board/components/CreateTaskDialog.js +1 -1
- package/dist/task-board/components/CreateTaskDialog.js.map +1 -1
- package/dist/task-board/components/ProjectDashboard.d.ts +12 -22
- package/dist/task-board/components/ProjectDashboard.js +120 -108
- package/dist/task-board/components/ProjectDashboard.js.map +1 -1
- package/dist/task-board/components/ProjectOverviewContent.js +3 -0
- package/dist/task-board/components/ProjectOverviewContent.js.map +1 -1
- package/dist/task-board/components/ProjectPropertiesPanel.d.ts +2 -0
- package/dist/task-board/components/ProjectPropertiesPanel.js +7 -4
- package/dist/task-board/components/ProjectPropertiesPanel.js.map +1 -1
- package/dist/task-board/components/ProjectSettingsDialog.d.ts +16 -0
- package/dist/task-board/components/ProjectSettingsDialog.js +55 -47
- package/dist/task-board/components/ProjectSettingsDialog.js.map +1 -1
- package/dist/task-board/components/TaskAgentPanel.js +6 -5
- package/dist/task-board/components/TaskAgentPanel.js.map +1 -1
- package/dist/task-board/components/TaskAssigneePicker.js +3 -2
- package/dist/task-board/components/TaskAssigneePicker.js.map +1 -1
- package/dist/task-board/components/TaskAttachmentsSection.js +1 -1
- package/dist/task-board/components/TaskAttachmentsSection.js.map +1 -1
- package/dist/task-board/components/TaskBoardHomeView.d.ts +7 -0
- package/dist/task-board/components/TaskBoardHomeView.js +21 -0
- package/dist/task-board/components/TaskBoardHomeView.js.map +1 -0
- package/dist/task-board/components/TaskBoardProjectListSidebar.js +74 -12
- package/dist/task-board/components/TaskBoardProjectListSidebar.js.map +1 -1
- package/dist/task-board/components/TaskBoardTitlebar.js +9 -52
- package/dist/task-board/components/TaskBoardTitlebar.js.map +1 -1
- package/dist/task-board/components/TaskCard.js +5 -13
- package/dist/task-board/components/TaskCard.js.map +1 -1
- package/dist/task-board/components/TaskRow.js +3 -2
- package/dist/task-board/components/TaskRow.js.map +1 -1
- package/dist/task-board/taskBoardNavStore.d.ts +0 -2
- package/dist/task-board/taskBoardNavStore.js +0 -2
- package/dist/task-board/taskBoardNavStore.js.map +1 -1
- package/dist/task-board/views/DependencyGraphView.js +3 -2
- package/dist/task-board/views/DependencyGraphView.js.map +1 -1
- package/dist/task-board/views/KanbanView.js +161 -38
- package/dist/task-board/views/KanbanView.js.map +1 -1
- package/dist/task-board/views/ListView.js +1 -2
- package/dist/task-board/views/ListView.js.map +1 -1
- package/dist/task-board/views/WizardView.d.ts +2 -0
- package/dist/task-board/views/WizardView.js +7 -4
- package/dist/task-board/views/WizardView.js.map +1 -1
- package/package.json +1 -2
- package/styles.css +4 -3
|
@@ -6,6 +6,7 @@ interface AgentCardProps {
|
|
|
6
6
|
onResume?: (agent: Agent, event?: React.MouseEvent) => void;
|
|
7
7
|
onDelete?: (agentId: string, agentName: string, event: React.MouseEvent) => void;
|
|
8
8
|
onDismiss?: (agentId: string, agentName: string) => void;
|
|
9
|
+
onRename?: (agentId: string, agentName: string) => void;
|
|
9
10
|
formatDateTime: (dateString: string) => string;
|
|
10
11
|
/** Whether this card is selected */
|
|
11
12
|
selected?: boolean;
|
|
@@ -15,5 +16,5 @@ interface AgentCardProps {
|
|
|
15
16
|
* Lower number = shown higher in the list.
|
|
16
17
|
*/
|
|
17
18
|
export declare function getInboxAttentionPriority(agent: Agent): number;
|
|
18
|
-
export declare function AgentCard({ agent, onClick, onResume, onDelete, onDismiss, formatDateTime, selected, }: AgentCardProps): import("react/jsx-runtime").JSX.Element;
|
|
19
|
+
export declare function AgentCard({ agent, onClick, onResume, onDelete, onDismiss, onRename, formatDateTime, selected, }: AgentCardProps): import("react/jsx-runtime").JSX.Element;
|
|
19
20
|
export {};
|
|
@@ -1,16 +1,13 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
-
import
|
|
3
|
-
import { getAgentTriggerSubscriptions, isAgentReadOnly, } from "../editor/services/agentService";
|
|
2
|
+
import { isAgentReadOnly } from "../editor/services/agentService";
|
|
4
3
|
import { isAgentClosed, isRunningAgentStatus, } from "../editor/services/agentStatus";
|
|
5
4
|
import { getAgentStatusConfig } from "../editor/ai/AgentStatusBadge";
|
|
6
5
|
import { cn } from "../lib/utils";
|
|
7
|
-
import {
|
|
8
|
-
import { Users, AlertCircle, Clock, DollarSign, Coins, MessageSquare, HelpCircle, Bell, } from "lucide-react";
|
|
9
|
-
import { DeleteIcon } from "../components/ui/delete-icon";
|
|
6
|
+
import { AlertCircle, Clock, DollarSign, HelpCircle, MoreHorizontal, Pencil, Trash2, } from "lucide-react";
|
|
10
7
|
import { CloseButton } from "../components/ui/close-button";
|
|
11
|
-
import {
|
|
12
|
-
import { ParheliaAgentIcon } from "../editor/ui/Icons";
|
|
8
|
+
import { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuTrigger, } from "../components/ui/dropdown-menu";
|
|
13
9
|
import { Spinner } from "../editor/ui/Spinner";
|
|
10
|
+
import { AgentProfileIcon } from "./AgentProfileIcon";
|
|
14
11
|
/**
|
|
15
12
|
* Returns visual treatment for genuinely actionable states only.
|
|
16
13
|
* Plain "completed" / "idle" agents are intentionally NOT highlighted as needing
|
|
@@ -70,33 +67,14 @@ export function getInboxAttentionPriority(agent) {
|
|
|
70
67
|
return 5;
|
|
71
68
|
return 4;
|
|
72
69
|
}
|
|
73
|
-
export function AgentCard({ agent, onClick, onResume, onDelete, onDismiss, formatDateTime, selected = false, }) {
|
|
74
|
-
const [loadedTriggerCount, setLoadedTriggerCount] = React.useState(agent.triggerSubscriptionCount ?? null);
|
|
75
|
-
React.useEffect(() => {
|
|
76
|
-
if (agent.triggerSubscriptionCount !== undefined) {
|
|
77
|
-
setLoadedTriggerCount(agent.triggerSubscriptionCount);
|
|
78
|
-
return;
|
|
79
|
-
}
|
|
80
|
-
let cancelled = false;
|
|
81
|
-
void getAgentTriggerSubscriptions(agent.id)
|
|
82
|
-
.then((subscriptions) => {
|
|
83
|
-
if (cancelled)
|
|
84
|
-
return;
|
|
85
|
-
setLoadedTriggerCount(subscriptions.filter((subscription) => subscription.isActive).length);
|
|
86
|
-
})
|
|
87
|
-
.catch(() => {
|
|
88
|
-
if (cancelled)
|
|
89
|
-
return;
|
|
90
|
-
setLoadedTriggerCount(0);
|
|
91
|
-
});
|
|
92
|
-
return () => {
|
|
93
|
-
cancelled = true;
|
|
94
|
-
};
|
|
95
|
-
}, [agent.id, agent.triggerSubscriptionCount]);
|
|
70
|
+
export function AgentCard({ agent, onClick, onResume, onDelete, onDismiss, onRename, formatDateTime, selected = false, }) {
|
|
96
71
|
const statusConfig = getAgentStatusConfig(agent);
|
|
97
72
|
const isClosed = isAgentClosed(agent.status);
|
|
98
73
|
const isRunning = isRunningAgentStatus(agent.status);
|
|
74
|
+
const readOnly = isAgentReadOnly(agent);
|
|
75
|
+
const showOverflowMenu = !readOnly && (!!onRename || !!onDelete);
|
|
99
76
|
const attention = getAttentionInfo(agent);
|
|
77
|
+
const profileLabel = agent.profileName?.trim() || agent.description?.trim() || "Agent";
|
|
100
78
|
const handleCardClick = (event) => {
|
|
101
79
|
if (isClosed && onResume) {
|
|
102
80
|
onResume(agent, event);
|
|
@@ -108,15 +86,13 @@ export function AgentCard({ agent, onClick, onResume, onDelete, onDismiss, forma
|
|
|
108
86
|
const lastActivity = agent.lastMessageDate
|
|
109
87
|
? formatDateTime(agent.lastMessageDate)
|
|
110
88
|
: formatDateTime(agent.updatedDate);
|
|
111
|
-
return (_jsxs("div", { className: cn("group relative flex cursor-pointer items-
|
|
112
|
-
__html: sanitizeSvg(agent.profileSvgIcon),
|
|
113
|
-
} })) : (_jsx(ParheliaAgentIcon, { size: 22, strokeWidth: 1.5, className: "text-neutral-grey-50" })) }), _jsxs("div", { className: "min-w-0 flex-1", children: [_jsxs("div", { className: "flex items-center gap-2", children: [_jsx("h4", { className: "text-neutral-grey-100 truncate text-[13px] font-medium", children: agent.name }), !isRunning && (_jsx("span", { className: cn("h-1.5 w-1.5 shrink-0 rounded-full", statusConfig.color, statusConfig.shouldPulse && "animate-pulse"), title: statusConfig.label })), attention && (_jsxs("span", { className: cn("rounded-badge badge-pad-sm text-2xs inline-flex shrink-0 items-center gap-1 font-semibold", attention.chipClass), children: [attention.icon, attention.label] })), agent.isShared && (_jsx("span", { className: "rounded-badge bg-feedback-blue-light badge-pad-sm text-2xs text-feedback-blue shrink-0 font-bold", children: "Shared" }))] }), agent.description && (_jsx("p", { className: "text-neutral-grey-50 mt-0.5 truncate text-[12px]", children: agent.description })), _jsxs("div", { className: "text-neutral-grey-50 mt-1 flex flex-wrap items-center gap-x-3 gap-y-0.5 text-[10px]", children: [agent.nextRunAt && (_jsxs("span", { className: "text-feedback-orange flex items-center gap-0.5", children: [_jsx(Clock, { className: "size-2.5", strokeWidth: 2 }), "Wake: ", formatDateTime(agent.nextRunAt)] })), _jsxs("span", { className: "flex items-center gap-0.5", children: [_jsx(Clock, { className: "size-2.5", strokeWidth: 2 }), lastActivity] }), agent.isShared && agent.ownerName && (_jsxs("span", { className: "flex items-center gap-0.5", children: [_jsx(Users, { className: "size-2.5", strokeWidth: 2 }), "By ", agent.ownerName] })), agent.messageCount !== undefined && agent.messageCount > 0 && (_jsxs("span", { className: "flex items-center gap-0.5", children: [_jsx(MessageSquare, { className: "size-2.5", strokeWidth: 2 }), agent.messageCount, " msg"] })), loadedTriggerCount !== null && loadedTriggerCount > 0 && (_jsxs("span", { className: "flex items-center gap-0.5", children: [_jsx(Bell, { className: "size-2.5", strokeWidth: 2 }), loadedTriggerCount, " trigger", loadedTriggerCount !== 1 ? "s" : ""] })), agent.totalCost !== undefined && agent.totalCost > 0 && (_jsxs("span", { className: "flex items-center gap-0.5", children: [_jsx(Coins, { className: "size-2.5", strokeWidth: 2 }), "$", agent.totalCost.toFixed(2)] }))] })] }), _jsx("div", { className: "flex shrink-0 items-center gap-1 self-center opacity-0 transition-opacity group-hover:opacity-100", children: onDismiss ? (_jsx(CloseButton, { onClick: (e) => {
|
|
89
|
+
return (_jsxs("div", { className: cn("group relative flex cursor-pointer items-center gap-3 rounded-md px-2.5 py-2 transition-colors", attention ? attention.rowTintClass : "hover:bg-neutral-grey-5/70", selected && !attention && "bg-neutral-grey-5"), onClick: handleCardClick, "data-testid": "agent-list-row", "data-agent-id": agent.id, title: `${agent.name}\n${profileLabel}\nLast activity: ${lastActivity}\nID: ${agent.id}\nAlt-click to open in a new pane`, children: [attention && (_jsx("div", { className: cn("absolute top-2 bottom-2 left-0 w-0.5 rounded-r", attention.barClass) })), _jsx(AgentProfileIcon, { svgIcon: agent.profileSvgIcon, selected: selected }), _jsxs("div", { className: "min-w-0 flex-1", children: [_jsxs("div", { className: "flex min-w-0 items-center gap-2", children: [_jsx("p", { className: "text-neutral-grey-50 min-w-0 truncate text-[14px] leading-5 font-normal", children: profileLabel }), !isRunning && (_jsx("span", { className: cn("h-1.5 w-1.5 shrink-0 rounded-full", statusConfig.color, statusConfig.shouldPulse && "animate-pulse"), title: statusConfig.label })), attention && (_jsxs("span", { className: cn("rounded-badge badge-pad-sm text-2xs inline-flex shrink-0 items-center gap-1 font-semibold", attention.chipClass), children: [attention.icon, attention.label] })), agent.isShared && (_jsx("span", { className: "rounded-badge bg-feedback-blue-light badge-pad-sm text-2xs text-feedback-blue shrink-0 font-bold", children: "Shared" }))] }), _jsx("h4", { className: "text-neutral-grey-100 truncate text-[14px] leading-5 font-normal", children: agent.name })] }), _jsx("div", { className: "flex shrink-0 items-center gap-1 self-center opacity-0 transition-opacity group-focus-within:opacity-100 group-hover:opacity-100 has-[[data-state=open]]:opacity-100", children: onDismiss ? (_jsx(CloseButton, { onClick: (e) => {
|
|
114
90
|
e.stopPropagation();
|
|
115
91
|
onDismiss(agent.id, agent.name);
|
|
116
|
-
}, label: "Dismiss" })) : (
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
92
|
+
}, label: "Dismiss" })) : (showOverflowMenu && (
|
|
93
|
+
// modal={false}: a modal menu's body pointer-events lock conflicts
|
|
94
|
+
// with the rename dialog opened from a menu item and leaves the
|
|
95
|
+
// page unclickable after the dialog closes.
|
|
96
|
+
_jsxs(DropdownMenu, { modal: false, children: [_jsx(DropdownMenuTrigger, { asChild: true, children: _jsx("button", { type: "button", onClick: (e) => e.stopPropagation(), className: "text-neutral-grey-50 hover:bg-neutral-grey-5 hover:text-neutral-grey-100 flex h-7 w-7 items-center justify-center rounded-md transition-colors", "aria-label": "Agent actions", title: "Agent actions", "data-testid": "agent-card-menu-trigger", children: _jsx(MoreHorizontal, { className: "size-4", strokeWidth: 2 }) }) }), _jsxs(DropdownMenuContent, { align: "end", onClick: (e) => e.stopPropagation(), children: [onRename && (_jsxs(DropdownMenuItem, { onClick: () => onRename(agent.id, agent.name), "data-testid": "agent-card-menu-rename", children: [_jsx(Pencil, { className: "size-4" }), "Rename"] })), onDelete && (_jsxs(DropdownMenuItem, { variant: "destructive", onClick: (e) => onDelete(agent.id, agent.name, e), "data-testid": "agent-card-menu-delete", children: [_jsx(Trash2, { className: "size-4" }), "Delete"] }))] })] }))) }), isRunning && (_jsx("span", { title: statusConfig.label, className: "text-neutral-grey-100 flex shrink-0 items-center self-center px-1", children: _jsx(Spinner, { size: "sm" }) }))] }, agent.id));
|
|
121
97
|
}
|
|
122
98
|
//# sourceMappingURL=AgentCard.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AgentCard.js","sourceRoot":"","sources":["../../src/agents-view/AgentCard.tsx"],"names":[],"mappings":";
|
|
1
|
+
{"version":3,"file":"AgentCard.js","sourceRoot":"","sources":["../../src/agents-view/AgentCard.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { AiProfile } from "../editor/services/aiService";
|
|
2
|
+
interface AgentGalleryCardProps {
|
|
3
|
+
profile: AiProfile;
|
|
4
|
+
onSelect: (profile: AiProfile) => void;
|
|
5
|
+
/** "grid" renders a tile; "list" renders a full-width row */
|
|
6
|
+
layout?: "grid" | "list";
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* Card for a single agent profile in the "Choose your sidekick" gallery.
|
|
10
|
+
*/
|
|
11
|
+
export declare function AgentGalleryCard({ profile, onSelect, layout, }: AgentGalleryCardProps): import("react/jsx-runtime").JSX.Element;
|
|
12
|
+
export {};
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { cn } from "../lib/utils";
|
|
3
|
+
import { AgentProfileIcon } from "./AgentProfileIcon";
|
|
4
|
+
/**
|
|
5
|
+
* Card for a single agent profile in the "Choose your sidekick" gallery.
|
|
6
|
+
*/
|
|
7
|
+
export function AgentGalleryCard({ profile, onSelect, layout = "grid", }) {
|
|
8
|
+
const displayTitle = profile.displayTitle || profile.name;
|
|
9
|
+
const description = profile.description || "";
|
|
10
|
+
return (_jsxs("button", { type: "button", onClick: () => onSelect(profile), className: cn("group border-border-default hover:border-neutral-grey-50/40 relative flex cursor-pointer items-start gap-4 rounded-lg border bg-white p-4 text-left transition-all duration-200 hover:shadow-md", layout === "grid" ? "min-h-[108px] flex-col sm:flex-row" : "flex-row"), "data-testid": "agent-gallery-card", "data-profile-id": profile.id, children: [_jsx(AgentProfileIcon, { svgIcon: profile.svgIcon, size: "md" }), _jsxs("div", { className: "flex min-w-0 flex-1 flex-col gap-1", children: [_jsx("h3", { className: "text-neutral-grey-100 truncate text-sm font-bold tracking-tight", children: displayTitle }), description && (_jsx("p", { className: cn("text-neutral-grey-50 text-xs leading-relaxed", layout === "grid" ? "line-clamp-3" : "line-clamp-2"), title: description, children: description }))] })] }));
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=AgentGalleryCard.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AgentGalleryCard.js","sourceRoot":"","sources":["../../src/agents-view/AgentGalleryCard.tsx"],"names":[],"mappings":";AAEA,OAAO,EAAE,EAAE,EAAE,MAAM,cAAc,CAAC;AAClC,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAStD;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAAC,EAC/B,OAAO,EACP,QAAQ,EACR,MAAM,GAAG,MAAM,GACO;IACtB,MAAM,YAAY,GAAG,OAAO,CAAC,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;IAC1D,MAAM,WAAW,GAAG,OAAO,CAAC,WAAW,IAAI,EAAE,CAAC;IAE9C,OAAO,CACL,kBACE,IAAI,EAAC,QAAQ,EACb,OAAO,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,EAChC,SAAS,EAAE,EAAE,CACX,iMAAiM,EACjM,MAAM,KAAK,MAAM,CAAC,CAAC,CAAC,oCAAoC,CAAC,CAAC,CAAC,UAAU,CACtE,iBACW,oBAAoB,qBACf,OAAO,CAAC,EAAE,aAE3B,KAAC,gBAAgB,IAAC,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,IAAI,EAAC,IAAI,GAAG,EAExD,eAAK,SAAS,EAAC,oCAAoC,aACjD,aAAI,SAAS,EAAC,iEAAiE,YAC5E,YAAY,GACV,EACJ,WAAW,IAAI,CACd,YACE,SAAS,EAAE,EAAE,CACX,8CAA8C,EAC9C,MAAM,KAAK,MAAM,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,cAAc,CACpD,EACD,KAAK,EAAE,WAAW,YAEjB,WAAW,GACV,CACL,IACG,IACC,CACV,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { AiProfile } from "../editor/services/aiService";
|
|
2
|
+
interface AgentGalleryViewProps {
|
|
3
|
+
onSelectProfile: (profile: AiProfile) => void;
|
|
4
|
+
/** "full" = standalone full-page layout; "pane" = embedded in a workspace pane */
|
|
5
|
+
variant?: "full" | "pane";
|
|
6
|
+
className?: string;
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* Derives the ordered category tab list from the profiles present.
|
|
10
|
+
* "All" is always first; categories sort by their Sitecore sort order.
|
|
11
|
+
*/
|
|
12
|
+
export declare function deriveCategoryTabs(profiles: AiProfile[]): string[];
|
|
13
|
+
/**
|
|
14
|
+
* "Choose your sidekick" — agent profile gallery with category tabs and a
|
|
15
|
+
* grid/list view toggle. Self-loads profiles and filters hidden ones.
|
|
16
|
+
*/
|
|
17
|
+
export declare function AgentGalleryView({ onSelectProfile, variant, className, }: AgentGalleryViewProps): import("react/jsx-runtime").JSX.Element;
|
|
18
|
+
export {};
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { useEffect, useMemo, useState } from "react";
|
|
3
|
+
import { loadAiProfiles } from "../editor/services/aiService";
|
|
4
|
+
import { cn } from "../lib/utils";
|
|
5
|
+
import { SimpleTabs } from "../editor/ui/SimpleTabs";
|
|
6
|
+
import { AgentGalleryCard } from "./AgentGalleryCard";
|
|
7
|
+
import { LayoutGrid, List, Loader2, SearchX } from "lucide-react";
|
|
8
|
+
const ALL_CATEGORY = "All";
|
|
9
|
+
/**
|
|
10
|
+
* Derives the ordered category tab list from the profiles present.
|
|
11
|
+
* "All" is always first; categories sort by their Sitecore sort order.
|
|
12
|
+
*/
|
|
13
|
+
export function deriveCategoryTabs(profiles) {
|
|
14
|
+
const orderByCategory = new Map();
|
|
15
|
+
for (const profile of profiles) {
|
|
16
|
+
if (!profile.category)
|
|
17
|
+
continue;
|
|
18
|
+
const order = profile.categoryOrder ?? Number.MAX_SAFE_INTEGER;
|
|
19
|
+
const existing = orderByCategory.get(profile.category);
|
|
20
|
+
if (existing === undefined || order < existing) {
|
|
21
|
+
orderByCategory.set(profile.category, order);
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
const categories = [...orderByCategory.entries()]
|
|
25
|
+
.sort((a, b) => a[1] - b[1] || a[0].localeCompare(b[0]))
|
|
26
|
+
.map(([name]) => name);
|
|
27
|
+
return [ALL_CATEGORY, ...categories];
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* "Choose your sidekick" — agent profile gallery with category tabs and a
|
|
31
|
+
* grid/list view toggle. Self-loads profiles and filters hidden ones.
|
|
32
|
+
*/
|
|
33
|
+
export function AgentGalleryView({ onSelectProfile, variant = "full", className, }) {
|
|
34
|
+
const [profiles, setProfiles] = useState([]);
|
|
35
|
+
const [loading, setLoading] = useState(true);
|
|
36
|
+
const [error, setError] = useState(null);
|
|
37
|
+
const [activeTab, setActiveTab] = useState(0);
|
|
38
|
+
const [layout, setLayout] = useState("grid");
|
|
39
|
+
const loadProfiles = async () => {
|
|
40
|
+
try {
|
|
41
|
+
setLoading(true);
|
|
42
|
+
setError(null);
|
|
43
|
+
const profileList = await loadAiProfiles();
|
|
44
|
+
setProfiles(profileList.filter((p) => !p.hiddenFromOverview));
|
|
45
|
+
}
|
|
46
|
+
catch (err) {
|
|
47
|
+
console.error("Failed to load profiles:", err);
|
|
48
|
+
setError(err?.message || "Failed to load profiles");
|
|
49
|
+
}
|
|
50
|
+
finally {
|
|
51
|
+
setLoading(false);
|
|
52
|
+
}
|
|
53
|
+
};
|
|
54
|
+
useEffect(() => {
|
|
55
|
+
loadProfiles();
|
|
56
|
+
}, []);
|
|
57
|
+
const categories = useMemo(() => deriveCategoryTabs(profiles), [profiles]);
|
|
58
|
+
const activeCategory = categories[activeTab] ?? ALL_CATEGORY;
|
|
59
|
+
const visibleProfiles = useMemo(() => {
|
|
60
|
+
if (activeCategory === ALL_CATEGORY)
|
|
61
|
+
return profiles;
|
|
62
|
+
return profiles.filter((p) => p.category === activeCategory);
|
|
63
|
+
}, [profiles, activeCategory]);
|
|
64
|
+
if (loading) {
|
|
65
|
+
return (_jsxs("div", { className: "bg-neutral-grey-5 flex h-full flex-col items-center justify-center text-center", children: [_jsx(Loader2, { className: "text-neutral-grey-50 size-8 animate-spin" }), _jsx("p", { className: "text-neutral-grey-50 mt-4 text-sm font-medium", children: "Loading agents..." })] }));
|
|
66
|
+
}
|
|
67
|
+
if (error) {
|
|
68
|
+
return (_jsxs("div", { className: "bg-neutral-grey-5 flex h-full flex-col items-center justify-center text-center", children: [_jsx("p", { className: "text-feedback-red mb-3 text-sm", children: error }), _jsx("button", { type: "button", onClick: loadProfiles, className: "bg-highlight-100 hover:bg-highlight-100/80 rounded px-4 py-2 text-xs text-white", children: "Retry" })] }));
|
|
69
|
+
}
|
|
70
|
+
return (_jsx("div", { className: cn("@container bg-neutral-grey-5 h-full overflow-y-auto", variant === "full" ? "px-8 py-10 lg:px-14" : "px-4 py-6 lg:px-6", className), "data-testid": "agent-gallery", children: _jsxs("div", { className: "mx-auto max-w-6xl", children: [_jsx("h1", { className: cn("text-neutral-grey-100 font-semibold tracking-tight", variant === "full" ? "text-3xl" : "text-2xl"), children: "Choose your sidekick" }), _jsx("p", { className: "text-neutral-grey-50 mt-2 text-sm", children: "Each agent is built for a specific task \u2013 find yours and start creating!" }), _jsxs("div", { className: "border-border-default mt-6 flex items-end justify-between gap-4 border-b", children: [categories.length > 1 ? (_jsx(SimpleTabs, { tabs: categories.map((category) => ({
|
|
71
|
+
id: `agent-gallery-tab-${category}`,
|
|
72
|
+
label: category,
|
|
73
|
+
content: null,
|
|
74
|
+
testId: `agent-gallery-tab-${category}`,
|
|
75
|
+
})), activeTab: activeTab, setActiveTab: setActiveTab, hideContent: true, variant: "large", className: "min-w-0", testId: "agent-gallery-tabs" })) : (_jsx("div", {})), _jsxs("div", { className: "mb-2 flex shrink-0 items-center gap-0.5", children: [_jsx("button", { type: "button", onClick: () => setLayout("list"), className: cn("flex size-8 items-center justify-center rounded transition-colors", layout === "list"
|
|
76
|
+
? "text-neutral-grey-100 bg-neutral-grey-5"
|
|
77
|
+
: "text-neutral-grey-50 hover:text-neutral-grey-100"), title: "List view", "aria-label": "List view", "data-testid": "agent-gallery-list-toggle", children: _jsx(List, { className: "size-4.5", strokeWidth: 2 }) }), _jsx("button", { type: "button", onClick: () => setLayout("grid"), className: cn("flex size-8 items-center justify-center rounded transition-colors", layout === "grid"
|
|
78
|
+
? "text-neutral-grey-100 bg-neutral-grey-5"
|
|
79
|
+
: "text-neutral-grey-50 hover:text-neutral-grey-100"), title: "Grid view", "aria-label": "Grid view", "data-testid": "agent-gallery-grid-toggle", children: _jsx(LayoutGrid, { className: "size-4.5", strokeWidth: 2 }) })] })] }), visibleProfiles.length > 0 ? (_jsx("div", { className: cn("mt-6 gap-4",
|
|
80
|
+
// Column count follows the pane width (container query), not the
|
|
81
|
+
// viewport, so the gallery adapts inside narrow split panes too.
|
|
82
|
+
layout === "grid"
|
|
83
|
+
? "@lg:grid-cols-2 @3xl:grid-cols-3 @5xl:grid-cols-4 grid grid-cols-1"
|
|
84
|
+
: "flex flex-col"), children: visibleProfiles.map((profile) => (_jsx(AgentGalleryCard, { profile: profile, onSelect: onSelectProfile, layout: layout }, profile.id))) })) : (_jsxs("div", { className: "flex flex-col items-center justify-center py-16 text-center", children: [_jsx("div", { className: "bg-neutral-grey-5 text-neutral-grey-50 mb-3 flex size-12 items-center justify-center rounded", children: _jsx(SearchX, { size: 24 }) }), _jsx("h4", { className: "text-neutral-grey-100 text-sm font-semibold", children: "No agents available" }), _jsx("p", { className: "text-neutral-grey-50 mt-1 text-xs", children: activeCategory === ALL_CATEGORY
|
|
85
|
+
? "No agent profiles are configured yet."
|
|
86
|
+
: "No agents in this category yet." })] }))] }) }));
|
|
87
|
+
}
|
|
88
|
+
//# sourceMappingURL=AgentGalleryView.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AgentGalleryView.js","sourceRoot":"","sources":["../../src/agents-view/AgentGalleryView.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
type AgentProfileIconSize = "sm" | "md" | "lg";
|
|
2
|
+
interface AgentProfileIconProps {
|
|
3
|
+
svgIcon?: string | null;
|
|
4
|
+
selected?: boolean;
|
|
5
|
+
size?: AgentProfileIconSize;
|
|
6
|
+
className?: string;
|
|
7
|
+
}
|
|
8
|
+
export declare function AgentProfileIcon({ svgIcon, selected, size, className, }: AgentProfileIconProps): import("react/jsx-runtime").JSX.Element;
|
|
9
|
+
export {};
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { sanitizeSvg } from "../lib/sanitize";
|
|
3
|
+
import { cn } from "../lib/utils";
|
|
4
|
+
import { ParheliaAgentIcon } from "../editor/ui/Icons";
|
|
5
|
+
const containerSizeClasses = {
|
|
6
|
+
sm: "size-10 rounded-md",
|
|
7
|
+
md: "size-12 rounded-lg",
|
|
8
|
+
lg: "size-16 rounded-2xl",
|
|
9
|
+
};
|
|
10
|
+
const iconSizeClasses = {
|
|
11
|
+
sm: "size-5",
|
|
12
|
+
md: "size-6",
|
|
13
|
+
lg: "size-8",
|
|
14
|
+
};
|
|
15
|
+
const fallbackSizes = {
|
|
16
|
+
sm: 22,
|
|
17
|
+
md: 24,
|
|
18
|
+
lg: 32,
|
|
19
|
+
};
|
|
20
|
+
const fallbackStrokeWidths = {
|
|
21
|
+
sm: 1.7,
|
|
22
|
+
md: 1.5,
|
|
23
|
+
lg: 1.5,
|
|
24
|
+
};
|
|
25
|
+
export function AgentProfileIcon({ svgIcon, selected = false, size = "sm", className, }) {
|
|
26
|
+
return (_jsx("div", { className: cn("relative flex shrink-0 items-center justify-center border transition-colors", containerSizeClasses[size], "bg-neutral-grey-5 text-neutral-grey-100 border-transparent", className), "data-testid": "agent-profile-icon", "data-selected": selected ? "true" : undefined, children: svgIcon ? (_jsx("div", { className: cn("flex items-center justify-center [&>svg]:h-full [&>svg]:w-full", iconSizeClasses[size]), dangerouslySetInnerHTML: { __html: sanitizeSvg(svgIcon) } })) : (_jsx(ParheliaAgentIcon, { size: fallbackSizes[size], strokeWidth: fallbackStrokeWidths[size], className: "text-current" })) }));
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=AgentProfileIcon.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AgentProfileIcon.js","sourceRoot":"","sources":["../../src/agents-view/AgentProfileIcon.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EAAE,EAAE,EAAE,MAAM,cAAc,CAAC;AAClC,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAWvD,MAAM,oBAAoB,GAAyC;IACjE,EAAE,EAAE,oBAAoB;IACxB,EAAE,EAAE,oBAAoB;IACxB,EAAE,EAAE,qBAAqB;CAC1B,CAAC;AAEF,MAAM,eAAe,GAAyC;IAC5D,EAAE,EAAE,QAAQ;IACZ,EAAE,EAAE,QAAQ;IACZ,EAAE,EAAE,QAAQ;CACb,CAAC;AAEF,MAAM,aAAa,GAAyC;IAC1D,EAAE,EAAE,EAAE;IACN,EAAE,EAAE,EAAE;IACN,EAAE,EAAE,EAAE;CACP,CAAC;AAEF,MAAM,oBAAoB,GAAyC;IACjE,EAAE,EAAE,GAAG;IACP,EAAE,EAAE,GAAG;IACP,EAAE,EAAE,GAAG;CACR,CAAC;AAEF,MAAM,UAAU,gBAAgB,CAAC,EAC/B,OAAO,EACP,QAAQ,GAAG,KAAK,EAChB,IAAI,GAAG,IAAI,EACX,SAAS,GACa;IACtB,OAAO,CACL,cACE,SAAS,EAAE,EAAE,CACX,6EAA6E,EAC7E,oBAAoB,CAAC,IAAI,CAAC,EAC1B,4DAA4D,EAC5D,SAAS,CACV,iBACW,oBAAoB,mBACjB,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,YAE3C,OAAO,CAAC,CAAC,CAAC,CACT,cACE,SAAS,EAAE,EAAE,CACX,gEAAgE,EAChE,eAAe,CAAC,IAAI,CAAC,CACtB,EACD,uBAAuB,EAAE,EAAE,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,EAAE,GACzD,CACH,CAAC,CAAC,CAAC,CACF,KAAC,iBAAiB,IAChB,IAAI,EAAE,aAAa,CAAC,IAAI,CAAC,EACzB,WAAW,EAAE,oBAAoB,CAAC,IAAI,CAAC,EACvC,SAAS,EAAC,cAAc,GACxB,CACH,GACG,CACP,CAAC;AACJ,CAAC"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import React from "react";
|
|
1
2
|
import { Agent } from "../editor/services/agentService";
|
|
2
3
|
/**
|
|
3
4
|
* Props for AgentsView component
|
|
@@ -23,10 +24,14 @@ interface AgentsViewProps {
|
|
|
23
24
|
* titlebar) already provides it.
|
|
24
25
|
*/
|
|
25
26
|
hideNewAgentButton?: boolean;
|
|
27
|
+
/**
|
|
28
|
+
* Optional actions rendered beside the New Session button.
|
|
29
|
+
*/
|
|
30
|
+
toolbarActions?: React.ReactNode;
|
|
26
31
|
}
|
|
27
32
|
/**
|
|
28
33
|
* Unified agents overview: search/filter, active agents and closed history.
|
|
29
34
|
* Creating a new agent happens in a modal accessed from the toolbar.
|
|
30
35
|
*/
|
|
31
|
-
export declare function AgentsView({ onSelectAgent, selectedAgentId, compact, onRequestCreateAgent, hideNewAgentButton, }?: AgentsViewProps): import("react/jsx-runtime").JSX.Element;
|
|
36
|
+
export declare function AgentsView({ onSelectAgent, selectedAgentId, compact, onRequestCreateAgent, hideNewAgentButton, toolbarActions, }?: AgentsViewProps): import("react/jsx-runtime").JSX.Element;
|
|
32
37
|
export {};
|
|
@@ -1,6 +1,6 @@
|
|
|
1
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 { getAgentsGrouped, getClosedAgentsByProfile, deleteAgent, } from "../editor/services/agentService";
|
|
3
|
+
import { getAgentsGrouped, getClosedAgentsByProfile, deleteAgent, renameAgent, } from "../editor/services/agentService";
|
|
4
4
|
import { parseAgentRunStatusData, shouldIgnoreReplayRunStart, } from "../editor/services/agentStatus";
|
|
5
5
|
import { cn } from "../lib/utils";
|
|
6
6
|
import { RefreshCw, List, Layers, Plus, ArrowLeft } from "lucide-react";
|
|
@@ -11,13 +11,15 @@ import { AgentCard } from "./AgentCard";
|
|
|
11
11
|
import { ProfileAgentsGroup } from "./ProfileAgentsGroup";
|
|
12
12
|
import { DateAgentsGroup } from "./DateAgentsGroup";
|
|
13
13
|
import { Switch } from "../components/ui/switch";
|
|
14
|
-
import {
|
|
14
|
+
import { Button } from "../components/ui/button";
|
|
15
|
+
import { AgentGalleryView } from "./AgentGalleryView";
|
|
16
|
+
import { RenameAgentDialog } from "./RenameAgentDialog";
|
|
15
17
|
import { Spinner } from "../editor/ui/Spinner";
|
|
16
18
|
/**
|
|
17
19
|
* Unified agents overview: search/filter, active agents and closed history.
|
|
18
20
|
* Creating a new agent happens in a modal accessed from the toolbar.
|
|
19
21
|
*/
|
|
20
|
-
export function AgentsView({ onSelectAgent, selectedAgentId, compact = false, onRequestCreateAgent, hideNewAgentButton = false, } = {}) {
|
|
22
|
+
export function AgentsView({ onSelectAgent, selectedAgentId, compact = false, onRequestCreateAgent, hideNewAgentButton = false, toolbarActions, } = {}) {
|
|
21
23
|
const getAgentSortDate = useCallback((agent) => agent.lastMessageDate || agent.updatedDate, []);
|
|
22
24
|
const sortAgentsByRecentActivity = useCallback((agents) => [...agents].sort((a, b) => new Date(getAgentSortDate(b)).getTime() -
|
|
23
25
|
new Date(getAgentSortDate(a)).getTime()), [getAgentSortDate]);
|
|
@@ -40,6 +42,7 @@ export function AgentsView({ onSelectAgent, selectedAgentId, compact = false, on
|
|
|
40
42
|
const [showOnlyMyAgents, setShowOnlyMyAgents] = useState(true);
|
|
41
43
|
const [historyViewMode, setHistoryViewMode] = useState("flat");
|
|
42
44
|
const [viewMode, setViewMode] = useState("list");
|
|
45
|
+
const [renameTarget, setRenameTarget] = useState(null);
|
|
43
46
|
const handleNewAgentClick = () => {
|
|
44
47
|
if (onRequestCreateAgent) {
|
|
45
48
|
onRequestCreateAgent();
|
|
@@ -268,6 +271,28 @@ export function AgentsView({ onSelectAgent, selectedAgentId, compact = false, on
|
|
|
268
271
|
showCancel: true,
|
|
269
272
|
});
|
|
270
273
|
};
|
|
274
|
+
const handleRenameAgent = (agentId, agentName) => {
|
|
275
|
+
setRenameTarget({ id: agentId, name: agentName });
|
|
276
|
+
};
|
|
277
|
+
const performRename = async (newName) => {
|
|
278
|
+
if (!renameTarget)
|
|
279
|
+
return;
|
|
280
|
+
const agentId = renameTarget.id;
|
|
281
|
+
try {
|
|
282
|
+
await renameAgent(agentId, newName);
|
|
283
|
+
// Optimistic local update; the agent:info:updated WS message reconciles
|
|
284
|
+
// other views.
|
|
285
|
+
setActiveAgents((prev) => prev.map((a) => (a.id === agentId ? { ...a, name: newName } : a)));
|
|
286
|
+
setProfileGroups((prevGroups) => prevGroups.map((group) => ({
|
|
287
|
+
...group,
|
|
288
|
+
agents: group.agents.map((a) => a.id === agentId ? { ...a, name: newName } : a),
|
|
289
|
+
})));
|
|
290
|
+
}
|
|
291
|
+
catch (err) {
|
|
292
|
+
console.error("Failed to rename agent:", err);
|
|
293
|
+
editContext?.showToast(`Failed to rename chat: ${err?.message || "Unknown error"}`);
|
|
294
|
+
}
|
|
295
|
+
};
|
|
271
296
|
const handleAgentClick = (agent, event) => {
|
|
272
297
|
if (onSelectAgent) {
|
|
273
298
|
onSelectAgent(agent, { split: !!event?.altKey });
|
|
@@ -364,22 +389,25 @@ export function AgentsView({ onSelectAgent, selectedAgentId, compact = false, on
|
|
|
364
389
|
if (initialLoad && loading) {
|
|
365
390
|
return (_jsxs("div", { className: "flex h-full items-center justify-center gap-2", children: [_jsx(Spinner, { size: "sm" }), _jsx("div", { className: "text-neutral-grey-50 text-sm", children: "Loading agents..." })] }));
|
|
366
391
|
}
|
|
367
|
-
const newAgentButton = viewMode === "list" && !hideNewAgentButton && (_jsxs(
|
|
368
|
-
return (_jsxs("div", { className: "absolute inset-0 flex flex-col bg-
|
|
369
|
-
? "
|
|
370
|
-
: "text-neutral-grey-50 hover:text-neutral-grey-100"), title: "Grouped by profile", "aria-label": "Grouped by profile", children: _jsx(Layers, { className: "size-
|
|
371
|
-
? "
|
|
372
|
-
: "text-neutral-grey-50 hover:text-neutral-grey-100"), title: "Grouped by date", "aria-label": "Grouped by date", children: _jsx(List, { className: "size-
|
|
392
|
+
const newAgentButton = viewMode === "list" && !hideNewAgentButton && (_jsxs(Button, { type: "button", variant: "outline", size: "lg", onClick: handleNewAgentClick, className: cn("border-border-default hover:border-neutral-grey-100 hover:bg-neutral-grey-5 h-[38px] justify-center gap-3 rounded bg-white text-[15px] font-semibold shadow-none", toolbarActions ? "min-w-0 flex-1" : "w-full"), "data-testid": "add-agent-button", children: [_jsx("span", { children: "Start new chat" }), _jsx(Plus, { className: "size-5", strokeWidth: 2.25 })] }));
|
|
393
|
+
return (_jsxs("div", { className: "absolute inset-0 flex flex-col bg-white", children: [!compact && (_jsx(PageHeader, { title: "AI Agents", description: "Build, run and orchestrate your AI workforce", variant: "compact", className: "border-border-default border-b" })), _jsx("div", { className: "relative flex flex-1 flex-col overflow-hidden", children: viewMode === "create" ? (_jsxs(_Fragment, { children: [_jsx("div", { className: "border-border-default shrink-0 border-b bg-white px-6 py-4", children: _jsxs("div", { className: "flex items-center gap-3", children: [_jsxs("button", { type: "button", onClick: () => setViewMode("list"), className: "text-neutral-grey-50 hover:bg-neutral-grey-5 hover:text-neutral-grey-100 inline-flex items-center gap-1.5 rounded-md px-2 py-1.5 text-[13px] font-medium transition-colors", "data-testid": "agents-create-back-button", children: [_jsx(ArrowLeft, { className: "size-4", strokeWidth: 2 }), "Back"] }), _jsx("span", { className: "text-neutral-grey-50", children: "/" }), _jsx("h2", { className: "text-neutral-grey-100 text-[15px] font-semibold tracking-tight", children: "New Agent" }), _jsx("p", { className: "text-neutral-grey-50 ml-1 hidden text-[12px] sm:inline", children: "Pick a profile to start with" })] }) }), _jsx("div", { className: "relative flex-1 overflow-y-auto bg-white", children: _jsx(AgentGalleryView, { variant: "pane", onSelectProfile: handleCreateAgent }) })] })) : (_jsxs(_Fragment, { children: [_jsx("div", { className: "border-border-default shrink-0 border-b bg-white px-4 py-4", children: _jsxs("div", { className: "space-y-3", children: [(newAgentButton || toolbarActions) && (_jsxs("div", { className: "flex min-w-0 items-center gap-2", children: [newAgentButton, toolbarActions && (_jsx("div", { className: "flex shrink-0 items-center gap-1", children: toolbarActions }))] })), _jsx("div", { className: "min-w-0", children: _jsx(FilterInput, { value: searchTerm, onChange: setSearchTerm, placeholder: "Search...", loading: loading && !initialLoad, size: "sm", inputClassName: "text-sm placeholder:text-neutral-grey-50" }) }), _jsxs("div", { className: "flex min-w-0 items-center gap-3", children: [profileGroups.length > 0 && (_jsxs("div", { className: "border-border-default bg-neutral-grey-5 flex h-10 shrink-0 items-center overflow-hidden rounded border p-0.5", children: [_jsx("button", { type: "button", onClick: () => setHistoryViewMode("grouped"), className: cn("flex size-9 items-center justify-center rounded transition-colors", historyViewMode === "grouped"
|
|
394
|
+
? "text-neutral-grey-100 bg-white shadow-sm"
|
|
395
|
+
: "text-neutral-grey-50 hover:text-neutral-grey-100"), title: "Grouped by profile", "aria-label": "Grouped by profile", children: _jsx(Layers, { className: "size-5", strokeWidth: 2 }) }), _jsx("button", { type: "button", onClick: () => setHistoryViewMode("flat"), className: cn("flex size-9 items-center justify-center rounded transition-colors", historyViewMode === "flat"
|
|
396
|
+
? "text-neutral-grey-100 bg-white shadow-sm"
|
|
397
|
+
: "text-neutral-grey-50 hover:text-neutral-grey-100"), title: "Grouped by date", "aria-label": "Grouped by date", children: _jsx(List, { className: "size-5", strokeWidth: 2 }) })] })), _jsxs("label", { className: "text-neutral-grey-50 hover:text-neutral-grey-100 flex min-h-10 min-w-0 flex-1 cursor-pointer items-center justify-between gap-3 rounded text-[14px] font-medium transition-colors", children: [_jsx("span", { className: "min-w-0 truncate select-none", children: "Show just my agents" }), _jsx(Switch, { checked: showOnlyMyAgents, onCheckedChange: (checked) => setShowOnlyMyAgents(checked === true), className: "data-[state=checked]:bg-neutral-grey-100 data-[state=unchecked]:bg-neutral-grey-15 h-[24px] w-[44px] p-[2px] shadow-none [&_[data-slot=switch-thumb]]:size-[20px] [&_[data-slot=switch-thumb]]:data-[state=checked]:translate-x-[20px]" })] })] })] }) }), _jsxs("div", { className: "relative flex-1 overflow-y-auto bg-white", 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: "text-neutral-grey-50 flex items-center gap-2 text-sm", 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: "text-feedback-red mb-4 text-sm", children: error }), _jsx("button", { onClick: handleRefresh, className: "bg-feedback-blue hover:bg-feedback-blue rounded px-4 py-2 text-xs text-white", children: "Retry" })] }) })) : totalActiveCount === 0 &&
|
|
373
398
|
totalClosedCount === 0 &&
|
|
374
399
|
!loading ? (_jsx("div", { className: "text-neutral-grey-50 flex h-full items-center justify-center text-sm", children: searchTerm.trim()
|
|
375
400
|
? "No agents match your search"
|
|
376
|
-
: "No agents found" })) : (_jsxs("div", { className: cn("space-y-4
|
|
401
|
+
: "No agents found" })) : (_jsxs("div", { className: cn("space-y-5 px-4 py-4", loading && "opacity-60"), children: [activeAgents.length > 0 && (_jsxs("div", { className: "space-y-1.5", children: [_jsx("div", { className: "text-neutral-grey-50 py-1.5 text-[14px] leading-5 font-medium", children: "Active" }), _jsx("div", { className: "space-y-1", children: sortedActiveAgents.map((agent) => (_jsx(AgentCard, { agent: agent, onClick: handleAgentClick, onResume: handleOpenAgent, onDelete: handleDeleteAgent, onRename: handleRenameAgent, formatDateTime: formatDateTime, selected: selectedAgentId === agent.id }, agent.id))) })] })), profileGroups.length > 0 && (_jsx("div", { className: "space-y-2", children: historyViewMode === "grouped" ? (_jsx("div", { className: "space-y-2 bg-white", children: profileGroups.map((profileGroup) => {
|
|
377
402
|
const profileKey = profileGroup.profileId || "null";
|
|
378
403
|
const isExpanded = expandedProfiles.has(profileKey);
|
|
379
404
|
const isLoadingMore = loadingMoreForProfile === profileGroup.profileId;
|
|
380
405
|
const hasMore = profileGroup.agents.length <
|
|
381
406
|
profileGroup.totalClosedCount;
|
|
382
|
-
return (_jsx(ProfileAgentsGroup, { profileGroup: profileGroup, isExpanded: isExpanded, isLoadingMore: isLoadingMore, hasMore: hasMore, onToggle: () => handleToggleProfile(profileGroup.profileId), onLoadMore: () => handleLoadMoreForProfile(profileGroup.profileId), onAgentClick: handleAgentClick, onResumeAgent: handleOpenAgent, onDeleteAgent: handleDeleteAgent, formatDateTime: formatDateTime, selectedAgentId: selectedAgentId }, profileKey));
|
|
383
|
-
}) })) : (_jsx("div", { className: "space-y-
|
|
407
|
+
return (_jsx(ProfileAgentsGroup, { profileGroup: profileGroup, isExpanded: isExpanded, isLoadingMore: isLoadingMore, hasMore: hasMore, onToggle: () => handleToggleProfile(profileGroup.profileId), onLoadMore: () => handleLoadMoreForProfile(profileGroup.profileId), onAgentClick: handleAgentClick, onResumeAgent: handleOpenAgent, onDeleteAgent: handleDeleteAgent, onRenameAgent: handleRenameAgent, formatDateTime: formatDateTime, selectedAgentId: selectedAgentId }, profileKey));
|
|
408
|
+
}) })) : (_jsx("div", { className: "space-y-5", 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, onDeleteAgent: handleDeleteAgent, onRenameAgent: handleRenameAgent, formatDateTime: formatDateTime, selectedAgentId: selectedAgentId }, bucket.key))) })) }))] }))] })] })) }), _jsx(RenameAgentDialog, { open: renameTarget !== null, initialName: renameTarget?.name ?? "", onOpenChange: (open) => {
|
|
409
|
+
if (!open)
|
|
410
|
+
setRenameTarget(null);
|
|
411
|
+
}, onRename: performRename })] }));
|
|
384
412
|
}
|
|
385
413
|
//# sourceMappingURL=AgentsView.js.map
|