@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
|
@@ -3,7 +3,7 @@ import { lazy, Suspense, useCallback, useEffect, useMemo, useRef, useState, } fr
|
|
|
3
3
|
import { toast } from "sonner";
|
|
4
4
|
import { cn } from "../lib/utils";
|
|
5
5
|
import { Splitter } from "../editor/ui/Splitter";
|
|
6
|
-
import { deleteProject, getExecutionState, getGraphLayout, getProject, getProjects, getTasks, getDependencies, restartProject, runOrchestrator, triggerPlanning,
|
|
6
|
+
import { deleteProject, getExecutionState, getGraphLayout, getProject, getProjects, getTasks, getMyTasks, getDependencies, restartProject, runOrchestrator, triggerPlanning, updateTask, } from "./services/taskService";
|
|
7
7
|
import { loadAiProfiles } from "../editor/services/aiService";
|
|
8
8
|
import { useEditContext } from "../editor/client/editContext";
|
|
9
9
|
import { LicenseFeatures, useFeature } from "../licensing";
|
|
@@ -13,11 +13,12 @@ import { WizardView } from "./views/WizardView";
|
|
|
13
13
|
import { SimpleTabs } from "../editor/ui/SimpleTabs";
|
|
14
14
|
import { TaskDetailPanel, } from "./components/TaskDetailPanel";
|
|
15
15
|
import { TaskAgentPanel } from "./components/TaskAgentPanel";
|
|
16
|
-
import { ProjectDashboard, } from "./components/ProjectDashboard";
|
|
16
|
+
import { ProjectDashboard, ProjectKpisPanel, } from "./components/ProjectDashboard";
|
|
17
17
|
import { CreateTaskDialog } from "./components/CreateTaskDialog";
|
|
18
18
|
import { CreateProjectDialog } from "./components/CreateProjectDialog";
|
|
19
|
-
import {
|
|
20
|
-
import {
|
|
19
|
+
import { ProjectSettingsPanel } from "./components/ProjectSettingsDialog";
|
|
20
|
+
import { ProjectPropertiesPanel } from "./components/ProjectPropertiesPanel";
|
|
21
|
+
import { TaskBoardHomeView } from "./components/TaskBoardHomeView";
|
|
21
22
|
import { EditorSlotContextProvider } from "../editor/views/editorSlotContext";
|
|
22
23
|
import { SingleEditView } from "../editor/views/SingleEditView";
|
|
23
24
|
import { Select } from "../components/ui/select";
|
|
@@ -30,8 +31,7 @@ import { normalizeTaskStatus } from "./taskStatus";
|
|
|
30
31
|
import { getTaskExecutionDisplay, } from "./taskExecutionStatus";
|
|
31
32
|
import { indexTaskExecutionRecords, overlayTaskExecutionList, } from "./taskExecutionRecords";
|
|
32
33
|
import { WizardCommunicationCenter } from "./components/WizardCommunicationCenter";
|
|
33
|
-
import {
|
|
34
|
-
import { Loader2, Plus } from "lucide-react";
|
|
34
|
+
import { Loader2 } from "lucide-react";
|
|
35
35
|
import { MainContentTree } from "../editor/sidebar/MainContentTree";
|
|
36
36
|
import { useTaskBoardAgentPanelState } from "./useTaskBoardAgentPanelState";
|
|
37
37
|
const DependencyGraphView = lazy(() => import("./views/DependencyGraphView").then((module) => ({
|
|
@@ -48,8 +48,19 @@ function TaskboardPreviewEditor() {
|
|
|
48
48
|
const TASKBOARD_PROJECT_QUERY_KEY = "tbProjectId";
|
|
49
49
|
const TASKBOARD_TASK_QUERY_KEY = "tbTaskId";
|
|
50
50
|
const TASKBOARD_VIEW_QUERY_KEY = "tbView";
|
|
51
|
-
const TASKBOARD_WIZARD_QUERY_KEY = "tbWizard";
|
|
52
51
|
const WS_REFRESH_DELAY_MS = 500;
|
|
52
|
+
const TASKBOARD_VIEW_TAB_IDS = [
|
|
53
|
+
"overview",
|
|
54
|
+
"kanban",
|
|
55
|
+
"list",
|
|
56
|
+
"graph",
|
|
57
|
+
"kpis",
|
|
58
|
+
"settings",
|
|
59
|
+
"properties",
|
|
60
|
+
];
|
|
61
|
+
function getTaskBoardViewTabIndex(view) {
|
|
62
|
+
return TASKBOARD_VIEW_TAB_IDS.indexOf(view);
|
|
63
|
+
}
|
|
53
64
|
function getInitialQueryValue(queryKey) {
|
|
54
65
|
if (typeof window === "undefined")
|
|
55
66
|
return null;
|
|
@@ -58,15 +69,14 @@ function getInitialQueryValue(queryKey) {
|
|
|
58
69
|
}
|
|
59
70
|
function getInitialViewTabIndex() {
|
|
60
71
|
const view = getInitialQueryValue(TASKBOARD_VIEW_QUERY_KEY)?.toLowerCase();
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
}
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
return value === "true" || value === "1";
|
|
72
|
+
const index = TASKBOARD_VIEW_TAB_IDS.indexOf(view);
|
|
73
|
+
if (index < 0) {
|
|
74
|
+
const legacyWizardMode = getInitialQueryValue("tbWizard")?.toLowerCase();
|
|
75
|
+
if (legacyWizardMode === "true" || legacyWizardMode === "1") {
|
|
76
|
+
return getTaskBoardViewTabIndex("overview");
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
return index >= 0 ? index : getTaskBoardViewTabIndex("kanban");
|
|
70
80
|
}
|
|
71
81
|
function getTaskBoardStateFromUrl() {
|
|
72
82
|
const projectId = getInitialQueryValue(TASKBOARD_PROJECT_QUERY_KEY);
|
|
@@ -74,7 +84,6 @@ function getTaskBoardStateFromUrl() {
|
|
|
74
84
|
projectId,
|
|
75
85
|
taskId: projectId ? getInitialQueryValue(TASKBOARD_TASK_QUERY_KEY) : null,
|
|
76
86
|
activeTab: getInitialViewTabIndex(),
|
|
77
|
-
isWizardMode: getInitialWizardMode(),
|
|
78
87
|
};
|
|
79
88
|
}
|
|
80
89
|
function getTaskExecutionRecordById(recordsByTaskId, taskId) {
|
|
@@ -154,11 +163,15 @@ export function TaskBoardWorkspace() {
|
|
|
154
163
|
const [selectedTaskId, setSelectedTaskId] = useState(() => getInitialQueryValue(TASKBOARD_TASK_QUERY_KEY));
|
|
155
164
|
const [selectedTaskSource, setSelectedTaskSource] = useState(() => getInitialQueryValue(TASKBOARD_TASK_QUERY_KEY) ? "system" : null);
|
|
156
165
|
const [activeTab, setActiveTab] = useState(() => getInitialViewTabIndex());
|
|
157
|
-
const
|
|
166
|
+
const activeViewTabId = TASKBOARD_VIEW_TAB_IDS[activeTab] ?? "kanban";
|
|
167
|
+
const isOverviewView = activeViewTabId === "overview";
|
|
168
|
+
const isListView = activeViewTabId === "list";
|
|
169
|
+
const isGraphView = activeViewTabId === "graph";
|
|
170
|
+
const isKpisView = activeViewTabId === "kpis";
|
|
171
|
+
const isSettingsView = activeViewTabId === "settings";
|
|
172
|
+
const isPropertiesView = activeViewTabId === "properties";
|
|
158
173
|
const [createDialogOpen, setCreateDialogOpen] = useState(false);
|
|
159
174
|
const [createProjectOpen, setCreateProjectOpen] = useState(false);
|
|
160
|
-
const [settingsProjectId, setSettingsProjectId] = useState(null);
|
|
161
|
-
const [savingProjectStatus, setSavingProjectStatus] = useState(false);
|
|
162
175
|
const [runningOrchestrator, setRunningOrchestrator] = useState(false);
|
|
163
176
|
const [showAllProjects, setShowAllProjects] = useState(false);
|
|
164
177
|
const [isProjectsLoading, setIsProjectsLoading] = useState(false);
|
|
@@ -223,7 +236,6 @@ export function TaskBoardWorkspace() {
|
|
|
223
236
|
setSelectedProjectId(nextState.projectId);
|
|
224
237
|
setTaskSelection(nextState.taskId, { source: "system" });
|
|
225
238
|
setActiveTab(nextState.activeTab);
|
|
226
|
-
setIsWizardMode(nextState.isWizardMode);
|
|
227
239
|
setWizardForceOverview(false);
|
|
228
240
|
}, [setTaskSelection]);
|
|
229
241
|
const isProjectWithinSelectedTree = useCallback((projectId, currentProjectId) => {
|
|
@@ -269,9 +281,48 @@ export function TaskBoardWorkspace() {
|
|
|
269
281
|
cancelled = true;
|
|
270
282
|
};
|
|
271
283
|
}, [canUseAi]);
|
|
284
|
+
useEffect(() => {
|
|
285
|
+
if (!editContext?.user?.name) {
|
|
286
|
+
setTaskBoardNavState({ myTasks: [], myTasksLoading: false });
|
|
287
|
+
return;
|
|
288
|
+
}
|
|
289
|
+
let cancelled = false;
|
|
290
|
+
setTaskBoardNavState({ myTasksLoading: true });
|
|
291
|
+
getMyTasks({ excludeDone: true })
|
|
292
|
+
.then((result) => {
|
|
293
|
+
if (cancelled)
|
|
294
|
+
return;
|
|
295
|
+
if (result.type !== "success") {
|
|
296
|
+
setTaskBoardNavState({ myTasks: [], myTasksLoading: false });
|
|
297
|
+
return;
|
|
298
|
+
}
|
|
299
|
+
const list = (result.data ?? [])
|
|
300
|
+
.map((item) => ({
|
|
301
|
+
taskId: item.task.taskId,
|
|
302
|
+
projectId: item.task.projectId,
|
|
303
|
+
title: item.task.title,
|
|
304
|
+
projectTitle: item.projectTitle ?? "",
|
|
305
|
+
status: normalizeTaskStatus(item.task.status, item.task.executionState),
|
|
306
|
+
updatedAt: item.task.updatedAt,
|
|
307
|
+
}))
|
|
308
|
+
.sort((a, b) => {
|
|
309
|
+
const aTime = a.updatedAt ? new Date(a.updatedAt).getTime() : 0;
|
|
310
|
+
const bTime = b.updatedAt ? new Date(b.updatedAt).getTime() : 0;
|
|
311
|
+
return bTime - aTime;
|
|
312
|
+
});
|
|
313
|
+
setTaskBoardNavState({ myTasks: list, myTasksLoading: false });
|
|
314
|
+
})
|
|
315
|
+
.catch(() => {
|
|
316
|
+
if (!cancelled) {
|
|
317
|
+
setTaskBoardNavState({ myTasks: [], myTasksLoading: false });
|
|
318
|
+
}
|
|
319
|
+
});
|
|
320
|
+
return () => {
|
|
321
|
+
cancelled = true;
|
|
322
|
+
};
|
|
323
|
+
}, [editContext?.user?.name]);
|
|
272
324
|
const tasksWithDisplayAssignees = useMemo(() => addAgentDisplayNames(overlayTaskExecutionList(tasks, executionRecordsByTaskId), agentProfileTitlesById), [tasks, executionRecordsByTaskId, agentProfileTitlesById]);
|
|
273
325
|
const selectedProject = useMemo(() => projects.find((p) => p.project.projectId === selectedProjectId) ?? null, [projects, selectedProjectId]);
|
|
274
|
-
const settingsProject = useMemo(() => projects.find((p) => p.project.projectId === settingsProjectId) ?? null, [projects, settingsProjectId]);
|
|
275
326
|
const selectedProjectTaskCounts = useMemo(() => buildTaskCounts(tasksWithDisplayAssignees), [tasksWithDisplayAssignees]);
|
|
276
327
|
const directSubprojects = useMemo(() => selectedProjectId
|
|
277
328
|
? projects
|
|
@@ -309,9 +360,13 @@ export function TaskBoardWorkspace() {
|
|
|
309
360
|
}
|
|
310
361
|
return merged;
|
|
311
362
|
}, [executionRecordsByTaskId, subprojectExecutionRecordsByProjectId]);
|
|
312
|
-
const taskSelectionUniverse = useMemo(() =>
|
|
363
|
+
const taskSelectionUniverse = useMemo(() => isOverviewView
|
|
313
364
|
? wizardTasksWithDisplayAssignees
|
|
314
|
-
: tasksWithDisplayAssignees, [
|
|
365
|
+
: tasksWithDisplayAssignees, [
|
|
366
|
+
isOverviewView,
|
|
367
|
+
wizardTasksWithDisplayAssignees,
|
|
368
|
+
tasksWithDisplayAssignees,
|
|
369
|
+
]);
|
|
315
370
|
const selectedProjectCumulativeCostUsed = useMemo(() => {
|
|
316
371
|
if (!selectedProjectId)
|
|
317
372
|
return 0;
|
|
@@ -394,14 +449,15 @@ export function TaskBoardWorkspace() {
|
|
|
394
449
|
selectedProject?.permission === "Editor";
|
|
395
450
|
const canEditTasks = canCreate;
|
|
396
451
|
const viewTabs = useMemo(() => [
|
|
452
|
+
{ id: "overview", label: "Task overview", content: null },
|
|
397
453
|
{ id: "kanban", label: "Kanban", content: null },
|
|
398
454
|
{ id: "list", label: "List", content: null },
|
|
399
455
|
{ id: "graph", label: "Graph", content: null },
|
|
456
|
+
{ id: "kpis", label: "KPIs", content: null },
|
|
457
|
+
{ id: "settings", label: "Settings", content: null },
|
|
458
|
+
{ id: "properties", label: "Properties", content: null },
|
|
400
459
|
], []);
|
|
401
|
-
const
|
|
402
|
-
const isListView = viewTabIds[activeTab] === "list";
|
|
403
|
-
const isGraphView = viewTabIds[activeTab] === "graph";
|
|
404
|
-
const sharedViewSwitcher = useMemo(() => (_jsxs("div", { className: "flex items-center justify-end gap-2", children: [_jsx(SimpleTabs, { tabs: viewTabs, activeTab: activeTab, setActiveTab: setActiveTab, hideContent: true, className: "bg-neutral-grey-5/50 rounded-lg border-0 p-1", testId: "taskboard-view-switcher" }), _jsxs(Button, { size: "sm", onClick: () => setCreateDialogOpen(true), disabled: !canEditTasks, className: "h-8 px-3", "data-testid": "taskboard-create-task-button", children: [_jsx(Plus, { className: "h-4 w-4 sm:mr-1.5" }), _jsx("span", { className: "hidden sm:inline", children: "New Task" })] })] })), [activeTab, canEditTasks, viewTabs]);
|
|
460
|
+
const sharedViewSwitcher = useMemo(() => (_jsx("div", { className: "border-border-default mt-[18px] border-b", children: _jsx(SimpleTabs, { tabs: viewTabs, activeTab: activeTab, setActiveTab: setActiveTab, hideContent: true, variant: "large", className: "gap-8", tabClassName: "px-2 pt-3 pb-[9px] text-sm", testId: "taskboard-view-switcher" }) })), [activeTab, viewTabs]);
|
|
405
461
|
const handleSelectProject = useCallback((projectId) => {
|
|
406
462
|
setSelectedProjectId((previousProjectId) => {
|
|
407
463
|
if (previousProjectId !== projectId) {
|
|
@@ -544,10 +600,10 @@ export function TaskBoardWorkspace() {
|
|
|
544
600
|
}
|
|
545
601
|
}, []);
|
|
546
602
|
useEffect(() => {
|
|
547
|
-
if (!
|
|
603
|
+
if (!isOverviewView) {
|
|
548
604
|
clearWizardCloseTransitionTimeout();
|
|
549
605
|
}
|
|
550
|
-
}, [
|
|
606
|
+
}, [isOverviewView, clearWizardCloseTransitionTimeout]);
|
|
551
607
|
useEffect(() => {
|
|
552
608
|
clearWizardCloseTransitionTimeout();
|
|
553
609
|
}, [selectedProjectId, clearWizardCloseTransitionTimeout]);
|
|
@@ -623,7 +679,7 @@ export function TaskBoardWorkspace() {
|
|
|
623
679
|
if (typeof window === "undefined")
|
|
624
680
|
return;
|
|
625
681
|
const current = new URLSearchParams(window.location.search);
|
|
626
|
-
const view =
|
|
682
|
+
const view = TASKBOARD_VIEW_TAB_IDS[activeTab] ?? "kanban";
|
|
627
683
|
if (selectedProjectId) {
|
|
628
684
|
current.set(TASKBOARD_PROJECT_QUERY_KEY, selectedProjectId);
|
|
629
685
|
}
|
|
@@ -637,12 +693,7 @@ export function TaskBoardWorkspace() {
|
|
|
637
693
|
current.delete(TASKBOARD_TASK_QUERY_KEY);
|
|
638
694
|
}
|
|
639
695
|
current.set(TASKBOARD_VIEW_QUERY_KEY, view);
|
|
640
|
-
|
|
641
|
-
current.set(TASKBOARD_WIZARD_QUERY_KEY, "true");
|
|
642
|
-
}
|
|
643
|
-
else {
|
|
644
|
-
current.delete(TASKBOARD_WIZARD_QUERY_KEY);
|
|
645
|
-
}
|
|
696
|
+
current.delete("tbWizard");
|
|
646
697
|
const browserPathname = window.location.pathname;
|
|
647
698
|
const queryString = current.toString();
|
|
648
699
|
const newUrl = queryString
|
|
@@ -652,7 +703,7 @@ export function TaskBoardWorkspace() {
|
|
|
652
703
|
if (newUrl !== oldUrl) {
|
|
653
704
|
window.history.replaceState(null, "", newUrl);
|
|
654
705
|
}
|
|
655
|
-
}, [selectedProjectId, selectedTaskId, activeTab
|
|
706
|
+
}, [selectedProjectId, selectedTaskId, activeTab]);
|
|
656
707
|
useEffect(() => {
|
|
657
708
|
const handlePopState = () => {
|
|
658
709
|
syncTaskBoardStateFromUrl();
|
|
@@ -756,13 +807,13 @@ export function TaskBoardWorkspace() {
|
|
|
756
807
|
nextExecutionByProjectId[projectId] = executionByTaskId;
|
|
757
808
|
}
|
|
758
809
|
setSubprojectTaskCounts(nextCounts);
|
|
759
|
-
setSubprojectTasksByProjectId(
|
|
760
|
-
setSubprojectExecutionRecordsByProjectId(
|
|
810
|
+
setSubprojectTasksByProjectId(isOverviewView ? nextTasksByProjectId : {});
|
|
811
|
+
setSubprojectExecutionRecordsByProjectId(isOverviewView ? nextExecutionByProjectId : {});
|
|
761
812
|
}
|
|
762
813
|
finally {
|
|
763
814
|
setSubprojectCountsLoading(false);
|
|
764
815
|
}
|
|
765
|
-
}, [directSubprojects,
|
|
816
|
+
}, [directSubprojects, isOverviewView, selectedProjectId]);
|
|
766
817
|
// If a project only has a single task, auto-select it once when loading.
|
|
767
818
|
// Do not auto-reselect after the user explicitly closes task details.
|
|
768
819
|
useEffect(() => {
|
|
@@ -792,7 +843,7 @@ export function TaskBoardWorkspace() {
|
|
|
792
843
|
// switch away when another subproject also gets Questions (wizardAttentionState
|
|
793
844
|
// would pick a different task and we'd lose the questionnaire to agent mismatch).
|
|
794
845
|
useEffect(() => {
|
|
795
|
-
if (!
|
|
846
|
+
if (!isOverviewView)
|
|
796
847
|
return;
|
|
797
848
|
if (wizardForceOverview)
|
|
798
849
|
return;
|
|
@@ -809,7 +860,7 @@ export function TaskBoardWorkspace() {
|
|
|
809
860
|
return;
|
|
810
861
|
setWizardPinnedTask(wizardDisplayedTask.taskId, "system");
|
|
811
862
|
}, [
|
|
812
|
-
|
|
863
|
+
isOverviewView,
|
|
813
864
|
wizardForceOverview,
|
|
814
865
|
selectedTaskId,
|
|
815
866
|
wizardPinnedTaskId,
|
|
@@ -818,7 +869,7 @@ export function TaskBoardWorkspace() {
|
|
|
818
869
|
setWizardPinnedTask,
|
|
819
870
|
]);
|
|
820
871
|
useEffect(() => {
|
|
821
|
-
if (!
|
|
872
|
+
if (!isOverviewView)
|
|
822
873
|
return;
|
|
823
874
|
if (selectedTaskId)
|
|
824
875
|
return;
|
|
@@ -839,7 +890,7 @@ export function TaskBoardWorkspace() {
|
|
|
839
890
|
}
|
|
840
891
|
setWizardPinnedTaskId(attentionTaskId);
|
|
841
892
|
}, [
|
|
842
|
-
|
|
893
|
+
isOverviewView,
|
|
843
894
|
selectedTaskId,
|
|
844
895
|
selectedTaskSource,
|
|
845
896
|
wizardDisplayedExecutionDisplay?.label,
|
|
@@ -850,7 +901,7 @@ export function TaskBoardWorkspace() {
|
|
|
850
901
|
wizardAttentionState.task?.taskId,
|
|
851
902
|
]);
|
|
852
903
|
useEffect(() => {
|
|
853
|
-
if (!
|
|
904
|
+
if (!isOverviewView)
|
|
854
905
|
return;
|
|
855
906
|
if (selectedTaskSource === "user")
|
|
856
907
|
return;
|
|
@@ -872,23 +923,23 @@ export function TaskBoardWorkspace() {
|
|
|
872
923
|
setTaskSelection(null, { pinInWizard: false });
|
|
873
924
|
}, [
|
|
874
925
|
findNextAttentionTaskId,
|
|
875
|
-
|
|
926
|
+
isOverviewView,
|
|
876
927
|
selectedTask,
|
|
877
928
|
selectedTaskSource,
|
|
878
929
|
setTaskSelection,
|
|
879
930
|
]);
|
|
880
931
|
useEffect(() => {
|
|
881
|
-
if (
|
|
932
|
+
if (isOverviewView)
|
|
882
933
|
return;
|
|
883
934
|
if (!wizardPinnedTaskId)
|
|
884
935
|
return;
|
|
885
936
|
setWizardPinnedTask(null);
|
|
886
|
-
}, [
|
|
937
|
+
}, [isOverviewView, setWizardPinnedTask, wizardPinnedTaskId]);
|
|
887
938
|
useEffect(() => {
|
|
888
|
-
if (!
|
|
939
|
+
if (!isOverviewView && wizardForceOverview) {
|
|
889
940
|
setWizardForceOverview(false);
|
|
890
941
|
}
|
|
891
|
-
}, [
|
|
942
|
+
}, [isOverviewView, wizardForceOverview]);
|
|
892
943
|
useEffect(() => {
|
|
893
944
|
setWizardPinnedTask(null);
|
|
894
945
|
setWizardForceOverview(false);
|
|
@@ -1246,32 +1297,6 @@ export function TaskBoardWorkspace() {
|
|
|
1246
1297
|
setTaskSelection,
|
|
1247
1298
|
tasks,
|
|
1248
1299
|
]);
|
|
1249
|
-
const handleProjectStatusChange = useCallback(async (status) => {
|
|
1250
|
-
if (!selectedProject)
|
|
1251
|
-
return;
|
|
1252
|
-
if (selectedProject.permission !== "Owner")
|
|
1253
|
-
return;
|
|
1254
|
-
if (selectedProject.project.status === status)
|
|
1255
|
-
return;
|
|
1256
|
-
setSavingProjectStatus(true);
|
|
1257
|
-
try {
|
|
1258
|
-
const result = await updateProject({
|
|
1259
|
-
projectId: selectedProject.project.projectId,
|
|
1260
|
-
title: selectedProject.project.title,
|
|
1261
|
-
description: selectedProject.project.description ?? "",
|
|
1262
|
-
costLimit: selectedProject.project.costLimit ?? null,
|
|
1263
|
-
status,
|
|
1264
|
-
});
|
|
1265
|
-
if (result.type !== "success") {
|
|
1266
|
-
toast.error(result.summary || "Failed to update project status");
|
|
1267
|
-
return;
|
|
1268
|
-
}
|
|
1269
|
-
await refreshProjects();
|
|
1270
|
-
}
|
|
1271
|
-
finally {
|
|
1272
|
-
setSavingProjectStatus(false);
|
|
1273
|
-
}
|
|
1274
|
-
}, [selectedProject, refreshProjects]);
|
|
1275
1300
|
const handleSelectMyTask = useCallback((task) => {
|
|
1276
1301
|
handleSelectProject(task.projectId);
|
|
1277
1302
|
setTaskSelection(task.taskId, { source: "user" });
|
|
@@ -1301,7 +1326,6 @@ export function TaskBoardWorkspace() {
|
|
|
1301
1326
|
: "Select a project to get started",
|
|
1302
1327
|
permissionLabel: selectedProject?.permission ?? "No project selected",
|
|
1303
1328
|
activeTab,
|
|
1304
|
-
isWizardMode,
|
|
1305
1329
|
isAdministrator,
|
|
1306
1330
|
showAllProjects: isAdministrator && showAllProjects,
|
|
1307
1331
|
isProjectsLoading,
|
|
@@ -1328,7 +1352,11 @@ export function TaskBoardWorkspace() {
|
|
|
1328
1352
|
onSetActiveTab: setActiveTab,
|
|
1329
1353
|
onCreateProject: () => setCreateProjectOpen(true),
|
|
1330
1354
|
onOpenProjectTemplates: handleOpenProjectTemplates,
|
|
1331
|
-
onOpenProjectSettings: (projectId) =>
|
|
1355
|
+
onOpenProjectSettings: (projectId) => {
|
|
1356
|
+
handleSelectProject(projectId);
|
|
1357
|
+
setWizardForceOverview(false);
|
|
1358
|
+
setActiveTab(getTaskBoardViewTabIndex("settings"));
|
|
1359
|
+
},
|
|
1332
1360
|
onDeleteProject: (projectId, title) => {
|
|
1333
1361
|
const runDelete = async () => {
|
|
1334
1362
|
const result = await deleteProject(projectId);
|
|
@@ -1392,7 +1420,6 @@ export function TaskBoardWorkspace() {
|
|
|
1392
1420
|
setShowAllProjects(enabled);
|
|
1393
1421
|
void refreshProjects({ includeAll: isAdministrator && enabled });
|
|
1394
1422
|
},
|
|
1395
|
-
onToggleWizardMode: (enabled) => setIsWizardMode(enabled),
|
|
1396
1423
|
onCreateTask: () => setCreateDialogOpen(true),
|
|
1397
1424
|
onRunOrchestrator: handleRunOrchestrator,
|
|
1398
1425
|
});
|
|
@@ -1401,7 +1428,6 @@ export function TaskBoardWorkspace() {
|
|
|
1401
1428
|
selectedProject?.project.description,
|
|
1402
1429
|
selectedProject?.permission,
|
|
1403
1430
|
activeTab,
|
|
1404
|
-
isWizardMode,
|
|
1405
1431
|
isAdministrator,
|
|
1406
1432
|
showAllProjects,
|
|
1407
1433
|
isProjectsLoading,
|
|
@@ -1684,7 +1710,6 @@ export function TaskBoardWorkspace() {
|
|
|
1684
1710
|
setTaskSelection(null);
|
|
1685
1711
|
}
|
|
1686
1712
|
}, [
|
|
1687
|
-
isWizardMode,
|
|
1688
1713
|
selectedTaskId,
|
|
1689
1714
|
selectedTaskSource,
|
|
1690
1715
|
setTaskSelection,
|
|
@@ -1763,28 +1788,40 @@ export function TaskBoardWorkspace() {
|
|
|
1763
1788
|
return (_jsx("div", { className: "border-border-default bg-neutral-grey-5/70 flex h-full min-h-[240px] items-center justify-center rounded-lg border border-dashed", "data-testid": "taskboard-project-loading-state", children: _jsxs("div", { className: "text-muted-foreground flex flex-col items-center gap-3 text-sm", children: [_jsx(Loader2, { className: "h-6 w-6 animate-spin" }), _jsx("div", { children: "Loading project..." })] }) }));
|
|
1764
1789
|
}
|
|
1765
1790
|
if (!selectedProjectId || (!selectedProject && !isProjectsLoading)) {
|
|
1766
|
-
return
|
|
1791
|
+
return _jsx(TaskBoardHomeView, { nav: nav });
|
|
1792
|
+
}
|
|
1793
|
+
if (isOverviewView) {
|
|
1794
|
+
return (_jsxs("div", { className: "flex h-full min-h-0 min-w-0 flex-col gap-3", children: [_jsx(ProjectDashboard, { projectId: selectedProjectId, selectedProjectTitle: selectedProject?.project.title ?? "No project selected", selectedProjectDescription: selectedProject?.project.description, selectedProjectCostUsed: selectedProjectCumulativeCostUsed, selectedProjectCostLimit: selectedProject?.project.costLimit ?? null, selectedProjectTaskCounts: selectedProjectTaskCounts, subprojects: directSubprojects, taskCountsByProjectId: subprojectTaskCounts, parentProjectId: parentProject?.project.projectId ?? null, parentProjectTitle: parentProject?.project.title ?? null, onSelectProject: handleSelectProject, canCreateTask: canEditTasks, onCreateTask: () => setCreateDialogOpen(true) }), sharedViewSwitcher, _jsx("div", { className: "min-h-0 flex-1", children: _jsx(WizardView, { projectId: selectedProjectId, tasks: tasksWithDisplayAssignees, projectTasksLoading: isTasksLoading, dependencies: dependencies, subprojectTaskLists: wizardSubprojectTaskLists, subprojectTasksLoading: subprojectCountsLoading, selectedTaskId: wizardDisplayedTask?.taskId ?? null, onSelectTask: (id) => {
|
|
1795
|
+
setWizardForceOverview(false);
|
|
1796
|
+
setTaskSelection(id, { source: "user", pinInWizard: true });
|
|
1797
|
+
}, projectTitle: selectedProject?.project.title ?? "No project selected", projectDescription: selectedProject?.project.description, projectCostUsed: selectedProjectCumulativeCostUsed, projectCostLimit: selectedProject?.project.costLimit ?? null, canEditProperties: selectedProject?.permission === "Owner", showProperties: false, showCost: false, communicationPanel: wizardCommunicationPanel }) })] }));
|
|
1798
|
+
}
|
|
1799
|
+
if (isSettingsView) {
|
|
1800
|
+
return (_jsxs("div", { className: "flex h-full min-h-0 min-w-0 flex-col gap-3", children: [_jsx(ProjectDashboard, { projectId: selectedProjectId, selectedProjectTitle: selectedProject?.project.title ?? "No project selected", selectedProjectDescription: selectedProject?.project.description, selectedProjectCostUsed: selectedProjectCumulativeCostUsed, selectedProjectCostLimit: selectedProject?.project.costLimit ?? null, selectedProjectTaskCounts: selectedProjectTaskCounts, subprojects: directSubprojects, taskCountsByProjectId: subprojectTaskCounts, parentProjectId: parentProject?.project.projectId ?? null, parentProjectTitle: parentProject?.project.title ?? null, onSelectProject: handleSelectProject, canCreateTask: canEditTasks, onCreateTask: () => setCreateDialogOpen(true), showCreateTaskButton: false }), sharedViewSwitcher, _jsx(ProjectSettingsPanel, { projectId: selectedProjectId, selectedProject: selectedProject, projects: projects, canOpenSourceTemplate: isAdministrator, onOpenSourceTemplate: handleOpenSourceTemplate, onChanged: async () => {
|
|
1801
|
+
await refreshProjects();
|
|
1802
|
+
await refreshVisibleTaskData();
|
|
1803
|
+
} })] }));
|
|
1804
|
+
}
|
|
1805
|
+
if (isKpisView) {
|
|
1806
|
+
return (_jsxs("div", { className: "flex h-full min-h-0 min-w-0 flex-col gap-3", children: [_jsx(ProjectDashboard, { projectId: selectedProjectId, selectedProjectTitle: selectedProject?.project.title ?? "No project selected", selectedProjectDescription: selectedProject?.project.description, selectedProjectCostUsed: selectedProjectCumulativeCostUsed, selectedProjectCostLimit: selectedProject?.project.costLimit ?? null, selectedProjectTaskCounts: selectedProjectTaskCounts, subprojects: directSubprojects, taskCountsByProjectId: subprojectTaskCounts, parentProjectId: parentProject?.project.projectId ?? null, parentProjectTitle: parentProject?.project.title ?? null, onSelectProject: handleSelectProject, canCreateTask: canEditTasks, onCreateTask: () => setCreateDialogOpen(true), showCreateTaskButton: false }), sharedViewSwitcher, _jsx(ProjectKpisPanel, { selectedProjectCostUsed: selectedProjectCumulativeCostUsed, selectedProjectCostLimit: selectedProject?.project.costLimit ?? null, selectedProjectTaskCounts: selectedProjectTaskCounts, selectedProjectAttention: selectedProject?.overview?.attention, subprojects: directSubprojects, taskCountsByProjectId: subprojectTaskCounts })] }));
|
|
1767
1807
|
}
|
|
1768
|
-
if (
|
|
1769
|
-
return (_jsx(
|
|
1770
|
-
setWizardForceOverview(false);
|
|
1771
|
-
setTaskSelection(id, { source: "user", pinInWizard: true });
|
|
1772
|
-
}, projectTitle: selectedProject?.project.title ?? "No project selected", projectDescription: selectedProject?.project.description, projectCostUsed: selectedProjectCumulativeCostUsed, projectCostLimit: selectedProject?.project.costLimit ?? null, canEditProperties: selectedProject?.permission === "Owner", communicationPanel: wizardCommunicationPanel }));
|
|
1808
|
+
if (isPropertiesView) {
|
|
1809
|
+
return (_jsxs("div", { className: "flex h-full min-h-0 min-w-0 flex-col gap-3", children: [_jsx(ProjectDashboard, { projectId: selectedProjectId, selectedProjectTitle: selectedProject?.project.title ?? "No project selected", selectedProjectDescription: selectedProject?.project.description, selectedProjectCostUsed: selectedProjectCumulativeCostUsed, selectedProjectCostLimit: selectedProject?.project.costLimit ?? null, selectedProjectTaskCounts: selectedProjectTaskCounts, subprojects: directSubprojects, taskCountsByProjectId: subprojectTaskCounts, parentProjectId: parentProject?.project.projectId ?? null, parentProjectTitle: parentProject?.project.title ?? null, onSelectProject: handleSelectProject, canCreateTask: canEditTasks, onCreateTask: () => setCreateDialogOpen(true), showCreateTaskButton: false }), sharedViewSwitcher, _jsx(ProjectPropertiesPanel, { projectId: selectedProjectId, canEdit: selectedProject?.permission === "Owner", defaultExpanded: true, showHeader: false, className: "border-border-default rounded-md border bg-white p-4" })] }));
|
|
1773
1810
|
}
|
|
1774
1811
|
if (isListView) {
|
|
1775
|
-
return (_jsxs("div", { className: "grid gap-3", children: [_jsx(ProjectDashboard, { projectId: selectedProjectId, selectedProjectTitle: selectedProject?.project.title ?? "No project selected", selectedProjectDescription: selectedProject?.project.description,
|
|
1812
|
+
return (_jsxs("div", { className: "grid gap-3", children: [_jsx(ProjectDashboard, { projectId: selectedProjectId, selectedProjectTitle: selectedProject?.project.title ?? "No project selected", selectedProjectDescription: selectedProject?.project.description, selectedProjectCostUsed: selectedProjectCumulativeCostUsed, selectedProjectCostLimit: selectedProject?.project.costLimit ?? null, selectedProjectTaskCounts: selectedProjectTaskCounts, subprojects: directSubprojects, taskCountsByProjectId: subprojectTaskCounts, parentProjectId: parentProject?.project.projectId ?? null, parentProjectTitle: parentProject?.project.title ?? null, onSelectProject: handleSelectProject, canCreateTask: canEditTasks, onCreateTask: () => setCreateDialogOpen(true) }), sharedViewSwitcher, _jsx(ListView, { tasks: tasksWithDisplayAssignees, onSelectTask: (id) => setTaskSelection(id, { source: "user" }), selectedTaskId: selectedTaskId, onTasksChanged: () => {
|
|
1776
1813
|
void refreshVisibleTaskData();
|
|
1777
1814
|
}, projectId: selectedProjectId, permission: selectedProject?.permission })] }));
|
|
1778
1815
|
}
|
|
1779
1816
|
if (isGraphView) {
|
|
1780
|
-
return (_jsxs("div", { className: "flex h-full min-h-0 min-w-0 flex-col gap-3", children: [_jsx(ProjectDashboard, { projectId: selectedProjectId, selectedProjectTitle: selectedProject?.project.title ?? "No project selected", selectedProjectDescription: selectedProject?.project.description,
|
|
1817
|
+
return (_jsxs("div", { className: "flex h-full min-h-0 min-w-0 flex-col gap-3", children: [_jsx(ProjectDashboard, { projectId: selectedProjectId, selectedProjectTitle: selectedProject?.project.title ?? "No project selected", selectedProjectDescription: selectedProject?.project.description, selectedProjectCostUsed: selectedProjectCumulativeCostUsed, selectedProjectCostLimit: selectedProject?.project.costLimit ?? null, selectedProjectTaskCounts: selectedProjectTaskCounts, subprojects: directSubprojects, taskCountsByProjectId: subprojectTaskCounts, parentProjectId: parentProject?.project.projectId ?? null, parentProjectTitle: parentProject?.project.title ?? null, onSelectProject: handleSelectProject, canCreateTask: canEditTasks, onCreateTask: () => setCreateDialogOpen(true) }), sharedViewSwitcher, _jsx("div", { className: "min-h-0 flex-1", children: _jsx(Suspense, { fallback: _jsx("div", { className: "text-muted-foreground flex h-full items-center justify-center text-sm", children: "Loading dependency graph..." }), children: _jsx(DependencyGraphView, { projectId: selectedProjectId, tasks: tasksWithDisplayAssignees, dependencies: dependencies, miniMapWidth: 160, miniMapHeight: 120, orientation: "horizontal", autoLayoutStrategy: "hierarchy", showOrientationToggle: true, savedLayout: graphLayout, selectedTaskId: selectedTaskId, onSelectTask: (id) => setTaskSelection(id, { source: "user" }), permission: selectedProject?.permission, onLayoutSaved: (layout) => setGraphLayout(layout && selectedProjectId
|
|
1781
1818
|
? {
|
|
1782
1819
|
projectId: selectedProjectId,
|
|
1783
1820
|
...layout,
|
|
1784
1821
|
}
|
|
1785
1822
|
: null) }) }) })] }));
|
|
1786
1823
|
}
|
|
1787
|
-
return (_jsxs("div", { className: "flex h-full min-h-0 min-w-0 flex-col gap-3", children: [_jsx(ProjectDashboard, { projectId: selectedProjectId, selectedProjectTitle: selectedProject?.project.title ?? "No project selected", selectedProjectDescription: selectedProject?.project.description,
|
|
1824
|
+
return (_jsxs("div", { className: "flex h-full min-h-0 min-w-0 flex-col gap-3", children: [_jsx(ProjectDashboard, { projectId: selectedProjectId, selectedProjectTitle: selectedProject?.project.title ?? "No project selected", selectedProjectDescription: selectedProject?.project.description, selectedProjectCostUsed: selectedProjectCumulativeCostUsed, selectedProjectCostLimit: selectedProject?.project.costLimit ?? null, selectedProjectTaskCounts: selectedProjectTaskCounts, subprojects: directSubprojects, taskCountsByProjectId: subprojectTaskCounts, parentProjectId: parentProject?.project.projectId ?? null, parentProjectTitle: parentProject?.project.title ?? null, onSelectProject: handleSelectProject, canCreateTask: canEditTasks, onCreateTask: () => setCreateDialogOpen(true) }), sharedViewSwitcher, _jsx(KanbanView, { tasks: tasksWithDisplayAssignees, dependencies: dependencies, onSelectTask: (id) => setTaskSelection(id, { source: "user" }), selectedTaskId: selectedTaskId, onTasksChanged: () => {
|
|
1788
1825
|
void refreshVisibleTaskData();
|
|
1789
1826
|
}, projectId: selectedProjectId, permission: selectedProject?.permission })] }));
|
|
1790
1827
|
}, [
|
|
@@ -1792,12 +1829,15 @@ export function TaskBoardWorkspace() {
|
|
|
1792
1829
|
selectedProjectId,
|
|
1793
1830
|
selectedProject,
|
|
1794
1831
|
isProjectsLoading,
|
|
1795
|
-
|
|
1832
|
+
isOverviewView,
|
|
1796
1833
|
isListView,
|
|
1797
1834
|
isGraphView,
|
|
1835
|
+
isKpisView,
|
|
1836
|
+
isSettingsView,
|
|
1837
|
+
isPropertiesView,
|
|
1838
|
+
graphLayout,
|
|
1839
|
+
isAdministrator,
|
|
1798
1840
|
selectedProjectCumulativeCostUsed,
|
|
1799
|
-
savingProjectStatus,
|
|
1800
|
-
handleProjectStatusChange,
|
|
1801
1841
|
handleOpenSourceTemplate,
|
|
1802
1842
|
selectedProjectTaskCounts,
|
|
1803
1843
|
directSubprojects,
|
|
@@ -1807,10 +1847,10 @@ export function TaskBoardWorkspace() {
|
|
|
1807
1847
|
parentProject?.project.title,
|
|
1808
1848
|
handleSelectProject,
|
|
1809
1849
|
sharedViewSwitcher,
|
|
1850
|
+
projects,
|
|
1810
1851
|
tasksWithDisplayAssignees,
|
|
1811
1852
|
dependencies,
|
|
1812
1853
|
selectedTaskId,
|
|
1813
|
-
activeTab,
|
|
1814
1854
|
canEditTasks,
|
|
1815
1855
|
nav,
|
|
1816
1856
|
isTasksLoading,
|
|
@@ -1818,6 +1858,7 @@ export function TaskBoardWorkspace() {
|
|
|
1818
1858
|
wizardDisplayedTask?.taskId,
|
|
1819
1859
|
wizardCommunicationPanel,
|
|
1820
1860
|
setTaskSelection,
|
|
1861
|
+
refreshProjects,
|
|
1821
1862
|
refreshVisibleTaskData,
|
|
1822
1863
|
]);
|
|
1823
1864
|
const taskDetailAgentLaunch = useMemo(() => {
|
|
@@ -1860,6 +1901,7 @@ export function TaskBoardWorkspace() {
|
|
|
1860
1901
|
void refreshVisibleTaskData();
|
|
1861
1902
|
}, onSelectTask: (taskId) => setTaskSelection(taskId, { source: "user" }), onClose: () => setTaskSelection(null), variant: "panel", agentLaunch: taskDetailAgentLaunch })), [
|
|
1862
1903
|
selectedTaskProject,
|
|
1904
|
+
projects,
|
|
1863
1905
|
selectedTask,
|
|
1864
1906
|
taskSelectionUniverse,
|
|
1865
1907
|
dependencies,
|
|
@@ -1982,29 +2024,29 @@ export function TaskBoardWorkspace() {
|
|
|
1982
2024
|
const showAgentColumnForSelectedTask = !!selectedProjectId &&
|
|
1983
2025
|
!shouldHideAgentPanelForSelectedTask &&
|
|
1984
2026
|
agentPanelMode === "agent";
|
|
1985
|
-
if (
|
|
1986
|
-
const
|
|
2027
|
+
if (isOverviewView || isKpisView) {
|
|
2028
|
+
const overviewPanels = [
|
|
1987
2029
|
{
|
|
1988
|
-
name: "
|
|
1989
|
-
defaultSize:
|
|
1990
|
-
content: (_jsx("div", { className: "bg-neutral-grey-5/
|
|
2030
|
+
name: "task-list",
|
|
2031
|
+
defaultSize: "auto",
|
|
2032
|
+
content: (_jsx("div", { className: cn("bg-neutral-grey-5/60 flex h-full min-h-0 flex-col overflow-x-hidden overflow-y-auto", selectedProjectId && "p-3 pt-3 md:p-8 md:pt-8 md:pl-10"), children: taskBoardContent })),
|
|
1991
2033
|
},
|
|
1992
2034
|
];
|
|
1993
2035
|
if (showEditorPanel) {
|
|
1994
|
-
|
|
2036
|
+
overviewPanels.push({
|
|
1995
2037
|
name: "editor-preview",
|
|
1996
|
-
defaultSize:
|
|
2038
|
+
defaultSize: 500,
|
|
1997
2039
|
content: (_jsx("div", { className: "border-border-default bg-neutral-grey-5 h-full overflow-hidden border-l", children: itemPreviewPanel })),
|
|
1998
2040
|
});
|
|
1999
2041
|
}
|
|
2000
|
-
return
|
|
2042
|
+
return overviewPanels;
|
|
2001
2043
|
}
|
|
2002
2044
|
if (isListView) {
|
|
2003
2045
|
const listPanels = [
|
|
2004
2046
|
{
|
|
2005
2047
|
name: "task-list",
|
|
2006
2048
|
defaultSize: "auto",
|
|
2007
|
-
content: (_jsx("div", { className: "bg-neutral-grey-5/
|
|
2049
|
+
content: (_jsx("div", { className: "bg-neutral-grey-5/60 h-full overflow-x-auto overflow-y-auto p-3 pt-3 md:p-8 md:pt-8 md:pl-10", children: taskBoardContent })),
|
|
2008
2050
|
},
|
|
2009
2051
|
...buildRightHandPanels(showAgentColumnForSelectedTask),
|
|
2010
2052
|
];
|
|
@@ -2022,7 +2064,7 @@ export function TaskBoardWorkspace() {
|
|
|
2022
2064
|
{
|
|
2023
2065
|
name: "task-list",
|
|
2024
2066
|
defaultSize: "auto",
|
|
2025
|
-
content: (_jsx("div", { className: cn("bg-neutral-grey-5/
|
|
2067
|
+
content: (_jsx("div", { className: cn("bg-neutral-grey-5/60 flex h-full min-h-0 flex-col overflow-x-hidden overflow-y-auto", selectedProjectId && "p-3 pt-3 md:p-8 md:pt-8 md:pl-10"), children: taskBoardContent })),
|
|
2026
2068
|
},
|
|
2027
2069
|
...buildRightHandPanels(showAgentColumnForSelectedTask),
|
|
2028
2070
|
];
|
|
@@ -2039,7 +2081,7 @@ export function TaskBoardWorkspace() {
|
|
|
2039
2081
|
{
|
|
2040
2082
|
name: "task-list",
|
|
2041
2083
|
defaultSize: "auto",
|
|
2042
|
-
content: (_jsx("div", { className: cn("bg-neutral-grey-5/
|
|
2084
|
+
content: (_jsx("div", { className: cn("bg-neutral-grey-5/60 flex h-full min-h-0 flex-col overflow-x-hidden overflow-y-auto", selectedProjectId && "p-3 pt-3 md:p-8 md:pt-8 md:pl-10"), children: taskBoardContent })),
|
|
2043
2085
|
},
|
|
2044
2086
|
...buildRightHandPanels(showAgentColumnForSelectedTask),
|
|
2045
2087
|
];
|
|
@@ -2052,7 +2094,8 @@ export function TaskBoardWorkspace() {
|
|
|
2052
2094
|
}
|
|
2053
2095
|
return kanbanPanels;
|
|
2054
2096
|
}, [
|
|
2055
|
-
|
|
2097
|
+
isOverviewView,
|
|
2098
|
+
isKpisView,
|
|
2056
2099
|
isListView,
|
|
2057
2100
|
isGraphView,
|
|
2058
2101
|
selectedProjectId,
|
|
@@ -2063,7 +2106,7 @@ export function TaskBoardWorkspace() {
|
|
|
2063
2106
|
showEditorPanel,
|
|
2064
2107
|
itemPreviewPanel,
|
|
2065
2108
|
]);
|
|
2066
|
-
return (_jsxs("div", { className: "text-foreground flex h-full w-full flex-col
|
|
2109
|
+
return (_jsxs("div", { className: "text-foreground bg-neutral-grey-5 flex h-full w-full flex-col select-text", children: [_jsx("div", { className: "min-h-0 flex-1", children: isMobile ? (_jsxs("div", { className: "flex h-full flex-col overflow-hidden", children: [selectedProjectId && (_jsx("div", { className: "border-border-default shrink-0 border-b bg-white px-4 shadow-[0_1px_2px_color-mix(in_srgb,var(--color-neutral-grey-100)_3%,transparent)]", children: _jsx(SimpleTabs, { tabs: [
|
|
2067
2110
|
{ id: "project", label: "Project", content: null },
|
|
2068
2111
|
{
|
|
2069
2112
|
id: "task",
|
|
@@ -2080,30 +2123,20 @@ export function TaskBoardWorkspace() {
|
|
|
2080
2123
|
...(showEditorPanel
|
|
2081
2124
|
? [{ id: "editor", label: "Editor", content: null }]
|
|
2082
2125
|
: []),
|
|
2083
|
-
], activeTab: mobileActiveTab, setActiveTab: setMobileActiveTab, hideContent: true, className: "gap-6" }) })), _jsxs("div", { className: "min-h-0 flex-1 overflow-hidden", children: [mobileActiveTab === 0 && (_jsx("div", { className: cn("bg-neutral-grey-5/50 flex h-full overflow-y-auto", selectedProjectId &&
|
|
2084
|
-
!isWizardMode &&
|
|
2085
|
-
"p-2 pt-2 md:p-4 md:pt-3"), children: taskBoardContent })), mobileActiveTab === 1 && (_jsx("div", { className: "h-full overflow-y-auto bg-white", children: taskDetailPanel })), mobileActiveTab === 2 && (_jsx("div", { className: "h-full overflow-hidden bg-white", children: shouldHideAgentPanelForSelectedTask
|
|
2126
|
+
], activeTab: mobileActiveTab, setActiveTab: setMobileActiveTab, hideContent: true, className: "gap-6" }) })), _jsxs("div", { className: "min-h-0 flex-1 overflow-hidden", children: [mobileActiveTab === 0 && (_jsx("div", { className: cn("bg-neutral-grey-5/50 flex h-full overflow-y-auto", selectedProjectId && "p-2 pt-2 md:p-4 md:pt-3"), children: taskBoardContent })), mobileActiveTab === 1 && (_jsx("div", { className: "h-full overflow-y-auto bg-white", children: taskDetailPanel })), mobileActiveTab === 2 && (_jsx("div", { className: "h-full overflow-hidden bg-white", children: shouldHideAgentPanelForSelectedTask
|
|
2086
2127
|
? taskDetailPanel
|
|
2087
|
-
: agentTerminalPanel })), mobileActiveTab === 3 && showEditorPanel && (_jsx("div", { className: "bg-neutral-grey-5 h-full overflow-hidden", children: itemPreviewPanel }))] })] })) : (_jsx(Splitter, { panels: panels, direction: "horizontal", localStorageKey:
|
|
2088
|
-
? "task-board-wizard-splitter-v2"
|
|
2089
|
-
: "task-board-main-splitter" })) }), selectedProjectId && (_jsx(CreateTaskDialog, { open: createDialogOpen, onOpenChange: setCreateDialogOpen, projectId: selectedProjectId, availableParentTasks: tasks, onCreated: () => {
|
|
2128
|
+
: agentTerminalPanel })), mobileActiveTab === 3 && showEditorPanel && (_jsx("div", { className: "bg-neutral-grey-5 h-full overflow-hidden", children: itemPreviewPanel }))] })] })) : (_jsx(Splitter, { panels: panels, direction: "horizontal", localStorageKey: "task-board-main-splitter" })) }), selectedProjectId && (_jsx(CreateTaskDialog, { open: createDialogOpen, onOpenChange: setCreateDialogOpen, projectId: selectedProjectId, availableParentTasks: tasks, onCreated: () => {
|
|
2090
2129
|
void refreshTasks(selectedProjectId);
|
|
2091
2130
|
void refreshExecutionState(selectedProjectId);
|
|
2092
2131
|
void refreshDependencies(selectedProjectId);
|
|
2093
2132
|
} })), _jsx(CreateProjectDialog, { open: createProjectOpen, onOpenChange: setCreateProjectOpen, projects: projects, onCreated: async ({ projectId: newProjectId, openInWizardMode }) => {
|
|
2094
2133
|
if (openInWizardMode) {
|
|
2095
|
-
|
|
2134
|
+
setActiveTab(getTaskBoardViewTabIndex("overview"));
|
|
2096
2135
|
setWizardForceOverview(false);
|
|
2097
2136
|
}
|
|
2098
2137
|
if (newProjectId)
|
|
2099
2138
|
handleSelectProject(newProjectId);
|
|
2100
2139
|
await refreshProjects();
|
|
2101
|
-
} }), _jsx(ProjectSettingsDialog, { open: !!settingsProjectId, onOpenChange: (open) => {
|
|
2102
|
-
if (!open)
|
|
2103
|
-
setSettingsProjectId(null);
|
|
2104
|
-
}, projectId: settingsProjectId, selectedProject: settingsProject, projects: projects, onChanged: async () => {
|
|
2105
|
-
await refreshProjects();
|
|
2106
|
-
await refreshVisibleTaskData();
|
|
2107
2140
|
} })] }));
|
|
2108
2141
|
}
|
|
2109
2142
|
//# sourceMappingURL=TaskBoardWorkspace.js.map
|