@parhelia/core 0.1.12565 → 0.1.12570
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 +4 -6
- package/dist/agents-view/AgentCard.js +24 -143
- package/dist/agents-view/AgentCard.js.map +1 -1
- package/dist/agents-view/AgentsInbox.d.ts +1 -1
- package/dist/agents-view/AgentsInbox.js +92 -7
- package/dist/agents-view/AgentsInbox.js.map +1 -1
- package/dist/agents-view/AgentsTitlebar.js +2 -3
- package/dist/agents-view/AgentsTitlebar.js.map +1 -1
- package/dist/agents-view/AgentsView.d.ts +7 -6
- package/dist/agents-view/AgentsView.js +99 -191
- package/dist/agents-view/AgentsView.js.map +1 -1
- package/dist/agents-view/AgentsWorkspaceView.d.ts +6 -2
- package/dist/agents-view/AgentsWorkspaceView.js +113 -266
- package/dist/agents-view/AgentsWorkspaceView.js.map +1 -1
- package/dist/agents-view/ProfileAgentsGroup.d.ts +1 -2
- package/dist/agents-view/ProfileAgentsGroup.js +3 -4
- package/dist/agents-view/ProfileAgentsGroup.js.map +1 -1
- package/dist/components/ActionButton.d.ts +1 -1
- package/dist/components/ActionButton.js.map +1 -1
- package/dist/components/FilterInput.d.ts +1 -1
- package/dist/components/FilterInput.js +1 -1
- package/dist/components/FilterInput.js.map +1 -1
- package/dist/components/ui/LanguageSelector.js +4 -2
- package/dist/components/ui/LanguageSelector.js.map +1 -1
- package/dist/components/ui/PlaceholderInput.js +3 -3
- package/dist/components/ui/PlaceholderInput.js.map +1 -1
- package/dist/components/ui/PlaceholderInputTypes.js +1 -1
- package/dist/components/ui/PlaceholderInputTypes.js.map +1 -1
- package/dist/components/ui/alert-dialog.d.ts +1 -1
- package/dist/components/ui/alert-dialog.js +10 -6
- package/dist/components/ui/alert-dialog.js.map +1 -1
- package/dist/components/ui/button.d.ts +4 -4
- package/dist/components/ui/button.js +1 -4
- package/dist/components/ui/button.js.map +1 -1
- package/dist/components/ui/context-menu.d.ts +1 -1
- package/dist/components/ui/context-menu.js +4 -12
- package/dist/components/ui/context-menu.js.map +1 -1
- package/dist/components/ui/copy-button.d.ts +1 -2
- package/dist/components/ui/copy-button.js +2 -2
- package/dist/components/ui/copy-button.js.map +1 -1
- package/dist/components/ui/dialog.d.ts +1 -1
- package/dist/components/ui/dialog.js +126 -21
- package/dist/components/ui/dialog.js.map +1 -1
- package/dist/components/ui/input.d.ts +1 -1
- package/dist/components/ui/input.js +3 -5
- package/dist/components/ui/input.js.map +1 -1
- package/dist/components/ui/paste-button.d.ts +1 -2
- package/dist/components/ui/paste-button.js +2 -2
- package/dist/components/ui/paste-button.js.map +1 -1
- package/dist/components/ui/popover.js +9 -1
- package/dist/components/ui/popover.js.map +1 -1
- package/dist/components/ui/select.js +1 -1
- package/dist/components/ui/select.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/components/ui/tabs.d.ts +1 -1
- package/dist/components/ui/tabs.js +11 -4
- package/dist/components/ui/tabs.js.map +1 -1
- package/dist/config/config.d.ts +2 -4
- package/dist/config/config.js +70 -250
- package/dist/config/config.js.map +1 -1
- package/dist/config/types/workspace.d.ts +0 -6
- package/dist/config/types.d.ts +12 -63
- package/dist/config/types.js.map +1 -1
- package/dist/editor/ComponentInfo.d.ts +4 -0
- package/dist/editor/ComponentInfo.js +41 -0
- package/dist/editor/ComponentInfo.js.map +1 -0
- package/dist/editor/ConfirmationDialog.js +4 -20
- package/dist/editor/ConfirmationDialog.js.map +1 -1
- package/dist/editor/ContentTree.d.ts +1 -2
- package/dist/editor/ContentTree.js +32 -93
- package/dist/editor/ContentTree.js.map +1 -1
- package/dist/editor/Editor.js +22 -87
- package/dist/editor/Editor.js.map +1 -1
- package/dist/editor/FieldHistory.js +36 -84
- package/dist/editor/FieldHistory.js.map +1 -1
- package/dist/editor/FieldListField.js +9 -21
- package/dist/editor/FieldListField.js.map +1 -1
- package/dist/editor/FieldListFieldWithFallbacks.js +2 -23
- package/dist/editor/FieldListFieldWithFallbacks.js.map +1 -1
- package/dist/editor/GlobalMenuBar.js +2 -29
- package/dist/editor/GlobalMenuBar.js.map +1 -1
- package/dist/editor/ImageEditor.js +2 -5
- package/dist/editor/ImageEditor.js.map +1 -1
- package/dist/editor/ItemInfo.js +1 -36
- package/dist/editor/ItemInfo.js.map +1 -1
- package/dist/editor/LinkEditorDialog.js +0 -3
- package/dist/editor/LinkEditorDialog.js.map +1 -1
- package/dist/editor/MainLayout.d.ts +2 -0
- package/dist/editor/MainLayout.js +8 -65
- package/dist/editor/MainLayout.js.map +1 -1
- package/dist/editor/MigrationsView.js +5 -29
- package/dist/editor/MigrationsView.js.map +1 -1
- package/dist/editor/MobileLayout.js +12 -37
- package/dist/editor/MobileLayout.js.map +1 -1
- package/dist/editor/PictureCropper.js +45 -54
- package/dist/editor/PictureCropper.js.map +1 -1
- package/dist/editor/PictureEditor.js +15 -17
- package/dist/editor/PictureEditor.js.map +1 -1
- package/dist/editor/QuickItemSwitcher.js +21 -21
- package/dist/editor/QuickItemSwitcher.js.map +1 -1
- package/dist/editor/SetupWizard.js +12 -52
- package/dist/editor/SetupWizard.js.map +1 -1
- package/dist/editor/Titlebar.js +2 -7
- package/dist/editor/Titlebar.js.map +1 -1
- package/dist/editor/ai/AgentCostDisplay.d.ts +0 -1
- package/dist/editor/ai/AgentCostDisplay.js +1 -1
- package/dist/editor/ai/AgentCostDisplay.js.map +1 -1
- package/dist/editor/ai/AgentDocumentList.js +14 -32
- package/dist/editor/ai/AgentDocumentList.js.map +1 -1
- package/dist/editor/ai/AgentGreeting.js +2 -3
- package/dist/editor/ai/AgentGreeting.js.map +1 -1
- package/dist/editor/ai/AgentProfileSelector.js +1 -2
- package/dist/editor/ai/AgentProfileSelector.js.map +1 -1
- package/dist/editor/ai/AgentStatusBadge.d.ts +5 -0
- package/dist/editor/ai/AgentStatusBadge.js +65 -67
- package/dist/editor/ai/AgentStatusBadge.js.map +1 -1
- package/dist/editor/ai/AgentTerminal.d.ts +2 -14
- package/dist/editor/ai/AgentTerminal.js +496 -2406
- package/dist/editor/ai/AgentTerminal.js.map +1 -1
- package/dist/editor/ai/AgentTerminalStatusBar.d.ts +3 -8
- package/dist/editor/ai/AgentTerminalStatusBar.js +56 -481
- package/dist/editor/ai/AgentTerminalStatusBar.js.map +1 -1
- package/dist/editor/ai/Agents.js +113 -161
- package/dist/editor/ai/Agents.js.map +1 -1
- package/dist/editor/ai/AiResponseMessage.d.ts +1 -10
- package/dist/editor/ai/AiResponseMessage.js +26 -267
- package/dist/editor/ai/AiResponseMessage.js.map +1 -1
- package/dist/editor/ai/ContextInfoBar.d.ts +3 -2
- package/dist/editor/ai/ContextInfoBar.js +7 -64
- package/dist/editor/ai/ContextInfoBar.js.map +1 -1
- package/dist/editor/ai/GuidanceOverlay.js +11 -17
- package/dist/editor/ai/GuidanceOverlay.js.map +1 -1
- package/dist/editor/ai/HelpTerminal.d.ts +5 -0
- package/dist/editor/ai/HelpTerminal.js +166 -0
- package/dist/editor/ai/HelpTerminal.js.map +1 -0
- package/dist/editor/ai/InlineAiDialog.d.ts +1 -1
- package/dist/editor/ai/InlineAiDialog.js +192 -514
- package/dist/editor/ai/InlineAiDialog.js.map +1 -1
- package/dist/editor/ai/InlineAiTrigger.js +12 -115
- package/dist/editor/ai/InlineAiTrigger.js.map +1 -1
- package/dist/editor/ai/MediaImage.js +8 -40
- package/dist/editor/ai/MediaImage.js.map +1 -1
- package/dist/editor/ai/SpawnedAgentsPanel.js +12 -10
- package/dist/editor/ai/SpawnedAgentsPanel.js.map +1 -1
- package/dist/editor/ai/ToolCallDisplay.d.ts +2 -22
- package/dist/editor/ai/ToolCallDisplay.js +150 -542
- package/dist/editor/ai/ToolCallDisplay.js.map +1 -1
- package/dist/editor/ai/dialogs/AgentDialogHandler.d.ts +8 -1
- package/dist/editor/ai/dialogs/AgentDialogHandler.js +42 -379
- package/dist/editor/ai/dialogs/AgentDialogHandler.js.map +1 -1
- package/dist/editor/ai/dialogs/QuestionnaireInline.d.ts +1 -5
- package/dist/editor/ai/dialogs/QuestionnaireInline.js +60 -628
- package/dist/editor/ai/dialogs/QuestionnaireInline.js.map +1 -1
- package/dist/editor/ai/dialogs/agentDialogTypes.d.ts +0 -115
- package/dist/editor/ai/dialogs/agentDialogTypes.js +0 -2
- package/dist/editor/ai/dialogs/agentDialogTypes.js.map +1 -1
- package/dist/editor/ai/types.d.ts +1 -3
- package/dist/editor/ai/useAgentStatus.d.ts +1 -2
- package/dist/editor/ai/useAgentStatus.js +100 -90
- package/dist/editor/ai/useAgentStatus.js.map +1 -1
- package/dist/editor/ai/useInlineAiPosition.js +5 -45
- package/dist/editor/ai/useInlineAiPosition.js.map +1 -1
- package/dist/editor/client/AboutDialog.js +2 -4
- package/dist/editor/client/AboutDialog.js.map +1 -1
- package/dist/editor/client/EditorShell.d.ts +1 -4
- package/dist/editor/client/EditorShell.js +237 -770
- package/dist/editor/client/EditorShell.js.map +1 -1
- package/dist/editor/client/editContext.d.ts +19 -33
- package/dist/editor/client/editContext.js.map +1 -1
- package/dist/editor/client/helpers.js +0 -6
- package/dist/editor/client/helpers.js.map +1 -1
- package/dist/editor/client/hooks/useEditorUrlSync.js +2 -1
- package/dist/editor/client/hooks/useEditorUrlSync.js.map +1 -1
- package/dist/editor/client/hooks/useEditorWebSocket.d.ts +0 -10
- package/dist/editor/client/hooks/useEditorWebSocket.js +14 -209
- package/dist/editor/client/hooks/useEditorWebSocket.js.map +1 -1
- package/dist/editor/client/hooks/useQuota.d.ts +0 -8
- package/dist/editor/client/hooks/useQuota.js.map +1 -1
- package/dist/editor/client/hooks/useSocketMessageHandler.js +15 -73
- package/dist/editor/client/hooks/useSocketMessageHandler.js.map +1 -1
- package/dist/editor/client/itemsRepository.js +6 -10
- package/dist/editor/client/itemsRepository.js.map +1 -1
- package/dist/editor/client/operations.d.ts +3 -6
- package/dist/editor/client/operations.js +30 -208
- package/dist/editor/client/operations.js.map +1 -1
- package/dist/editor/client/pageModelBuilder.js +31 -4
- package/dist/editor/client/pageModelBuilder.js.map +1 -1
- package/dist/editor/client/ui/DevModeIndicator.js +2 -2
- package/dist/editor/client/ui/DevModeIndicator.js.map +1 -1
- package/dist/editor/client/ui/EditorChrome.d.ts +6 -0
- package/dist/editor/client/ui/EditorChrome.js +72 -55
- package/dist/editor/client/ui/EditorChrome.js.map +1 -1
- package/dist/editor/client/ui/FullscreenControls.js +3 -5
- package/dist/editor/client/ui/FullscreenControls.js.map +1 -1
- package/dist/editor/commands/commands.d.ts +1 -11
- package/dist/editor/commands/commands.js +1 -12
- package/dist/editor/commands/commands.js.map +1 -1
- package/dist/editor/commands/componentCommands.js +55 -109
- package/dist/editor/commands/componentCommands.js.map +1 -1
- package/dist/editor/commands/customCommandConverter.d.ts +1 -8
- package/dist/editor/commands/customCommandConverter.js +5 -35
- package/dist/editor/commands/customCommandConverter.js.map +1 -1
- package/dist/editor/commands/handlers/agentHandler.js +1 -2
- package/dist/editor/commands/handlers/agentHandler.js.map +1 -1
- package/dist/editor/commands/itemCommands.d.ts +0 -3
- package/dist/editor/commands/itemCommands.js +10 -93
- package/dist/editor/commands/itemCommands.js.map +1 -1
- package/dist/editor/commands/undo.d.ts +15 -9
- package/dist/editor/commands/undo.js +0 -24
- package/dist/editor/commands/undo.js.map +1 -1
- package/dist/editor/context-menu/InsertMenu.js +39 -83
- package/dist/editor/context-menu/InsertMenu.js.map +1 -1
- package/dist/editor/field-types/MultiLineText.js +1 -1
- package/dist/editor/field-types/MultiLineText.js.map +1 -1
- package/dist/editor/field-types/RawEditor.js +1 -1
- package/dist/editor/field-types/ReactQuill.d.ts +125 -0
- package/dist/editor/field-types/ReactQuill.js +385 -0
- package/dist/editor/field-types/ReactQuill.js.map +1 -0
- package/dist/editor/field-types/RichTextEditor.js +5 -13
- package/dist/editor/field-types/RichTextEditor.js.map +1 -1
- package/dist/editor/field-types/RichTextEditorComponent.js +3 -37
- package/dist/editor/field-types/RichTextEditorComponent.js.map +1 -1
- package/dist/editor/field-types/SingleLineText.js +1 -1
- package/dist/editor/field-types/TreeListEditor.js +2 -3
- package/dist/editor/field-types/TreeListEditor.js.map +1 -1
- package/dist/editor/field-types/richtext/components/ReactSlate.css +5 -23
- package/dist/editor/field-types/richtext/components/ReactSlate.d.ts +0 -2
- package/dist/editor/field-types/richtext/components/ReactSlate.js +4 -28
- package/dist/editor/field-types/richtext/components/ReactSlate.js.map +1 -1
- package/dist/editor/field-types/richtext/components/ToolbarButton.js +2 -4
- package/dist/editor/field-types/richtext/components/ToolbarButton.js.map +1 -1
- package/dist/editor/field-types/richtext/contextMenuFactory.d.ts +0 -13
- package/dist/editor/field-types/richtext/contextMenuFactory.js +24 -181
- package/dist/editor/field-types/richtext/contextMenuFactory.js.map +1 -1
- package/dist/editor/field-types/richtext/types.d.ts +0 -2
- package/dist/editor/field-types/richtext/types.js.map +1 -1
- package/dist/editor/field-types/richtext/utils/plugins.js +0 -4
- package/dist/editor/field-types/richtext/utils/plugins.js.map +1 -1
- package/dist/editor/field-types/textContextMenuFactory.js +2 -3
- package/dist/editor/field-types/textContextMenuFactory.js.map +1 -1
- package/dist/editor/media-selector/AiImageSearchPrompt.js +2 -4
- package/dist/editor/media-selector/AiImageSearchPrompt.js.map +1 -1
- package/dist/editor/media-selector/MediaFolderBrowser.js +1 -1
- package/dist/editor/media-selector/MediaFolderBrowser.js.map +1 -1
- package/dist/editor/media-selector/MediaSelector.js +1 -7
- package/dist/editor/media-selector/MediaSelector.js.map +1 -1
- package/dist/editor/media-selector/TreeSelector.js +35 -40
- package/dist/editor/media-selector/TreeSelector.js.map +1 -1
- package/dist/editor/menubar/ActiveUsers.js +1 -1
- package/dist/editor/menubar/ActiveUsers.js.map +1 -1
- package/dist/editor/menubar/GenericToolbar.js +2 -4
- package/dist/editor/menubar/GenericToolbar.js.map +1 -1
- package/dist/editor/menubar/ItemLanguageVersion.js +2 -2
- package/dist/editor/menubar/ItemLanguageVersion.js.map +1 -1
- package/dist/editor/menubar/PageSelector.js +147 -26
- package/dist/editor/menubar/PageSelector.js.map +1 -1
- package/dist/editor/menubar/Separator.js +1 -1
- package/dist/editor/menubar/VersionSelector.js +4 -2
- package/dist/editor/menubar/VersionSelector.js.map +1 -1
- package/dist/editor/menubar/WorkflowButton.js +12 -39
- package/dist/editor/menubar/WorkflowButton.js.map +1 -1
- package/dist/editor/menubar/toolbar-sections/CustomCommandsToolbar.js +38 -16
- package/dist/editor/menubar/toolbar-sections/CustomCommandsToolbar.js.map +1 -1
- package/dist/editor/menubar/toolbar-sections/EditControls.js +3 -3
- package/dist/editor/menubar/toolbar-sections/EditControls.js.map +1 -1
- package/dist/editor/menubar/toolbar-sections/HelpButton.js +0 -1
- package/dist/editor/menubar/toolbar-sections/HelpButton.js.map +1 -1
- package/dist/editor/menubar/toolbar-sections/ManualBrowser.d.ts +10 -6
- package/dist/editor/menubar/toolbar-sections/ManualBrowser.js +220 -597
- package/dist/editor/menubar/toolbar-sections/ManualBrowser.js.map +1 -1
- package/dist/editor/menubar/toolbar-sections/UtilityControls.js +2 -13
- package/dist/editor/menubar/toolbar-sections/UtilityControls.js.map +1 -1
- package/dist/editor/page-editor-chrome/CommentHighlighting.js +1 -42
- package/dist/editor/page-editor-chrome/CommentHighlighting.js.map +1 -1
- package/dist/editor/page-editor-chrome/FrameMenu.js +1 -1
- package/dist/editor/page-editor-chrome/FrameMenu.js.map +1 -1
- package/dist/editor/page-editor-chrome/InlineEditor.js +48 -97
- package/dist/editor/page-editor-chrome/InlineEditor.js.map +1 -1
- package/dist/editor/page-editor-chrome/PlaceholderDropZone.js +17 -38
- package/dist/editor/page-editor-chrome/PlaceholderDropZone.js.map +1 -1
- package/dist/editor/page-editor-chrome/PlaceholderDropZones.js +11 -17
- package/dist/editor/page-editor-chrome/PlaceholderDropZones.js.map +1 -1
- package/dist/editor/page-editor-chrome/useInlineAICompletion.js +301 -301
- package/dist/editor/page-editor-chrome/useInlineAICompletion.js.map +1 -1
- package/dist/editor/page-viewer/DeviceToolbar.js +1 -1
- package/dist/editor/page-viewer/DeviceToolbar.js.map +1 -1
- package/dist/editor/page-viewer/EditorForm.js +11 -69
- package/dist/editor/page-viewer/EditorForm.js.map +1 -1
- package/dist/editor/page-viewer/MiniMap.d.ts +4 -2
- package/dist/editor/page-viewer/MiniMap.js +28 -91
- package/dist/editor/page-viewer/MiniMap.js.map +1 -1
- package/dist/editor/page-viewer/PageViewer.d.ts +1 -3
- package/dist/editor/page-viewer/PageViewer.js +19 -92
- package/dist/editor/page-viewer/PageViewer.js.map +1 -1
- package/dist/editor/page-viewer/PageViewerFrame.d.ts +1 -2
- package/dist/editor/page-viewer/PageViewerFrame.js +115 -348
- package/dist/editor/page-viewer/PageViewerFrame.js.map +1 -1
- package/dist/editor/page-viewer/pageModelSkeletonBuilder.js +49 -114
- package/dist/editor/page-viewer/pageModelSkeletonBuilder.js.map +1 -1
- package/dist/editor/page-viewer/pageViewContext.d.ts +0 -1
- package/dist/editor/page-viewer/pageViewContext.js +14 -51
- package/dist/editor/page-viewer/pageViewContext.js.map +1 -1
- package/dist/editor/pageModel.d.ts +1 -14
- package/dist/editor/reviews/Comment.js +12 -26
- package/dist/editor/reviews/Comment.js.map +1 -1
- package/dist/editor/reviews/CommentDisplayPopover.js +5 -7
- package/dist/editor/reviews/CommentDisplayPopover.js.map +1 -1
- package/dist/editor/reviews/CommentView.js +4 -19
- package/dist/editor/reviews/CommentView.js.map +1 -1
- package/dist/editor/reviews/Comments.js +72 -89
- package/dist/editor/reviews/Comments.js.map +1 -1
- package/dist/editor/reviews/CreateReviewDialog.js +177 -281
- package/dist/editor/reviews/CreateReviewDialog.js.map +1 -1
- package/dist/editor/reviews/DecisionsMatrix.js +25 -96
- package/dist/editor/reviews/DecisionsMatrix.js.map +1 -1
- package/dist/editor/reviews/DiffView.js +14 -7
- package/dist/editor/reviews/DiffView.js.map +1 -1
- package/dist/editor/reviews/EditReviewSettingsDialog.js +4 -6
- package/dist/editor/reviews/EditReviewSettingsDialog.js.map +1 -1
- package/dist/editor/reviews/MultiReviewManager.js +3 -25
- package/dist/editor/reviews/MultiReviewManager.js.map +1 -1
- package/dist/editor/reviews/PagesPanel.js +15 -31
- package/dist/editor/reviews/PagesPanel.js.map +1 -1
- package/dist/editor/reviews/PreviewInfo.js +4 -1
- package/dist/editor/reviews/PreviewInfo.js.map +1 -1
- package/dist/editor/reviews/ReviewCard.js +7 -13
- package/dist/editor/reviews/ReviewCard.js.map +1 -1
- package/dist/editor/reviews/ReviewDetail.js +2 -3
- package/dist/editor/reviews/ReviewDetail.js.map +1 -1
- package/dist/editor/reviews/ReviewsList.js +3 -7
- package/dist/editor/reviews/ReviewsList.js.map +1 -1
- package/dist/editor/reviews/SuggestedEdit.js +3 -34
- package/dist/editor/reviews/SuggestedEdit.js.map +1 -1
- package/dist/editor/reviews/SuggestionDisplayPopover.js +5 -31
- package/dist/editor/reviews/SuggestionDisplayPopover.js.map +1 -1
- package/dist/editor/reviews/commentAi.js +6 -25
- package/dist/editor/reviews/commentAi.js.map +1 -1
- package/dist/editor/reviews/reviewCommands.js +1 -4
- package/dist/editor/reviews/reviewCommands.js.map +1 -1
- package/dist/editor/reviews/useMultiReview.js +2 -2
- package/dist/editor/reviews/useMultiReview.js.map +1 -1
- package/dist/editor/reviews/useReviews.d.ts +2 -2
- package/dist/editor/reviews/useReviews.js +30 -12
- package/dist/editor/reviews/useReviews.js.map +1 -1
- package/dist/editor/services/agentService.d.ts +5 -229
- package/dist/editor/services/agentService.js +39 -292
- package/dist/editor/services/agentService.js.map +1 -1
- package/dist/editor/services/aiService.d.ts +1 -57
- package/dist/editor/services/aiService.js +6 -79
- package/dist/editor/services/aiService.js.map +1 -1
- package/dist/editor/services/contentService.d.ts +3 -6
- package/dist/editor/services/contentService.js +12 -13
- package/dist/editor/services/contentService.js.map +1 -1
- package/dist/editor/services/editService.d.ts +1 -52
- package/dist/editor/services/editService.js +2 -94
- package/dist/editor/services/editService.js.map +1 -1
- package/dist/editor/services/indexService.js +1 -1
- package/dist/editor/services/indexService.js.map +1 -1
- package/dist/editor/services/reviewsService.d.ts +6 -3
- package/dist/editor/services/reviewsService.js +11 -2
- package/dist/editor/services/reviewsService.js.map +1 -1
- package/dist/editor/services/serviceHelper.d.ts +1 -2
- package/dist/editor/services/serviceHelper.js +20 -112
- package/dist/editor/services/serviceHelper.js.map +1 -1
- package/dist/editor/services/systemService.d.ts +1 -2
- package/dist/editor/services/systemService.js +0 -3
- package/dist/editor/services/systemService.js.map +1 -1
- package/dist/editor/services-server/api.d.ts +2 -1
- package/dist/editor/services-server/api.js +6 -11
- package/dist/editor/services-server/api.js.map +1 -1
- package/dist/editor/services-server/graphQL.d.ts +29 -0
- package/dist/editor/services-server/graphQL.js +53 -0
- package/dist/editor/services-server/graphQL.js.map +1 -0
- package/dist/editor/settings/About.js +3 -317
- package/dist/editor/settings/About.js.map +1 -1
- package/dist/editor/settings/AllAgentsPanel.d.ts +5 -0
- package/dist/editor/settings/AllAgentsPanel.js +139 -0
- package/dist/editor/settings/AllAgentsPanel.js.map +1 -0
- package/dist/editor/settings/LatestFeedback.d.ts +1 -0
- package/dist/editor/settings/LatestFeedback.js +136 -0
- package/dist/editor/settings/LatestFeedback.js.map +1 -0
- package/dist/editor/settings/QuotaInfo.js +4 -210
- package/dist/editor/settings/QuotaInfo.js.map +1 -1
- package/dist/editor/settings/SettingsView.js +23 -25
- package/dist/editor/settings/SettingsView.js.map +1 -1
- package/dist/editor/settings/Setup.d.ts +1 -0
- package/dist/editor/settings/Setup.js +211 -0
- package/dist/editor/settings/Setup.js.map +1 -0
- package/dist/editor/settings/Status.js +6 -7
- package/dist/editor/settings/Status.js.map +1 -1
- package/dist/editor/settings/index/useIndexStatus.js +22 -20
- package/dist/editor/settings/index/useIndexStatus.js.map +1 -1
- package/dist/editor/settings/panels/AgentsPanel.d.ts +4 -0
- package/dist/editor/settings/panels/AgentsPanel.js +121 -95
- package/dist/editor/settings/panels/AgentsPanel.js.map +1 -1
- package/dist/editor/settings/panels/DatabasePanel.d.ts +6 -0
- package/dist/editor/settings/panels/DatabasePanel.js +50 -0
- package/dist/editor/settings/panels/DatabasePanel.js.map +1 -0
- package/dist/editor/settings/panels/ModelsPanel.js +108 -329
- package/dist/editor/settings/panels/ModelsPanel.js.map +1 -1
- package/dist/editor/settings/panels/ProvidersPanel.d.ts +1 -1
- package/dist/editor/settings/panels/ProvidersPanel.js +59 -86
- package/dist/editor/settings/panels/ProvidersPanel.js.map +1 -1
- package/dist/editor/settings/panels/SearchConfigPanel.js +4 -4
- package/dist/editor/settings/panels/SearchConfigPanel.js.map +1 -1
- package/dist/editor/settings/panels/index.d.ts +2 -3
- package/dist/editor/settings/panels/index.js +2 -3
- package/dist/editor/settings/panels/index.js.map +1 -1
- package/dist/editor/settings/setup-steps/AiSetupStep/EmbeddingsModelSection.d.ts +2 -0
- package/dist/editor/settings/setup-steps/AiSetupStep/EmbeddingsModelSection.js +195 -0
- package/dist/editor/settings/setup-steps/AiSetupStep/EmbeddingsModelSection.js.map +1 -0
- package/dist/editor/settings/setup-steps/AiSetupStep/index.d.ts +2 -0
- package/dist/editor/settings/setup-steps/AiSetupStep/index.js +21 -0
- package/dist/editor/settings/setup-steps/AiSetupStep/index.js.map +1 -0
- package/dist/editor/settings/setup-steps/AiSetupStep/provider/ProviderSection.d.ts +1 -0
- package/dist/editor/settings/setup-steps/AiSetupStep/provider/ProviderSection.js +233 -0
- package/dist/editor/settings/setup-steps/AiSetupStep/provider/ProviderSection.js.map +1 -0
- package/dist/editor/settings/setup-steps/AiSetupStep/required-containers/RequiredContainersList.d.ts +15 -0
- package/dist/editor/settings/setup-steps/AiSetupStep/required-containers/RequiredContainersList.js +14 -0
- package/dist/editor/settings/setup-steps/AiSetupStep/required-containers/RequiredContainersList.js.map +1 -0
- package/dist/editor/settings/setup-steps/AiSetupStep/required-containers/RequiredContainersSection.d.ts +1 -0
- package/dist/editor/settings/setup-steps/AiSetupStep/required-containers/RequiredContainersSection.js +94 -0
- package/dist/editor/settings/setup-steps/AiSetupStep/required-containers/RequiredContainersSection.js.map +1 -0
- package/dist/editor/settings/setup-steps/AiSetupStep/types.d.ts +1 -0
- package/dist/editor/settings/setup-steps/AiSetupStep/types.js +2 -0
- package/dist/editor/settings/setup-steps/AiSetupStep/types.js.map +1 -0
- package/dist/editor/settings/setup-steps/AiSetupStep/utils.d.ts +5 -0
- package/dist/editor/settings/setup-steps/AiSetupStep/utils.js +44 -0
- package/dist/editor/settings/setup-steps/AiSetupStep/utils.js.map +1 -0
- package/dist/editor/settings/setup-steps/IndexSetupStep.d.ts +2 -0
- package/dist/editor/settings/setup-steps/IndexSetupStep.js +36 -0
- package/dist/editor/settings/setup-steps/IndexSetupStep.js.map +1 -0
- package/dist/editor/settings/setup-steps/SettingsSetupStep.d.ts +2 -0
- package/dist/editor/settings/setup-steps/SettingsSetupStep.js +111 -0
- package/dist/editor/settings/setup-steps/SettingsSetupStep.js.map +1 -0
- package/dist/editor/settings/setup-steps/SetupOverview.d.ts +14 -0
- package/dist/editor/settings/setup-steps/SetupOverview.js +38 -0
- package/dist/editor/settings/setup-steps/SetupOverview.js.map +1 -0
- package/dist/editor/settings/status/coreStatusChecks.js +19 -124
- package/dist/editor/settings/status/coreStatusChecks.js.map +1 -1
- package/dist/editor/settings/status/useStartupChecks.d.ts +1 -3
- package/dist/editor/settings/status/useStartupChecks.js +5 -9
- package/dist/editor/settings/status/useStartupChecks.js.map +1 -1
- package/dist/editor/setup-wizard/steps/CompleteStep.d.ts +1 -2
- package/dist/editor/setup-wizard/steps/CompleteStep.js +1 -2
- package/dist/editor/setup-wizard/steps/CompleteStep.js.map +1 -1
- package/dist/editor/sidebar/ComponentPalette.js +1 -2
- package/dist/editor/sidebar/ComponentPalette.js.map +1 -1
- package/dist/editor/sidebar/ComponentTree.d.ts +1 -8
- package/dist/editor/sidebar/ComponentTree.js +69 -216
- package/dist/editor/sidebar/ComponentTree.js.map +1 -1
- package/dist/editor/sidebar/Debug.d.ts +1 -0
- package/dist/editor/sidebar/Debug.js +70 -0
- package/dist/editor/sidebar/Debug.js.map +1 -0
- package/dist/editor/sidebar/EditHistory.js +46 -22
- package/dist/editor/sidebar/EditHistory.js.map +1 -1
- package/dist/editor/sidebar/Favorites.js +8 -4
- package/dist/editor/sidebar/Favorites.js.map +1 -1
- package/dist/editor/sidebar/GraphQL.d.ts +2 -0
- package/dist/editor/sidebar/GraphQL.js +234 -0
- package/dist/editor/sidebar/GraphQL.js.map +1 -0
- package/dist/editor/sidebar/LeftToolbar.d.ts +1 -0
- package/dist/editor/sidebar/LeftToolbar.js +12 -0
- package/dist/editor/sidebar/LeftToolbar.js.map +1 -0
- package/dist/editor/sidebar/MainContentTree.js +3 -4
- package/dist/editor/sidebar/MainContentTree.js.map +1 -1
- package/dist/editor/sidebar/NavigationSidebar.d.ts +4 -0
- package/dist/editor/sidebar/NavigationSidebar.js +254 -0
- package/dist/editor/sidebar/NavigationSidebar.js.map +1 -0
- package/dist/editor/sidebar/OperationItem.js +7 -21
- package/dist/editor/sidebar/OperationItem.js.map +1 -1
- package/dist/editor/sidebar/SidebarPanel.d.ts +1 -3
- package/dist/editor/sidebar/SidebarPanel.js +12 -44
- package/dist/editor/sidebar/SidebarPanel.js.map +1 -1
- package/dist/editor/sidebar/SidebarStack.d.ts +1 -2
- package/dist/editor/sidebar/SidebarStack.js +3 -4
- package/dist/editor/sidebar/SidebarStack.js.map +1 -1
- package/dist/editor/sidebar/Validation.js +12 -24
- package/dist/editor/sidebar/Validation.js.map +1 -1
- package/dist/editor/sidebar/Workbox.js +3 -53
- package/dist/editor/sidebar/Workbox.js.map +1 -1
- package/dist/editor/sidebar/WorkspaceRail.d.ts +1 -0
- package/dist/editor/sidebar/WorkspaceRail.js +167 -56
- package/dist/editor/sidebar/WorkspaceRail.js.map +1 -1
- package/dist/editor/tree-indicators/GutterColumns.d.ts +1 -3
- package/dist/editor/tree-indicators/GutterColumns.js +5 -26
- package/dist/editor/tree-indicators/GutterColumns.js.map +1 -1
- package/dist/editor/tree-indicators/GutterContext.d.ts +0 -4
- package/dist/editor/tree-indicators/GutterContext.js +0 -23
- package/dist/editor/tree-indicators/GutterContext.js.map +1 -1
- package/dist/editor/tree-indicators/GutterSelector.d.ts +5 -0
- package/dist/editor/tree-indicators/GutterSelector.js +91 -0
- package/dist/editor/tree-indicators/GutterSelector.js.map +1 -0
- package/dist/editor/tree-indicators/index.d.ts +1 -0
- package/dist/editor/tree-indicators/index.js +1 -0
- package/dist/editor/tree-indicators/index.js.map +1 -1
- package/dist/editor/tree-indicators/types.d.ts +1 -12
- package/dist/editor/ui/CopyMoveTargetSelectorDialog.js +1 -1
- package/dist/editor/ui/CopyMoveTargetSelectorDialog.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/ItemNameDialogNew.d.ts +0 -2
- package/dist/editor/ui/ItemNameDialogNew.js +17 -33
- package/dist/editor/ui/ItemNameDialogNew.js.map +1 -1
- package/dist/editor/ui/ItemSearch.js +11 -7
- package/dist/editor/ui/ItemSearch.js.map +1 -1
- package/dist/editor/ui/SimpleIconButton.js +1 -1
- package/dist/editor/ui/SimpleIconButton.js.map +1 -1
- package/dist/editor/ui/SimpleTabs.d.ts +0 -1
- package/dist/editor/ui/SimpleTabs.js +25 -45
- package/dist/editor/ui/SimpleTabs.js.map +1 -1
- package/dist/editor/ui/Splitter.d.ts +0 -1
- package/dist/editor/ui/Splitter.js +86 -102
- package/dist/editor/ui/Splitter.js.map +1 -1
- package/dist/editor/ui/TemplateSelectorDialog.js +4 -4
- package/dist/editor/ui/TemplateSelectorDialog.js.map +1 -1
- package/dist/editor/ui/TreeListSelector.d.ts +1 -6
- package/dist/editor/ui/TreeListSelector.js +2 -2
- package/dist/editor/ui/TreeListSelector.js.map +1 -1
- package/dist/editor/utils/keyboardNavigation.d.ts +20 -6
- package/dist/editor/utils/keyboardNavigation.js +140 -48
- package/dist/editor/utils/keyboardNavigation.js.map +1 -1
- package/dist/editor/utils.js +9 -19
- package/dist/editor/utils.js.map +1 -1
- package/dist/editor/views/CompareView.d.ts +1 -3
- package/dist/editor/views/CompareView.js +5 -7
- package/dist/editor/views/CompareView.js.map +1 -1
- package/dist/editor/views/EditView.js +1 -1
- package/dist/editor/views/EditView.js.map +1 -1
- package/dist/editor/views/EditorSlot.js +34 -27
- package/dist/editor/views/EditorSlot.js.map +1 -1
- package/dist/editor/views/ItemEditor.js +3 -7
- package/dist/editor/views/ItemEditor.js.map +1 -1
- package/dist/editor/views/MediaFolderEditView.js +1 -1
- package/dist/editor/views/MediaFolderEditView.js.map +1 -1
- package/dist/editor/views/ParheliaView.js +6 -5
- package/dist/editor/views/ParheliaView.js.map +1 -1
- package/dist/editor/views/SingleEditView.d.ts +1 -2
- package/dist/editor/views/SingleEditView.js +8 -10
- package/dist/editor/views/SingleEditView.js.map +1 -1
- package/dist/editor/views/editorSlotContext.js +6 -35
- package/dist/editor/views/editorSlotContext.js.map +1 -1
- package/dist/index.d.ts +2 -16
- package/dist/index.js +0 -11
- package/dist/index.js.map +1 -1
- package/dist/revision.d.ts +2 -2
- package/dist/revision.js +2 -2
- package/dist/setup/services/setupWizardService.d.ts +13 -40
- package/dist/setup/services/setupWizardService.js +17 -32
- package/dist/setup/services/setupWizardService.js.map +1 -1
- package/dist/setup/wizard/steps/AddModelDialog.js +3 -12
- package/dist/setup/wizard/steps/AddModelDialog.js.map +1 -1
- package/dist/setup/wizard/steps/ImportModelDialog.js +22 -39
- package/dist/setup/wizard/steps/ImportModelDialog.js.map +1 -1
- package/dist/splash-screen/ModernSplashScreen.js +32 -112
- package/dist/splash-screen/ModernSplashScreen.js.map +1 -1
- package/dist/splash-screen/NewPage.js +50 -33
- package/dist/splash-screen/NewPage.js.map +1 -1
- package/dist/splash-screen/OpenPage.js +6 -2
- package/dist/splash-screen/OpenPage.js.map +1 -1
- package/dist/splash-screen/ParheliaAssistantChat.js +29 -12
- package/dist/splash-screen/ParheliaAssistantChat.js.map +1 -1
- package/dist/splash-screen/ParheliaLogo.js +37 -87
- package/dist/splash-screen/ParheliaLogo.js.map +1 -1
- package/dist/splash-screen/RecentPages.js +3 -3
- package/dist/splash-screen/RecentPages.js.map +1 -1
- package/dist/tour/Tour.d.ts +1 -2
- package/dist/tour/Tour.js +75 -256
- package/dist/tour/Tour.js.map +1 -1
- package/dist/tour/default-tour.js +96 -222
- package/dist/tour/default-tour.js.map +1 -1
- package/dist/types.d.ts +29 -63
- package/package.json +15 -19
- package/styles.css +10 -39
package/dist/editor/ai/Agents.js
CHANGED
|
@@ -3,12 +3,9 @@ import React, { useState, useRef, useEffect, useMemo } from "react";
|
|
|
3
3
|
import { SimpleIconButton } from "../ui/SimpleIconButton";
|
|
4
4
|
import { Plus, X, MoreVertical } from "lucide-react";
|
|
5
5
|
import { cn } from "../../lib/utils";
|
|
6
|
-
import { sanitizeSvg } from "../../lib/sanitize";
|
|
7
6
|
import { getAgentStatusConfig } from "./AgentStatusBadge";
|
|
8
7
|
import { Popover, PopoverContent, PopoverTrigger, } from "../../components/ui/popover";
|
|
9
8
|
import { getActiveAgents, closeAgent as closeAgentService, } from "../services/agentService";
|
|
10
|
-
import { isExecutingAgentStatus, isRunningAgentStatus, parseAgentStatus, shouldIgnoreReplayRunStart, } from "../services/agentStatus";
|
|
11
|
-
import { toUserFacingAgentErrorMessage } from "../services/agentErrorMessage";
|
|
12
9
|
import { AgentTerminal } from "./AgentTerminal";
|
|
13
10
|
import { useEditContext } from "../client/editContext";
|
|
14
11
|
import { Tooltip, TooltipContent, TooltipTrigger, } from "../../components/ui/tooltip";
|
|
@@ -20,8 +17,6 @@ import { AgentsView } from "../../agents-view/AgentsView";
|
|
|
20
17
|
import { agentNeedsAttention } from "../../agents-view/AgentsInbox";
|
|
21
18
|
import { SecretAgentIcon } from "../ui/Icons";
|
|
22
19
|
import { Spinner } from "../ui/Spinner";
|
|
23
|
-
import { localStorageService } from "../services/localStorageService";
|
|
24
|
-
import { LicenseFeatures, useFeature } from "../../licensing";
|
|
25
20
|
// function convertAgentMessagesToTerminalMessages(
|
|
26
21
|
// agentMessages: AgentChatMessage[],
|
|
27
22
|
// ): Message[] {
|
|
@@ -46,20 +41,6 @@ import { LicenseFeatures, useFeature } from "../../licensing";
|
|
|
46
41
|
// }));
|
|
47
42
|
// }
|
|
48
43
|
const ACTIVE_AGENT_STORAGE_KEY = "editor.activeAgentId";
|
|
49
|
-
const TASKBOARD_PROJECT_QUERY_KEY = "tbProjectId";
|
|
50
|
-
const TASKBOARD_TASK_QUERY_KEY = "tbTaskId";
|
|
51
|
-
function readTaskboardLinkageFromUrl() {
|
|
52
|
-
if (typeof window === "undefined") {
|
|
53
|
-
return {};
|
|
54
|
-
}
|
|
55
|
-
const params = new URLSearchParams(window.location.search);
|
|
56
|
-
const projectId = params.get(TASKBOARD_PROJECT_QUERY_KEY)?.trim() || "";
|
|
57
|
-
const taskId = params.get(TASKBOARD_TASK_QUERY_KEY)?.trim() || "";
|
|
58
|
-
return {
|
|
59
|
-
projectId: projectId || undefined,
|
|
60
|
-
taskId: taskId || undefined,
|
|
61
|
-
};
|
|
62
|
-
}
|
|
63
44
|
export const Agents = React.memo(function Agents({ closeButton, }) {
|
|
64
45
|
const [agents, setAgents] = useState([]);
|
|
65
46
|
const [activeAgentId, setActiveAgentId] = useState(""); // "" = show profile selector, null = show overview, string = agent ID
|
|
@@ -74,7 +55,6 @@ export const Agents = React.memo(function Agents({ closeButton, }) {
|
|
|
74
55
|
const [selectedProfileId, setSelectedProfileId] = useState("");
|
|
75
56
|
const [loadingProfiles, setLoadingProfiles] = useState(false);
|
|
76
57
|
const editContext = useEditContext();
|
|
77
|
-
const canUseAi = useFeature(LicenseFeatures.AI);
|
|
78
58
|
// Group agents by profile for profile-based tabs
|
|
79
59
|
const agentsGroupedByProfile = useMemo(() => {
|
|
80
60
|
const profileMap = new Map();
|
|
@@ -153,17 +133,14 @@ export const Agents = React.memo(function Agents({ closeButton, }) {
|
|
|
153
133
|
setActiveAgentId(agentId);
|
|
154
134
|
activeAgentIdRef.current = agentId;
|
|
155
135
|
if (agentId) {
|
|
156
|
-
|
|
136
|
+
localStorage.setItem(ACTIVE_AGENT_STORAGE_KEY, agentId);
|
|
157
137
|
}
|
|
158
138
|
else {
|
|
159
|
-
|
|
139
|
+
localStorage.removeItem(ACTIVE_AGENT_STORAGE_KEY);
|
|
160
140
|
}
|
|
161
141
|
};
|
|
162
142
|
// Open an agent from history (or switch to it if already open)
|
|
163
143
|
const openAgentFromHistory = React.useCallback(async (agent) => {
|
|
164
|
-
if (!canUseAi) {
|
|
165
|
-
return;
|
|
166
|
-
}
|
|
167
144
|
// Check if this agent is already open as a terminal
|
|
168
145
|
// Use functional check pattern to get latest agents state
|
|
169
146
|
let alreadyOpen = false;
|
|
@@ -218,23 +195,11 @@ export const Agents = React.memo(function Agents({ closeButton, }) {
|
|
|
218
195
|
};
|
|
219
196
|
setAgents((prev) => [...prev, reopenedAgent]);
|
|
220
197
|
setActiveAgentIdWithStorage(reopenedAgent.id);
|
|
221
|
-
}, [
|
|
198
|
+
}, []);
|
|
222
199
|
// Load agents from backend on mount
|
|
223
200
|
useEffect(() => {
|
|
224
|
-
if (!canUseAi) {
|
|
225
|
-
setAgents([]);
|
|
226
|
-
setInactiveAgents([]);
|
|
227
|
-
setAvailableProfiles([]);
|
|
228
|
-
setActiveAgentId(null);
|
|
229
|
-
activeAgentIdRef.current = null;
|
|
230
|
-
setSelectedProfileId("");
|
|
231
|
-
setLoadingAgents(false);
|
|
232
|
-
setLoadingProfiles(false);
|
|
233
|
-
localStorageService.removeItem(ACTIVE_AGENT_STORAGE_KEY);
|
|
234
|
-
return;
|
|
235
|
-
}
|
|
236
201
|
loadAgentsFromBackend();
|
|
237
|
-
}, [
|
|
202
|
+
}, []);
|
|
238
203
|
// When no agents are present (empty state) or when switching to the profile selector,
|
|
239
204
|
// keep selection state consistent without triggering extra fetches.
|
|
240
205
|
useEffect(() => {
|
|
@@ -249,11 +214,6 @@ export const Agents = React.memo(function Agents({ closeButton, }) {
|
|
|
249
214
|
}, [activeAgentId, agents.length]);
|
|
250
215
|
// Function to reload profiles
|
|
251
216
|
const reloadProfiles = React.useCallback(async () => {
|
|
252
|
-
if (!canUseAi) {
|
|
253
|
-
setAvailableProfiles([]);
|
|
254
|
-
setLoadingProfiles(false);
|
|
255
|
-
return;
|
|
256
|
-
}
|
|
257
217
|
try {
|
|
258
218
|
setLoadingProfiles(true);
|
|
259
219
|
const profiles = await loadAiProfiles(editContext?.currentItemDescriptor);
|
|
@@ -265,15 +225,10 @@ export const Agents = React.memo(function Agents({ closeButton, }) {
|
|
|
265
225
|
finally {
|
|
266
226
|
setLoadingProfiles(false);
|
|
267
227
|
}
|
|
268
|
-
}, [
|
|
228
|
+
}, [editContext?.currentItemDescriptor]);
|
|
269
229
|
// Ensure profiles are loaded once for terminals (centralized load)
|
|
270
230
|
// Only load on mount - profiles are cached and will be reloaded via websocket when changed
|
|
271
231
|
useEffect(() => {
|
|
272
|
-
if (!canUseAi) {
|
|
273
|
-
setAvailableProfiles([]);
|
|
274
|
-
setLoadingProfiles(false);
|
|
275
|
-
return;
|
|
276
|
-
}
|
|
277
232
|
let cancelled = false;
|
|
278
233
|
(async () => {
|
|
279
234
|
try {
|
|
@@ -295,10 +250,10 @@ export const Agents = React.memo(function Agents({ closeButton, }) {
|
|
|
295
250
|
cancelled = true;
|
|
296
251
|
};
|
|
297
252
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
298
|
-
}, [
|
|
253
|
+
}, []); // Only run on mount - profiles reload via websocket when changed
|
|
299
254
|
// Listen for agent profile changes via websocket (when profiles are updated in Sitecore)
|
|
300
255
|
useEffect(() => {
|
|
301
|
-
if (!
|
|
256
|
+
if (!editContext?.addSocketMessageListener)
|
|
302
257
|
return;
|
|
303
258
|
const removeListener = editContext.addSocketMessageListener((message) => {
|
|
304
259
|
if (message.type === "agent-profiles-changed") {
|
|
@@ -308,11 +263,9 @@ export const Agents = React.memo(function Agents({ closeButton, }) {
|
|
|
308
263
|
return () => {
|
|
309
264
|
removeListener();
|
|
310
265
|
};
|
|
311
|
-
}, [
|
|
266
|
+
}, [editContext?.addSocketMessageListener, reloadProfiles]);
|
|
312
267
|
// Listen for external requests to add a new agent (e.g., AI command)
|
|
313
268
|
useEffect(() => {
|
|
314
|
-
if (!canUseAi)
|
|
315
|
-
return;
|
|
316
269
|
const handleAddNewAgent = (ev) => {
|
|
317
270
|
let initialMetadata = undefined;
|
|
318
271
|
try {
|
|
@@ -331,11 +284,9 @@ export const Agents = React.memo(function Agents({ closeButton, }) {
|
|
|
331
284
|
};
|
|
332
285
|
window.addEventListener("editor:addNewAgent", handleAddNewAgent);
|
|
333
286
|
return () => window.removeEventListener("editor:addNewAgent", handleAddNewAgent);
|
|
334
|
-
}, [
|
|
287
|
+
}, []);
|
|
335
288
|
// Listen for external requests to select an existing open agent without switching views
|
|
336
289
|
useEffect(() => {
|
|
337
|
-
if (!canUseAi)
|
|
338
|
-
return;
|
|
339
290
|
const handleSelectAgent = (ev) => {
|
|
340
291
|
try {
|
|
341
292
|
const ce = ev;
|
|
@@ -351,11 +302,9 @@ export const Agents = React.memo(function Agents({ closeButton, }) {
|
|
|
351
302
|
};
|
|
352
303
|
window.addEventListener("editor:selectAgent", handleSelectAgent);
|
|
353
304
|
return () => window.removeEventListener("editor:selectAgent", handleSelectAgent);
|
|
354
|
-
}, [
|
|
305
|
+
}, [agents]);
|
|
355
306
|
// Listen for external requests to open an existing agent
|
|
356
307
|
useEffect(() => {
|
|
357
|
-
if (!canUseAi)
|
|
358
|
-
return;
|
|
359
308
|
const handleOpenAgent = (ev) => {
|
|
360
309
|
try {
|
|
361
310
|
const ce = ev;
|
|
@@ -372,11 +321,9 @@ export const Agents = React.memo(function Agents({ closeButton, }) {
|
|
|
372
321
|
};
|
|
373
322
|
window.addEventListener("editor:openAgent", handleOpenAgent);
|
|
374
323
|
return () => window.removeEventListener("editor:openAgent", handleOpenAgent);
|
|
375
|
-
}, [
|
|
324
|
+
}, [openAgentFromHistory]);
|
|
376
325
|
// Listen for external requests to create a new agent with a specific profile
|
|
377
326
|
useEffect(() => {
|
|
378
|
-
if (!canUseAi)
|
|
379
|
-
return;
|
|
380
327
|
const handleCreateAgentWithProfile = (ev) => {
|
|
381
328
|
try {
|
|
382
329
|
const ce = ev;
|
|
@@ -389,16 +336,17 @@ export const Agents = React.memo(function Agents({ closeButton, }) {
|
|
|
389
336
|
profileName: profile.name,
|
|
390
337
|
};
|
|
391
338
|
// Add preconfigured todos as todoList if the profile has them
|
|
392
|
-
|
|
339
|
+
// Backend uses [PreserveNames] so check both camelCase and PascalCase
|
|
340
|
+
const preconfiguredTodos = profile.preconfiguredTodos || profile.PreconfiguredTodos;
|
|
393
341
|
if (preconfiguredTodos && preconfiguredTodos.length > 0) {
|
|
394
342
|
additionalData.todoList = {
|
|
395
343
|
title: "Preconfigured Tasks",
|
|
396
344
|
items: preconfiguredTodos.map((todo) => ({
|
|
397
|
-
id: todo.id || crypto.randomUUID(),
|
|
398
|
-
title: todo.title,
|
|
345
|
+
id: todo.id || todo.Id || crypto.randomUUID(),
|
|
346
|
+
title: todo.title || todo.Title,
|
|
399
347
|
status: "pending",
|
|
400
|
-
instructions: todo.instructions,
|
|
401
|
-
agentProfileId: todo.agentProfileId,
|
|
348
|
+
instructions: todo.instructions || todo.Instructions,
|
|
349
|
+
agentProfileId: todo.agentProfileId || todo.AgentProfileId,
|
|
402
350
|
})),
|
|
403
351
|
};
|
|
404
352
|
}
|
|
@@ -435,10 +383,10 @@ export const Agents = React.memo(function Agents({ closeButton, }) {
|
|
|
435
383
|
};
|
|
436
384
|
window.addEventListener("editor:createAgentWithProfile", handleCreateAgentWithProfile);
|
|
437
385
|
return () => window.removeEventListener("editor:createAgentWithProfile", handleCreateAgentWithProfile);
|
|
438
|
-
}, [
|
|
386
|
+
}, []);
|
|
439
387
|
// Subscribe to websocket messages for agent events
|
|
440
388
|
useEffect(() => {
|
|
441
|
-
if (!
|
|
389
|
+
if (!editContext?.addSocketMessageListener)
|
|
442
390
|
return;
|
|
443
391
|
const unsubscribe = editContext.addSocketMessageListener((message) => {
|
|
444
392
|
// In single-agent mode, ignore events that would add or remove agents,
|
|
@@ -451,12 +399,11 @@ export const Agents = React.memo(function Agents({ closeButton, }) {
|
|
|
451
399
|
}
|
|
452
400
|
if (message.type === "agent:run:start") {
|
|
453
401
|
const payload = message.payload || {};
|
|
454
|
-
const agentId = payload.agentId;
|
|
455
|
-
const agentName = payload.agentName;
|
|
456
|
-
const autoSelect = payload.autoSelect;
|
|
457
|
-
const profileId = payload.profileId;
|
|
458
|
-
const profileName = payload.profileName;
|
|
459
|
-
const timestamp = payload.timestamp;
|
|
402
|
+
const agentId = payload.agentId || payload.AgentId;
|
|
403
|
+
const agentName = payload.agentName || payload.AgentName;
|
|
404
|
+
const autoSelect = payload.autoSelect || payload.AutoSelect;
|
|
405
|
+
const profileId = payload.profileId || payload.ProfileId;
|
|
406
|
+
const profileName = payload.profileName || payload.ProfileName;
|
|
460
407
|
if (!agentId || !agentName) {
|
|
461
408
|
console.warn("Invalid agent:run:start message payload:", message.payload);
|
|
462
409
|
return;
|
|
@@ -468,9 +415,6 @@ export const Agents = React.memo(function Agents({ closeButton, }) {
|
|
|
468
415
|
// Update existing agent name and profile info
|
|
469
416
|
const updatedAgents = [...prevAgents];
|
|
470
417
|
const existingAgent = updatedAgents[existingAgentIndex];
|
|
471
|
-
if (shouldIgnoreReplayRunStart(existingAgent.status, existingAgent.updatedDate, typeof timestamp === "string" ? timestamp : undefined)) {
|
|
472
|
-
return prevAgents;
|
|
473
|
-
}
|
|
474
418
|
updatedAgents[existingAgentIndex] = {
|
|
475
419
|
...existingAgent,
|
|
476
420
|
name: agentName,
|
|
@@ -502,9 +446,9 @@ export const Agents = React.memo(function Agents({ closeButton, }) {
|
|
|
502
446
|
}
|
|
503
447
|
else if (message.type === "agent:info:updated") {
|
|
504
448
|
const payload = message.payload || {};
|
|
505
|
-
const agentId = payload.agentId;
|
|
506
|
-
const agentName = payload.agentName;
|
|
507
|
-
const agentDescription = payload.agentDescription;
|
|
449
|
+
const agentId = payload.agentId || payload.AgentId;
|
|
450
|
+
const agentName = payload.agentName || payload.AgentName;
|
|
451
|
+
const agentDescription = payload.agentDescription || payload.AgentDescription;
|
|
508
452
|
if (!agentId)
|
|
509
453
|
return;
|
|
510
454
|
// Update the agent name and/or description in the tabs list
|
|
@@ -528,11 +472,56 @@ export const Agents = React.memo(function Agents({ closeButton, }) {
|
|
|
528
472
|
else if (message.type === "agent:run:status") {
|
|
529
473
|
// Unified status updates (state only)
|
|
530
474
|
const payload = message.payload || {};
|
|
531
|
-
const agentId = payload.agentId;
|
|
532
|
-
const data = payload.data;
|
|
475
|
+
const agentId = payload.agentId || payload.AgentId;
|
|
476
|
+
const data = payload.data || payload.Data;
|
|
533
477
|
if (!agentId)
|
|
534
478
|
return;
|
|
535
|
-
const
|
|
479
|
+
const rawState = data?.state || data?.State;
|
|
480
|
+
const status = (() => {
|
|
481
|
+
if (!rawState)
|
|
482
|
+
return undefined;
|
|
483
|
+
switch (rawState) {
|
|
484
|
+
case "Running":
|
|
485
|
+
return "running";
|
|
486
|
+
case "WaitingForApproval":
|
|
487
|
+
return "waitingForApproval";
|
|
488
|
+
case "Completed":
|
|
489
|
+
return "completed";
|
|
490
|
+
case "Closed":
|
|
491
|
+
return "closed";
|
|
492
|
+
case "Error":
|
|
493
|
+
return "error";
|
|
494
|
+
case "Idle":
|
|
495
|
+
return "idle";
|
|
496
|
+
case "CostLimitReached":
|
|
497
|
+
return "costLimitReached";
|
|
498
|
+
// Transient notification states - not actual agent statuses
|
|
499
|
+
case "toolApprovalGranted":
|
|
500
|
+
case "toolApprovalRejected":
|
|
501
|
+
case "toolApprovalsRequired":
|
|
502
|
+
case "executingToolCalls":
|
|
503
|
+
case "tokenUsage":
|
|
504
|
+
case "streamOpen":
|
|
505
|
+
case "contextChanged":
|
|
506
|
+
case "queued":
|
|
507
|
+
return undefined; // ignore transient states
|
|
508
|
+
default:
|
|
509
|
+
// allow already-lowercased strings that are valid statuses
|
|
510
|
+
if ([
|
|
511
|
+
"new",
|
|
512
|
+
"running",
|
|
513
|
+
"waitingForApproval",
|
|
514
|
+
"completed",
|
|
515
|
+
"closed",
|
|
516
|
+
"error",
|
|
517
|
+
"idle",
|
|
518
|
+
"costLimitReached",
|
|
519
|
+
].includes(rawState)) {
|
|
520
|
+
return rawState;
|
|
521
|
+
}
|
|
522
|
+
return undefined; // ignore unknown states
|
|
523
|
+
}
|
|
524
|
+
})();
|
|
536
525
|
if (!status)
|
|
537
526
|
return;
|
|
538
527
|
setAgents((prevAgents) => {
|
|
@@ -586,7 +575,7 @@ export const Agents = React.memo(function Agents({ closeButton, }) {
|
|
|
586
575
|
// No agents left, show profile selector
|
|
587
576
|
setActiveAgentId("");
|
|
588
577
|
activeAgentIdRef.current = "";
|
|
589
|
-
|
|
578
|
+
localStorage.removeItem(ACTIVE_AGENT_STORAGE_KEY);
|
|
590
579
|
}
|
|
591
580
|
}
|
|
592
581
|
// If no agents remain, reset profile selection to placeholder
|
|
@@ -599,9 +588,9 @@ export const Agents = React.memo(function Agents({ closeButton, }) {
|
|
|
599
588
|
else if (message.type === "agent:profile:switched") {
|
|
600
589
|
// Handle profile switch initiated by the agent (via switch-profile function)
|
|
601
590
|
const payload = message.payload || {};
|
|
602
|
-
const agentId = payload.agentId;
|
|
603
|
-
const newProfileId = payload.newProfileId;
|
|
604
|
-
const newProfileName = payload.newProfileName;
|
|
591
|
+
const agentId = payload.agentId || payload.AgentId;
|
|
592
|
+
const newProfileId = payload.newProfileId || payload.NewProfileId;
|
|
593
|
+
const newProfileName = payload.newProfileName || payload.NewProfileName;
|
|
605
594
|
if (!agentId || !newProfileId)
|
|
606
595
|
return;
|
|
607
596
|
// Find the profile's icon from available profiles
|
|
@@ -624,15 +613,9 @@ export const Agents = React.memo(function Agents({ closeButton, }) {
|
|
|
624
613
|
}
|
|
625
614
|
});
|
|
626
615
|
return unsubscribe;
|
|
627
|
-
}, [
|
|
616
|
+
}, [editContext?.addSocketMessageListener, availableProfiles]);
|
|
628
617
|
const loadAgentsFromBackend = async () => {
|
|
629
618
|
try {
|
|
630
|
-
if (!canUseAi) {
|
|
631
|
-
setAgents([]);
|
|
632
|
-
setInactiveAgents([]);
|
|
633
|
-
setLoadingAgents(false);
|
|
634
|
-
return;
|
|
635
|
-
}
|
|
636
619
|
// In single-agent mode, skip loading any pre-existing/open agents or history
|
|
637
620
|
if (singleAgentModeRef.current) {
|
|
638
621
|
setAgents([]);
|
|
@@ -653,18 +636,11 @@ export const Agents = React.memo(function Agents({ closeButton, }) {
|
|
|
653
636
|
excludeClosed: true, // Exclude closed and cancelled agents
|
|
654
637
|
});
|
|
655
638
|
const activeAgentsResult = activeAgentsResponse.agents;
|
|
656
|
-
|
|
657
|
-
setAgents((prev) => {
|
|
658
|
-
const newAgents = prev.filter((a) => a.status === "new");
|
|
659
|
-
// Avoid duplicates if any new agents were already saved and returned in activeAgentsResult
|
|
660
|
-
const backendIds = new Set(activeAgentsResult.map((a) => a.id));
|
|
661
|
-
const filteredNewAgents = newAgents.filter((a) => !backendIds.has(a.id));
|
|
662
|
-
return [...activeAgentsResult, ...filteredNewAgents];
|
|
663
|
-
});
|
|
639
|
+
setAgents(activeAgentsResult);
|
|
664
640
|
// Try to restore the previously active agent from localStorage if one exists
|
|
665
641
|
let selectedAgentId = null;
|
|
666
642
|
if (activeAgentsResult.length > 0) {
|
|
667
|
-
const storedAgentId =
|
|
643
|
+
const storedAgentId = localStorage.getItem(ACTIVE_AGENT_STORAGE_KEY);
|
|
668
644
|
const storedAgent = activeAgentsResult.find((agent) => agent.id === storedAgentId);
|
|
669
645
|
if (storedAgent) {
|
|
670
646
|
selectedAgentId = storedAgent.id;
|
|
@@ -677,28 +653,13 @@ export const Agents = React.memo(function Agents({ closeButton, }) {
|
|
|
677
653
|
}
|
|
678
654
|
// If there are no active agents after load, set to empty string to show profile selector
|
|
679
655
|
if (activeAgentsResult.length === 0) {
|
|
680
|
-
|
|
681
|
-
|
|
682
|
-
|
|
683
|
-
|
|
684
|
-
activeAgentIdRef.current = "";
|
|
685
|
-
localStorage.removeItem(ACTIVE_AGENT_STORAGE_KEY);
|
|
686
|
-
setSelectedProfileId("");
|
|
687
|
-
}
|
|
688
|
-
return prev;
|
|
689
|
-
});
|
|
656
|
+
setActiveAgentId("");
|
|
657
|
+
activeAgentIdRef.current = "";
|
|
658
|
+
localStorage.removeItem(ACTIVE_AGENT_STORAGE_KEY);
|
|
659
|
+
setSelectedProfileId("");
|
|
690
660
|
}
|
|
691
661
|
else {
|
|
692
|
-
|
|
693
|
-
// This prevents overwriting a newly created agent from a comment (especially on mobile)
|
|
694
|
-
const currentActiveId = activeAgentIdRef.current;
|
|
695
|
-
setAgents((prev) => {
|
|
696
|
-
const isNewAgentActive = prev.some((a) => a.id === currentActiveId && a.status === "new");
|
|
697
|
-
if (!isNewAgentActive) {
|
|
698
|
-
setActiveAgentIdWithStorage(selectedAgentId);
|
|
699
|
-
}
|
|
700
|
-
return prev;
|
|
701
|
-
});
|
|
662
|
+
setActiveAgentIdWithStorage(selectedAgentId);
|
|
702
663
|
}
|
|
703
664
|
// Load closed agents for history
|
|
704
665
|
const response = await getActiveAgents({
|
|
@@ -707,7 +668,7 @@ export const Agents = React.memo(function Agents({ closeButton, }) {
|
|
|
707
668
|
includeOwned: true,
|
|
708
669
|
});
|
|
709
670
|
// Filter to only closed agents on the client side
|
|
710
|
-
const closedAgents = response.agents.filter((agent) => agent.status === "closed");
|
|
671
|
+
const closedAgents = response.agents.filter((agent) => agent.status === "closed" || agent.status === 5);
|
|
711
672
|
// Deduplicate agents by ID in case the backend returns duplicates
|
|
712
673
|
const uniqueClosedAgents = closedAgents.filter((agent, index, self) => index === self.findIndex((a) => a.id === agent.id));
|
|
713
674
|
setInactiveAgents(uniqueClosedAgents);
|
|
@@ -733,9 +694,6 @@ export const Agents = React.memo(function Agents({ closeButton, }) {
|
|
|
733
694
|
// return null;
|
|
734
695
|
// };
|
|
735
696
|
const addAgent = (metadata) => {
|
|
736
|
-
if (!canUseAi) {
|
|
737
|
-
return;
|
|
738
|
-
}
|
|
739
697
|
const newAgent = {
|
|
740
698
|
status: "new",
|
|
741
699
|
id: crypto.randomUUID(),
|
|
@@ -761,29 +719,24 @@ export const Agents = React.memo(function Agents({ closeButton, }) {
|
|
|
761
719
|
};
|
|
762
720
|
const createAgentWithSelectedProfile = (profileId) => {
|
|
763
721
|
const selected = availableProfiles.find((p) => p.id === profileId);
|
|
764
|
-
const taskboardLinkage = readTaskboardLinkageFromUrl();
|
|
765
722
|
// Build additionalData with preconfigured todos if available
|
|
766
723
|
// Backend uses [PreserveNames] so check both camelCase and PascalCase
|
|
767
724
|
const additionalData = selected
|
|
768
725
|
? {
|
|
769
726
|
profileId: selected.id,
|
|
770
727
|
profileName: selected.name,
|
|
771
|
-
...(taskboardLinkage.projectId
|
|
772
|
-
? { projectId: taskboardLinkage.projectId }
|
|
773
|
-
: {}),
|
|
774
|
-
...(taskboardLinkage.taskId ? { taskId: taskboardLinkage.taskId } : {}),
|
|
775
728
|
}
|
|
776
729
|
: {};
|
|
777
|
-
const preconfiguredTodos = selected?.preconfiguredTodos;
|
|
730
|
+
const preconfiguredTodos = selected?.preconfiguredTodos || selected?.PreconfiguredTodos;
|
|
778
731
|
if (preconfiguredTodos && preconfiguredTodos.length > 0) {
|
|
779
732
|
additionalData.todoList = {
|
|
780
733
|
title: "Preconfigured Tasks",
|
|
781
734
|
items: preconfiguredTodos.map((todo) => ({
|
|
782
|
-
id: todo.id || crypto.randomUUID(),
|
|
783
|
-
title: todo.title,
|
|
735
|
+
id: todo.id || todo.Id || crypto.randomUUID(),
|
|
736
|
+
title: todo.title || todo.Title,
|
|
784
737
|
status: "pending",
|
|
785
|
-
instructions: todo.instructions,
|
|
786
|
-
agentProfileId: todo.agentProfileId,
|
|
738
|
+
instructions: todo.instructions || todo.Instructions,
|
|
739
|
+
agentProfileId: todo.agentProfileId || todo.AgentProfileId,
|
|
787
740
|
})),
|
|
788
741
|
};
|
|
789
742
|
}
|
|
@@ -795,9 +748,6 @@ export const Agents = React.memo(function Agents({ closeButton, }) {
|
|
|
795
748
|
: undefined;
|
|
796
749
|
addAgent(metadata);
|
|
797
750
|
};
|
|
798
|
-
const handleAgentUpdate = React.useCallback((agentId, updates) => {
|
|
799
|
-
setAgents((prev) => prev.map((agent) => agent.id === agentId ? { ...agent, ...updates } : agent));
|
|
800
|
-
}, []);
|
|
801
751
|
const closeAgent = async (agentId) => {
|
|
802
752
|
try {
|
|
803
753
|
// Permanently close the agent in the backend
|
|
@@ -858,8 +808,13 @@ export const Agents = React.memo(function Agents({ closeButton, }) {
|
|
|
858
808
|
closeAgent(agentId);
|
|
859
809
|
return;
|
|
860
810
|
}
|
|
811
|
+
// Check if agent is in an active state (running or waiting for approval)
|
|
812
|
+
// Handle both string and numeric status values
|
|
813
|
+
// Enum: New=0, Running=1, WaitingForApproval=2, Completed=3, Error=4, Closed=5
|
|
861
814
|
const isActivelyRunning = agent.status === "running" ||
|
|
862
|
-
agent.status === "waitingForApproval"
|
|
815
|
+
agent.status === "waitingForApproval" ||
|
|
816
|
+
agent.status === 1 ||
|
|
817
|
+
agent.status === 2;
|
|
863
818
|
// If agent is actively running, show confirmation dialog
|
|
864
819
|
if (isActivelyRunning) {
|
|
865
820
|
if (editContext?.confirm) {
|
|
@@ -882,12 +837,15 @@ export const Agents = React.memo(function Agents({ closeButton, }) {
|
|
|
882
837
|
const handleCloseProfileAgents = async (profileAgents, profileName, e) => {
|
|
883
838
|
e.stopPropagation();
|
|
884
839
|
const agentCount = profileAgents.length;
|
|
885
|
-
const hasActiveAgents = profileAgents.some((agent) =>
|
|
840
|
+
const hasActiveAgents = profileAgents.some((agent) => agent.status === "running" ||
|
|
841
|
+
agent.status === "waitingForApproval" ||
|
|
842
|
+
agent.status === 1 ||
|
|
843
|
+
agent.status === 2);
|
|
886
844
|
if (editContext?.confirm) {
|
|
887
845
|
editContext.confirm({
|
|
888
846
|
header: `Close ${agentCount} Agent${agentCount > 1 ? "s" : ""}`,
|
|
889
847
|
message: hasActiveAgents
|
|
890
|
-
? `This will close all ${agentCount} ${profileName} agent${agentCount > 1 ? "s" : ""}, including ${profileAgents.filter((a) =>
|
|
848
|
+
? `This will close all ${agentCount} ${profileName} agent${agentCount > 1 ? "s" : ""}, including ${profileAgents.filter((a) => a.status === "running" || a.status === 1).length} running agent(s). Are you sure?`
|
|
891
849
|
: `Are you sure you want to close all ${agentCount} ${profileName} agent${agentCount > 1 ? "s" : ""}?`,
|
|
892
850
|
acceptLabel: `Close ${agentCount > 1 ? "All" : "Agent"}`,
|
|
893
851
|
accept: async () => {
|
|
@@ -921,7 +879,7 @@ export const Agents = React.memo(function Agents({ closeButton, }) {
|
|
|
921
879
|
// No agents left, show profile selector
|
|
922
880
|
setActiveAgentId("");
|
|
923
881
|
activeAgentIdRef.current = "";
|
|
924
|
-
|
|
882
|
+
localStorage.removeItem(ACTIVE_AGENT_STORAGE_KEY);
|
|
925
883
|
}
|
|
926
884
|
}
|
|
927
885
|
// Reset profile selection if no agents remain
|
|
@@ -981,9 +939,6 @@ export const Agents = React.memo(function Agents({ closeButton, }) {
|
|
|
981
939
|
},
|
|
982
940
|
];
|
|
983
941
|
};
|
|
984
|
-
if (!canUseAi) {
|
|
985
|
-
return (_jsx("div", { className: "flex h-full items-center justify-center p-4 text-center text-sm text-gray-500", children: "AI features are unavailable with the current license." }));
|
|
986
|
-
}
|
|
987
942
|
if (loadingAgents) {
|
|
988
943
|
return (_jsxs("div", { className: "flex h-full items-center justify-center gap-2", children: [_jsx(Spinner, { size: "sm" }), _jsx("div", { className: "text-xs text-gray-500", children: "Loading agents..." })] }));
|
|
989
944
|
}
|
|
@@ -996,7 +951,7 @@ export const Agents = React.memo(function Agents({ closeButton, }) {
|
|
|
996
951
|
console.log("[Agents Empty State] Overview tab clicked, toggling back to profile selector", e);
|
|
997
952
|
setActiveAgentId("");
|
|
998
953
|
activeAgentIdRef.current = "";
|
|
999
|
-
|
|
954
|
+
localStorage.removeItem(ACTIVE_AGENT_STORAGE_KEY);
|
|
1000
955
|
}, className: cn("flex h-8 min-w-0 cursor-pointer items-center gap-2 border-r border-gray-200 px-2 text-xs", "border-b-white bg-white hover:bg-gray-50"), children: [_jsxs("div", { className: "relative", children: [_jsx(List, { className: "size-4 flex-shrink-0 text-gray-600", strokeWidth: 1 }), inboxCount > 0 && (_jsx("span", { className: "absolute -top-1.5 -right-1.5 flex h-3.5 min-w-3.5 items-center justify-center rounded-full bg-amber-500 px-1 text-[9px] font-bold text-white", children: inboxCount > 9 ? "9+" : inboxCount }))] }), _jsx("span", { className: "truncate font-medium", children: "Overview" })] }) })) : (
|
|
1001
956
|
/* Show Overview as a button when displaying profile selector */
|
|
1002
957
|
_jsx("div", { className: "flex items-center px-1", children: _jsx(SimpleIconButton, { onClick: (e) => {
|
|
@@ -1028,10 +983,6 @@ export const Agents = React.memo(function Agents({ closeButton, }) {
|
|
|
1028
983
|
const statusConfig = getAgentStatusConfig({
|
|
1029
984
|
status: highestStatus,
|
|
1030
985
|
});
|
|
1031
|
-
const singleAgentErrorMessage = toUserFacingAgentErrorMessage(singleAgent?.statusMessage) ||
|
|
1032
|
-
singleAgent?.statusMessage;
|
|
1033
|
-
const activeAgentErrorMessage = toUserFacingAgentErrorMessage(activeAgent?.statusMessage) ||
|
|
1034
|
-
activeAgent?.statusMessage;
|
|
1035
986
|
// Use agent name if: single agent OR active agent from this profile
|
|
1036
987
|
const displayName = activeAgent
|
|
1037
988
|
? activeAgent.name
|
|
@@ -1057,20 +1008,21 @@ export const Agents = React.memo(function Agents({ closeButton, }) {
|
|
|
1057
1008
|
}
|
|
1058
1009
|
// Multiple agents: popover will open via PopoverTrigger
|
|
1059
1010
|
}, children: [_jsxs("div", { className: "flex min-w-0 flex-1 items-center gap-2 overflow-hidden", children: [_jsx("div", { className: "flex-shrink-0", children: displayIcon ? (_jsx("div", { className: "flex h-[18px] w-[18px] items-center justify-center text-gray-500 [&>svg]:h-full [&>svg]:w-full", dangerouslySetInnerHTML: {
|
|
1060
|
-
__html:
|
|
1061
|
-
} })) : (_jsx(SecretAgentIcon, { size: 18, strokeWidth: 1, className: "text-gray-500" })) }), _jsx("span", { className: "min-w-0 flex-1 truncate font-medium", children: displayName }), agentCount > 1 && (_jsx("div", { className: "flex-shrink-0 rounded-full bg-gray-200 px-1.5 py-0.5 text-[10px] leading-none font-medium text-gray-700", children: agentCount })), _jsxs(Tooltip, { delayDuration: 1000, children: [_jsx(TooltipTrigger, { asChild: true, children: _jsx("div", { className: cn("h-1.5 w-1.5 flex-shrink-0 rounded-full", statusConfig.color, statusConfig.shouldPulse && "animate-pulse"), title: statusConfig.label }) }), _jsx(TooltipContent, { children: _jsxs("div", { children: [_jsx("div", { children: statusConfig.label }), singleAgent?.status === "error"
|
|
1011
|
+
__html: displayIcon,
|
|
1012
|
+
} })) : (_jsx(SecretAgentIcon, { size: 18, strokeWidth: 1, className: "text-gray-500" })) }), _jsx("span", { className: "min-w-0 flex-1 truncate font-medium", children: displayName }), agentCount > 1 && (_jsx("div", { className: "flex-shrink-0 rounded-full bg-gray-200 px-1.5 py-0.5 text-[10px] leading-none font-medium text-gray-700", children: agentCount })), _jsxs(Tooltip, { delayDuration: 1000, children: [_jsx(TooltipTrigger, { asChild: true, children: _jsx("div", { className: cn("h-1.5 w-1.5 flex-shrink-0 rounded-full", statusConfig.color, statusConfig.shouldPulse && "animate-pulse"), title: statusConfig.label }) }), _jsx(TooltipContent, { children: _jsxs("div", { children: [_jsx("div", { children: statusConfig.label }), singleAgent?.status === "error" ||
|
|
1013
|
+
singleAgent?.status === 4 ? (singleAgent?.statusMessage ? (_jsx("div", { className: "mt-1 text-xs text-red-600", children: singleAgent.statusMessage })) : null) : activeAgent?.status === "error" ||
|
|
1014
|
+
activeAgent?.status === 4 ? (activeAgent?.statusMessage ? (_jsx("div", { className: "mt-1 text-xs text-red-600", children: activeAgent.statusMessage })) : null) : null] }) })] }), agentCount > 1 && (_jsx(ChevronDown, { className: "size-3 flex-shrink-0 text-gray-500", strokeWidth: 1 }))] }), _jsx(SimpleIconButton, { onClick: (e) => singleAgent
|
|
1062
1015
|
? handleCloseAgent(singleAgent.id, e)
|
|
1063
1016
|
: handleCloseProfileAgents(profileGroup.agents, profileGroup.profileName, e), icon: _jsx(X, { className: "size-3", strokeWidth: 1 }), label: agentCount > 1
|
|
1064
1017
|
? `Close all ${agentCount} agents`
|
|
1065
1018
|
: "Close", className: "flex-shrink-0 opacity-60 hover:opacity-100", showTooltip: false })] }) }), agentCount > 1 && (_jsxs(PopoverContent, { className: "w-80 p-0", align: "start", children: [_jsxs("div", { className: "border-b border-gray-100 px-3 py-2 text-xs font-medium text-gray-500", children: [profileGroup.profileName, " Agents"] }), _jsx("div", { className: "max-h-64 overflow-y-auto", children: profileGroup.agents.map((agent) => {
|
|
1066
1019
|
const agentStatusConfig = getAgentStatusConfig(agent);
|
|
1067
|
-
const agentErrorMessage = toUserFacingAgentErrorMessage(agent.statusMessage) ||
|
|
1068
|
-
agent.statusMessage;
|
|
1069
1020
|
return (_jsx("div", { "data-agent-id": agent.id, className: cn("cursor-pointer border-b border-gray-50 px-3 py-2 hover:bg-gray-50", activeAgentId === agent.id && "bg-theme-secondary-light/50"), onClick: () => {
|
|
1070
1021
|
setActiveAgentIdWithStorage(agent.id);
|
|
1071
1022
|
setProfileTabDropdownOpen(null);
|
|
1072
1023
|
}, children: _jsxs("div", { className: "flex items-center gap-2", children: [_jsx("div", { className: cn("h-2 w-2 flex-shrink-0 rounded-full", agentStatusConfig.color, agentStatusConfig.shouldPulse &&
|
|
1073
|
-
"animate-pulse"), title: agentStatusConfig.label }), _jsxs("div", { className: "min-w-0 flex-1", children: [_jsx("div", { className: "truncate text-xs font-medium text-gray-900", children: agent.name }), _jsx("div", { className: "text-[9px] font-mono text-gray-400", children: agent.id }), agent.status === "error"
|
|
1024
|
+
"animate-pulse"), title: agentStatusConfig.label }), _jsxs("div", { className: "min-w-0 flex-1", children: [_jsx("div", { className: "truncate text-xs font-medium text-gray-900", children: agent.name }), _jsx("div", { className: "text-[9px] font-mono text-gray-400", children: agent.id }), agent.status === "error" ||
|
|
1025
|
+
agent.status === 4 ? (agent.statusMessage ? (_jsx("div", { className: "truncate text-[11px] leading-tight text-red-600", children: agent.statusMessage })) : (agent.description && (_jsx("div", { className: "truncate text-[11px] leading-tight text-gray-400", children: agent.description })))) : (agent.description && (_jsx("div", { className: "truncate text-[11px] leading-tight text-gray-400", children: agent.description })))] }), _jsx(SimpleIconButton, { onClick: (e) => handleCloseAgent(agent.id, e), icon: _jsx(X, { className: "size-3", strokeWidth: 1 }), label: "Close", className: "opacity-60 hover:opacity-100" })] }) }, agent.id));
|
|
1074
1026
|
}) })] }))] }) }, profileKey));
|
|
1075
1027
|
})] }), activeAgentId !== null && (_jsx("div", { className: "flex items-center px-1", children: _jsx(SimpleIconButton, { onClick: () => setActiveAgentIdWithStorage(null), icon: _jsxs("div", { className: "relative", children: [_jsx(List, { className: "size-4", strokeWidth: 1 }), inboxCount > 0 && (_jsx("span", { className: "absolute -top-1.5 -right-1.5 flex h-3.5 min-w-3.5 items-center justify-center rounded-full bg-amber-500 px-1 text-[9px] font-bold text-white", children: inboxCount > 9 ? "9+" : inboxCount }))] }), label: `Agent Overview${inboxCount > 0 ? ` (${inboxCount} need attention)` : ""}`, className: "text-gray-600 hover:text-gray-800" }) })), activeAgentId === null && (_jsx("div", { className: "flex items-center px-1", children: _jsxs("div", { className: cn("flex min-w-0 cursor-default items-center gap-2 border-r border-gray-200 p-2 text-xs", "border-b-white bg-white"), children: [_jsxs("div", { className: "relative", children: [_jsx(List, { className: "size-4 flex-shrink-0 text-gray-600", strokeWidth: 1 }), inboxCount > 0 && (_jsx("span", { className: "absolute -top-1.5 -right-1.5 flex h-3.5 min-w-3.5 items-center justify-center rounded-full bg-amber-500 px-1 text-[9px] font-bold text-white", children: inboxCount > 9 ? "9+" : inboxCount }))] }), _jsx("span", { className: "truncate font-medium", children: "Overview" })] }) })), agents.length > 0 && (_jsx("div", { className: "flex items-center px-1", children: _jsxs(Popover, { open: menuPopoverOpen, onOpenChange: (open) => {
|
|
1076
1028
|
setMenuPopoverOpen(open);
|
|
@@ -1100,7 +1052,7 @@ export const Agents = React.memo(function Agents({ closeButton, }) {
|
|
|
1100
1052
|
const activeAgent = agents.find((a) => a.id === activeAgentId);
|
|
1101
1053
|
if (!activeAgent)
|
|
1102
1054
|
return null;
|
|
1103
|
-
return (_jsx("div", { className: "absolute inset-0", children: _jsx(AgentTerminal, { agentStub: activeAgent, initialMetadata: initialMetadataMap[activeAgent.id], profiles: availableProfiles, isActive: true
|
|
1055
|
+
return (_jsx("div", { className: "absolute inset-0", children: _jsx(AgentTerminal, { agentStub: activeAgent, initialMetadata: initialMetadataMap[activeAgent.id], profiles: availableProfiles, isActive: true }) }, activeAgent.id));
|
|
1104
1056
|
})()) })] }));
|
|
1105
1057
|
});
|
|
1106
1058
|
//# sourceMappingURL=Agents.js.map
|