@codingame/monaco-vscode-workbench-service-override 37.6.0 → 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 +15 -13
- 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 -96
- 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.d.ts +46 -70
- package/vscode/src/vs/workbench/browser/layout.js +243 -44
- package/vscode/src/vs/workbench/browser/workbench.d.ts +1 -3
- package/vscode/src/vs/workbench/browser/workbench.js +26 -24
- 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
|
@@ -16,21 +16,21 @@ import { IEditorGroupsService } from '@codingame/monaco-vscode-api/vscode/vs/wor
|
|
|
16
16
|
import { IEditorService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/services/editor/common/editorService.service';
|
|
17
17
|
import { Parts } from '@codingame/monaco-vscode-api/vscode/vs/workbench/services/layout/browser/layoutService';
|
|
18
18
|
import { IAgentWorkbenchLayoutService } from '@codingame/monaco-vscode-api/vscode/vs/sessions/browser/workbench.service';
|
|
19
|
-
import {
|
|
19
|
+
import { DesktopLayoutContext, HasDockedDetailsContext } from '@codingame/monaco-vscode-api/vscode/vs/sessions/common/contextkeys';
|
|
20
20
|
import { ISessionsService } from '@codingame/monaco-vscode-api/vscode/vs/sessions/services/sessions/browser/sessionsService.service';
|
|
21
21
|
import '@codingame/monaco-vscode-api/vscode/vs/sessions/contrib/changes/browser/sessionChangesService';
|
|
22
22
|
import { EmptyFileEditorInput } from '../../../editor/browser/emptyFileEditorInput.js';
|
|
23
|
-
import { DetailPanelTarget } from './
|
|
24
|
-
import { isMainPartEmpty, isEditorWithoutDockedDetails, isChangesEditorInput,
|
|
25
|
-
import {
|
|
26
|
-
import { SessionVisibilityProfile } from './
|
|
23
|
+
import { DetailPanelTarget } from './desktopDetailPanelCoordinator.js';
|
|
24
|
+
import { isMainPartEmpty, isEditorWithoutDockedDetails, isChangesEditorInput, getFilesDetailsState, FilesDetailsState } from './desktopSharedHelpers.js';
|
|
25
|
+
import { DesktopLayoutStrategy } from './desktopLayoutStrategy.js';
|
|
26
|
+
import { SessionVisibilityProfile } from './desktopVisibilityProfileStore.js';
|
|
27
27
|
import { autorun } from '@codingame/monaco-vscode-api/vscode/vs/base/common/observableInternal/reactions/autorun';
|
|
28
28
|
import { observableFromEvent } from '@codingame/monaco-vscode-api/vscode/vs/base/common/observableInternal/observables/observableFromEvent';
|
|
29
29
|
import { ISessionChangesService } from '@codingame/monaco-vscode-api/vscode/vs/sessions/contrib/changes/common/sessionChangesService.service';
|
|
30
30
|
|
|
31
31
|
const TOGGLE_DETAILS_COMMAND_ID = "workbench.action.agentSessions.toggleDetails";
|
|
32
|
-
const
|
|
33
|
-
let
|
|
32
|
+
const desktopHeaderToggleDetailsOrder = 10;
|
|
33
|
+
let DesktopExistingSessionStrategy = class DesktopExistingSessionStrategy extends DesktopLayoutStrategy {
|
|
34
34
|
constructor(
|
|
35
35
|
ctx,
|
|
36
36
|
_visibilityStore,
|
|
@@ -81,7 +81,7 @@ let SinglePaneExistingSessionStrategy = class SinglePaneExistingSessionStrategy
|
|
|
81
81
|
get managedTabs() {
|
|
82
82
|
if (!this._managedTabs) {
|
|
83
83
|
throw ( new Error(
|
|
84
|
-
"
|
|
84
|
+
"DesktopExistingSessionStrategy: managed tabs accessed before registerManagedTabs()"
|
|
85
85
|
));
|
|
86
86
|
}
|
|
87
87
|
return this._managedTabs;
|
|
@@ -92,46 +92,58 @@ let SinglePaneExistingSessionStrategy = class SinglePaneExistingSessionStrategy
|
|
|
92
92
|
let previousQuickChatResource;
|
|
93
93
|
let previousIsCreated;
|
|
94
94
|
let previousSession;
|
|
95
|
+
let previousOwnerKey;
|
|
96
|
+
let wasSuspended = false;
|
|
95
97
|
let togglingSidePane = false;
|
|
96
98
|
this._register(autorun(reader => {
|
|
97
99
|
const multipleSessionsVisible = this._ctx.multipleSessionsVisibleObs.read(reader);
|
|
98
100
|
const activeSession = this._sessionsService.activeSession.read(reader);
|
|
101
|
+
activeSession?.activeChat.read(reader);
|
|
99
102
|
const isQuickChat = activeSession?.isQuickChat?.read(reader) ?? false;
|
|
103
|
+
if (this._ctx.chatLayoutSuspended(reader)) {
|
|
104
|
+
wasSuspended = true;
|
|
105
|
+
return;
|
|
106
|
+
}
|
|
107
|
+
const resuming = wasSuspended;
|
|
108
|
+
wasSuspended = false;
|
|
100
109
|
const wasQuickChatActive = previousQuickChatResource !== undefined;
|
|
101
110
|
const isWorkspaceConversion = !isQuickChat && !!activeSession && isEqual(previousQuickChatResource, activeSession.resource);
|
|
102
111
|
previousQuickChatResource = isQuickChat ? activeSession?.resource : undefined;
|
|
103
|
-
if (isWorkspaceConversion) {
|
|
112
|
+
if (isWorkspaceConversion && !this._ctx.sharedChatLayout) {
|
|
104
113
|
this._captureExistingProfile();
|
|
105
114
|
}
|
|
115
|
+
const ownerKey = this._ctx.chatLayoutActive(reader) && activeSession ? this._ctx.ownerKeyFor(activeSession, reader) : undefined;
|
|
106
116
|
if (multipleSessionsVisible) {
|
|
107
|
-
const
|
|
117
|
+
const activeChat = activeSession?.activeChat.read(reader);
|
|
118
|
+
const workspace = activeChat?.workspace.read(reader);
|
|
108
119
|
const isCreated = activeSession?.isCreated.read(reader);
|
|
109
|
-
if (!isWorkspaceConversion && activeSession && !isQuickChat && workspace && isCreated === true) {
|
|
110
|
-
this.
|
|
111
|
-
|
|
112
|
-
);
|
|
120
|
+
if ((!isWorkspaceConversion || this._ctx.sharedChatLayout) && activeSession && !isQuickChat && workspace && isCreated === true) {
|
|
121
|
+
const resolved = this._resolveComposition(activeSession, ownerKey);
|
|
122
|
+
this._ctx.withSessionLayoutRestore(() => this._apply(resolved, !ownerKey));
|
|
113
123
|
}
|
|
114
124
|
wasExistingActive = false;
|
|
125
|
+
previousOwnerKey = ownerKey;
|
|
115
126
|
return;
|
|
116
127
|
}
|
|
117
128
|
if (!activeSession) {
|
|
129
|
+
previousOwnerKey = ownerKey;
|
|
118
130
|
return;
|
|
119
131
|
}
|
|
120
132
|
if (isQuickChat) {
|
|
121
133
|
wasExistingActive = false;
|
|
134
|
+
previousOwnerKey = ownerKey;
|
|
122
135
|
return;
|
|
123
136
|
}
|
|
124
137
|
const isCreated = activeSession.isCreated.read(reader);
|
|
125
138
|
const sessionChanged = previousSession !== undefined && !isEqual(previousSession.resource, activeSession.resource);
|
|
139
|
+
const ownerChanged = !sessionChanged && ownerKey !== undefined && (resuming || !isEqual(previousOwnerKey, ownerKey));
|
|
126
140
|
const isSubmit = !wasQuickChatActive && previousIsCreated === false && isCreated && (previousSession === activeSession || previousSession?.isCreated.read(undefined) === true);
|
|
127
|
-
if (isSubmit) {
|
|
141
|
+
if (isSubmit && !this._ctx.sharedChatLayout) {
|
|
128
142
|
this._captureExistingProfile();
|
|
129
143
|
}
|
|
130
144
|
if (isCreated) {
|
|
131
|
-
if (!isSubmit && !isWorkspaceConversion && (!initialized || !wasExistingActive || wasQuickChatActive || sessionChanged)) {
|
|
132
|
-
this._ctx.withSessionLayoutRestore(
|
|
133
|
-
() => this._apply(this._visibilityStore.get(SessionVisibilityProfile.Existing))
|
|
134
|
-
);
|
|
145
|
+
if ((this._ctx.sharedChatLayout && (isSubmit || isWorkspaceConversion)) || (!isSubmit && !isWorkspaceConversion && (!initialized || !wasExistingActive || wasQuickChatActive || sessionChanged || ownerChanged))) {
|
|
146
|
+
this._ctx.withSessionLayoutRestore(() => this._apply(this._resolveComposition(activeSession, ownerKey)));
|
|
135
147
|
}
|
|
136
148
|
wasExistingActive = true;
|
|
137
149
|
} else {
|
|
@@ -139,6 +151,7 @@ let SinglePaneExistingSessionStrategy = class SinglePaneExistingSessionStrategy
|
|
|
139
151
|
}
|
|
140
152
|
previousIsCreated = isCreated;
|
|
141
153
|
previousSession = activeSession;
|
|
154
|
+
previousOwnerKey = ownerKey;
|
|
142
155
|
initialized = true;
|
|
143
156
|
}));
|
|
144
157
|
this._register(this._layoutService.onDidChangePartVisibility(e => {
|
|
@@ -152,39 +165,111 @@ let SinglePaneExistingSessionStrategy = class SinglePaneExistingSessionStrategy
|
|
|
152
165
|
}));
|
|
153
166
|
this._register(this._layoutService.onWillToggleSidePane(() => {
|
|
154
167
|
togglingSidePane = true;
|
|
168
|
+
this._capturePreHideComposition();
|
|
155
169
|
}));
|
|
156
|
-
this._register(this._layoutService.onDidToggleSidePane(
|
|
170
|
+
this._register(this._layoutService.onDidToggleSidePane(e => {
|
|
157
171
|
try {
|
|
172
|
+
this._correctToggleReopen(e);
|
|
158
173
|
this._captureExistingProfileIfApplicable();
|
|
159
174
|
} finally {
|
|
160
175
|
togglingSidePane = false;
|
|
161
176
|
}
|
|
162
177
|
}));
|
|
163
178
|
}
|
|
179
|
+
_capturePreHideComposition() {
|
|
180
|
+
if (!this._ctx.chatLayoutActive() || this._ctx.chatLayoutSuspended() || !this._layoutService.isSidePaneVisible()) {
|
|
181
|
+
return;
|
|
182
|
+
}
|
|
183
|
+
const ownerKey = this._activeOwnerKey();
|
|
184
|
+
if (!ownerKey) {
|
|
185
|
+
return;
|
|
186
|
+
}
|
|
187
|
+
this._ctx.compositionStore.setPreHide(ownerKey, this._layoutService.captureSidePaneComposition());
|
|
188
|
+
}
|
|
189
|
+
_correctToggleReopen(e) {
|
|
190
|
+
const wasFullyHidden = !e.before.editor && !e.before.auxiliaryBar;
|
|
191
|
+
const nowVisible = e.after.editor || e.after.auxiliaryBar;
|
|
192
|
+
if (!wasFullyHidden || !nowVisible || !this._ctx.chatLayoutActive() || this._ctx.chatLayoutSuspended()) {
|
|
193
|
+
return;
|
|
194
|
+
}
|
|
195
|
+
const ownerKey = this._activeOwnerKey();
|
|
196
|
+
if (!ownerKey) {
|
|
197
|
+
return;
|
|
198
|
+
}
|
|
199
|
+
const preHide = this._ctx.compositionStore.getPreHide(ownerKey);
|
|
200
|
+
if (preHide && (preHide.editor !== e.after.editor || preHide.auxiliaryBar !== e.after.auxiliaryBar)) {
|
|
201
|
+
this._layoutService.restoreSidePaneComposition(preHide);
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
_activeOwnerKey() {
|
|
205
|
+
const activeSession = this._sessionsService.activeSession.get();
|
|
206
|
+
return activeSession && !activeSession.isQuickChat?.get() ? this._ctx.compositionKeyFor(activeSession) : undefined;
|
|
207
|
+
}
|
|
208
|
+
_resolveComposition(activeSession, ownerKey) {
|
|
209
|
+
if (!ownerKey) {
|
|
210
|
+
return this._visibilityStore.get(SessionVisibilityProfile.Existing);
|
|
211
|
+
}
|
|
212
|
+
const compositionKey = this._ctx.compositionKeyFor(activeSession);
|
|
213
|
+
const stored = compositionKey && this._ctx.compositionStore.get(compositionKey);
|
|
214
|
+
if (stored) {
|
|
215
|
+
return {
|
|
216
|
+
editorVisible: stored.editor,
|
|
217
|
+
auxiliaryBarVisible: stored.auxiliaryBar
|
|
218
|
+
};
|
|
219
|
+
}
|
|
220
|
+
const state = this._visibilityStore.get(SessionVisibilityProfile.Existing);
|
|
221
|
+
if (compositionKey) {
|
|
222
|
+
this._ctx.compositionStore.set(compositionKey, {
|
|
223
|
+
editor: state.editorVisible,
|
|
224
|
+
auxiliaryBar: state.auxiliaryBarVisible
|
|
225
|
+
});
|
|
226
|
+
}
|
|
227
|
+
return state;
|
|
228
|
+
}
|
|
164
229
|
_captureExistingProfileIfApplicable() {
|
|
165
|
-
if (this._ctx.isRestoringSessionLayout || this._ctx.
|
|
230
|
+
if (this._ctx.isRestoringSessionLayout || this._ctx.chatLayoutSuspended()) {
|
|
166
231
|
return;
|
|
167
232
|
}
|
|
168
233
|
const activeSession = this._sessionsService.activeSession.get();
|
|
169
|
-
if (
|
|
234
|
+
if (this._ctx.multipleSessionsVisibleObs.get()) {
|
|
235
|
+
const ownerKey = activeSession && this._ctx.chatLayoutActive() ? this._ctx.ownerKeyFor(activeSession) : undefined;
|
|
236
|
+
if (!ownerKey) {
|
|
237
|
+
return;
|
|
238
|
+
}
|
|
239
|
+
}
|
|
240
|
+
if (!activeSession || activeSession.isQuickChat?.get() || !activeSession.isCreated.get() || (this._ctx.sharedChatLayout && !activeSession.activeChat.get().workspace.get()) || this._layoutService.isEditorMaximized() || this._layoutService.isVisible(Parts.CUSTOM_VIEW_GRID_PART)) {
|
|
170
241
|
return;
|
|
171
242
|
}
|
|
172
243
|
this._captureExistingProfile();
|
|
173
244
|
}
|
|
174
245
|
_captureExistingProfile() {
|
|
246
|
+
if (this._ctx.chatLayoutSuspended()) {
|
|
247
|
+
return;
|
|
248
|
+
}
|
|
175
249
|
const state = {
|
|
176
250
|
editorVisible: this._layoutService.isVisible(Parts.EDITOR_PART, mainWindow),
|
|
177
251
|
auxiliaryBarVisible: this._layoutService.isVisible(Parts.AUXILIARYBAR_PART)
|
|
178
252
|
};
|
|
253
|
+
if (this._ctx.chatLayoutActive()) {
|
|
254
|
+
const activeSession = this._sessionsService.activeSession.get();
|
|
255
|
+
const ownerKey = activeSession && this._ctx.compositionKeyFor(activeSession);
|
|
256
|
+
if (ownerKey) {
|
|
257
|
+
this._ctx.compositionStore.set(ownerKey, {
|
|
258
|
+
editor: state.editorVisible,
|
|
259
|
+
auxiliaryBar: state.auxiliaryBarVisible
|
|
260
|
+
});
|
|
261
|
+
}
|
|
262
|
+
return;
|
|
263
|
+
}
|
|
179
264
|
this._visibilityStore.set(SessionVisibilityProfile.Existing, state);
|
|
180
265
|
}
|
|
181
|
-
_apply(state) {
|
|
266
|
+
_apply(state, revealOnly = false) {
|
|
182
267
|
const suppression = this._layoutService.suppressEditorPartAutoVisibility();
|
|
183
268
|
try {
|
|
184
|
-
if (!state.editorVisible && this._layoutService.isVisible(Parts.EDITOR_PART, mainWindow)) {
|
|
269
|
+
if (!revealOnly && !state.editorVisible && this._layoutService.isVisible(Parts.EDITOR_PART, mainWindow)) {
|
|
185
270
|
this._layoutService.setPartHidden(true, Parts.EDITOR_PART);
|
|
186
271
|
}
|
|
187
|
-
if (!state.auxiliaryBarVisible && this._layoutService.isVisible(Parts.AUXILIARYBAR_PART)) {
|
|
272
|
+
if (!revealOnly && !state.auxiliaryBarVisible && this._layoutService.isVisible(Parts.AUXILIARYBAR_PART)) {
|
|
188
273
|
this._layoutService.setPartHidden(true, Parts.AUXILIARYBAR_PART);
|
|
189
274
|
}
|
|
190
275
|
if (state.auxiliaryBarVisible && !this._layoutService.isVisible(Parts.AUXILIARYBAR_PART)) {
|
|
@@ -197,19 +282,6 @@ let SinglePaneExistingSessionStrategy = class SinglePaneExistingSessionStrategy
|
|
|
197
282
|
suppression.dispose();
|
|
198
283
|
}
|
|
199
284
|
}
|
|
200
|
-
_reveal(state) {
|
|
201
|
-
const suppression = this._layoutService.suppressEditorPartAutoVisibility();
|
|
202
|
-
try {
|
|
203
|
-
if (state.auxiliaryBarVisible && !this._layoutService.isVisible(Parts.AUXILIARYBAR_PART)) {
|
|
204
|
-
this._layoutService.setPartHidden(false, Parts.AUXILIARYBAR_PART);
|
|
205
|
-
}
|
|
206
|
-
if (state.editorVisible && !this._layoutService.isVisible(Parts.EDITOR_PART, mainWindow)) {
|
|
207
|
-
this._layoutService.setPartHidden(false, Parts.EDITOR_PART);
|
|
208
|
-
}
|
|
209
|
-
} finally {
|
|
210
|
-
suppression.dispose();
|
|
211
|
-
}
|
|
212
|
-
}
|
|
213
285
|
_registerDetailPanel() {
|
|
214
286
|
const activeEditorObs = observableFromEvent(
|
|
215
287
|
this,
|
|
@@ -241,13 +313,17 @@ let SinglePaneExistingSessionStrategy = class SinglePaneExistingSessionStrategy
|
|
|
241
313
|
let previousEditorSessionKey;
|
|
242
314
|
let previousQuickChatResource;
|
|
243
315
|
const sync = reader => {
|
|
316
|
+
if (this._ctx.chatLayoutSuspended(reader)) {
|
|
317
|
+
return;
|
|
318
|
+
}
|
|
244
319
|
const activeSession = this._sessionsService.activeSession.read(reader);
|
|
245
320
|
const isQuickChat = activeSession?.isQuickChat?.read(reader) ?? false;
|
|
246
321
|
const isWorkspaceConversion = !isQuickChat && !!activeSession && isEqual(previousQuickChatResource, activeSession.resource);
|
|
247
322
|
if (!isWorkspaceConversion) {
|
|
248
323
|
previousQuickChatResource = isQuickChat ? activeSession?.resource : undefined;
|
|
249
324
|
}
|
|
250
|
-
|
|
325
|
+
const workspace = activeSession?.activeChat.read(reader).workspace.read(reader);
|
|
326
|
+
if (!activeSession || isQuickChat || !workspace || !activeSession.isCreated.read(reader)) {
|
|
251
327
|
wasExistingActive = false;
|
|
252
328
|
previousActiveEditor = undefined;
|
|
253
329
|
previousEditorPartVisible = false;
|
|
@@ -255,7 +331,7 @@ let SinglePaneExistingSessionStrategy = class SinglePaneExistingSessionStrategy
|
|
|
255
331
|
return;
|
|
256
332
|
}
|
|
257
333
|
previousQuickChatResource = undefined;
|
|
258
|
-
const sessionKey = (
|
|
334
|
+
const sessionKey = this._ctx.ownerKeyFor(activeSession, reader)?.toString();
|
|
259
335
|
const sessionChanged = activeSessionKey !== undefined && activeSessionKey !== sessionKey;
|
|
260
336
|
if (!wasExistingActive || sessionChanged) {
|
|
261
337
|
activeSessionKey = sessionKey;
|
|
@@ -287,7 +363,7 @@ let SinglePaneExistingSessionStrategy = class SinglePaneExistingSessionStrategy
|
|
|
287
363
|
previousActiveEditor = activeEditor;
|
|
288
364
|
previousEditorPartVisible = editorPartVisible;
|
|
289
365
|
previousEditorSessionKey = sessionKey;
|
|
290
|
-
const target = this._computeTarget(activeEditor, mainPartEmpty, editorMaximized, editorPartVisible);
|
|
366
|
+
const target = this._computeTarget(activeEditor, mainPartEmpty, editorMaximized, editorPartVisible, workspace);
|
|
291
367
|
const revealOnly = this._ctx.multipleSessionsVisibleObs.read(reader);
|
|
292
368
|
if (!isWorkspaceConversion) {
|
|
293
369
|
this._syncDetailVisibility(target, revealOnly, emptyFilesShown);
|
|
@@ -297,7 +373,7 @@ let SinglePaneExistingSessionStrategy = class SinglePaneExistingSessionStrategy
|
|
|
297
373
|
this._register(autorun(sync));
|
|
298
374
|
this._register(this._ctx.onDidEndSessionLayoutRestore(() => {
|
|
299
375
|
const activeSession = this._sessionsService.activeSession.get();
|
|
300
|
-
if (!activeSession || (
|
|
376
|
+
if (pendingSessionKey && (!activeSession || this._ctx.ownerKeyFor(activeSession)?.toString() !== pendingSessionKey)) {
|
|
301
377
|
return;
|
|
302
378
|
}
|
|
303
379
|
pendingSessionKey = undefined;
|
|
@@ -322,10 +398,11 @@ let SinglePaneExistingSessionStrategy = class SinglePaneExistingSessionStrategy
|
|
|
322
398
|
if (this._ctx.isRestoringSessionLayout || target === DetailPanelTarget.Preserve) {
|
|
323
399
|
return;
|
|
324
400
|
}
|
|
325
|
-
if (target === DetailPanelTarget.Hidden || target === DetailPanelTarget.EditorHidden) {
|
|
326
|
-
|
|
401
|
+
if (target === DetailPanelTarget.Hidden || target === DetailPanelTarget.EditorHidden || target === DetailPanelTarget.FilesHidden) {
|
|
402
|
+
const hiddenByEditor = target === DetailPanelTarget.EditorHidden || target === DetailPanelTarget.FilesHidden;
|
|
403
|
+
if ((hiddenByEditor || !revealOnly) && detailVisible) {
|
|
327
404
|
this._detailHiddenTransiently = true;
|
|
328
|
-
this._detailHiddenByEditor =
|
|
405
|
+
this._detailHiddenByEditor = hiddenByEditor;
|
|
329
406
|
this._setDetailHiddenTransiently(true);
|
|
330
407
|
}
|
|
331
408
|
return;
|
|
@@ -345,7 +422,7 @@ let SinglePaneExistingSessionStrategy = class SinglePaneExistingSessionStrategy
|
|
|
345
422
|
this._changingDetailTransiently = false;
|
|
346
423
|
}
|
|
347
424
|
}
|
|
348
|
-
_computeTarget(activeEditor, mainPartEmpty, editorMaximized, editorPartVisible) {
|
|
425
|
+
_computeTarget(activeEditor, mainPartEmpty, editorMaximized, editorPartVisible, workspace) {
|
|
349
426
|
if (mainPartEmpty) {
|
|
350
427
|
return this._ctx.isRestoringSessionLayout ? DetailPanelTarget.Preserve : DetailPanelTarget.Hidden;
|
|
351
428
|
}
|
|
@@ -361,10 +438,13 @@ let SinglePaneExistingSessionStrategy = class SinglePaneExistingSessionStrategy
|
|
|
361
438
|
if (isChangesEditorInput(activeEditor, this._sessionChangesService)) {
|
|
362
439
|
return DetailPanelTarget.ChangesForced;
|
|
363
440
|
}
|
|
364
|
-
|
|
441
|
+
switch (getFilesDetailsState(activeEditor, workspace)) {
|
|
442
|
+
case FilesDetailsState.Active:
|
|
365
443
|
return DetailPanelTarget.FilesForced;
|
|
444
|
+
case FilesDetailsState.Available:
|
|
445
|
+
return editorPartVisible ? DetailPanelTarget.FilesHidden : DetailPanelTarget.Changes;
|
|
366
446
|
}
|
|
367
|
-
return DetailPanelTarget.
|
|
447
|
+
return editorPartVisible ? DetailPanelTarget.EditorHidden : DetailPanelTarget.Changes;
|
|
368
448
|
}
|
|
369
449
|
_registerManagedTabsSupplement() {
|
|
370
450
|
let previousSessionKey;
|
|
@@ -375,7 +455,7 @@ let SinglePaneExistingSessionStrategy = class SinglePaneExistingSessionStrategy
|
|
|
375
455
|
const session = this._sessionsService.activeSession.read(reader);
|
|
376
456
|
const isQuickChat = session?.isQuickChat?.read(reader) ?? false;
|
|
377
457
|
const isCreated = session && !isQuickChat ? session.isCreated.read(reader) : false;
|
|
378
|
-
const sessionKey = session?.
|
|
458
|
+
const sessionKey = session && this._ctx.ownerKeyFor(session, reader)?.toString();
|
|
379
459
|
const isSubmit = !isQuickChat && previousIsCreated === false && isCreated && (previousSession === session || previousSession?.isCreated.read(undefined) === true);
|
|
380
460
|
if (isSubmit) {
|
|
381
461
|
changesActivationPendingForSession = sessionKey;
|
|
@@ -384,14 +464,14 @@ let SinglePaneExistingSessionStrategy = class SinglePaneExistingSessionStrategy
|
|
|
384
464
|
}
|
|
385
465
|
if (session && !isQuickChat && isCreated) {
|
|
386
466
|
const target = this.managedTabs.readTarget(reader);
|
|
387
|
-
const hasChanges =
|
|
467
|
+
const hasChanges = session.activeChat.read(reader).changes.read(reader).length > 0;
|
|
388
468
|
const ensureChangesActive = changesActivationPendingForSession === sessionKey && hasChanges;
|
|
389
469
|
if (ensureChangesActive) {
|
|
390
470
|
changesActivationPendingForSession = undefined;
|
|
391
471
|
}
|
|
392
472
|
if (isSubmit || ensureChangesActive) {
|
|
393
473
|
this.managedTabs.queueReconcile(target, {
|
|
394
|
-
openDefaultsIfEmpty: isSubmit,
|
|
474
|
+
openDefaultsIfEmpty: isSubmit && this._layoutService.isSidePaneVisible(),
|
|
395
475
|
ensureChangesActive
|
|
396
476
|
});
|
|
397
477
|
}
|
|
@@ -407,20 +487,20 @@ let SinglePaneExistingSessionStrategy = class SinglePaneExistingSessionStrategy
|
|
|
407
487
|
constructor() {
|
|
408
488
|
super({
|
|
409
489
|
id: TOGGLE_DETAILS_COMMAND_ID,
|
|
410
|
-
title: ( localize2(
|
|
490
|
+
title: ( localize2(4754, "Toggle Details")),
|
|
411
491
|
icon: Codicon.listSelection,
|
|
412
492
|
f1: false,
|
|
413
493
|
toggled: AuxiliaryBarVisibleContext,
|
|
414
494
|
keybinding: {
|
|
415
495
|
weight: KeybindingWeight.SessionsContrib,
|
|
416
496
|
primary: KeyMod.CtrlCmd | KeyMod.Alt | KeyCode.KeyL,
|
|
417
|
-
when: ( ContextKeyExpr.and(IsSessionsWindowContext, ( IsAuxiliaryWindowContext.toNegated()),
|
|
497
|
+
when: ( ContextKeyExpr.and(IsSessionsWindowContext, ( IsAuxiliaryWindowContext.toNegated()), DesktopLayoutContext))
|
|
418
498
|
},
|
|
419
499
|
menu: {
|
|
420
500
|
id: MenuId.EditorTitleLayout,
|
|
421
501
|
group: "navigation",
|
|
422
|
-
order:
|
|
423
|
-
when: ( ContextKeyExpr.and(IsSessionsWindowContext, ( IsAuxiliaryWindowContext.toNegated()), IsTopRightEditorGroupContext,
|
|
502
|
+
order: desktopHeaderToggleDetailsOrder,
|
|
503
|
+
when: ( ContextKeyExpr.and(IsSessionsWindowContext, ( IsAuxiliaryWindowContext.toNegated()), IsTopRightEditorGroupContext, DesktopLayoutContext, MainEditorAreaVisibleContext, HasDockedDetailsContext))
|
|
424
504
|
}
|
|
425
505
|
});
|
|
426
506
|
}
|
|
@@ -430,6 +510,6 @@ let SinglePaneExistingSessionStrategy = class SinglePaneExistingSessionStrategy
|
|
|
430
510
|
});
|
|
431
511
|
}
|
|
432
512
|
};
|
|
433
|
-
|
|
513
|
+
DesktopExistingSessionStrategy = ( __decorate([( __param(3, IAgentWorkbenchLayoutService)), ( __param(4, ISessionsService)), ( __param(5, IEditorService)), ( __param(6, IEditorGroupsService)), ( __param(7, ISessionChangesService))], DesktopExistingSessionStrategy));
|
|
434
514
|
|
|
435
|
-
export {
|
|
515
|
+
export { DesktopExistingSessionStrategy, TOGGLE_DETAILS_COMMAND_ID };
|
|
@@ -1,13 +1,15 @@
|
|
|
1
1
|
import { Event } from "@codingame/monaco-vscode-api/vscode/vs/base/common/event";
|
|
2
2
|
import { Disposable } from "@codingame/monaco-vscode-api/vscode/vs/base/common/lifecycle";
|
|
3
|
-
import { IObservable } from "@codingame/monaco-vscode-api/vscode/vs/base/common/observable";
|
|
3
|
+
import { IObservable, IReader } from "@codingame/monaco-vscode-api/vscode/vs/base/common/observable";
|
|
4
4
|
import { URI } from "@codingame/monaco-vscode-api/vscode/vs/base/common/uri";
|
|
5
|
+
import { IActiveSession } from "@codingame/monaco-vscode-api/vscode/vs/sessions/services/sessions/common/sessionsManagement";
|
|
6
|
+
import { DesktopOwnerCompositionStore } from "./desktopOwnerCompositionStore.js";
|
|
5
7
|
/**
|
|
6
|
-
* Shared controller state that
|
|
7
|
-
* through. Implemented by the
|
|
8
|
+
* Shared controller state that desktop layout strategies read/coordinate
|
|
9
|
+
* through. Implemented by the desktop layout controller; the concrete
|
|
8
10
|
* services each strategy needs are injected into the strategy directly via DI.
|
|
9
11
|
*/
|
|
10
|
-
export interface
|
|
12
|
+
export interface IDesktopLayoutContext {
|
|
11
13
|
/** `> 0` while a session-switch layout restore is in progress. */
|
|
12
14
|
readonly isRestoringSessionLayout: boolean;
|
|
13
15
|
/** Runs `work` while a session-switch layout restore is held. */
|
|
@@ -19,28 +21,35 @@ export interface ISinglePaneLayoutContext {
|
|
|
19
21
|
readonly multipleSessionsVisibleObs: IObservable<boolean>;
|
|
20
22
|
readonly activeSessionResourceObs: IObservable<URI | undefined>;
|
|
21
23
|
hasSavedWorkingSet(sessionResource: URI): boolean;
|
|
24
|
+
completeChangesEditorTransition(): void;
|
|
25
|
+
chatLayoutActive(reader?: IReader): boolean;
|
|
26
|
+
chatLayoutSuspended(reader?: IReader): boolean;
|
|
27
|
+
readonly sharedChatLayout: boolean;
|
|
28
|
+
ownerKeyFor(session: IActiveSession, reader?: IReader): URI | undefined;
|
|
29
|
+
compositionKeyFor(session: IActiveSession, reader?: IReader): URI | undefined;
|
|
30
|
+
readonly compositionStore: DesktopOwnerCompositionStore;
|
|
22
31
|
}
|
|
23
32
|
/**
|
|
24
|
-
* Base class for a
|
|
33
|
+
* Base class for a desktop layout behaviour, owning its own disposables.
|
|
25
34
|
*
|
|
26
35
|
* Exactly two concrete strategies extend this — one per session lifecycle stage:
|
|
27
|
-
* {@link import('./
|
|
28
|
-
* and workspace-less drafts) and {@link import('./
|
|
36
|
+
* {@link import('./desktopDraftSessionStrategy.js').DesktopDraftSessionStrategy} (workspace-backed
|
|
37
|
+
* and workspace-less drafts) and {@link import('./desktopExistingSessionStrategy.js').DesktopExistingSessionStrategy}
|
|
29
38
|
* (a created, workspace-backed session). Each owns the full vertical slice of behaviour for its stage:
|
|
30
39
|
* side-pane visibility, the detail-panel (Changes/Files) mapping, and — for the two workspace
|
|
31
40
|
* stages — the managed docked tabs and detail-only editor-area collapse.
|
|
32
41
|
*
|
|
33
42
|
* Shared mechanics (the managed-tabs reconcile pipeline + editor-area collapse and the Existing
|
|
34
43
|
* Editor-visibility-profile storage) live in non-strategy coordinator classes in this
|
|
35
|
-
* folder — see `
|
|
36
|
-
* `
|
|
44
|
+
* folder — see `desktopDockedTabsCoordinator.ts`, `desktopDetailPanelCoordinator.ts`, and
|
|
45
|
+
* `desktopVisibilityProfileStore.ts`. The shared detail coordinator owns only content selection
|
|
37
46
|
* and context publication; each lifecycle strategy owns Auxiliary Bar visibility. The shared mechanics are owned by
|
|
38
|
-
* {@link import('./
|
|
47
|
+
* {@link import('./desktopExistingSessionStrategy.js').DesktopExistingSessionStrategy}
|
|
39
48
|
* (the docked-tabs coordinator, since its reconcile pipeline is shared across the New→Existing
|
|
40
49
|
* submit transition) or by the controller (the visibility-profile store, since it backs one
|
|
41
50
|
* combined storage blob for both workspace stages).
|
|
42
51
|
*/
|
|
43
|
-
export declare abstract class
|
|
44
|
-
protected readonly _ctx:
|
|
45
|
-
constructor(_ctx:
|
|
52
|
+
export declare abstract class DesktopLayoutStrategy extends Disposable {
|
|
53
|
+
protected readonly _ctx: IDesktopLayoutContext;
|
|
54
|
+
constructor(_ctx: IDesktopLayoutContext);
|
|
46
55
|
}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
|
|
2
2
|
import { Disposable } from '@codingame/monaco-vscode-api/vscode/vs/base/common/lifecycle';
|
|
3
3
|
|
|
4
|
-
class
|
|
4
|
+
class DesktopLayoutStrategy extends Disposable {
|
|
5
5
|
constructor(_ctx) {
|
|
6
6
|
super();
|
|
7
7
|
this._ctx = _ctx;
|
|
8
8
|
}
|
|
9
9
|
}
|
|
10
10
|
|
|
11
|
-
export {
|
|
11
|
+
export { DesktopLayoutStrategy };
|
package/vscode/src/vs/sessions/contrib/layout/browser/desktop/desktopOwnerCompositionStore.d.ts
ADDED
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { URI } from "@codingame/monaco-vscode-api/vscode/vs/base/common/uri";
|
|
2
|
+
import { ILogService } from "@codingame/monaco-vscode-api/vscode/vs/platform/log/common/log.service";
|
|
3
|
+
import { IStorageService } from "@codingame/monaco-vscode-api/vscode/vs/platform/storage/common/storage.service";
|
|
4
|
+
import { ISidePaneState } from "@codingame/monaco-vscode-api/vscode/vs/sessions/browser/workbench";
|
|
5
|
+
export declare class DesktopOwnerCompositionStore {
|
|
6
|
+
private readonly _storageService;
|
|
7
|
+
private readonly _logService;
|
|
8
|
+
private readonly _byOwner;
|
|
9
|
+
private readonly _preHideByOwner;
|
|
10
|
+
constructor(shared: boolean, _storageService: IStorageService, _logService: ILogService);
|
|
11
|
+
private readonly _compositionStorageKey;
|
|
12
|
+
private readonly _preHideStorageKey;
|
|
13
|
+
get ownerKeys(): Iterable<URI>;
|
|
14
|
+
get(ownerKey: URI): ISidePaneState | undefined;
|
|
15
|
+
set(ownerKey: URI, state: ISidePaneState): void;
|
|
16
|
+
getPreHide(ownerKey: URI): ISidePaneState | undefined;
|
|
17
|
+
setPreHide(ownerKey: URI, state: ISidePaneState): void;
|
|
18
|
+
forget(keys: readonly URI[]): void;
|
|
19
|
+
remap(oldKey: URI, newKey: URI): void;
|
|
20
|
+
private _load;
|
|
21
|
+
private _save;
|
|
22
|
+
}
|
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
|
|
2
|
+
import { __decorate, __param } from '@codingame/monaco-vscode-api/external/tslib/tslib.es6';
|
|
3
|
+
import { ResourceMap, ResourceSet } from '@codingame/monaco-vscode-api/vscode/vs/base/common/map';
|
|
4
|
+
import { isEqual } from '@codingame/monaco-vscode-api/vscode/vs/base/common/resources';
|
|
5
|
+
import { URI } from '@codingame/monaco-vscode-api/vscode/vs/base/common/uri';
|
|
6
|
+
import { ILogService } from '@codingame/monaco-vscode-api/vscode/vs/platform/log/common/log.service';
|
|
7
|
+
import { StorageScope, StorageTarget } from '@codingame/monaco-vscode-api/vscode/vs/platform/storage/common/storage';
|
|
8
|
+
import { IStorageService } from '@codingame/monaco-vscode-api/vscode/vs/platform/storage/common/storage.service';
|
|
9
|
+
|
|
10
|
+
const DESKTOP_OWNER_COMPOSITION_STATE_KEY = "sessions.chatLayout.sidePaneComposition";
|
|
11
|
+
const DESKTOP_OWNER_PRE_HIDE_COMPOSITION_STATE_KEY = "sessions.chatLayout.sidePanePreHideComposition";
|
|
12
|
+
const DESKTOP_OWNER_COMPOSITION_SCHEMA_VERSION = 1;
|
|
13
|
+
function isValidDesktopOwnerCompositionEntry(value) {
|
|
14
|
+
if (!Array.isArray(value) || value.length !== 2) {
|
|
15
|
+
return false;
|
|
16
|
+
}
|
|
17
|
+
const [ownerKeyRaw, state] = value;
|
|
18
|
+
if (typeof ownerKeyRaw !== "string") {
|
|
19
|
+
return false;
|
|
20
|
+
}
|
|
21
|
+
if (typeof state !== "object" || state === null) {
|
|
22
|
+
return false;
|
|
23
|
+
}
|
|
24
|
+
const sidePaneState = state;
|
|
25
|
+
return typeof sidePaneState.editor === "boolean" && typeof sidePaneState.auxiliaryBar === "boolean";
|
|
26
|
+
}
|
|
27
|
+
let DesktopOwnerCompositionStore = class DesktopOwnerCompositionStore {
|
|
28
|
+
constructor(shared, _storageService, _logService) {
|
|
29
|
+
this._storageService = _storageService;
|
|
30
|
+
this._logService = _logService;
|
|
31
|
+
this._byOwner = ( new ResourceMap());
|
|
32
|
+
this._preHideByOwner = ( new ResourceMap());
|
|
33
|
+
this._compositionStorageKey = shared ? "sessions.sharedChatLayout.sidePaneComposition" : DESKTOP_OWNER_COMPOSITION_STATE_KEY;
|
|
34
|
+
this._preHideStorageKey = shared ? "sessions.sharedChatLayout.sidePanePreHideComposition" : DESKTOP_OWNER_PRE_HIDE_COMPOSITION_STATE_KEY;
|
|
35
|
+
this._load(this._compositionStorageKey, this._byOwner);
|
|
36
|
+
this._load(this._preHideStorageKey, this._preHideByOwner);
|
|
37
|
+
}
|
|
38
|
+
get ownerKeys() {
|
|
39
|
+
return ( new ResourceSet([...( this._byOwner.keys()), ...( this._preHideByOwner.keys())]));
|
|
40
|
+
}
|
|
41
|
+
get(ownerKey) {
|
|
42
|
+
return this._byOwner.get(ownerKey);
|
|
43
|
+
}
|
|
44
|
+
set(ownerKey, state) {
|
|
45
|
+
this._byOwner.set(ownerKey, state);
|
|
46
|
+
this._save(this._compositionStorageKey, this._byOwner);
|
|
47
|
+
}
|
|
48
|
+
getPreHide(ownerKey) {
|
|
49
|
+
return this._preHideByOwner.get(ownerKey);
|
|
50
|
+
}
|
|
51
|
+
setPreHide(ownerKey, state) {
|
|
52
|
+
this._preHideByOwner.set(ownerKey, state);
|
|
53
|
+
this._save(this._preHideStorageKey, this._preHideByOwner);
|
|
54
|
+
}
|
|
55
|
+
forget(keys) {
|
|
56
|
+
let changed = false;
|
|
57
|
+
for (const key of keys) {
|
|
58
|
+
changed = this._byOwner.delete(key) || changed;
|
|
59
|
+
}
|
|
60
|
+
if (changed) {
|
|
61
|
+
this._save(this._compositionStorageKey, this._byOwner);
|
|
62
|
+
}
|
|
63
|
+
let preHideChanged = false;
|
|
64
|
+
for (const key of keys) {
|
|
65
|
+
preHideChanged = this._preHideByOwner.delete(key) || preHideChanged;
|
|
66
|
+
}
|
|
67
|
+
if (preHideChanged) {
|
|
68
|
+
this._save(this._preHideStorageKey, this._preHideByOwner);
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
remap(oldKey, newKey) {
|
|
72
|
+
if (isEqual(oldKey, newKey)) {
|
|
73
|
+
return;
|
|
74
|
+
}
|
|
75
|
+
const state = this._byOwner.get(oldKey);
|
|
76
|
+
if (state) {
|
|
77
|
+
this._byOwner.set(newKey, state);
|
|
78
|
+
this._byOwner.delete(oldKey);
|
|
79
|
+
this._save(this._compositionStorageKey, this._byOwner);
|
|
80
|
+
}
|
|
81
|
+
const preHideState = this._preHideByOwner.get(oldKey);
|
|
82
|
+
if (preHideState) {
|
|
83
|
+
this._preHideByOwner.set(newKey, preHideState);
|
|
84
|
+
this._preHideByOwner.delete(oldKey);
|
|
85
|
+
this._save(this._preHideStorageKey, this._preHideByOwner);
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
_load(storageKey, target) {
|
|
89
|
+
const raw = this._storageService.get(storageKey, StorageScope.WORKSPACE);
|
|
90
|
+
if (!raw) {
|
|
91
|
+
return;
|
|
92
|
+
}
|
|
93
|
+
try {
|
|
94
|
+
const parsed = JSON.parse(raw);
|
|
95
|
+
if (parsed.version !== DESKTOP_OWNER_COMPOSITION_SCHEMA_VERSION || !Array.isArray(parsed.entries)) {
|
|
96
|
+
throw ( new Error(
|
|
97
|
+
`Unsupported ${storageKey} schema: expected version ${DESKTOP_OWNER_COMPOSITION_SCHEMA_VERSION}, got version ${String(parsed.version)}`
|
|
98
|
+
));
|
|
99
|
+
}
|
|
100
|
+
const staged = ( new ResourceMap());
|
|
101
|
+
parsed.entries.forEach((entry, index) => {
|
|
102
|
+
if (!isValidDesktopOwnerCompositionEntry(entry)) {
|
|
103
|
+
throw ( new Error(`Malformed ${storageKey} entry at index ${index}`));
|
|
104
|
+
}
|
|
105
|
+
const [ownerKeyRaw, state] = entry;
|
|
106
|
+
staged.set(( URI.parse(ownerKeyRaw)), {
|
|
107
|
+
editor: state.editor,
|
|
108
|
+
auxiliaryBar: state.auxiliaryBar
|
|
109
|
+
});
|
|
110
|
+
});
|
|
111
|
+
staged.forEach((state, ownerKey) => target.set(ownerKey, state));
|
|
112
|
+
} catch (error) {
|
|
113
|
+
this._logService.error(error);
|
|
114
|
+
this._storageService.remove(storageKey, StorageScope.WORKSPACE);
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
_save(storageKey, source) {
|
|
118
|
+
const entries = [];
|
|
119
|
+
for (const [ownerKey, state] of source) {
|
|
120
|
+
entries.push([( ownerKey.toString()), state]);
|
|
121
|
+
}
|
|
122
|
+
const schema = {
|
|
123
|
+
version: DESKTOP_OWNER_COMPOSITION_SCHEMA_VERSION,
|
|
124
|
+
entries
|
|
125
|
+
};
|
|
126
|
+
this._storageService.store(
|
|
127
|
+
storageKey,
|
|
128
|
+
JSON.stringify(schema),
|
|
129
|
+
StorageScope.WORKSPACE,
|
|
130
|
+
StorageTarget.MACHINE
|
|
131
|
+
);
|
|
132
|
+
}
|
|
133
|
+
};
|
|
134
|
+
DesktopOwnerCompositionStore = ( __decorate([( __param(1, IStorageService)), ( __param(2, ILogService))], DesktopOwnerCompositionStore));
|
|
135
|
+
|
|
136
|
+
export { DesktopOwnerCompositionStore };
|