@codingame/monaco-vscode-workbench-service-override 37.6.1 → 38.0.0
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/common.js +2 -0
- package/index.js +9 -10
- package/package.json +10 -10
- package/session.js +45 -42
- package/vscode/src/vs/platform/agentHost/common/sessionComparisonPrompts.d.ts +1 -0
- package/vscode/src/vs/platform/agentHost/common/sessionComparisonPrompts.js +12 -0
- package/vscode/src/vs/sessions/browser/{singlePaneWorkbench.d.ts → desktopWorkbench.d.ts} +6 -5
- package/vscode/src/vs/sessions/browser/{singlePaneWorkbench.js → desktopWorkbench.js} +23 -25
- package/vscode/src/vs/sessions/browser/dockedAuxiliaryBarController.d.ts +5 -2
- package/vscode/src/vs/sessions/browser/dockedAuxiliaryBarController.js +41 -3
- package/vscode/src/vs/sessions/browser/layoutActions.js +25 -41
- package/vscode/src/vs/sessions/browser/mobileWorkbench.d.ts +4 -0
- package/vscode/src/vs/sessions/browser/mobileWorkbench.js +10 -0
- package/vscode/src/vs/sessions/browser/parts/chatCompositeBar.d.ts +10 -5
- package/vscode/src/vs/sessions/browser/parts/chatCompositeBar.js +138 -34
- package/vscode/src/vs/sessions/browser/parts/chatGroupDropTarget.d.ts +2 -0
- package/vscode/src/vs/sessions/browser/parts/chatGroupDropTarget.js +13 -5
- package/vscode/src/vs/sessions/browser/parts/chatGroupView.d.ts +27 -5
- package/vscode/src/vs/sessions/browser/parts/chatGroupView.js +129 -28
- package/vscode/src/vs/sessions/browser/parts/chatGroupsView.d.ts +22 -7
- package/vscode/src/vs/sessions/browser/parts/chatGroupsView.js +260 -21
- package/vscode/src/vs/sessions/browser/parts/chatHeader.d.ts +25 -0
- package/vscode/src/vs/sessions/browser/parts/chatHeader.js +42 -0
- package/vscode/src/vs/sessions/browser/parts/customViewGridPart.js +9 -1
- package/vscode/src/vs/sessions/browser/parts/customViewNode.js +1 -1
- package/vscode/src/vs/sessions/browser/parts/{singlePaneAuxiliaryBarPart.d.ts → desktopAuxiliaryBarPart.d.ts} +4 -4
- package/vscode/src/vs/sessions/browser/parts/desktopAuxiliaryBarPart.js +26 -0
- package/vscode/src/vs/sessions/browser/parts/{singlePaneEditorPart.d.ts → desktopEditorPart.d.ts} +8 -6
- package/vscode/src/vs/sessions/browser/parts/{singlePaneEditorPart.js → desktopEditorPart.js} +25 -5
- package/vscode/src/vs/sessions/browser/parts/editorPart.js +16 -4
- package/vscode/src/vs/sessions/browser/parts/editorParts.d.ts +1 -1
- package/vscode/src/vs/sessions/browser/parts/editorParts.js +7 -6
- package/vscode/src/vs/sessions/browser/parts/gridGap.d.ts +14 -0
- package/vscode/src/vs/sessions/browser/parts/gridGap.js +69 -0
- package/vscode/src/vs/sessions/browser/parts/media/chatCompositeBar.css +132 -4
- package/vscode/src/vs/sessions/browser/parts/media/chatGroupsView.css +10 -0
- package/vscode/src/vs/sessions/browser/parts/media/editorPart.css +46 -2
- package/vscode/src/vs/sessions/browser/parts/media/sessionReadOnlyBanner.css +3 -3
- package/vscode/src/vs/sessions/browser/parts/media/sessionView.css +45 -48
- package/vscode/src/vs/sessions/browser/parts/media/sessionsPart.css +15 -0
- package/vscode/src/vs/sessions/browser/parts/menubar.contribution.js +8 -8
- package/vscode/src/vs/sessions/browser/parts/mobile/mobileSessionsPart.js +1 -1
- package/vscode/src/vs/sessions/browser/parts/remoteHostUnavailableEmptyState.d.ts +9 -1
- package/vscode/src/vs/sessions/browser/parts/remoteHostUnavailableEmptyState.js +21 -3
- package/vscode/src/vs/sessions/browser/parts/sessionBarStyles.js +1 -1
- package/vscode/src/vs/sessions/browser/parts/sessionDropTarget.d.ts +4 -3
- package/vscode/src/vs/sessions/browser/parts/sessionDropTarget.js +29 -15
- package/vscode/src/vs/sessions/browser/parts/sessionGridLayout.d.ts +67 -0
- package/vscode/src/vs/sessions/browser/parts/sessionGridLayout.js +598 -0
- package/vscode/src/vs/sessions/browser/parts/sessionHeader.d.ts +11 -84
- package/vscode/src/vs/sessions/browser/parts/sessionHeader.js +37 -317
- package/vscode/src/vs/sessions/browser/parts/sessionHeaderBar.d.ts +103 -0
- package/vscode/src/vs/sessions/browser/parts/sessionHeaderBar.js +391 -0
- package/vscode/src/vs/sessions/browser/parts/sessionReadOnlyBanner.d.ts +6 -4
- package/vscode/src/vs/sessions/browser/parts/sessionReadOnlyBanner.js +58 -28
- package/vscode/src/vs/sessions/browser/parts/sessionRemoteConnection.d.ts +4 -0
- package/vscode/src/vs/sessions/browser/parts/sessionRemoteConnection.js +66 -23
- package/vscode/src/vs/sessions/browser/parts/sessionView.d.ts +24 -5
- package/vscode/src/vs/sessions/browser/parts/sessionView.js +143 -33
- package/vscode/src/vs/sessions/browser/parts/sessionsPart.d.ts +25 -19
- package/vscode/src/vs/sessions/browser/parts/sessionsPart.js +157 -58
- package/vscode/src/vs/sessions/browser/parts/sessionsParts.d.ts +12 -3
- package/vscode/src/vs/sessions/browser/parts/sessionsParts.js +17 -2
- package/vscode/src/vs/sessions/browser/sessionWorkspace.d.ts +6 -3
- package/vscode/src/vs/sessions/browser/sessionWorkspace.js +2 -2
- package/vscode/src/vs/sessions/browser/sessionsSetUpService.js +66 -20
- package/vscode/src/vs/sessions/browser/sessionsSignInDialog.d.ts +1 -0
- package/vscode/src/vs/sessions/browser/sessionsSignInDialog.js +5 -4
- package/vscode/src/vs/sessions/browser/workbenchFactory.d.ts +12 -0
- package/vscode/src/vs/sessions/browser/workbenchFactory.js +17 -0
- package/vscode/src/vs/sessions/contrib/accountMenu/browser/account.contribution.d.ts +85 -1
- package/vscode/src/vs/sessions/contrib/accountMenu/browser/account.contribution.js +118 -100
- package/vscode/src/vs/sessions/contrib/accountMenu/browser/chatPetAchievementBadges.d.ts +3 -2
- package/vscode/src/vs/sessions/contrib/accountMenu/browser/chatPetAchievementBadges.js +39 -34
- package/vscode/src/vs/sessions/contrib/accountMenu/browser/media/accountTitleBarWidget.css +6 -0
- package/vscode/src/vs/sessions/contrib/agentFeedback/browser/nullAgentFeedbackService.contribution.d.ts +3 -0
- package/vscode/src/vs/sessions/contrib/agentFeedback/browser/nullAgentFeedbackService.contribution.js +6 -0
- package/vscode/src/vs/sessions/contrib/aiCustomizationTreeView/browser/aiCustomizationTreeView.contribution.js +18 -18
- package/vscode/src/vs/sessions/contrib/aiCustomizationTreeView/browser/aiCustomizationTreeViewViews.js +12 -12
- package/vscode/src/vs/sessions/contrib/applyCommitsToParentRepo/browser/applyChangesToParentRepo.js +7 -7
- package/vscode/src/vs/sessions/contrib/aquarium/browser/aquarium.contribution.js +12 -12
- package/vscode/src/vs/sessions/contrib/aquarium/browser/aquariumOverlay.js +10 -10
- package/vscode/src/vs/sessions/contrib/automations/browser/automationDialog.d.ts +78 -8
- package/vscode/src/vs/sessions/contrib/automations/browser/automationDialog.js +1166 -202
- package/vscode/src/vs/sessions/contrib/automations/browser/automationDialogService.d.ts +11 -1
- package/vscode/src/vs/sessions/contrib/automations/browser/automationDialogService.js +190 -69
- package/vscode/src/vs/sessions/contrib/automations/browser/automationRunner.d.ts +11 -9
- package/vscode/src/vs/sessions/contrib/automations/browser/automationRunner.js +122 -233
- package/vscode/src/vs/sessions/contrib/automations/browser/automationTelemetry.d.ts +22 -0
- package/vscode/src/vs/sessions/contrib/automations/browser/automationTelemetry.js +62 -0
- package/vscode/src/vs/sessions/contrib/automations/browser/automationTools.d.ts +7 -2
- package/vscode/src/vs/sessions/contrib/automations/browser/automationTools.js +172 -84
- package/vscode/src/vs/sessions/contrib/automations/browser/automations.contribution.js +17 -7
- package/vscode/src/vs/sessions/contrib/automations/browser/media/automationDialog.css +242 -60
- package/vscode/src/vs/sessions/contrib/automations/browser/providerAutomationService.d.ts +24 -36
- package/vscode/src/vs/sessions/contrib/automations/browser/providerAutomationService.js +104 -420
- package/vscode/src/vs/sessions/contrib/changes/browser/changes.contribution.js +15 -14
- package/vscode/src/vs/sessions/contrib/changes/browser/changesActions.d.ts +13 -3
- package/vscode/src/vs/sessions/contrib/changes/browser/changesActions.js +66 -43
- package/vscode/src/vs/sessions/contrib/changes/browser/changesMultiDiffSourceResolver.js +2 -7
- package/vscode/src/vs/sessions/contrib/changes/browser/changesViewActions.js +54 -59
- package/vscode/src/vs/sessions/contrib/changes/browser/changesetReviewActions.js +7 -7
- package/vscode/src/vs/sessions/contrib/changes/browser/media/changesActions.css +6 -0
- package/vscode/src/vs/sessions/contrib/changes/browser/sessionSyncChanges.js +25 -21
- package/vscode/src/vs/sessions/contrib/changes/browser/sessionsChangesAccessibilityHelp.js +21 -27
- package/vscode/src/vs/sessions/contrib/chat/browser/sessionChatInputToolbarDebug.js +17 -17
- package/vscode/src/vs/sessions/contrib/chat/browser/sessionTaskRunner.d.ts +5 -5
- package/vscode/src/vs/sessions/contrib/chat/browser/sessionTaskRunner.js +2 -2
- package/vscode/src/vs/sessions/contrib/chatDebug/browser/chatDebug.contribution.js +2 -2
- package/vscode/src/vs/sessions/contrib/codeReview/browser/codeReview.contributions.js +9 -16
- package/vscode/src/vs/sessions/contrib/customViewTest/browser/customViewTest.contribution.js +7 -7
- package/vscode/src/vs/sessions/contrib/editor/browser/addTabActions.js +10 -10
- package/vscode/src/vs/sessions/contrib/editor/browser/editor.contribution.d.ts +13 -1
- package/vscode/src/vs/sessions/contrib/editor/browser/editor.contribution.js +104 -117
- package/vscode/src/vs/sessions/contrib/editor/browser/emptyFileEditor.contribution.js +8 -7
- package/vscode/src/vs/sessions/contrib/editor/browser/emptyFileEditor.js +5 -5
- package/vscode/src/vs/sessions/contrib/editor/browser/emptyFileEditorInput.js +1 -1
- package/vscode/src/vs/sessions/contrib/editor/browser/media/editorBreadcrumbs.css +0 -1
- package/vscode/src/vs/sessions/contrib/editor/browser/media/editorHeader.css +1 -1
- package/vscode/src/vs/sessions/contrib/files/browser/files.contribution.d.ts +7 -0
- package/vscode/src/vs/sessions/contrib/files/browser/files.contribution.js +77 -13
- package/vscode/src/vs/sessions/contrib/files/browser/filesView.d.ts +2 -1
- package/vscode/src/vs/sessions/contrib/files/browser/filesView.js +14 -4
- package/vscode/src/vs/sessions/contrib/layout/browser/baseSessionLayoutController.d.ts +45 -10
- package/vscode/src/vs/sessions/contrib/layout/browser/baseSessionLayoutController.js +527 -77
- package/vscode/src/vs/sessions/contrib/layout/browser/chatLayoutOwnerKeys.d.ts +18 -0
- package/vscode/src/vs/sessions/contrib/layout/browser/chatLayoutOwnerKeys.js +95 -0
- package/vscode/src/vs/sessions/contrib/layout/browser/{singlePane/singlePaneDetailPanelCoordinator.d.ts → desktop/desktopDetailPanelCoordinator.d.ts} +5 -4
- package/vscode/src/vs/sessions/contrib/layout/browser/{singlePane/singlePaneDetailPanelCoordinator.js → desktop/desktopDetailPanelCoordinator.js} +10 -7
- package/vscode/src/vs/sessions/contrib/layout/browser/{singlePane/singlePaneDockedTabsCoordinator.d.ts → desktop/desktopDockedTabsCoordinator.d.ts} +15 -12
- package/vscode/src/vs/sessions/contrib/layout/browser/{singlePane/singlePaneDockedTabsCoordinator.js → desktop/desktopDockedTabsCoordinator.js} +91 -44
- package/vscode/src/vs/sessions/contrib/layout/browser/{singlePane/singlePaneDraftSessionStrategy.d.ts → desktop/desktopDraftSessionStrategy.d.ts} +10 -5
- package/vscode/src/vs/sessions/contrib/layout/browser/{singlePane/singlePaneDraftSessionStrategy.js → desktop/desktopDraftSessionStrategy.js} +95 -22
- package/vscode/src/vs/sessions/contrib/layout/browser/{singlePane/singlePaneExistingSessionStrategy.d.ts → desktop/desktopExistingSessionStrategy.d.ts} +13 -11
- package/vscode/src/vs/sessions/contrib/layout/browser/{singlePane/singlePaneExistingSessionStrategy.js → desktop/desktopExistingSessionStrategy.js} +137 -57
- package/vscode/src/vs/sessions/contrib/layout/browser/{singlePane/singlePaneLayoutStrategy.d.ts → desktop/desktopLayoutStrategy.d.ts} +22 -13
- package/vscode/src/vs/sessions/contrib/layout/browser/{singlePane/singlePaneLayoutStrategy.js → desktop/desktopLayoutStrategy.js} +2 -2
- package/vscode/src/vs/sessions/contrib/layout/browser/desktop/desktopOwnerCompositionStore.d.ts +22 -0
- package/vscode/src/vs/sessions/contrib/layout/browser/desktop/desktopOwnerCompositionStore.js +136 -0
- package/vscode/src/vs/sessions/contrib/layout/browser/{singlePane/singlePaneSharedHelpers.d.ts → desktop/desktopSharedHelpers.d.ts} +9 -2
- package/vscode/src/vs/sessions/contrib/layout/browser/desktop/desktopSharedHelpers.js +56 -0
- package/vscode/src/vs/sessions/contrib/layout/browser/{singlePane/singlePaneVisibilityProfileStore.d.ts → desktop/desktopVisibilityProfileStore.d.ts} +3 -2
- package/vscode/src/vs/sessions/contrib/layout/browser/{singlePane/singlePaneVisibilityProfileStore.js → desktop/desktopVisibilityProfileStore.js} +10 -9
- package/vscode/src/vs/sessions/contrib/layout/browser/desktopLayoutController.d.ts +71 -0
- package/vscode/src/vs/sessions/contrib/layout/browser/desktopLayoutController.js +201 -0
- package/vscode/src/vs/sessions/contrib/layout/browser/sessions.layout.contribution.d.ts +8 -1
- package/vscode/src/vs/sessions/contrib/layout/browser/sessions.layout.contribution.js +35 -35
- package/vscode/src/vs/sessions/contrib/layout/common/sessionEditorWorkingSet.d.ts +39 -0
- package/vscode/src/vs/sessions/contrib/layout/common/sessionEditorWorkingSet.js +73 -0
- package/vscode/src/vs/sessions/contrib/onboardingTours/browser/newSessionTourContribution.d.ts +42 -1
- package/vscode/src/vs/sessions/contrib/onboardingTours/browser/newSessionTourContribution.js +14 -10
- package/vscode/src/vs/sessions/contrib/onboardingTours/browser/newSessionViewTourContribution.js +3 -4
- package/vscode/src/vs/sessions/contrib/onboardingTours/browser/newSessionViewTourTrigger.d.ts +2 -2
- package/vscode/src/vs/sessions/contrib/onboardingTours/browser/newSessionViewTourTrigger.js +13 -9
- package/vscode/src/vs/sessions/contrib/onboardingTours/browser/newSessionViewV2TourContribution.js +20 -5
- package/vscode/src/vs/sessions/contrib/onboardingTours/browser/newSessionViewV2TourVariation.d.ts +8 -0
- package/vscode/src/vs/sessions/contrib/onboardingTours/browser/newSessionViewV2TourVariation.js +19 -0
- package/vscode/src/vs/sessions/contrib/onboardingTours/browser/newSessionViewV3Prompt.js +21 -20
- package/vscode/src/vs/sessions/contrib/onboardingTours/browser/tours/newSessionTour.js +10 -5
- package/vscode/src/vs/sessions/contrib/onboardingTours/browser/tours/newSessionViewTour.js +12 -8
- package/vscode/src/vs/sessions/contrib/onboardingTours/browser/tours/newSessionViewTourShared.d.ts +3 -1
- package/vscode/src/vs/sessions/contrib/onboardingTours/browser/tours/newSessionViewTourShared.js +12 -7
- package/vscode/src/vs/sessions/contrib/onboardingTours/browser/tours/newSessionViewV2Tour.d.ts +9 -1
- package/vscode/src/vs/sessions/contrib/onboardingTours/browser/tours/newSessionViewV2Tour.js +46 -19
- package/vscode/src/vs/sessions/contrib/onboardingTours/browser/tours/newSessionViewV3Tour.js +2 -0
- package/vscode/src/vs/sessions/contrib/policyBlocked/browser/media/sessionsPolicyBlocked.css +33 -0
- package/vscode/src/vs/sessions/contrib/policyBlocked/browser/policyBlocked.contribution.d.ts +4 -2
- package/vscode/src/vs/sessions/contrib/policyBlocked/browser/policyBlocked.contribution.js +29 -8
- package/vscode/src/vs/sessions/contrib/policyBlocked/browser/sessionsPolicyBlocked.d.ts +15 -2
- package/vscode/src/vs/sessions/contrib/policyBlocked/browser/sessionsPolicyBlocked.js +169 -32
- package/vscode/src/vs/sessions/contrib/providers/agentHost/browser/agentHostForkActions.js +30 -8
- package/vscode/src/vs/sessions/contrib/providers/agentHost/browser/agentHostSessionBranchActions.js +8 -34
- package/vscode/src/vs/sessions/contrib/providers/agentHost/browser/agentMergeActions.js +63 -49
- package/vscode/src/vs/sessions/contrib/providers/agentHost/browser/exportDebugLogsAction.js +1 -1
- package/vscode/src/vs/sessions/contrib/providers/agentHost/browser/mobile/mobileChatInputConfigPicker.js +31 -17
- package/vscode/src/vs/sessions/contrib/providers/remoteAgentHost/browser/connectionDiagnostics.contribution.d.ts +32 -0
- package/vscode/src/vs/sessions/contrib/providers/remoteAgentHost/browser/connectionDiagnostics.contribution.js +250 -0
- package/vscode/src/vs/sessions/contrib/providers/remoteAgentHost/browser/connectionDiagnosticsLogs.d.ts +6 -0
- package/vscode/src/vs/sessions/contrib/providers/remoteAgentHost/browser/connectionDiagnosticsLogs.js +52 -0
- package/vscode/src/vs/sessions/contrib/providers/remoteAgentHost/browser/connectionDiagnosticsReport.d.ts +51 -0
- package/vscode/src/vs/sessions/contrib/providers/remoteAgentHost/browser/connectionDiagnosticsReport.js +439 -0
- package/vscode/src/vs/sessions/contrib/providers/remoteAgentHost/browser/connectionDiagnosticsService.d.ts +45 -0
- package/vscode/src/vs/sessions/contrib/providers/remoteAgentHost/browser/connectionDiagnosticsService.js +595 -0
- package/vscode/src/vs/sessions/contrib/providers/remoteAgentHost/browser/devContainerAgentHostService.d.ts +20 -3
- package/vscode/src/vs/sessions/contrib/providers/remoteAgentHost/browser/devContainerAgentHostService.js +360 -46
- package/vscode/src/vs/sessions/contrib/providers/remoteAgentHost/browser/devContainerSource.d.ts +9 -0
- package/vscode/src/vs/sessions/contrib/providers/remoteAgentHost/browser/devContainerSource.js +59 -0
- package/vscode/src/vs/sessions/contrib/providers/remoteAgentHost/browser/media/connectionDiagnostics.css +201 -0
- package/vscode/src/vs/sessions/contrib/remoteSessions/browser/getRemoteSessionTool.d.ts +10 -0
- package/vscode/src/vs/sessions/contrib/remoteSessions/browser/getRemoteSessionTool.js +70 -0
- package/vscode/src/vs/sessions/contrib/remoteSessions/browser/remoteSessionChatService.d.ts +20 -0
- package/vscode/src/vs/sessions/contrib/remoteSessions/browser/remoteSessionChatService.js +104 -0
- package/vscode/src/vs/sessions/contrib/remoteSessions/browser/remoteSessionInspector.d.ts +15 -0
- package/vscode/src/vs/sessions/contrib/remoteSessions/browser/remoteSessionInspector.js +152 -0
- package/vscode/src/vs/sessions/contrib/remoteSessions/browser/remoteSessionMessageRouter.d.ts +49 -0
- package/vscode/src/vs/sessions/contrib/remoteSessions/browser/remoteSessionMessageRouter.js +340 -0
- package/vscode/src/vs/sessions/contrib/remoteSessions/browser/remoteSessionService.d.ts +41 -0
- package/vscode/src/vs/sessions/contrib/remoteSessions/browser/remoteSessionService.js +400 -0
- package/vscode/src/vs/sessions/contrib/remoteSessions/browser/remoteSessionSource.d.ts +28 -0
- package/vscode/src/vs/sessions/contrib/remoteSessions/browser/remoteSessionSource.js +178 -0
- package/vscode/src/vs/sessions/contrib/remoteSessions/browser/remoteSessionTools.d.ts +17 -0
- package/vscode/src/vs/sessions/contrib/remoteSessions/browser/remoteSessionTools.js +206 -0
- package/vscode/src/vs/sessions/contrib/remoteSessions/browser/remoteSessions.contribution.d.ts +1 -0
- package/vscode/src/vs/sessions/contrib/remoteSessions/browser/remoteSessions.contribution.js +58 -0
- package/vscode/src/vs/sessions/contrib/remoteSessions/browser/sendRemoteMessageTool.d.ts +10 -0
- package/vscode/src/vs/sessions/contrib/remoteSessions/browser/sendRemoteMessageTool.js +90 -0
- package/vscode/src/vs/sessions/contrib/remoteSessions/common/remoteSessionInspection.d.ts +38 -0
- package/vscode/src/vs/sessions/contrib/remoteSessions/common/remoteSessionInspection.js +58 -0
- package/vscode/src/vs/sessions/contrib/search/browser/search.contribution.js +4 -5
- package/vscode/src/vs/sessions/contrib/search/browser/searchEditorEmptyState.contribution.js +1 -1
- package/vscode/src/vs/sessions/contrib/sessionComparison/browser/sessionComparison.contribution.d.ts +1 -0
- package/vscode/src/vs/sessions/contrib/sessionComparison/browser/sessionComparison.contribution.js +33 -0
- package/vscode/src/vs/sessions/contrib/sessionComparison/browser/sessionComparisonGridController.d.ts +30 -0
- package/vscode/src/vs/sessions/contrib/sessionComparison/browser/sessionComparisonGridController.js +190 -0
- package/vscode/src/vs/sessions/contrib/sessionComparison/browser/sessionComparisonTool.d.ts +31 -0
- package/vscode/src/vs/sessions/contrib/sessionComparison/browser/sessionComparisonTool.js +559 -0
- package/vscode/src/vs/sessions/contrib/sessionComparison/browser/sessionComparisonViewService.d.ts +12 -0
- package/vscode/src/vs/sessions/contrib/sessionComparison/browser/sessionComparisonViewService.js +38 -0
- package/vscode/src/vs/sessions/contrib/sessions/browser/blockedSessionsIndicatorModel.d.ts +13 -4
- package/vscode/src/vs/sessions/contrib/sessions/browser/blockedSessionsIndicatorModel.js +155 -22
- package/vscode/src/vs/sessions/contrib/sessions/browser/blockedSessionsList.js +9 -5
- package/vscode/src/vs/sessions/contrib/sessions/browser/media/automationsCards.css +90 -25
- package/vscode/src/vs/sessions/contrib/sessions/browser/media/sessionsTitleBarWidget.css +21 -4
- package/vscode/src/vs/sessions/contrib/sessions/browser/sessionDetailsAction.d.ts +2 -1
- package/vscode/src/vs/sessions/contrib/sessions/browser/sessionDetailsAction.js +11 -7
- package/vscode/src/vs/sessions/contrib/sessions/browser/sessions.contribution.d.ts +116 -1
- package/vscode/src/vs/sessions/contrib/sessions/browser/sessions.contribution.js +126 -30
- package/vscode/src/vs/sessions/contrib/sessions/browser/sessionsAccountTelemetry.d.ts +26 -0
- package/vscode/src/vs/sessions/contrib/sessions/browser/sessionsAccountTelemetry.js +160 -0
- package/vscode/src/vs/sessions/contrib/sessions/browser/sessionsActions.d.ts +14 -6
- package/vscode/src/vs/sessions/contrib/sessions/browser/sessionsActions.js +555 -151
- package/vscode/src/vs/sessions/contrib/sessions/browser/sessionsLifecycleTracker.d.ts +192 -0
- package/vscode/src/vs/sessions/contrib/sessions/browser/sessionsLifecycleTracker.js +510 -0
- package/vscode/src/vs/sessions/contrib/sessions/browser/sessionsTelemetry.contribution.d.ts +6 -7
- package/vscode/src/vs/sessions/contrib/sessions/browser/sessionsTelemetry.contribution.js +64 -57
- package/vscode/src/vs/sessions/contrib/sessions/browser/sessionsTitleBarWidget.d.ts +5 -3
- package/vscode/src/vs/sessions/contrib/sessions/browser/sessionsTitleBarWidget.js +83 -51
- package/vscode/src/vs/sessions/contrib/sessions/browser/sessionsWindowNotifier.d.ts +5 -1
- package/vscode/src/vs/sessions/contrib/sessions/browser/sessionsWindowNotifier.js +33 -12
- package/vscode/src/vs/sessions/contrib/sessions/browser/views/automationCataloguePresentation.d.ts +3 -0
- package/vscode/src/vs/sessions/contrib/sessions/browser/views/automationCataloguePresentation.js +53 -0
- package/vscode/src/vs/sessions/contrib/sessions/browser/views/automationTemplates.js +10 -10
- package/vscode/src/vs/sessions/contrib/sessions/browser/views/automationsAccessibility.d.ts +2 -2
- package/vscode/src/vs/sessions/contrib/sessions/browser/views/automationsAccessibility.js +103 -55
- package/vscode/src/vs/sessions/contrib/sessions/browser/views/automationsView.d.ts +7 -1
- package/vscode/src/vs/sessions/contrib/sessions/browser/views/automationsView.js +679 -325
- package/vscode/src/vs/sessions/contrib/sessions/browser/views/sessionsViewActions.d.ts +27 -1
- package/vscode/src/vs/sessions/contrib/sessions/browser/views/sessionsViewActions.js +508 -163
- package/vscode/src/vs/sessions/contrib/terminal/browser/agentHostSessionTaskRunner.d.ts +20 -2
- package/vscode/src/vs/sessions/contrib/terminal/browser/agentHostSessionTaskRunner.js +100 -17
- package/vscode/src/vs/sessions/contrib/terminal/browser/sessionsTerminalContribution.d.ts +5 -1
- package/vscode/src/vs/sessions/contrib/terminal/browser/sessionsTerminalContribution.js +108 -30
- package/vscode/src/vs/sessions/contrib/workspace/browser/workspaceFolderManagement.d.ts +5 -3
- package/vscode/src/vs/sessions/contrib/workspace/browser/workspaceFolderManagement.js +47 -35
- package/vscode/src/vs/sessions/services/agentHostFilter/browser/agentHostFilterService.d.ts +9 -4
- package/vscode/src/vs/sessions/services/agentHostFilter/browser/agentHostFilterService.js +75 -25
- package/vscode/src/vs/sessions/services/customView/browser/customViewService.d.ts +11 -4
- package/vscode/src/vs/sessions/services/customView/browser/customViewService.js +17 -9
- package/vscode/src/vs/sessions/services/sessions/browser/closedItemHistory.d.ts +5 -0
- package/vscode/src/vs/sessions/services/sessions/browser/closedItemHistory.js +20 -2
- package/vscode/src/vs/sessions/services/sessions/browser/sessionComparisonService.d.ts +75 -0
- package/vscode/src/vs/sessions/services/sessions/browser/sessionComparisonService.js +1135 -0
- package/vscode/src/vs/sessions/services/sessions/browser/sessionGridState.d.ts +17 -0
- package/vscode/src/vs/sessions/services/sessions/browser/sessionGridState.js +99 -0
- package/vscode/src/vs/sessions/services/sessions/browser/sessionGroupsService.d.ts +4 -0
- package/vscode/src/vs/sessions/services/sessions/browser/sessionGroupsService.js +88 -23
- package/vscode/src/vs/sessions/services/sessions/browser/sessionNavigation.d.ts +19 -26
- package/vscode/src/vs/sessions/services/sessions/browser/sessionNavigation.js +115 -74
- package/vscode/src/vs/sessions/services/sessions/browser/sessionsListModelService.js +1 -1
- package/vscode/src/vs/sessions/services/sessions/browser/sessionsManagementService.d.ts +22 -7
- package/vscode/src/vs/sessions/services/sessions/browser/sessionsManagementService.js +278 -60
- package/vscode/src/vs/sessions/services/sessions/browser/sessionsRecencyHistory.d.ts +17 -20
- package/vscode/src/vs/sessions/services/sessions/browser/sessionsRecencyHistory.js +33 -22
- package/vscode/src/vs/sessions/services/sessions/browser/sessionsService.d.ts +28 -8
- package/vscode/src/vs/sessions/services/sessions/browser/sessionsService.js +673 -160
- package/vscode/src/vs/sessions/services/sessions/browser/visibleSessions.d.ts +13 -4
- package/vscode/src/vs/sessions/services/sessions/browser/visibleSessions.js +105 -15
- package/vscode/src/vs/sessions/services/sessions/common/sessionContextKeys.js +53 -34
- package/vscode/src/vs/sessions/services/workspaceFolderLabel/browser/workspaceFolderLabelService.js +1 -1
- package/vscode/src/vs/workbench/browser/layout.js +1 -1
- package/vscode/src/vs/workbench/browser/workbench.d.ts +0 -2
- package/vscode/src/vs/workbench/browser/workbench.js +23 -20
- package/vscode/src/vs/workbench/contrib/chat/common/automations/schedule.d.ts +6 -0
- package/vscode/src/vs/workbench/contrib/chat/common/automations/schedule.js +41 -0
- package/vscode/src/vs/workbench/contrib/chat/common/chatUsage.d.ts +15 -0
- package/vscode/src/vs/workbench/contrib/chat/common/chatUsage.js +56 -0
- package/vscode/src/vs/platform/agentHost/common/meta/agentCheckoutOperationMeta.d.ts +0 -18
- package/vscode/src/vs/platform/agentHost/common/meta/agentCheckoutOperationMeta.js +0 -27
- package/vscode/src/vs/sessions/browser/parts/singlePaneAuxiliaryBarPart.js +0 -36
- package/vscode/src/vs/sessions/contrib/automations/browser/automationLeaderElection.d.ts +0 -37
- package/vscode/src/vs/sessions/contrib/automations/browser/automationLeaderElection.js +0 -126
- package/vscode/src/vs/sessions/contrib/automations/browser/automationScheduler.d.ts +0 -59
- package/vscode/src/vs/sessions/contrib/automations/browser/automationScheduler.js +0 -232
- package/vscode/src/vs/sessions/contrib/automations/browser/automationStorageService.d.ts +0 -13
- package/vscode/src/vs/sessions/contrib/automations/browser/automationStorageService.js +0 -22
- package/vscode/src/vs/sessions/contrib/blockedSessions/browser/blockedSessions.d.ts +0 -45
- package/vscode/src/vs/sessions/contrib/blockedSessions/browser/blockedSessions.js +0 -110
- package/vscode/src/vs/sessions/contrib/layout/browser/desktopSessionLayoutController.d.ts +0 -112
- package/vscode/src/vs/sessions/contrib/layout/browser/desktopSessionLayoutController.js +0 -444
- package/vscode/src/vs/sessions/contrib/layout/browser/singlePane/singlePaneSharedHelpers.js +0 -43
- package/vscode/src/vs/sessions/contrib/layout/browser/singlePaneLayoutController.d.ts +0 -55
- package/vscode/src/vs/sessions/contrib/layout/browser/singlePaneLayoutController.js +0 -91
- package/vscode/src/vs/sessions/contrib/providers/agentHost/browser/agentHostClaudePermissionModePicker.d.ts +0 -26
- package/vscode/src/vs/sessions/contrib/providers/agentHost/browser/agentHostClaudePermissionModePicker.js +0 -98
- package/vscode/src/vs/sessions/contrib/providers/agentHost/browser/agentHostCodexApprovalsPicker.d.ts +0 -33
- package/vscode/src/vs/sessions/contrib/providers/agentHost/browser/agentHostCodexApprovalsPicker.js +0 -98
- package/vscode/src/vs/sessions/contrib/providers/agentHost/browser/agentHostModeIcon.d.ts +0 -2
- package/vscode/src/vs/sessions/contrib/providers/agentHost/browser/agentHostModeIcon.js +0 -13
- package/vscode/src/vs/sessions/contrib/providers/agentHost/browser/agentHostModePicker.d.ts +0 -122
- package/vscode/src/vs/sessions/contrib/providers/agentHost/browser/agentHostModePicker.js +0 -464
- package/vscode/src/vs/sessions/contrib/providers/agentHost/browser/agentHostPermissionPickerActionItem.d.ts +0 -35
- package/vscode/src/vs/sessions/contrib/providers/agentHost/browser/agentHostPermissionPickerActionItem.js +0 -90
- package/vscode/src/vs/sessions/contrib/providers/agentHost/browser/agentHostPermissionPickerDelegate.d.ts +0 -84
- package/vscode/src/vs/sessions/contrib/providers/agentHost/browser/agentHostPermissionPickerDelegate.js +0 -328
- package/vscode/src/vs/sessions/contrib/providers/agentHost/browser/agentHostSessionConfigPicker.d.ts +0 -174
- package/vscode/src/vs/sessions/contrib/providers/agentHost/browser/agentHostSessionConfigPicker.js +0 -1390
- package/vscode/src/vs/sessions/contrib/providers/agentHost/browser/media/agentHostSessionConfigPicker.css +0 -44
- package/vscode/src/vs/sessions/contrib/providers/agentHost/browser/mobile/mobileAgentHostModePicker.d.ts +0 -30
- package/vscode/src/vs/sessions/contrib/providers/agentHost/browser/mobile/mobileAgentHostModePicker.js +0 -78
- package/vscode/src/vs/sessions/contrib/providers/agentHost/browser/mobile/mobileChatPhoneInputTarget.d.ts +0 -11
- package/vscode/src/vs/sessions/contrib/providers/agentHost/browser/mobile/mobileChatPhoneInputTarget.js +0 -26
- package/vscode/src/vs/sessions/contrib/providers/remoteAgentHost/browser/remoteAgentHostConnectionCustomization.d.ts +0 -27
- package/vscode/src/vs/sessions/contrib/providers/remoteAgentHost/browser/remoteAgentHostConnectionCustomization.js +0 -26
|
@@ -1,19 +1,24 @@
|
|
|
1
1
|
|
|
2
2
|
import { __decorate, __param } from '@codingame/monaco-vscode-api/external/tslib/tslib.es6';
|
|
3
3
|
import { Codicon } from '@codingame/monaco-vscode-api/vscode/vs/base/common/codicons';
|
|
4
|
+
import { status } from '@codingame/monaco-vscode-api/vscode/vs/base/browser/ui/aria/aria';
|
|
4
5
|
import { toErrorMessage } from '@codingame/monaco-vscode-api/vscode/vs/base/common/errorMessage';
|
|
5
|
-
import {
|
|
6
|
+
import { KeyCode, KeyMod, KeyChord } from '@codingame/monaco-vscode-api/vscode/vs/base/common/keyCodes';
|
|
6
7
|
import { Disposable, DisposableStore } from '@codingame/monaco-vscode-api/vscode/vs/base/common/lifecycle';
|
|
8
|
+
import { isEqual } from '@codingame/monaco-vscode-api/vscode/vs/base/common/resources';
|
|
7
9
|
import { isWeb, isMobile } from '@codingame/monaco-vscode-api/vscode/vs/base/common/platform';
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
10
|
+
import { hasKey } from '@codingame/monaco-vscode-api/vscode/vs/base/common/types';
|
|
11
|
+
import { localize, localize2 } from '@codingame/monaco-vscode-api/vscode/vs/nls';
|
|
12
|
+
import { IAccessibilityService } from '@codingame/monaco-vscode-api/vscode/vs/platform/accessibility/common/accessibility.service';
|
|
13
|
+
import { AccessibilitySignal } from '@codingame/monaco-vscode-api/vscode/vs/platform/accessibilitySignal/browser/accessibilitySignalService';
|
|
14
|
+
import { IAccessibilitySignalService } from '@codingame/monaco-vscode-api/vscode/vs/platform/accessibilitySignal/browser/accessibilitySignalService.service';
|
|
10
15
|
import { registerAction2, Action2, MenuRegistry, MenuId } from '@codingame/monaco-vscode-api/vscode/vs/platform/actions/common/actions';
|
|
11
16
|
import { CommandsRegistry } from '@codingame/monaco-vscode-api/vscode/vs/platform/commands/common/commands';
|
|
12
17
|
import { ICommandService } from '@codingame/monaco-vscode-api/vscode/vs/platform/commands/common/commands.service';
|
|
18
|
+
import { ConfigurationTarget } from '@codingame/monaco-vscode-api/vscode/vs/platform/configuration/common/configuration';
|
|
13
19
|
import { IConfigurationService } from '@codingame/monaco-vscode-api/vscode/vs/platform/configuration/common/configuration.service';
|
|
14
20
|
import { ContextKeyExpr } from '@codingame/monaco-vscode-api/vscode/vs/platform/contextkey/common/contextkey';
|
|
15
21
|
import { IContextKeyService } from '@codingame/monaco-vscode-api/vscode/vs/platform/contextkey/common/contextkey.service';
|
|
16
|
-
import { IsDevelopmentContext } from '@codingame/monaco-vscode-api/vscode/vs/platform/contextkey/common/contextkeys';
|
|
17
22
|
import { IDialogService } from '@codingame/monaco-vscode-api/vscode/vs/platform/dialogs/common/dialogs.service';
|
|
18
23
|
import { IQuickInputService } from '@codingame/monaco-vscode-api/vscode/vs/platform/quickinput/common/quickInput.service';
|
|
19
24
|
import { StorageScope, StorageTarget } from '@codingame/monaco-vscode-api/vscode/vs/platform/storage/common/storage';
|
|
@@ -24,16 +29,18 @@ import { IViewsService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/
|
|
|
24
29
|
import { CLOSE_MOBILE_SIDEBAR_DRAWER_COMMAND_ID } from '@codingame/monaco-vscode-api/vscode/vs/sessions/browser/workbench';
|
|
25
30
|
import { EditorsVisibleContext, IsSessionsWindowContext, EditorAreaFocusContext, FocusedViewContext } from '@codingame/monaco-vscode-api/vscode/vs/workbench/common/contextkeys';
|
|
26
31
|
import { SessionsCategories } from '@codingame/monaco-vscode-api/vscode/vs/sessions/common/categories';
|
|
27
|
-
import {
|
|
28
|
-
import {
|
|
29
|
-
import {
|
|
30
|
-
import {
|
|
32
|
+
import { SESSIONS_LIST_GROUP_EXTERNAL_SESSIONS_SETTING } from '@codingame/monaco-vscode-api/vscode/vs/sessions/common/sessionConfig';
|
|
33
|
+
import { ARCHIVE_SESSION_COMMAND_ID, UNARCHIVE_SESSION_COMMAND_ID, ARCHIVE_CHAT_COMMAND_ID, UNARCHIVE_CHAT_COMMAND_ID, RENAME_SESSION_COMMAND_ID, MARK_SESSION_READ_COMMAND_ID, MARK_SESSION_UNREAD_COMMAND_ID } from '@codingame/monaco-vscode-api/vscode/vs/sessions/common/sessionCommands';
|
|
34
|
+
import { IsNewChatSessionContext, IsPhoneLayoutContext, SessionsListPromoteNewChatActionContext, SessionIsArchivedContext, SessionIsCreatedContext, SessionHeaderTargetsChatContext, SessionActiveChatCanArchiveContext, SessionActiveChatIsUntitledContext, SessionSupportsRenameContext, SessionItemIsMultiSelectionContext, SessionSupportsDeleteContext, SessionIsReadContext } from '@codingame/monaco-vscode-api/vscode/vs/sessions/common/contextkeys';
|
|
35
|
+
import { SessionsGrouping, SessionSectionToolbarMenuId, SessionSectionTypeContext, SessionsSorting, SessionSectionHasNonCloudRepositoryContext, NEW_SESSION_FOR_WORKSPACE_ACTION_ID, SessionGroupHasVisibleSessionsContext, SessionGroupToolbarMenuId, SessionGroupIsEmptyContext, SessionGroupIsComparisonContext, SessionItemContextMenuId, IsSessionPinnedContext, SessionItemCanImportContext, SessionChatItemCanArchiveContext, SessionChatItemIsArchivedContext, SessionChatItemIsUntitledContext } from '@codingame/monaco-vscode-api/vscode/vs/sessions/contrib/sessions/browser/views/sessionsList';
|
|
36
|
+
import { getChatCapabilities, SessionStatus } from '@codingame/monaco-vscode-api/vscode/vs/sessions/services/sessions/common/session';
|
|
31
37
|
import { ISessionGroupsService } from '@codingame/monaco-vscode-api/vscode/vs/sessions/services/sessions/browser/sessionGroupsService.service';
|
|
32
|
-
import {
|
|
38
|
+
import { ISessionComparisonService } from '@codingame/monaco-vscode-api/vscode/vs/sessions/services/sessions/common/sessionComparison.service';
|
|
39
|
+
import { SessionsViewId, SessionsViewGroupingContext, SessionsViewSortingContext, SessionsViewCompactContext, IsWorkspaceGroupCappedContext } from '@codingame/monaco-vscode-api/vscode/vs/sessions/contrib/sessions/browser/views/sessionsView';
|
|
33
40
|
import { Menus } from '@codingame/monaco-vscode-api/vscode/vs/sessions/browser/menus';
|
|
34
41
|
import { ISessionsManagementService } from '@codingame/monaco-vscode-api/vscode/vs/sessions/services/sessions/common/sessionsManagement.service';
|
|
35
42
|
import { ChatContextKeys } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/actions/chatContextKeys';
|
|
36
|
-
import { ChatSessionArchiveActionWording, getChatSessionArchiveActionPresentation, ChatSessionArchiveActionWordingSettingId, getChatSessionArchiveActionWording } from '@codingame/monaco-vscode-api/vscode/vs/platform/chat/common/sessionArchiveActions';
|
|
43
|
+
import { ChatSessionArchiveActionWording, getChatSessionArchiveActionPresentation, SESSIONS_MARK_AS_DONE_CONFETTI_SETTING, ChatSessionArchiveActionWordingSettingId, getChatSessionArchiveActionWording } from '@codingame/monaco-vscode-api/vscode/vs/platform/chat/common/sessionArchiveActions';
|
|
37
44
|
import { AGENT_HOST_ENABLED_CONTEXT_KEY } from '@codingame/monaco-vscode-api/vscode/vs/platform/agentHost/common/agentHostEnablementService';
|
|
38
45
|
import { ISessionsPartService } from '@codingame/monaco-vscode-api/vscode/vs/sessions/services/sessions/browser/sessionsPartService.service';
|
|
39
46
|
import { ISessionsService } from '@codingame/monaco-vscode-api/vscode/vs/sessions/services/sessions/browser/sessionsService.service';
|
|
@@ -41,18 +48,82 @@ import { registerWorkbenchContribution2, WorkbenchPhase } from '@codingame/monac
|
|
|
41
48
|
import { registerExternalSessionsFilterMenu } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/browser/agentSessions/externalSessionsFilterMenu';
|
|
42
49
|
import { ICustomViewService } from '@codingame/monaco-vscode-api/vscode/vs/sessions/services/customView/browser/customViewService.service';
|
|
43
50
|
import { IAutomationService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/automations/automationService.service';
|
|
44
|
-
import { ChatAutomationsEnabledContext } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/automations/automationsEnabled';
|
|
45
51
|
import { AUTOMATIONS_CUSTOM_VIEW_ID } from '@codingame/monaco-vscode-api/vscode/vs/sessions/contrib/sessions/browser/automationsConstants';
|
|
46
52
|
import { UNIFIED_WORKSPACE_PICKER_SETTING } from '@codingame/monaco-vscode-api/vscode/vs/sessions/contrib/chat/common/constants';
|
|
47
53
|
import { INewSessionComposerService } from '@codingame/monaco-vscode-api/vscode/vs/sessions/contrib/chat/browser/newSessionComposerService.service';
|
|
48
54
|
import { WorkspaceSelectionOrigin } from '@codingame/monaco-vscode-api/vscode/vs/sessions/common/workspaceSelection';
|
|
55
|
+
import { AccessibleViewType } from '@codingame/monaco-vscode-api/vscode/vs/platform/accessibility/browser/accessibleView';
|
|
56
|
+
import { AccessibleViewRegistry } from '@codingame/monaco-vscode-api/vscode/vs/platform/accessibility/browser/accessibleViewRegistry';
|
|
57
|
+
import { SessionsListNotificationFocused } from '@codingame/monaco-vscode-api/vscode/vs/sessions/contrib/sessions/browser/views/sessionsListNotification';
|
|
49
58
|
|
|
59
|
+
AccessibleViewRegistry.register({
|
|
60
|
+
name: "sessions-list-notification",
|
|
61
|
+
type: AccessibleViewType.Help,
|
|
62
|
+
priority: 110,
|
|
63
|
+
when: SessionsListNotificationFocused,
|
|
64
|
+
getProvider: accessor => accessor.get(IViewsService).getViewWithId(SessionsViewId)?.archiveNotification?.getAccessibilityHelp()
|
|
65
|
+
});
|
|
66
|
+
async function archiveSessionsWithUndo(
|
|
67
|
+
sessions,
|
|
68
|
+
wording,
|
|
69
|
+
sessionsManagementService,
|
|
70
|
+
groupsService,
|
|
71
|
+
viewsService,
|
|
72
|
+
comparisonService
|
|
73
|
+
) {
|
|
74
|
+
const archived = [];
|
|
75
|
+
const candidates = sessions.filter(session => !session.isArchived.get()).map(session => ({
|
|
76
|
+
session,
|
|
77
|
+
groupId: groupsService.getGroupOfSession(session.sessionId)
|
|
78
|
+
}));
|
|
79
|
+
const comparisonGroups = ( new Map(
|
|
80
|
+
comparisonService.comparisons.get().filter(comparison => comparison.archivedAt === undefined && ( candidates.some(entry => entry.groupId === comparison.groupId))).map(comparison => [comparison.groupId, comparison.id])
|
|
81
|
+
));
|
|
82
|
+
try {
|
|
83
|
+
for (const entry of candidates) {
|
|
84
|
+
await sessionsManagementService.archiveSession(entry.session);
|
|
85
|
+
archived.push(entry);
|
|
86
|
+
}
|
|
87
|
+
} finally {
|
|
88
|
+
if (archived.length > 0) {
|
|
89
|
+
const removedComparisonGroups = ( new Map(
|
|
90
|
+
[...comparisonGroups].filter(([groupId]) => !groupsService.getGroup(groupId))
|
|
91
|
+
));
|
|
92
|
+
const restoredGroupIds = ( new Map());
|
|
93
|
+
const message = wording === ChatSessionArchiveActionWording.MarkAsDone ? ( localize(6237, "{0} marked done", archived.length)) : ( localize(6238, "{0} archived", archived.length));
|
|
94
|
+
viewsService.getViewWithId(SessionsViewId)?.archiveNotification?.show(message, async () => {
|
|
95
|
+
for (const [groupId, comparisonId] of removedComparisonGroups) {
|
|
96
|
+
const restoredGroupId = restoredGroupIds.get(groupId);
|
|
97
|
+
if (!restoredGroupId || !groupsService.getGroup(restoredGroupId)) {
|
|
98
|
+
restoredGroupIds.set(groupId, comparisonService.restoreComparison(comparisonId));
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
while (archived.length > 0) {
|
|
102
|
+
const {
|
|
103
|
+
session,
|
|
104
|
+
groupId
|
|
105
|
+
} = archived[0];
|
|
106
|
+
const current = sessionsManagementService.getSession(session.resource);
|
|
107
|
+
if (current?.isArchived.get()) {
|
|
108
|
+
await sessionsManagementService.unarchiveSession(current);
|
|
109
|
+
const restoredGroupId = groupId ? restoredGroupIds.get(groupId) ?? groupId : undefined;
|
|
110
|
+
if (restoredGroupId && groupsService.getGroup(restoredGroupId) && !groupsService.getGroupOfSession(current.sessionId)) {
|
|
111
|
+
groupsService.addToGroup(current.sessionId, restoredGroupId);
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
archived.shift();
|
|
115
|
+
}
|
|
116
|
+
status(( localize(6239, "Sessions restored.")));
|
|
117
|
+
});
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
}
|
|
50
121
|
const CLOSE_SESSION_COMMAND_ID = "sessionsViewPane.closeSession";
|
|
51
122
|
registerAction2(class CloseSessionAction extends Action2 {
|
|
52
123
|
constructor() {
|
|
53
124
|
super({
|
|
54
125
|
id: CLOSE_SESSION_COMMAND_ID,
|
|
55
|
-
title: ( localize2(
|
|
126
|
+
title: ( localize2(6240, "Close Session")),
|
|
56
127
|
f1: true,
|
|
57
128
|
precondition: ( ContextKeyExpr.and(( IsNewChatSessionContext.negate()), ( EditorsVisibleContext.negate()))),
|
|
58
129
|
category: SessionsCategories.Sessions
|
|
@@ -64,16 +135,6 @@ registerAction2(class CloseSessionAction extends Action2 {
|
|
|
64
135
|
sessionsService.openNewSession();
|
|
65
136
|
}
|
|
66
137
|
});
|
|
67
|
-
KeybindingsRegistry.registerKeybindingRule({
|
|
68
|
-
id: CLOSE_SESSION_COMMAND_ID,
|
|
69
|
-
weight: KeybindingWeight.SessionsContrib,
|
|
70
|
-
when: ( ContextKeyExpr.and(( IsNewChatSessionContext.negate()), ( EditorsVisibleContext.negate()))),
|
|
71
|
-
primary: KeyMod.CtrlCmd | KeyCode.KeyW,
|
|
72
|
-
win: {
|
|
73
|
-
primary: KeyMod.CtrlCmd | KeyCode.F4,
|
|
74
|
-
secondary: [KeyMod.CtrlCmd | KeyCode.KeyW]
|
|
75
|
-
}
|
|
76
|
-
});
|
|
77
138
|
const OPEN_SESSION_AT_INDEX_COMMAND_ID = "sessionsViewPane.openSessionAtIndex";
|
|
78
139
|
function digitToKeyCode(digit) {
|
|
79
140
|
switch (digit) {
|
|
@@ -170,9 +231,9 @@ registerAction2(class NavigatePreviousSessionAction extends Action2 {
|
|
|
170
231
|
super({
|
|
171
232
|
id: "sessionsViewPane.navigatePreviousSession",
|
|
172
233
|
title: {
|
|
173
|
-
value: ( localize(
|
|
234
|
+
value: ( localize(6241, "Go to Previous Session")),
|
|
174
235
|
original: "Go to Previous Session",
|
|
175
|
-
mnemonicTitle: ( localize(
|
|
236
|
+
mnemonicTitle: ( localize(6242, "&&Previous Session"))
|
|
176
237
|
},
|
|
177
238
|
f1: true,
|
|
178
239
|
category: SessionsCategories.Sessions,
|
|
@@ -202,9 +263,9 @@ registerAction2(class NavigateNextSessionAction extends Action2 {
|
|
|
202
263
|
super({
|
|
203
264
|
id: "sessionsViewPane.navigateNextSession",
|
|
204
265
|
title: {
|
|
205
|
-
value: ( localize(
|
|
266
|
+
value: ( localize(6243, "Go to Next Session")),
|
|
206
267
|
original: "Go to Next Session",
|
|
207
|
-
mnemonicTitle: ( localize(
|
|
268
|
+
mnemonicTitle: ( localize(6244, "&&Next Session"))
|
|
208
269
|
},
|
|
209
270
|
f1: true,
|
|
210
271
|
category: SessionsCategories.Sessions,
|
|
@@ -230,41 +291,100 @@ registerAction2(class NavigateNextSessionAction extends Action2 {
|
|
|
230
291
|
}
|
|
231
292
|
});
|
|
232
293
|
MenuRegistry.appendMenuItem(Menus.SidebarSessionsHeader, {
|
|
233
|
-
submenu:
|
|
234
|
-
title: ( localize2(
|
|
235
|
-
icon: Codicon.
|
|
294
|
+
submenu: Menus.SessionsViewFilter,
|
|
295
|
+
title: ( localize2(6245, "Filter Sessions")),
|
|
296
|
+
icon: Codicon.filter,
|
|
236
297
|
group: "navigation",
|
|
237
298
|
order: 10
|
|
238
299
|
});
|
|
239
300
|
MenuRegistry.appendMenuItem(Menus.SidebarSessionsHeader, {
|
|
240
301
|
command: {
|
|
241
302
|
id: "sessionsViewPane.find",
|
|
242
|
-
title: ( localize2(
|
|
303
|
+
title: ( localize2(6246, "Find Session")),
|
|
243
304
|
icon: Codicon.search
|
|
244
305
|
},
|
|
245
306
|
group: "navigation",
|
|
246
307
|
order: 20
|
|
247
308
|
});
|
|
248
|
-
MenuRegistry.appendMenuItem(
|
|
249
|
-
submenu:
|
|
250
|
-
title: ( localize2(
|
|
251
|
-
group: "
|
|
309
|
+
MenuRegistry.appendMenuItem(Menus.SessionsViewFilter, {
|
|
310
|
+
submenu: Menus.SessionsViewOrdering,
|
|
311
|
+
title: ( localize2(6247, "Ordering")),
|
|
312
|
+
group: "1_presentation",
|
|
252
313
|
order: 0
|
|
253
314
|
});
|
|
315
|
+
MenuRegistry.appendMenuItem(Menus.SessionsViewFilter, {
|
|
316
|
+
submenu: Menus.SessionsViewGrouping,
|
|
317
|
+
title: ( localize2(6248, "Grouping")),
|
|
318
|
+
group: "1_presentation",
|
|
319
|
+
order: 1
|
|
320
|
+
});
|
|
321
|
+
MenuRegistry.appendMenuItem(Menus.SessionsViewFilter, {
|
|
322
|
+
submenu: Menus.SessionsViewShow,
|
|
323
|
+
title: ( localize2(6249, "Show")),
|
|
324
|
+
when: ( SessionsViewGroupingContext.isEqualTo(SessionsGrouping.Workspace)),
|
|
325
|
+
group: "1_presentation",
|
|
326
|
+
order: 2
|
|
327
|
+
});
|
|
328
|
+
for (const [index, item] of [{
|
|
329
|
+
submenu: Menus.SessionsViewSource,
|
|
330
|
+
title: ( localize2(6250, "Created In"))
|
|
331
|
+
}, {
|
|
332
|
+
submenu: Menus.SessionsViewHarness,
|
|
333
|
+
title: ( localize2(6251, "Harness"))
|
|
334
|
+
}].entries()) {
|
|
335
|
+
MenuRegistry.appendMenuItem(Menus.SessionsViewFilter, {
|
|
336
|
+
...item,
|
|
337
|
+
group: "2_filters",
|
|
338
|
+
order: index + 1
|
|
339
|
+
});
|
|
340
|
+
}
|
|
254
341
|
registerExternalSessionsFilterMenu(
|
|
255
|
-
|
|
342
|
+
Menus.SessionsViewFilter,
|
|
256
343
|
Menus.SessionsViewExternalFilter,
|
|
257
|
-
"
|
|
344
|
+
"3_visibility",
|
|
345
|
+
false,
|
|
346
|
+
( localize2(6252, "Created Externally"))
|
|
258
347
|
);
|
|
348
|
+
registerAction2(class ToggleExternalSessionsSectionAction extends Action2 {
|
|
349
|
+
constructor() {
|
|
350
|
+
super({
|
|
351
|
+
id: "sessionsViewPane.toggleExternalSessionsSection",
|
|
352
|
+
title: ( localize2(6253, "Show in External Section")),
|
|
353
|
+
toggled: ( ContextKeyExpr.equals(`config.${SESSIONS_LIST_GROUP_EXTERNAL_SESSIONS_SETTING}`, true)),
|
|
354
|
+
menu: {
|
|
355
|
+
id: Menus.SessionsViewExternalFilter,
|
|
356
|
+
group: "2_grouping",
|
|
357
|
+
order: 0,
|
|
358
|
+
when: ChatContextKeys.enabled
|
|
359
|
+
}
|
|
360
|
+
});
|
|
361
|
+
}
|
|
362
|
+
async run(accessor) {
|
|
363
|
+
const configurationService = accessor.get(IConfigurationService);
|
|
364
|
+
await configurationService.updateValue(
|
|
365
|
+
SESSIONS_LIST_GROUP_EXTERNAL_SESSIONS_SETTING,
|
|
366
|
+
!configurationService.getValue(SESSIONS_LIST_GROUP_EXTERNAL_SESSIONS_SETTING),
|
|
367
|
+
ConfigurationTarget.USER
|
|
368
|
+
);
|
|
369
|
+
}
|
|
370
|
+
});
|
|
371
|
+
MenuRegistry.appendMenuItem(SessionSectionToolbarMenuId, {
|
|
372
|
+
submenu: Menus.SessionsViewExternalFilter,
|
|
373
|
+
title: ( localize2(6254, "Configure External Sessions")),
|
|
374
|
+
icon: Codicon.filter,
|
|
375
|
+
group: "navigation",
|
|
376
|
+
order: 0,
|
|
377
|
+
when: ( ContextKeyExpr.equals(SessionSectionTypeContext.key, "external"))
|
|
378
|
+
});
|
|
259
379
|
registerAction2(class SortByCreatedAction extends Action2 {
|
|
260
380
|
constructor() {
|
|
261
381
|
super({
|
|
262
382
|
id: "sessionsViewPane.sortByCreated",
|
|
263
|
-
title: ( localize2(
|
|
383
|
+
title: ( localize2(6255, "Created")),
|
|
264
384
|
category: SessionsCategories.Sessions,
|
|
265
385
|
toggled: ( ContextKeyExpr.equals(SessionsViewSortingContext.key, SessionsSorting.Created)),
|
|
266
386
|
menu: [{
|
|
267
|
-
id:
|
|
387
|
+
id: Menus.SessionsViewOrdering,
|
|
268
388
|
group: "1_sort",
|
|
269
389
|
order: 0
|
|
270
390
|
}]
|
|
@@ -280,11 +400,11 @@ registerAction2(class SortByUpdatedAction extends Action2 {
|
|
|
280
400
|
constructor() {
|
|
281
401
|
super({
|
|
282
402
|
id: "sessionsViewPane.sortByUpdated",
|
|
283
|
-
title: ( localize2(
|
|
403
|
+
title: ( localize2(6256, "Updated")),
|
|
284
404
|
category: SessionsCategories.Sessions,
|
|
285
405
|
toggled: ( ContextKeyExpr.equals(SessionsViewSortingContext.key, SessionsSorting.Updated)),
|
|
286
406
|
menu: [{
|
|
287
|
-
id:
|
|
407
|
+
id: Menus.SessionsViewOrdering,
|
|
288
408
|
group: "1_sort",
|
|
289
409
|
order: 1
|
|
290
410
|
}]
|
|
@@ -300,13 +420,13 @@ registerAction2(class GroupByWorkspaceAction extends Action2 {
|
|
|
300
420
|
constructor() {
|
|
301
421
|
super({
|
|
302
422
|
id: "sessionsViewPane.groupByWorkspace",
|
|
303
|
-
title: ( localize2(
|
|
423
|
+
title: ( localize2(6257, "Workspace")),
|
|
304
424
|
category: SessionsCategories.Sessions,
|
|
305
425
|
toggled: ( ContextKeyExpr.equals(SessionsViewGroupingContext.key, SessionsGrouping.Workspace)),
|
|
306
426
|
menu: [{
|
|
307
|
-
id:
|
|
308
|
-
group: "
|
|
309
|
-
order:
|
|
427
|
+
id: Menus.SessionsViewGrouping,
|
|
428
|
+
group: "1_group",
|
|
429
|
+
order: 1
|
|
310
430
|
}]
|
|
311
431
|
});
|
|
312
432
|
}
|
|
@@ -320,13 +440,13 @@ registerAction2(class GroupByTimeAction extends Action2 {
|
|
|
320
440
|
constructor() {
|
|
321
441
|
super({
|
|
322
442
|
id: "sessionsViewPane.groupByTime",
|
|
323
|
-
title: ( localize2(
|
|
443
|
+
title: ( localize2(6258, "Time")),
|
|
324
444
|
category: SessionsCategories.Sessions,
|
|
325
445
|
toggled: ( ContextKeyExpr.equals(SessionsViewGroupingContext.key, SessionsGrouping.Date)),
|
|
326
446
|
menu: [{
|
|
327
|
-
id:
|
|
328
|
-
group: "
|
|
329
|
-
order:
|
|
447
|
+
id: Menus.SessionsViewGrouping,
|
|
448
|
+
group: "1_group",
|
|
449
|
+
order: 0
|
|
330
450
|
}]
|
|
331
451
|
});
|
|
332
452
|
}
|
|
@@ -336,16 +456,37 @@ registerAction2(class GroupByTimeAction extends Action2 {
|
|
|
336
456
|
view?.setGrouping(SessionsGrouping.Date);
|
|
337
457
|
}
|
|
338
458
|
});
|
|
459
|
+
registerAction2(class ToggleCompactSessionsViewAction extends Action2 {
|
|
460
|
+
constructor() {
|
|
461
|
+
super({
|
|
462
|
+
id: "sessionsViewPane.toggleCompact",
|
|
463
|
+
title: ( localize2(6259, "Compact View")),
|
|
464
|
+
category: SessionsCategories.Sessions,
|
|
465
|
+
toggled: SessionsViewCompactContext,
|
|
466
|
+
menu: [{
|
|
467
|
+
id: Menus.SidebarSessionsHeader,
|
|
468
|
+
group: "view",
|
|
469
|
+
order: 0,
|
|
470
|
+
when: ( ContextKeyExpr.and(ChatContextKeys.enabled, ( IsPhoneLayoutContext.negate())))
|
|
471
|
+
}]
|
|
472
|
+
});
|
|
473
|
+
}
|
|
474
|
+
run(accessor) {
|
|
475
|
+
const viewsService = accessor.get(IViewsService);
|
|
476
|
+
const view = viewsService.getViewWithId(SessionsViewId);
|
|
477
|
+
view?.toggleCompact();
|
|
478
|
+
}
|
|
479
|
+
});
|
|
339
480
|
registerAction2(class ShowRecentWorkspaceSessionsAction extends Action2 {
|
|
340
481
|
constructor() {
|
|
341
482
|
super({
|
|
342
483
|
id: "sessionsViewPane.showRecentSessions",
|
|
343
|
-
title: ( localize2(
|
|
484
|
+
title: ( localize2(6260, "Recent")),
|
|
344
485
|
category: SessionsCategories.Sessions,
|
|
345
486
|
toggled: IsWorkspaceGroupCappedContext,
|
|
346
487
|
menu: [{
|
|
347
|
-
id:
|
|
348
|
-
group: "
|
|
488
|
+
id: Menus.SessionsViewShow,
|
|
489
|
+
group: "1_show",
|
|
349
490
|
order: 0,
|
|
350
491
|
when: ( ContextKeyExpr.equals(SessionsViewGroupingContext.key, SessionsGrouping.Workspace))
|
|
351
492
|
}]
|
|
@@ -362,12 +503,12 @@ registerAction2(class ShowAllWorkspaceSessionsAction extends Action2 {
|
|
|
362
503
|
constructor() {
|
|
363
504
|
super({
|
|
364
505
|
id: "sessionsViewPane.showAllSessions",
|
|
365
|
-
title: ( localize2(
|
|
506
|
+
title: ( localize2(6261, "All")),
|
|
366
507
|
category: SessionsCategories.Sessions,
|
|
367
508
|
toggled: ( IsWorkspaceGroupCappedContext.negate()),
|
|
368
509
|
menu: [{
|
|
369
|
-
id:
|
|
370
|
-
group: "
|
|
510
|
+
id: Menus.SessionsViewShow,
|
|
511
|
+
group: "1_show",
|
|
371
512
|
order: 1,
|
|
372
513
|
when: ( ContextKeyExpr.equals(SessionsViewGroupingContext.key, SessionsGrouping.Workspace))
|
|
373
514
|
}]
|
|
@@ -384,12 +525,13 @@ registerAction2(class CollapseAllGroupsAction extends Action2 {
|
|
|
384
525
|
constructor() {
|
|
385
526
|
super({
|
|
386
527
|
id: "sessionsViewPane.collapseAllGroups",
|
|
387
|
-
title: ( localize2(
|
|
528
|
+
title: ( localize2(6262, "Collapse All Groups")),
|
|
388
529
|
category: SessionsCategories.Sessions,
|
|
389
530
|
menu: [{
|
|
390
|
-
id:
|
|
391
|
-
group: "
|
|
392
|
-
order:
|
|
531
|
+
id: Menus.SidebarSessionsHeader,
|
|
532
|
+
group: "view",
|
|
533
|
+
order: 1,
|
|
534
|
+
when: ChatContextKeys.enabled
|
|
393
535
|
}]
|
|
394
536
|
});
|
|
395
537
|
}
|
|
@@ -403,7 +545,7 @@ registerAction2(class RefreshSessionsAction extends Action2 {
|
|
|
403
545
|
constructor() {
|
|
404
546
|
super({
|
|
405
547
|
id: "sessionsViewPane.refresh",
|
|
406
|
-
title: ( localize2(
|
|
548
|
+
title: ( localize2(6263, "Refresh Sessions")),
|
|
407
549
|
icon: Codicon.refresh,
|
|
408
550
|
f1: true,
|
|
409
551
|
category: SessionsCategories.Sessions
|
|
@@ -419,7 +561,7 @@ registerAction2(class FindSessionAction extends Action2 {
|
|
|
419
561
|
constructor() {
|
|
420
562
|
super({
|
|
421
563
|
id: "sessionsViewPane.find",
|
|
422
|
-
title: ( localize2(
|
|
564
|
+
title: ( localize2(6246, "Find Session")),
|
|
423
565
|
icon: Codicon.search,
|
|
424
566
|
category: SessionsCategories.Sessions
|
|
425
567
|
});
|
|
@@ -434,7 +576,7 @@ registerAction2(class NewSessionForWorkspaceAction extends Action2 {
|
|
|
434
576
|
constructor() {
|
|
435
577
|
super({
|
|
436
578
|
id: NEW_SESSION_FOR_WORKSPACE_ACTION_ID,
|
|
437
|
-
title: ( localize2(
|
|
579
|
+
title: ( localize2(6264, "New Session")),
|
|
438
580
|
icon: Codicon.plus,
|
|
439
581
|
menu: [{
|
|
440
582
|
id: SessionSectionToolbarMenuId,
|
|
@@ -485,7 +627,7 @@ registerAction2(class NewQuickChatAction extends Action2 {
|
|
|
485
627
|
constructor() {
|
|
486
628
|
super({
|
|
487
629
|
id: NEW_QUICK_CHAT_COMMAND_ID,
|
|
488
|
-
title: ( localize2(
|
|
630
|
+
title: ( localize2(6265, "New Quick Chat")),
|
|
489
631
|
icon: Codicon.add,
|
|
490
632
|
category: SessionsCategories.Sessions,
|
|
491
633
|
f1: true,
|
|
@@ -529,36 +671,36 @@ const ConfirmArchiveStorageKey = "sessions.confirmArchive";
|
|
|
529
671
|
function getArchiveSectionConfirmationMessage(context, wording) {
|
|
530
672
|
if (context.id === "pinned") {
|
|
531
673
|
if (context.sessions.length === 1) {
|
|
532
|
-
return wording === ChatSessionArchiveActionWording.MarkAsDone ? ( localize(
|
|
674
|
+
return wording === ChatSessionArchiveActionWording.MarkAsDone ? ( localize(6266, "Are you sure you want to mark 1 pinned session as done?")) : ( localize(6267, "Are you sure you want to archive 1 pinned session?"));
|
|
533
675
|
}
|
|
534
676
|
return wording === ChatSessionArchiveActionWording.MarkAsDone ? ( localize(
|
|
535
|
-
|
|
677
|
+
6268,
|
|
536
678
|
"Are you sure you want to mark {0} pinned sessions as done?",
|
|
537
679
|
context.sessions.length
|
|
538
680
|
)) : ( localize(
|
|
539
|
-
|
|
681
|
+
6269,
|
|
540
682
|
"Are you sure you want to archive {0} pinned sessions?",
|
|
541
683
|
context.sessions.length
|
|
542
684
|
));
|
|
543
685
|
}
|
|
544
686
|
if (context.sessions.length === 1) {
|
|
545
687
|
return wording === ChatSessionArchiveActionWording.MarkAsDone ? ( localize(
|
|
546
|
-
|
|
688
|
+
6270,
|
|
547
689
|
"Are you sure you want to mark 1 session from '{0}' as done?",
|
|
548
690
|
context.label
|
|
549
691
|
)) : ( localize(
|
|
550
|
-
|
|
692
|
+
6271,
|
|
551
693
|
"Are you sure you want to archive 1 session from '{0}'?",
|
|
552
694
|
context.label
|
|
553
695
|
));
|
|
554
696
|
}
|
|
555
697
|
return wording === ChatSessionArchiveActionWording.MarkAsDone ? ( localize(
|
|
556
|
-
|
|
698
|
+
6272,
|
|
557
699
|
"Are you sure you want to mark {0} sessions from '{1}' as done?",
|
|
558
700
|
context.sessions.length,
|
|
559
701
|
context.label
|
|
560
702
|
)) : ( localize(
|
|
561
|
-
|
|
703
|
+
6273,
|
|
562
704
|
"Are you sure you want to archive {0} sessions from '{1}'?",
|
|
563
705
|
context.sessions.length,
|
|
564
706
|
context.label
|
|
@@ -584,17 +726,20 @@ class BaseArchiveSectionAction extends Action2 {
|
|
|
584
726
|
if (!context || !context.sessions || context.sessions.length === 0) {
|
|
585
727
|
return;
|
|
586
728
|
}
|
|
587
|
-
const sessionsManagementService = accessor.get(ISessionsManagementService);
|
|
588
729
|
const dialogService = accessor.get(IDialogService);
|
|
589
730
|
const storageService = accessor.get(IStorageService);
|
|
731
|
+
const sessionsManagementService = accessor.get(ISessionsManagementService);
|
|
732
|
+
const groupsService = accessor.get(ISessionGroupsService);
|
|
733
|
+
const viewsService = accessor.get(IViewsService);
|
|
734
|
+
const comparisonService = accessor.get(ISessionComparisonService);
|
|
590
735
|
const skipConfirmation = storageService.getBoolean(ConfirmArchiveStorageKey, StorageScope.PROFILE, false);
|
|
591
736
|
if (!skipConfirmation) {
|
|
592
737
|
const confirmed = await dialogService.confirm({
|
|
593
738
|
message: getArchiveSectionConfirmationMessage(context, this.wording),
|
|
594
|
-
detail: this.wording === ChatSessionArchiveActionWording.MarkAsDone ? ( localize(
|
|
739
|
+
detail: this.wording === ChatSessionArchiveActionWording.MarkAsDone ? ( localize(6274, "You can restore sessions later if needed from the sessions view.")) : ( localize(6275, "You can unarchive sessions later if needed from the sessions view.")),
|
|
595
740
|
primaryButton: getChatSessionArchiveActionPresentation(this.wording).archiveAll.title.value,
|
|
596
741
|
checkbox: {
|
|
597
|
-
label: ( localize(
|
|
742
|
+
label: ( localize(6276, "Do not ask me again"))
|
|
598
743
|
}
|
|
599
744
|
});
|
|
600
745
|
if (!confirmed.confirmed) {
|
|
@@ -604,9 +749,14 @@ class BaseArchiveSectionAction extends Action2 {
|
|
|
604
749
|
storageService.store(ConfirmArchiveStorageKey, true, StorageScope.PROFILE, StorageTarget.USER);
|
|
605
750
|
}
|
|
606
751
|
}
|
|
607
|
-
|
|
608
|
-
|
|
609
|
-
|
|
752
|
+
await archiveSessionsWithUndo(
|
|
753
|
+
context.sessions,
|
|
754
|
+
this.wording,
|
|
755
|
+
sessionsManagementService,
|
|
756
|
+
groupsService,
|
|
757
|
+
viewsService,
|
|
758
|
+
comparisonService
|
|
759
|
+
);
|
|
610
760
|
}
|
|
611
761
|
}
|
|
612
762
|
class ArchiveSectionAction extends BaseArchiveSectionAction {
|
|
@@ -622,22 +772,22 @@ class MarkSectionSessionsDoneAction extends BaseArchiveSectionAction {
|
|
|
622
772
|
function getArchiveGroupConfirmationMessage(context, wording) {
|
|
623
773
|
if (context.sessions.length === 1) {
|
|
624
774
|
return wording === ChatSessionArchiveActionWording.MarkAsDone ? ( localize(
|
|
625
|
-
|
|
775
|
+
6277,
|
|
626
776
|
"Are you sure you want to mark 1 session from '{0}' as done?",
|
|
627
777
|
context.group.name
|
|
628
778
|
)) : ( localize(
|
|
629
|
-
|
|
779
|
+
6278,
|
|
630
780
|
"Are you sure you want to archive 1 session from '{0}'?",
|
|
631
781
|
context.group.name
|
|
632
782
|
));
|
|
633
783
|
}
|
|
634
784
|
return wording === ChatSessionArchiveActionWording.MarkAsDone ? ( localize(
|
|
635
|
-
|
|
785
|
+
6279,
|
|
636
786
|
"Are you sure you want to mark {0} sessions from '{1}' as done?",
|
|
637
787
|
context.sessions.length,
|
|
638
788
|
context.group.name
|
|
639
789
|
)) : ( localize(
|
|
640
|
-
|
|
790
|
+
6280,
|
|
641
791
|
"Are you sure you want to archive {0} sessions from '{1}'?",
|
|
642
792
|
context.sessions.length,
|
|
643
793
|
context.group.name
|
|
@@ -660,20 +810,23 @@ class BaseArchiveSessionsInGroupAction extends Action2 {
|
|
|
660
810
|
this.wording = wording;
|
|
661
811
|
}
|
|
662
812
|
async run(accessor, context) {
|
|
663
|
-
if (!context || !context.sessions || context.sessions.length === 0) {
|
|
813
|
+
if (!context || context.comparison?.launching || !context.sessions || context.sessions.length === 0) {
|
|
664
814
|
return;
|
|
665
815
|
}
|
|
666
|
-
const sessionsManagementService = accessor.get(ISessionsManagementService);
|
|
667
816
|
const dialogService = accessor.get(IDialogService);
|
|
668
817
|
const storageService = accessor.get(IStorageService);
|
|
818
|
+
const sessionsManagementService = accessor.get(ISessionsManagementService);
|
|
819
|
+
const groupsService = accessor.get(ISessionGroupsService);
|
|
820
|
+
const viewsService = accessor.get(IViewsService);
|
|
821
|
+
const comparisonService = accessor.get(ISessionComparisonService);
|
|
669
822
|
const skipConfirmation = storageService.getBoolean(ConfirmArchiveStorageKey, StorageScope.PROFILE, false);
|
|
670
823
|
if (!skipConfirmation) {
|
|
671
824
|
const confirmed = await dialogService.confirm({
|
|
672
825
|
message: getArchiveGroupConfirmationMessage(context, this.wording),
|
|
673
|
-
detail: this.wording === ChatSessionArchiveActionWording.MarkAsDone ? ( localize(
|
|
826
|
+
detail: this.wording === ChatSessionArchiveActionWording.MarkAsDone ? ( localize(6281, "You can restore sessions later if needed from the sessions view.")) : ( localize(6282, "You can unarchive sessions later if needed from the sessions view.")),
|
|
674
827
|
primaryButton: getChatSessionArchiveActionPresentation(this.wording).archiveAll.title.value,
|
|
675
828
|
checkbox: {
|
|
676
|
-
label: ( localize(
|
|
829
|
+
label: ( localize(6276, "Do not ask me again"))
|
|
677
830
|
}
|
|
678
831
|
});
|
|
679
832
|
if (!confirmed.confirmed) {
|
|
@@ -683,9 +836,14 @@ class BaseArchiveSessionsInGroupAction extends Action2 {
|
|
|
683
836
|
storageService.store(ConfirmArchiveStorageKey, true, StorageScope.PROFILE, StorageTarget.USER);
|
|
684
837
|
}
|
|
685
838
|
}
|
|
686
|
-
|
|
687
|
-
|
|
688
|
-
|
|
839
|
+
await archiveSessionsWithUndo(
|
|
840
|
+
context.sessions,
|
|
841
|
+
this.wording,
|
|
842
|
+
sessionsManagementService,
|
|
843
|
+
groupsService,
|
|
844
|
+
viewsService,
|
|
845
|
+
comparisonService
|
|
846
|
+
);
|
|
689
847
|
}
|
|
690
848
|
}
|
|
691
849
|
class ArchiveSessionsInGroupAction extends BaseArchiveSessionsInGroupAction {
|
|
@@ -702,18 +860,18 @@ registerAction2(class DeleteEmptySessionGroupAction extends Action2 {
|
|
|
702
860
|
constructor() {
|
|
703
861
|
super({
|
|
704
862
|
id: "sessionsView.deleteEmptyGroup",
|
|
705
|
-
title: ( localize2(
|
|
863
|
+
title: ( localize2(6283, "Delete Group")),
|
|
706
864
|
icon: Codicon.trash,
|
|
707
865
|
menu: [{
|
|
708
866
|
id: SessionGroupToolbarMenuId,
|
|
709
867
|
group: "navigation",
|
|
710
868
|
order: 2,
|
|
711
|
-
when: SessionGroupIsEmptyContext
|
|
869
|
+
when: ( ContextKeyExpr.and(SessionGroupIsEmptyContext, ( SessionGroupIsComparisonContext.negate())))
|
|
712
870
|
}]
|
|
713
871
|
});
|
|
714
872
|
}
|
|
715
873
|
run(accessor, context) {
|
|
716
|
-
if (!context) {
|
|
874
|
+
if (!context || context.comparison) {
|
|
717
875
|
return;
|
|
718
876
|
}
|
|
719
877
|
const sessionGroupsService = accessor.get(ISessionGroupsService);
|
|
@@ -726,17 +884,18 @@ registerAction2(class NewSessionInGroupAction extends Action2 {
|
|
|
726
884
|
constructor() {
|
|
727
885
|
super({
|
|
728
886
|
id: "sessionsView.newSessionInGroup",
|
|
729
|
-
title: ( localize2(
|
|
887
|
+
title: ( localize2(6284, "New Session")),
|
|
730
888
|
icon: Codicon.plus,
|
|
731
889
|
menu: [{
|
|
732
890
|
id: SessionGroupToolbarMenuId,
|
|
733
891
|
group: "navigation",
|
|
734
|
-
order: 1
|
|
892
|
+
order: 1,
|
|
893
|
+
when: ( SessionGroupIsComparisonContext.negate())
|
|
735
894
|
}]
|
|
736
895
|
});
|
|
737
896
|
}
|
|
738
897
|
run(accessor, context) {
|
|
739
|
-
if (!context) {
|
|
898
|
+
if (!context || context.comparison) {
|
|
740
899
|
return;
|
|
741
900
|
}
|
|
742
901
|
const sessionsService = accessor.get(ISessionsService);
|
|
@@ -756,13 +915,13 @@ registerAction2(class PinSessionAction extends Action2 {
|
|
|
756
915
|
constructor() {
|
|
757
916
|
super({
|
|
758
917
|
id: "sessionsViewPane.pinSession",
|
|
759
|
-
title: ( localize2(
|
|
918
|
+
title: ( localize2(6285, "Pin")),
|
|
760
919
|
icon: Codicon.pin,
|
|
761
920
|
menu: [{
|
|
762
|
-
id:
|
|
921
|
+
id: Menus.SessionItemToolbar,
|
|
763
922
|
group: "navigation",
|
|
764
|
-
order:
|
|
765
|
-
when: ( ContextKeyExpr.and(( ContextKeyExpr.equals(IsSessionPinnedContext.key, false)), ( ContextKeyExpr.equals(SessionIsArchivedContext.key, false))))
|
|
923
|
+
order: 1,
|
|
924
|
+
when: ( ContextKeyExpr.and(( SessionsListPromoteNewChatActionContext.negate()), ( ContextKeyExpr.equals(IsSessionPinnedContext.key, false)), ( ContextKeyExpr.equals(SessionIsArchivedContext.key, false))))
|
|
766
925
|
}, {
|
|
767
926
|
id: SessionItemContextMenuId,
|
|
768
927
|
group: "0_pin",
|
|
@@ -787,13 +946,13 @@ registerAction2(class UnpinSessionAction extends Action2 {
|
|
|
787
946
|
constructor() {
|
|
788
947
|
super({
|
|
789
948
|
id: "sessionsViewPane.unpinSession",
|
|
790
|
-
title: ( localize2(
|
|
949
|
+
title: ( localize2(6286, "Unpin")),
|
|
791
950
|
icon: Codicon.pinned,
|
|
792
951
|
menu: [{
|
|
793
|
-
id:
|
|
952
|
+
id: Menus.SessionItemToolbar,
|
|
794
953
|
group: "navigation",
|
|
795
|
-
order:
|
|
796
|
-
when: ( ContextKeyExpr.and(( ContextKeyExpr.equals(IsSessionPinnedContext.key, true)), ( ContextKeyExpr.equals(SessionIsArchivedContext.key, false))))
|
|
954
|
+
order: 1,
|
|
955
|
+
when: ( ContextKeyExpr.and(( SessionsListPromoteNewChatActionContext.negate()), ( ContextKeyExpr.equals(IsSessionPinnedContext.key, true)), ( ContextKeyExpr.equals(SessionIsArchivedContext.key, false))))
|
|
797
956
|
}, {
|
|
798
957
|
id: SessionItemContextMenuId,
|
|
799
958
|
group: "0_pin",
|
|
@@ -837,6 +996,34 @@ KeybindingsRegistry.registerKeybindingRule({
|
|
|
837
996
|
primary: KeyMod.CtrlCmd | KeyCode.Backspace
|
|
838
997
|
}
|
|
839
998
|
});
|
|
999
|
+
registerAction2(class ImportSessionAction extends Action2 {
|
|
1000
|
+
constructor() {
|
|
1001
|
+
super({
|
|
1002
|
+
id: "sessionsViewPane.importSession",
|
|
1003
|
+
title: ( localize2(6287, "Import")),
|
|
1004
|
+
icon: Codicon.chatImport,
|
|
1005
|
+
precondition: ChatContextKeys.enabled,
|
|
1006
|
+
menu: [Menus.SessionItemToolbar, SessionItemContextMenuId].map(id => ({
|
|
1007
|
+
id,
|
|
1008
|
+
group: id === Menus.SessionItemToolbar ? "navigation" : "1_edit",
|
|
1009
|
+
order: 1.5,
|
|
1010
|
+
when: ( ContextKeyExpr.and(ChatContextKeys.enabled, SessionItemCanImportContext, ( SessionIsArchivedContext.negate())))
|
|
1011
|
+
}))
|
|
1012
|
+
});
|
|
1013
|
+
}
|
|
1014
|
+
async run(accessor, context) {
|
|
1015
|
+
const sessions = getSessionActionTargets(accessor, context).filter(
|
|
1016
|
+
session => session.isExternal?.get() === true && session.capabilities.get().supportsImport && !session.isArchived.get()
|
|
1017
|
+
);
|
|
1018
|
+
const sessionsManagementService = accessor.get(ISessionsManagementService);
|
|
1019
|
+
for (const session of sessions) {
|
|
1020
|
+
await sessionsManagementService.importSession(session);
|
|
1021
|
+
}
|
|
1022
|
+
if (sessions.length > 0) {
|
|
1023
|
+
status(sessions.length === 1 ? ( localize(6288, "Imported {0}.", sessions[0].title.get())) : ( localize(6289, "Imported {0} sessions.", sessions.length)));
|
|
1024
|
+
}
|
|
1025
|
+
}
|
|
1026
|
+
});
|
|
840
1027
|
class BaseArchiveSessionAction extends Action2 {
|
|
841
1028
|
constructor(wording) {
|
|
842
1029
|
const action = getChatSessionArchiveActionPresentation(wording).archive;
|
|
@@ -845,9 +1032,9 @@ class BaseArchiveSessionAction extends Action2 {
|
|
|
845
1032
|
title: action.title,
|
|
846
1033
|
icon: action.icon,
|
|
847
1034
|
menu: [{
|
|
848
|
-
id:
|
|
1035
|
+
id: Menus.SessionItemToolbar,
|
|
849
1036
|
group: "navigation",
|
|
850
|
-
order:
|
|
1037
|
+
order: 2,
|
|
851
1038
|
when: ( ContextKeyExpr.equals(SessionIsArchivedContext.key, false))
|
|
852
1039
|
}, {
|
|
853
1040
|
id: Menus.AutomationsHistoryItem,
|
|
@@ -863,7 +1050,7 @@ class BaseArchiveSessionAction extends Action2 {
|
|
|
863
1050
|
id: Menus.SessionBarToolbar,
|
|
864
1051
|
group: "secondary/1_session",
|
|
865
1052
|
order: 30,
|
|
866
|
-
when: ( ContextKeyExpr.and(SessionIsCreatedContext, ( ContextKeyExpr.equals(SessionIsArchivedContext.key, false))))
|
|
1053
|
+
when: ( ContextKeyExpr.and(SessionIsCreatedContext, ( ContextKeyExpr.equals(SessionIsArchivedContext.key, false)), ( SessionHeaderTargetsChatContext.negate())))
|
|
867
1054
|
}]
|
|
868
1055
|
});
|
|
869
1056
|
}
|
|
@@ -871,9 +1058,15 @@ class BaseArchiveSessionAction extends Action2 {
|
|
|
871
1058
|
const targets = context ? (Array.isArray(context) ? context : [context]) : getFocusedSessionListTargets(accessor) ?? [];
|
|
872
1059
|
const sessions = targets.filter(session => !session.isArchived.get());
|
|
873
1060
|
const sessionsManagementService = accessor.get(ISessionsManagementService);
|
|
1061
|
+
const configurationService = accessor.get(IConfigurationService);
|
|
1062
|
+
const accessibilityService = accessor.get(IAccessibilityService);
|
|
1063
|
+
const accessibilitySignalService = accessor.get(IAccessibilitySignalService);
|
|
874
1064
|
for (const session of sessions) {
|
|
875
1065
|
await sessionsManagementService.archiveSession(session);
|
|
876
1066
|
}
|
|
1067
|
+
if (sessions.length > 0 && configurationService.getValue(SESSIONS_MARK_AS_DONE_CONFETTI_SETTING) && !accessibilityService.isMotionReduced()) {
|
|
1068
|
+
void accessibilitySignalService.playSignal(AccessibilitySignal.confetti);
|
|
1069
|
+
}
|
|
877
1070
|
}
|
|
878
1071
|
}
|
|
879
1072
|
class ArchiveSessionAction extends BaseArchiveSessionAction {
|
|
@@ -894,7 +1087,7 @@ class BaseUnarchiveSessionAction extends Action2 {
|
|
|
894
1087
|
title: action.title,
|
|
895
1088
|
icon: action.icon,
|
|
896
1089
|
menu: [{
|
|
897
|
-
id:
|
|
1090
|
+
id: Menus.SessionItemToolbar,
|
|
898
1091
|
group: "navigation",
|
|
899
1092
|
order: 1,
|
|
900
1093
|
when: ( ContextKeyExpr.equals(SessionIsArchivedContext.key, true))
|
|
@@ -937,12 +1130,125 @@ class RestoreArchivedSessionAction extends BaseUnarchiveSessionAction {
|
|
|
937
1130
|
super(ChatSessionArchiveActionWording.MarkAsDone);
|
|
938
1131
|
}
|
|
939
1132
|
}
|
|
1133
|
+
class BaseArchiveChatAction extends Action2 {
|
|
1134
|
+
constructor(wording) {
|
|
1135
|
+
const action = getChatSessionArchiveActionPresentation(wording).archive;
|
|
1136
|
+
const when = ( ContextKeyExpr.and(ChatContextKeys.enabled, SessionChatItemCanArchiveContext, ( SessionChatItemIsArchivedContext.negate())));
|
|
1137
|
+
super({
|
|
1138
|
+
id: ARCHIVE_CHAT_COMMAND_ID,
|
|
1139
|
+
title: action.title,
|
|
1140
|
+
icon: action.icon,
|
|
1141
|
+
menu: [{
|
|
1142
|
+
id: Menus.SessionChatItemContext,
|
|
1143
|
+
group: "1_chat",
|
|
1144
|
+
order: 3,
|
|
1145
|
+
when
|
|
1146
|
+
}, {
|
|
1147
|
+
id: Menus.SessionChatItemToolbar,
|
|
1148
|
+
group: "navigation",
|
|
1149
|
+
order: 1,
|
|
1150
|
+
when: ( ContextKeyExpr.and(when, ( SessionChatItemIsUntitledContext.negate())))
|
|
1151
|
+
}, {
|
|
1152
|
+
id: Menus.SessionBarToolbar,
|
|
1153
|
+
group: "secondary/1_session",
|
|
1154
|
+
order: 30,
|
|
1155
|
+
when: ( ContextKeyExpr.and(
|
|
1156
|
+
SessionHeaderTargetsChatContext,
|
|
1157
|
+
SessionActiveChatCanArchiveContext,
|
|
1158
|
+
( SessionActiveChatIsUntitledContext.negate())
|
|
1159
|
+
))
|
|
1160
|
+
}]
|
|
1161
|
+
});
|
|
1162
|
+
}
|
|
1163
|
+
async run(accessor, context, chat) {
|
|
1164
|
+
let target;
|
|
1165
|
+
if (context && chat && hasKey(context, {
|
|
1166
|
+
sessionId: true
|
|
1167
|
+
})) {
|
|
1168
|
+
target = {
|
|
1169
|
+
session: context,
|
|
1170
|
+
chat
|
|
1171
|
+
};
|
|
1172
|
+
} else if (context && hasKey(context, {
|
|
1173
|
+
session: true,
|
|
1174
|
+
chat: true
|
|
1175
|
+
})) {
|
|
1176
|
+
target = context;
|
|
1177
|
+
}
|
|
1178
|
+
if (!target || target.chat.isArchived.get() || !getChatCapabilities(target.chat, target.session, undefined).canArchive) {
|
|
1179
|
+
return;
|
|
1180
|
+
}
|
|
1181
|
+
const sessionsService = accessor.get(ISessionsService);
|
|
1182
|
+
const sessionsManagementService = accessor.get(ISessionsManagementService);
|
|
1183
|
+
await sessionsManagementService.archiveChat(target.session, target.chat);
|
|
1184
|
+
const activeSession = sessionsService.activeSession.get();
|
|
1185
|
+
if (activeSession?.sessionId === target.session.sessionId) {
|
|
1186
|
+
const openChat = activeSession.openChats.get().find(chat => isEqual(chat.resource, target.chat.resource));
|
|
1187
|
+
if (openChat) {
|
|
1188
|
+
await sessionsService.closeChat(activeSession, openChat);
|
|
1189
|
+
}
|
|
1190
|
+
}
|
|
1191
|
+
}
|
|
1192
|
+
}
|
|
1193
|
+
class ArchiveChatAction extends BaseArchiveChatAction {
|
|
1194
|
+
constructor() {
|
|
1195
|
+
super(ChatSessionArchiveActionWording.Archive);
|
|
1196
|
+
}
|
|
1197
|
+
}
|
|
1198
|
+
class MarkChatAsDoneAction extends BaseArchiveChatAction {
|
|
1199
|
+
constructor() {
|
|
1200
|
+
super(ChatSessionArchiveActionWording.MarkAsDone);
|
|
1201
|
+
}
|
|
1202
|
+
}
|
|
1203
|
+
class BaseUnarchiveChatAction extends Action2 {
|
|
1204
|
+
constructor(wording) {
|
|
1205
|
+
const action = getChatSessionArchiveActionPresentation(wording).unarchive;
|
|
1206
|
+
const when = ( ContextKeyExpr.and(
|
|
1207
|
+
ChatContextKeys.enabled,
|
|
1208
|
+
SessionChatItemCanArchiveContext,
|
|
1209
|
+
SessionChatItemIsArchivedContext
|
|
1210
|
+
));
|
|
1211
|
+
super({
|
|
1212
|
+
id: UNARCHIVE_CHAT_COMMAND_ID,
|
|
1213
|
+
title: action.title,
|
|
1214
|
+
icon: action.icon,
|
|
1215
|
+
menu: [{
|
|
1216
|
+
id: Menus.SessionChatItemContext,
|
|
1217
|
+
group: "1_chat",
|
|
1218
|
+
order: 3,
|
|
1219
|
+
when
|
|
1220
|
+
}, {
|
|
1221
|
+
id: Menus.SessionChatItemToolbar,
|
|
1222
|
+
group: "navigation",
|
|
1223
|
+
order: 1,
|
|
1224
|
+
when: ( ContextKeyExpr.and(when, ( SessionChatItemIsUntitledContext.negate())))
|
|
1225
|
+
}]
|
|
1226
|
+
});
|
|
1227
|
+
}
|
|
1228
|
+
async run(accessor, context) {
|
|
1229
|
+
if (!context || !context.chat.isArchived.get() || !getChatCapabilities(context.chat, context.session, undefined).canArchive) {
|
|
1230
|
+
return;
|
|
1231
|
+
}
|
|
1232
|
+
await accessor.get(ISessionsManagementService).unarchiveChat(context.session, context.chat);
|
|
1233
|
+
}
|
|
1234
|
+
}
|
|
1235
|
+
class UnarchiveChatAction extends BaseUnarchiveChatAction {
|
|
1236
|
+
constructor() {
|
|
1237
|
+
super(ChatSessionArchiveActionWording.Archive);
|
|
1238
|
+
}
|
|
1239
|
+
}
|
|
1240
|
+
class RestoreArchivedChatAction extends BaseUnarchiveChatAction {
|
|
1241
|
+
constructor() {
|
|
1242
|
+
super(ChatSessionArchiveActionWording.MarkAsDone);
|
|
1243
|
+
}
|
|
1244
|
+
}
|
|
940
1245
|
registerAction2(class RenameSessionAction extends Action2 {
|
|
941
1246
|
constructor() {
|
|
942
1247
|
super({
|
|
943
1248
|
id: RENAME_SESSION_COMMAND_ID,
|
|
944
|
-
title: ( localize2(
|
|
1249
|
+
title: ( localize2(6290, "Rename...")),
|
|
945
1250
|
icon: Codicon.edit,
|
|
1251
|
+
precondition: ( SessionItemIsMultiSelectionContext.negate()),
|
|
946
1252
|
keybinding: {
|
|
947
1253
|
primary: KeyCode.F2,
|
|
948
1254
|
weight: KeybindingWeight.SessionsContrib,
|
|
@@ -957,18 +1263,25 @@ registerAction2(class RenameSessionAction extends Action2 {
|
|
|
957
1263
|
});
|
|
958
1264
|
}
|
|
959
1265
|
async run(accessor, context) {
|
|
1266
|
+
const focusedSessions = context ? undefined : getFocusedSessionListTargets(accessor);
|
|
960
1267
|
const session = getSessionActionTargets(accessor, context)[0];
|
|
961
1268
|
if (!session || !session.capabilities.get().supportsRename) {
|
|
962
1269
|
return;
|
|
963
1270
|
}
|
|
1271
|
+
if (focusedSessions?.includes(session)) {
|
|
1272
|
+
const view = accessor.get(IViewsService).getViewWithId(SessionsViewId);
|
|
1273
|
+
if (view?.sessionsControl?.beginRenameSession(session)) {
|
|
1274
|
+
return;
|
|
1275
|
+
}
|
|
1276
|
+
}
|
|
964
1277
|
const quickInputService = accessor.get(IQuickInputService);
|
|
965
1278
|
const sessionsManagementService = accessor.get(ISessionsManagementService);
|
|
966
1279
|
const newTitle = await quickInputService.input({
|
|
967
1280
|
value: session.title.get(),
|
|
968
|
-
prompt: ( localize(
|
|
1281
|
+
prompt: ( localize(6291, "New agent session title")),
|
|
969
1282
|
validateInput: async value => {
|
|
970
1283
|
if (!value.trim()) {
|
|
971
|
-
return localize(
|
|
1284
|
+
return localize(6292, "Title cannot be empty");
|
|
972
1285
|
}
|
|
973
1286
|
return undefined;
|
|
974
1287
|
}
|
|
@@ -985,7 +1298,7 @@ registerAction2(class DeleteSessionAction extends Action2 {
|
|
|
985
1298
|
constructor() {
|
|
986
1299
|
super({
|
|
987
1300
|
id: "sessionsViewPane.deleteSession",
|
|
988
|
-
title: ( localize2(
|
|
1301
|
+
title: ( localize2(6293, "Delete...")),
|
|
989
1302
|
menu: [{
|
|
990
1303
|
id: SessionItemContextMenuId,
|
|
991
1304
|
group: "1_edit",
|
|
@@ -1005,9 +1318,9 @@ registerAction2(class DeleteSessionAction extends Action2 {
|
|
|
1005
1318
|
const dialogService = accessor.get(IDialogService);
|
|
1006
1319
|
const sessionsManagementService = accessor.get(ISessionsManagementService);
|
|
1007
1320
|
const confirmed = await dialogService.confirm({
|
|
1008
|
-
message: sessions.length === 1 ? ( localize(
|
|
1009
|
-
detail: ( localize(
|
|
1010
|
-
primaryButton: ( localize(
|
|
1321
|
+
message: sessions.length === 1 ? ( localize(6294, "Are you sure you want to delete this session?")) : ( localize(6295, "Are you sure you want to delete {0} sessions?", sessions.length)),
|
|
1322
|
+
detail: ( localize(6296, "This action cannot be undone.")),
|
|
1323
|
+
primaryButton: ( localize(6297, "Delete"))
|
|
1011
1324
|
});
|
|
1012
1325
|
if (!confirmed.confirmed) {
|
|
1013
1326
|
return;
|
|
@@ -1015,7 +1328,7 @@ registerAction2(class DeleteSessionAction extends Action2 {
|
|
|
1015
1328
|
try {
|
|
1016
1329
|
await sessionsManagementService.deleteSessions(sessions);
|
|
1017
1330
|
} catch (err) {
|
|
1018
|
-
dialogService.error(sessions.length === 1 ? ( localize(
|
|
1331
|
+
dialogService.error(sessions.length === 1 ? ( localize(6298, "Failed to delete the session: {0}", toErrorMessage(err))) : ( localize(6299, "Failed to delete the sessions: {0}", toErrorMessage(err))));
|
|
1019
1332
|
}
|
|
1020
1333
|
}
|
|
1021
1334
|
});
|
|
@@ -1023,11 +1336,11 @@ registerAction2(class MarkSessionReadAction extends Action2 {
|
|
|
1023
1336
|
constructor() {
|
|
1024
1337
|
super({
|
|
1025
1338
|
id: MARK_SESSION_READ_COMMAND_ID,
|
|
1026
|
-
title: ( localize2(
|
|
1339
|
+
title: ( localize2(6300, "Mark as Read")),
|
|
1027
1340
|
menu: [{
|
|
1028
1341
|
id: SessionItemContextMenuId,
|
|
1029
|
-
group: "
|
|
1030
|
-
order:
|
|
1342
|
+
group: "1_edit",
|
|
1343
|
+
order: 1.5,
|
|
1031
1344
|
when: ( ContextKeyExpr.and(( SessionIsReadContext.negate()), ( SessionIsArchivedContext.negate())))
|
|
1032
1345
|
}, {
|
|
1033
1346
|
id: Menus.SessionHeaderContext,
|
|
@@ -1043,18 +1356,20 @@ registerAction2(class MarkSessionReadAction extends Action2 {
|
|
|
1043
1356
|
}
|
|
1044
1357
|
const sessions = Array.isArray(context) ? context : [context];
|
|
1045
1358
|
const sessionsManagementService = accessor.get(ISessionsManagementService);
|
|
1046
|
-
|
|
1359
|
+
for (const session of sessions) {
|
|
1360
|
+
sessionsManagementService.markRead(session);
|
|
1361
|
+
}
|
|
1047
1362
|
}
|
|
1048
1363
|
});
|
|
1049
1364
|
registerAction2(class MarkSessionUnreadAction extends Action2 {
|
|
1050
1365
|
constructor() {
|
|
1051
1366
|
super({
|
|
1052
1367
|
id: MARK_SESSION_UNREAD_COMMAND_ID,
|
|
1053
|
-
title: ( localize2(
|
|
1368
|
+
title: ( localize2(6301, "Mark as Unread")),
|
|
1054
1369
|
menu: [{
|
|
1055
1370
|
id: SessionItemContextMenuId,
|
|
1056
|
-
group: "
|
|
1057
|
-
order:
|
|
1371
|
+
group: "1_edit",
|
|
1372
|
+
order: 1.5,
|
|
1058
1373
|
when: ( ContextKeyExpr.and(SessionIsReadContext, ( SessionIsArchivedContext.negate())))
|
|
1059
1374
|
}, {
|
|
1060
1375
|
id: Menus.SessionHeaderContext,
|
|
@@ -1079,11 +1394,11 @@ registerAction2(class OpenSessionToTheSideAction extends Action2 {
|
|
|
1079
1394
|
constructor() {
|
|
1080
1395
|
super({
|
|
1081
1396
|
id: "sessionsViewPane.openToTheSide",
|
|
1082
|
-
title: ( localize2(
|
|
1397
|
+
title: ( localize2(6302, "Open to the Side")),
|
|
1083
1398
|
menu: [{
|
|
1084
1399
|
id: SessionItemContextMenuId,
|
|
1085
|
-
group: "
|
|
1086
|
-
order:
|
|
1400
|
+
group: "0_pin",
|
|
1401
|
+
order: 1,
|
|
1087
1402
|
when: IsSessionsWindowContext
|
|
1088
1403
|
}]
|
|
1089
1404
|
});
|
|
@@ -1094,35 +1409,80 @@ registerAction2(class OpenSessionToTheSideAction extends Action2 {
|
|
|
1094
1409
|
}
|
|
1095
1410
|
const sessions = Array.isArray(context) ? context : [context];
|
|
1096
1411
|
const sessionsService = accessor.get(ISessionsService);
|
|
1097
|
-
|
|
1098
|
-
|
|
1099
|
-
|
|
1100
|
-
|
|
1101
|
-
|
|
1102
|
-
|
|
1103
|
-
|
|
1104
|
-
|
|
1105
|
-
|
|
1106
|
-
|
|
1107
|
-
|
|
1108
|
-
|
|
1109
|
-
});
|
|
1110
|
-
const visibleAfterOpen = sessionsService.visibleSessions.get();
|
|
1111
|
-
const opened = visibleAfterOpen.find(s => s?.sessionId === lastRequested.sessionId);
|
|
1112
|
-
if (opened) {
|
|
1113
|
-
sessionsPartService.focusSession(opened);
|
|
1412
|
+
if (sessions.length === 1) {
|
|
1413
|
+
await sessionsService.openSessionToSide(sessions[0], {
|
|
1414
|
+
source: "sessionsList",
|
|
1415
|
+
forceMainChat: true
|
|
1416
|
+
});
|
|
1417
|
+
} else {
|
|
1418
|
+
const reference = sessionsService.visibleSessions.get().at(-1);
|
|
1419
|
+
await sessionsService.openSessionsAt(sessions, reference?.sessionId, "right", {
|
|
1420
|
+
source: "sessionsList",
|
|
1421
|
+
activate: "last",
|
|
1422
|
+
forceMainChat: true
|
|
1423
|
+
});
|
|
1114
1424
|
}
|
|
1115
1425
|
}
|
|
1116
1426
|
});
|
|
1427
|
+
const openInGridWhen = ( ContextKeyExpr.and(IsSessionsWindowContext, ChatContextKeys.enabled, ( IsPhoneLayoutContext.negate())));
|
|
1428
|
+
MenuRegistry.appendMenuItem(SessionItemContextMenuId, {
|
|
1429
|
+
submenu: Menus.SessionGridOpen,
|
|
1430
|
+
title: ( localize(6303, "Open in Grid")),
|
|
1431
|
+
group: "0_pin",
|
|
1432
|
+
order: 2,
|
|
1433
|
+
when: openInGridWhen
|
|
1434
|
+
});
|
|
1435
|
+
for (const item of [{
|
|
1436
|
+
direction: "left",
|
|
1437
|
+
title: ( localize2(6304, "Left of Active Session"))
|
|
1438
|
+
}, {
|
|
1439
|
+
direction: "right",
|
|
1440
|
+
title: ( localize2(6305, "Right of Active Session"))
|
|
1441
|
+
}, {
|
|
1442
|
+
direction: "up",
|
|
1443
|
+
title: ( localize2(6306, "Above Active Session"))
|
|
1444
|
+
}, {
|
|
1445
|
+
direction: "down",
|
|
1446
|
+
title: ( localize2(6307, "Below Active Session"))
|
|
1447
|
+
}]) {
|
|
1448
|
+
registerAction2(class extends Action2 {
|
|
1449
|
+
constructor() {
|
|
1450
|
+
super({
|
|
1451
|
+
id: `sessionsViewPane.openInGrid.${item.direction}`,
|
|
1452
|
+
title: item.title,
|
|
1453
|
+
precondition: openInGridWhen,
|
|
1454
|
+
menu: {
|
|
1455
|
+
id: Menus.SessionGridOpen
|
|
1456
|
+
}
|
|
1457
|
+
});
|
|
1458
|
+
}
|
|
1459
|
+
async run(accessor, context) {
|
|
1460
|
+
if (!context) {
|
|
1461
|
+
return;
|
|
1462
|
+
}
|
|
1463
|
+
const service = accessor.get(ISessionsService);
|
|
1464
|
+
await service.openSessionsAt(
|
|
1465
|
+
Array.isArray(context) ? context : [context],
|
|
1466
|
+
service.activeSession.get()?.sessionId,
|
|
1467
|
+
item.direction,
|
|
1468
|
+
{
|
|
1469
|
+
source: "sessionsList",
|
|
1470
|
+
activate: "last"
|
|
1471
|
+
}
|
|
1472
|
+
);
|
|
1473
|
+
}
|
|
1474
|
+
});
|
|
1475
|
+
}
|
|
1117
1476
|
registerAction2(class MarkAllSessionsReadAction extends Action2 {
|
|
1118
1477
|
constructor() {
|
|
1119
1478
|
super({
|
|
1120
1479
|
id: "sessionsViewPane.markAllRead",
|
|
1121
|
-
title: ( localize2(
|
|
1480
|
+
title: ( localize2(6308, "Mark All as Read")),
|
|
1122
1481
|
menu: [{
|
|
1123
1482
|
id: SessionItemContextMenuId,
|
|
1124
1483
|
group: "0_read",
|
|
1125
|
-
order: 1
|
|
1484
|
+
order: 1,
|
|
1485
|
+
when: ( ContextKeyExpr.equals(SessionsViewGroupingContext.key, SessionsGrouping.Date))
|
|
1126
1486
|
}]
|
|
1127
1487
|
});
|
|
1128
1488
|
}
|
|
@@ -1172,13 +1532,17 @@ function getSessionsArchiveActionConstructors(wording) {
|
|
|
1172
1532
|
MarkSectionSessionsDoneAction,
|
|
1173
1533
|
MarkAllSessionsInGroupAsDoneAction,
|
|
1174
1534
|
MarkSessionAsDoneAction,
|
|
1535
|
+
MarkChatAsDoneAction,
|
|
1175
1536
|
RestoreArchivedSessionAction,
|
|
1537
|
+
RestoreArchivedChatAction,
|
|
1176
1538
|
RestoreActiveSessionAction
|
|
1177
1539
|
] : [
|
|
1178
1540
|
ArchiveSectionAction,
|
|
1179
1541
|
ArchiveSessionsInGroupAction,
|
|
1180
1542
|
ArchiveSessionAction,
|
|
1543
|
+
ArchiveChatAction,
|
|
1181
1544
|
UnarchiveSessionAction,
|
|
1545
|
+
UnarchiveChatAction,
|
|
1182
1546
|
UnarchiveActiveSessionAction
|
|
1183
1547
|
];
|
|
1184
1548
|
}
|
|
@@ -1215,7 +1579,7 @@ registerAction2(class ManageAutomationsAction extends Action2 {
|
|
|
1215
1579
|
constructor() {
|
|
1216
1580
|
super({
|
|
1217
1581
|
id: "sessionsView.manageAutomations",
|
|
1218
|
-
title: ( localize2(
|
|
1582
|
+
title: ( localize2(6309, "Manage Automations")),
|
|
1219
1583
|
menu: []
|
|
1220
1584
|
});
|
|
1221
1585
|
}
|
|
@@ -1223,31 +1587,12 @@ registerAction2(class ManageAutomationsAction extends Action2 {
|
|
|
1223
1587
|
accessor.get(ICustomViewService).showCustomView(AUTOMATIONS_CUSTOM_VIEW_ID);
|
|
1224
1588
|
}
|
|
1225
1589
|
});
|
|
1226
|
-
registerAction2(class ResetAutomationsNewBadgeAction extends Action2 {
|
|
1227
|
-
constructor() {
|
|
1228
|
-
super({
|
|
1229
|
-
id: "sessions.developer.resetAutomationsNewBadge",
|
|
1230
|
-
title: ( localize2(5019, "Reset Automations New Badge")),
|
|
1231
|
-
category: Categories.Developer,
|
|
1232
|
-
f1: true,
|
|
1233
|
-
precondition: ( ContextKeyExpr.and(
|
|
1234
|
-
IsDevelopmentContext,
|
|
1235
|
-
IsSessionsWindowContext,
|
|
1236
|
-
ChatAutomationsEnabledContext
|
|
1237
|
-
))
|
|
1238
|
-
});
|
|
1239
|
-
}
|
|
1240
|
-
async run(accessor) {
|
|
1241
|
-
const view = await accessor.get(IViewsService).openView(SessionsViewId, false);
|
|
1242
|
-
await view?.sessionsControl?.resetAutomationsNewBadge();
|
|
1243
|
-
}
|
|
1244
|
-
});
|
|
1245
1590
|
const MARK_ALL_AUTOMATION_RUNS_READ_COMMAND_ID = "sessionsView.markAllAutomationRunsRead";
|
|
1246
1591
|
registerAction2(class MarkAllAutomationRunsReadAction extends Action2 {
|
|
1247
1592
|
constructor() {
|
|
1248
1593
|
super({
|
|
1249
1594
|
id: MARK_ALL_AUTOMATION_RUNS_READ_COMMAND_ID,
|
|
1250
|
-
title: ( localize2(
|
|
1595
|
+
title: ( localize2(6310, "Mark All as Read"))
|
|
1251
1596
|
});
|
|
1252
1597
|
}
|
|
1253
1598
|
async run(accessor) {
|
|
@@ -1267,4 +1612,4 @@ registerAction2(class MarkAllAutomationRunsReadAction extends Action2 {
|
|
|
1267
1612
|
}
|
|
1268
1613
|
});
|
|
1269
1614
|
|
|
1270
|
-
export { ArchiveSessionAction };
|
|
1615
|
+
export { ArchiveChatAction, ArchiveSessionAction, SessionsArchiveActionsContribution, getSessionsArchiveActionConstructors };
|