@codingame/monaco-vscode-workbench-service-override 37.2.0 → 37.3.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.d.ts +3 -0
- package/common.js +29 -0
- package/index.d.ts +1 -1
- package/index.js +25 -32
- package/package.json +18 -8
- package/session.d.ts +4 -0
- package/session.js +260 -0
- package/vscode/src/vs/platform/agentHost/browser/remoteAgentHostLocationPreferenceService.d.ts +24 -0
- package/vscode/src/vs/platform/agentHost/browser/remoteAgentHostLocationPreferenceService.js +71 -0
- package/vscode/src/vs/platform/agentHost/common/remoteAgentHostLocationPreference.d.ts +7 -0
- package/vscode/src/vs/platform/agentHost/common/remoteAgentHostLocationPreference.js +7 -0
- package/vscode/src/vs/sessions/browser/dockedAuxiliaryBarController.d.ts +50 -0
- package/vscode/src/vs/sessions/browser/dockedAuxiliaryBarController.js +120 -0
- package/vscode/src/vs/sessions/browser/media/sessions-logo-dark.svg +6 -0
- package/vscode/src/vs/sessions/browser/media/sessions-logo-light.svg +6 -0
- package/vscode/src/vs/sessions/browser/media/sessionsSetUp.css +72 -0
- package/vscode/src/vs/sessions/browser/parts/chatCompositeBar.d.ts +116 -0
- package/vscode/src/vs/sessions/browser/parts/chatCompositeBar.js +566 -0
- package/vscode/src/vs/sessions/browser/parts/chatGroupDropTarget.d.ts +43 -0
- package/vscode/src/vs/sessions/browser/parts/chatGroupDropTarget.js +308 -0
- package/vscode/src/vs/sessions/browser/parts/chatGroupView.d.ts +108 -0
- package/vscode/src/vs/sessions/browser/parts/chatGroupView.js +324 -0
- package/vscode/src/vs/sessions/browser/parts/chatGroupsView.d.ts +136 -0
- package/vscode/src/vs/sessions/browser/parts/chatGroupsView.js +771 -0
- package/vscode/src/vs/sessions/browser/parts/customViewGridPart.d.ts +43 -0
- package/vscode/src/vs/sessions/browser/parts/customViewGridPart.js +113 -0
- package/vscode/src/vs/sessions/browser/parts/customViewGridParts.d.ts +17 -0
- package/vscode/src/vs/sessions/browser/parts/customViewGridParts.js +31 -0
- package/vscode/src/vs/sessions/browser/parts/customViewNode.d.ts +24 -0
- package/vscode/src/vs/sessions/browser/parts/customViewNode.js +131 -0
- package/vscode/src/vs/sessions/browser/parts/editorPart.d.ts +11 -0
- package/vscode/src/vs/sessions/browser/parts/editorPart.js +36 -0
- package/vscode/src/vs/sessions/browser/parts/editorParts.d.ts +12 -0
- package/vscode/src/vs/sessions/browser/parts/editorParts.js +45 -0
- package/vscode/src/vs/sessions/browser/parts/media/chatCompositeBar.css +559 -0
- package/vscode/src/vs/sessions/browser/parts/media/chatGroupDropTarget.css +27 -0
- package/vscode/src/vs/sessions/browser/parts/media/chatGroupsView.css +60 -0
- package/vscode/src/vs/sessions/browser/parts/media/customViewGridPart.css +108 -0
- package/vscode/src/vs/sessions/browser/parts/media/editorPart.css +210 -0
- package/vscode/src/vs/sessions/browser/parts/media/remoteHostUnavailableEmptyState.css +81 -0
- package/vscode/src/vs/sessions/browser/parts/media/sessionDropTarget.css +31 -0
- package/vscode/src/vs/sessions/browser/parts/media/sessionReadOnlyBanner.css +87 -0
- package/vscode/src/vs/sessions/browser/parts/media/sessionView.css +107 -0
- package/vscode/src/vs/sessions/browser/parts/media/sessionsPart.css +134 -0
- package/vscode/src/vs/sessions/browser/parts/menubar.contribution.d.ts +1 -0
- package/vscode/src/vs/sessions/browser/parts/menubar.contribution.js +79 -0
- package/vscode/src/vs/sessions/browser/parts/mobile/mobileCustomViewGridPart.d.ts +13 -0
- package/vscode/src/vs/sessions/browser/parts/mobile/mobileCustomViewGridPart.js +33 -0
- package/vscode/src/vs/sessions/browser/parts/mobile/mobileSessionsPart.d.ts +14 -0
- package/vscode/src/vs/sessions/browser/parts/mobile/mobileSessionsPart.js +34 -0
- package/vscode/src/vs/sessions/browser/parts/remoteHostUnavailableEmptyState.d.ts +39 -0
- package/vscode/src/vs/sessions/browser/parts/remoteHostUnavailableEmptyState.js +136 -0
- package/vscode/src/vs/sessions/browser/parts/sessionBarStyles.d.ts +9 -0
- package/vscode/src/vs/sessions/browser/parts/sessionBarStyles.js +62 -0
- package/vscode/src/vs/sessions/browser/parts/sessionDropTarget.d.ts +39 -0
- package/vscode/src/vs/sessions/browser/parts/sessionDropTarget.js +261 -0
- package/vscode/src/vs/sessions/browser/parts/sessionHeader.d.ts +97 -0
- package/vscode/src/vs/sessions/browser/parts/sessionHeader.js +345 -0
- package/vscode/src/vs/sessions/browser/parts/sessionReadOnlyBanner.d.ts +43 -0
- package/vscode/src/vs/sessions/browser/parts/sessionReadOnlyBanner.js +69 -0
- package/vscode/src/vs/sessions/browser/parts/sessionRemoteConnection.d.ts +79 -0
- package/vscode/src/vs/sessions/browser/parts/sessionRemoteConnection.js +363 -0
- package/vscode/src/vs/sessions/browser/parts/sessionView.d.ts +125 -0
- package/vscode/src/vs/sessions/browser/parts/sessionView.js +300 -0
- package/vscode/src/vs/sessions/browser/parts/sessionsPart.d.ts +124 -0
- package/vscode/src/vs/sessions/browser/parts/sessionsPart.js +336 -0
- package/vscode/src/vs/sessions/browser/parts/sessionsParts.d.ts +33 -0
- package/vscode/src/vs/sessions/browser/parts/sessionsParts.js +62 -0
- package/vscode/src/vs/sessions/browser/parts/singlePaneAuxiliaryBarPart.d.ts +13 -0
- package/vscode/src/vs/sessions/browser/parts/singlePaneAuxiliaryBarPart.js +36 -0
- package/vscode/src/vs/sessions/browser/parts/singlePaneEditorPart.d.ts +65 -0
- package/vscode/src/vs/sessions/browser/parts/singlePaneEditorPart.js +178 -0
- package/vscode/src/vs/sessions/browser/sessionWorkspace.d.ts +12 -0
- package/vscode/src/vs/sessions/browser/sessionWorkspace.js +19 -0
- package/vscode/src/vs/sessions/browser/sessionsSetUpService.d.ts +24 -0
- package/vscode/src/vs/sessions/browser/sessionsSetUpService.js +598 -0
- package/vscode/src/vs/sessions/browser/sessionsSignInDialog.d.ts +25 -0
- package/vscode/src/vs/sessions/browser/sessionsSignInDialog.js +91 -0
- package/vscode/src/vs/sessions/common/welcome.d.ts +1 -0
- package/vscode/src/vs/sessions/common/welcome.js +5 -0
- package/vscode/src/vs/sessions/contrib/accountMenu/browser/account.contribution.d.ts +11 -0
- package/vscode/src/vs/sessions/contrib/accountMenu/browser/account.contribution.js +1052 -0
- package/vscode/src/vs/sessions/contrib/accountMenu/browser/chatPetAchievementBadges.d.ts +23 -0
- package/vscode/src/vs/sessions/contrib/accountMenu/browser/chatPetAchievementBadges.js +168 -0
- package/vscode/src/vs/sessions/contrib/accountMenu/browser/media/accountTitleBarWidget.css +646 -0
- package/vscode/src/vs/sessions/contrib/accountMenu/browser/media/accountWidget.css +231 -0
- package/vscode/src/vs/sessions/contrib/accountMenu/browser/media/chatPetAchievementBadges.css +120 -0
- package/vscode/src/vs/sessions/contrib/agentFeedback/browser/nullAgentFeedbackService.contribution.d.ts +53 -0
- package/vscode/src/vs/sessions/contrib/agentFeedback/browser/nullAgentFeedbackService.contribution.js +99 -0
- package/vscode/src/vs/sessions/contrib/aiCustomizationTreeView/browser/aiCustomizationTreeView.contribution.d.ts +1 -0
- package/vscode/src/vs/sessions/contrib/aiCustomizationTreeView/browser/aiCustomizationTreeView.contribution.js +270 -0
- package/vscode/src/vs/sessions/contrib/aiCustomizationTreeView/browser/aiCustomizationTreeViewViews.d.ts +62 -0
- package/vscode/src/vs/sessions/contrib/aiCustomizationTreeView/browser/aiCustomizationTreeViewViews.js +606 -0
- package/vscode/src/vs/sessions/contrib/aiCustomizationTreeView/browser/media/aiCustomizationTreeView.css +116 -0
- package/vscode/src/vs/sessions/contrib/aquarium/browser/aquarium.contribution.d.ts +1 -0
- package/vscode/src/vs/sessions/contrib/aquarium/browser/aquarium.contribution.js +97 -0
- package/vscode/src/vs/sessions/contrib/aquarium/browser/aquariumOverlay.d.ts +72 -0
- package/vscode/src/vs/sessions/contrib/aquarium/browser/aquariumOverlay.js +776 -0
- package/vscode/src/vs/sessions/contrib/aquarium/browser/fish.d.ts +68 -0
- package/vscode/src/vs/sessions/contrib/aquarium/browser/fish.js +153 -0
- package/vscode/src/vs/sessions/contrib/aquarium/browser/fishFeedingStreak.d.ts +58 -0
- package/vscode/src/vs/sessions/contrib/aquarium/browser/fishFeedingStreak.js +172 -0
- package/vscode/src/vs/sessions/contrib/aquarium/browser/media/aquarium.css +316 -0
- package/vscode/src/vs/sessions/contrib/aquarium/browser/vscodeLogoPath.d.ts +1 -0
- package/vscode/src/vs/sessions/contrib/aquarium/browser/vscodeLogoPath.js +5 -0
- package/vscode/src/vs/sessions/contrib/automations/browser/automationDialog.d.ts +173 -0
- package/vscode/src/vs/sessions/contrib/automations/browser/automationDialog.js +1589 -0
- package/vscode/src/vs/sessions/contrib/automations/browser/automationDialogService.d.ts +32 -0
- package/vscode/src/vs/sessions/contrib/automations/browser/automationDialogService.js +396 -0
- package/vscode/src/vs/sessions/contrib/automations/browser/automationInputCompletions.d.ts +33 -0
- package/vscode/src/vs/sessions/contrib/automations/browser/automationInputCompletions.js +216 -0
- package/vscode/src/vs/sessions/contrib/automations/browser/automationLeaderElection.d.ts +37 -0
- package/vscode/src/vs/sessions/contrib/automations/browser/automationLeaderElection.js +126 -0
- package/vscode/src/vs/sessions/contrib/automations/browser/automationRunner.d.ts +21 -0
- package/vscode/src/vs/sessions/contrib/automations/browser/automationRunner.js +294 -0
- package/vscode/src/vs/sessions/contrib/automations/browser/automationScheduler.d.ts +59 -0
- package/vscode/src/vs/sessions/contrib/automations/browser/automationScheduler.js +232 -0
- package/vscode/src/vs/sessions/contrib/automations/browser/automationStorageService.d.ts +13 -0
- package/vscode/src/vs/sessions/contrib/automations/browser/automationStorageService.js +22 -0
- package/vscode/src/vs/sessions/contrib/automations/browser/automationTools.d.ts +60 -0
- package/vscode/src/vs/sessions/contrib/automations/browser/automationTools.js +1256 -0
- package/vscode/src/vs/sessions/contrib/automations/browser/automations.contribution.d.ts +1 -0
- package/vscode/src/vs/sessions/contrib/automations/browser/automations.contribution.js +88 -0
- package/vscode/src/vs/sessions/contrib/automations/browser/media/automationDialog.css +746 -0
- package/vscode/src/vs/sessions/contrib/automations/browser/providerAutomationService.d.ts +62 -0
- package/vscode/src/vs/sessions/contrib/automations/browser/providerAutomationService.js +493 -0
- package/vscode/src/vs/sessions/contrib/automations/common/isolationGroupModel.d.ts +38 -0
- package/vscode/src/vs/sessions/contrib/automations/common/isolationGroupModel.js +123 -0
- package/vscode/src/vs/sessions/contrib/blockedSessions/browser/blockedSessions.d.ts +45 -0
- package/vscode/src/vs/sessions/contrib/blockedSessions/browser/blockedSessions.js +110 -0
- package/vscode/src/vs/sessions/contrib/browserView/browser/sessionBrowserView.contribution.d.ts +1 -0
- package/vscode/src/vs/sessions/contrib/browserView/browser/sessionBrowserView.contribution.js +5 -0
- package/vscode/src/vs/sessions/contrib/browserView/browser/sessionBrowserView.d.ts +31 -0
- package/vscode/src/vs/sessions/contrib/browserView/browser/sessionBrowserView.js +137 -0
- package/vscode/src/vs/sessions/contrib/changes/browser/changes.contribution.d.ts +1 -0
- package/vscode/src/vs/sessions/contrib/changes/browser/changes.contribution.js +130 -0
- package/vscode/src/vs/sessions/contrib/changes/browser/changesActions.d.ts +8 -0
- package/vscode/src/vs/sessions/contrib/changes/browser/changesActions.js +385 -0
- package/vscode/src/vs/sessions/contrib/changes/browser/changesMultiDiffSourceResolver.d.ts +28 -0
- package/vscode/src/vs/sessions/contrib/changes/browser/changesMultiDiffSourceResolver.js +76 -0
- package/vscode/src/vs/sessions/contrib/changes/browser/changesViewActions.d.ts +1 -0
- package/vscode/src/vs/sessions/contrib/changes/browser/changesViewActions.js +509 -0
- package/vscode/src/vs/sessions/contrib/changes/browser/changesetReviewActions.d.ts +6 -0
- package/vscode/src/vs/sessions/contrib/changes/browser/changesetReviewActions.js +58 -0
- package/vscode/src/vs/sessions/contrib/changes/browser/media/changesActions.css +11 -0
- package/vscode/src/vs/sessions/contrib/changes/browser/sessionSyncChanges.d.ts +24 -0
- package/vscode/src/vs/sessions/contrib/changes/browser/sessionSyncChanges.js +188 -0
- package/vscode/src/vs/sessions/contrib/changes/browser/sessionsChangesAccessibilityHelp.d.ts +15 -0
- package/vscode/src/vs/sessions/contrib/changes/browser/sessionsChangesAccessibilityHelp.js +100 -0
- package/vscode/src/vs/sessions/contrib/chat/browser/chatViewStateService.d.ts +9 -0
- package/vscode/src/vs/sessions/contrib/chat/browser/chatViewStateService.js +18 -0
- package/vscode/src/vs/sessions/contrib/chat/browser/media/sessionChatInputToolbarDebug.css +59 -0
- package/vscode/src/vs/sessions/contrib/chat/browser/sessionChatInputToolbarDebug.d.ts +47 -0
- package/vscode/src/vs/sessions/contrib/chat/browser/sessionChatInputToolbarDebug.js +306 -0
- package/vscode/src/vs/sessions/contrib/chat/browser/sessionTaskRunner.d.ts +41 -0
- package/vscode/src/vs/sessions/contrib/chat/browser/sessionTaskRunner.js +31 -0
- package/vscode/src/vs/sessions/contrib/chatDebug/browser/chatDebug.contribution.d.ts +1 -0
- package/vscode/src/vs/sessions/contrib/chatDebug/browser/chatDebug.contribution.js +84 -0
- package/vscode/src/vs/sessions/contrib/customViewTest/browser/customViewTest.contribution.d.ts +1 -0
- package/vscode/src/vs/sessions/contrib/customViewTest/browser/customViewTest.contribution.js +111 -0
- package/vscode/src/vs/sessions/contrib/customViewTest/browser/media/customViewTest.css +9 -0
- package/vscode/src/vs/sessions/contrib/editor/browser/addTabActions.d.ts +21 -0
- package/vscode/src/vs/sessions/contrib/editor/browser/addTabActions.js +170 -0
- package/vscode/src/vs/sessions/contrib/editor/browser/editor.contribution.d.ts +14 -0
- package/vscode/src/vs/sessions/contrib/editor/browser/editor.contribution.js +425 -0
- package/vscode/src/vs/sessions/contrib/editor/browser/emptyFileEditor.contribution.d.ts +1 -0
- package/vscode/src/vs/sessions/contrib/editor/browser/emptyFileEditor.contribution.js +35 -0
- package/vscode/src/vs/sessions/contrib/editor/browser/emptyFileEditor.d.ts +18 -0
- package/vscode/src/vs/sessions/contrib/editor/browser/emptyFileEditor.js +85 -0
- package/vscode/src/vs/sessions/contrib/editor/browser/emptyFileEditorInput.d.ts +31 -0
- package/vscode/src/vs/sessions/contrib/editor/browser/emptyFileEditorInput.js +125 -0
- package/vscode/src/vs/sessions/contrib/editor/browser/media/editorBreadcrumbs.css +66 -0
- package/vscode/src/vs/sessions/contrib/editor/browser/media/editorHeader.css +113 -0
- package/vscode/src/vs/sessions/contrib/editor/browser/media/emptyFileEditor.css +30 -0
- package/vscode/src/vs/sessions/contrib/fileTreeView/browser/fileTreeView.contribution.d.ts +1 -0
- package/vscode/src/vs/sessions/contrib/fileTreeView/browser/fileTreeView.contribution.js +25 -0
- package/vscode/src/vs/sessions/contrib/fileTreeView/browser/githubFileSystemProvider.d.ts +66 -0
- package/vscode/src/vs/sessions/contrib/fileTreeView/browser/githubFileSystemProvider.js +274 -0
- package/vscode/src/vs/sessions/contrib/files/browser/files.contribution.d.ts +6 -0
- package/vscode/src/vs/sessions/contrib/files/browser/files.contribution.js +100 -0
- package/vscode/src/vs/sessions/contrib/files/browser/filesView.d.ts +21 -0
- package/vscode/src/vs/sessions/contrib/files/browser/filesView.js +76 -0
- package/vscode/src/vs/sessions/contrib/files/browser/media/filesView.css +29 -0
- package/vscode/src/vs/sessions/contrib/layout/browser/baseSessionLayoutController.d.ts +211 -0
- package/vscode/src/vs/sessions/contrib/layout/browser/baseSessionLayoutController.js +587 -0
- package/vscode/src/vs/sessions/contrib/layout/browser/desktopSessionLayoutController.d.ts +112 -0
- package/vscode/src/vs/sessions/contrib/layout/browser/desktopSessionLayoutController.js +444 -0
- package/vscode/src/vs/sessions/contrib/layout/browser/mobileSessionLayoutController.d.ts +13 -0
- package/vscode/src/vs/sessions/contrib/layout/browser/mobileSessionLayoutController.js +8 -0
- package/vscode/src/vs/sessions/contrib/layout/browser/sessions.layout.contribution.d.ts +1 -0
- package/vscode/src/vs/sessions/contrib/layout/browser/sessions.layout.contribution.js +68 -0
- package/vscode/src/vs/sessions/contrib/layout/browser/singlePane/singlePaneDetailPanelCoordinator.d.ts +32 -0
- package/vscode/src/vs/sessions/contrib/layout/browser/singlePane/singlePaneDetailPanelCoordinator.js +81 -0
- package/vscode/src/vs/sessions/contrib/layout/browser/singlePane/singlePaneDockedTabsCoordinator.d.ts +111 -0
- package/vscode/src/vs/sessions/contrib/layout/browser/singlePane/singlePaneDockedTabsCoordinator.js +513 -0
- package/vscode/src/vs/sessions/contrib/layout/browser/singlePane/singlePaneDraftSessionStrategy.d.ts +44 -0
- package/vscode/src/vs/sessions/contrib/layout/browser/singlePane/singlePaneDraftSessionStrategy.js +423 -0
- package/vscode/src/vs/sessions/contrib/layout/browser/singlePane/singlePaneExistingSessionStrategy.d.ts +62 -0
- package/vscode/src/vs/sessions/contrib/layout/browser/singlePane/singlePaneExistingSessionStrategy.js +435 -0
- package/vscode/src/vs/sessions/contrib/layout/browser/singlePane/singlePaneLayoutStrategy.d.ts +46 -0
- package/vscode/src/vs/sessions/contrib/layout/browser/singlePane/singlePaneLayoutStrategy.js +11 -0
- package/vscode/src/vs/sessions/contrib/layout/browser/singlePane/singlePaneSharedHelpers.d.ts +11 -0
- package/vscode/src/vs/sessions/contrib/layout/browser/singlePane/singlePaneSharedHelpers.js +43 -0
- package/vscode/src/vs/sessions/contrib/layout/browser/singlePane/singlePaneVisibilityProfileStore.d.ts +21 -0
- package/vscode/src/vs/sessions/contrib/layout/browser/singlePane/singlePaneVisibilityProfileStore.js +77 -0
- package/vscode/src/vs/sessions/contrib/layout/browser/singlePaneLayoutController.d.ts +55 -0
- package/vscode/src/vs/sessions/contrib/layout/browser/singlePaneLayoutController.js +91 -0
- package/vscode/src/vs/sessions/contrib/onboardingTours/browser/agentHostReadinessContext.d.ts +11 -0
- package/vscode/src/vs/sessions/contrib/onboardingTours/browser/agentHostReadinessContext.js +39 -0
- package/vscode/src/vs/sessions/contrib/onboardingTours/browser/newSessionTourContribution.d.ts +1 -0
- package/vscode/src/vs/sessions/contrib/onboardingTours/browser/newSessionTourContribution.js +109 -0
- package/vscode/src/vs/sessions/contrib/onboardingTours/browser/newSessionViewTourContribution.d.ts +1 -0
- package/vscode/src/vs/sessions/contrib/onboardingTours/browser/newSessionViewTourContribution.js +123 -0
- package/vscode/src/vs/sessions/contrib/onboardingTours/browser/newSessionViewTourTrigger.d.ts +24 -0
- package/vscode/src/vs/sessions/contrib/onboardingTours/browser/newSessionViewTourTrigger.js +67 -0
- package/vscode/src/vs/sessions/contrib/onboardingTours/browser/newSessionViewV2TourContribution.d.ts +1 -0
- package/vscode/src/vs/sessions/contrib/onboardingTours/browser/newSessionViewV2TourContribution.js +47 -0
- package/vscode/src/vs/sessions/contrib/onboardingTours/browser/newSessionViewV3Prompt.d.ts +79 -0
- package/vscode/src/vs/sessions/contrib/onboardingTours/browser/newSessionViewV3Prompt.js +1277 -0
- package/vscode/src/vs/sessions/contrib/onboardingTours/browser/newSessionViewV3TourContribution.d.ts +1 -0
- package/vscode/src/vs/sessions/contrib/onboardingTours/browser/newSessionViewV3TourContribution.js +75 -0
- package/vscode/src/vs/sessions/contrib/onboardingTours/browser/tours/newSessionTour.d.ts +34 -0
- package/vscode/src/vs/sessions/contrib/onboardingTours/browser/tours/newSessionTour.js +53 -0
- package/vscode/src/vs/sessions/contrib/onboardingTours/browser/tours/newSessionViewTour.d.ts +40 -0
- package/vscode/src/vs/sessions/contrib/onboardingTours/browser/tours/newSessionViewTour.js +69 -0
- package/vscode/src/vs/sessions/contrib/onboardingTours/browser/tours/newSessionViewTourShared.d.ts +4 -0
- package/vscode/src/vs/sessions/contrib/onboardingTours/browser/tours/newSessionViewTourShared.js +38 -0
- package/vscode/src/vs/sessions/contrib/onboardingTours/browser/tours/newSessionViewV2Tour.d.ts +6 -0
- package/vscode/src/vs/sessions/contrib/onboardingTours/browser/tours/newSessionViewV2Tour.js +63 -0
- package/vscode/src/vs/sessions/contrib/onboardingTours/browser/tours/newSessionViewV3Tour.d.ts +15 -0
- package/vscode/src/vs/sessions/contrib/onboardingTours/browser/tours/newSessionViewV3Tour.js +49 -0
- package/vscode/src/vs/sessions/contrib/policyBlocked/browser/media/sessionsPolicyBlocked.css +125 -0
- package/vscode/src/vs/sessions/contrib/policyBlocked/browser/policyBlocked.contribution.d.ts +20 -0
- package/vscode/src/vs/sessions/contrib/policyBlocked/browser/policyBlocked.contribution.js +98 -0
- package/vscode/src/vs/sessions/contrib/policyBlocked/browser/sessionsPolicyBlocked.d.ts +39 -0
- package/vscode/src/vs/sessions/contrib/policyBlocked/browser/sessionsPolicyBlocked.js +218 -0
- package/vscode/src/vs/sessions/contrib/providers/remoteAgentHost/browser/devContainerAgentHostService.d.ts +53 -0
- package/vscode/src/vs/sessions/contrib/providers/remoteAgentHost/browser/devContainerAgentHostService.js +496 -0
- package/vscode/src/vs/sessions/contrib/providers/remoteAgentHost/browser/remoteAgentHostConnectionCustomization.d.ts +27 -0
- package/vscode/src/vs/sessions/contrib/providers/remoteAgentHost/browser/remoteAgentHostConnectionCustomization.js +26 -0
- package/vscode/src/vs/sessions/contrib/search/browser/media/searchEditorEmptyState.css +15 -0
- package/vscode/src/vs/sessions/contrib/search/browser/search.contribution.d.ts +1 -0
- package/vscode/src/vs/sessions/contrib/search/browser/search.contribution.js +79 -0
- package/vscode/src/vs/sessions/contrib/search/browser/searchEditorEmptyState.contribution.d.ts +7 -0
- package/vscode/src/vs/sessions/contrib/search/browser/searchEditorEmptyState.contribution.js +57 -0
- package/vscode/src/vs/sessions/contrib/sessions/browser/blockedSessionsCIFixModel.d.ts +39 -0
- package/vscode/src/vs/sessions/contrib/sessions/browser/blockedSessionsCIFixModel.js +155 -0
- package/vscode/src/vs/sessions/contrib/sessions/browser/blockedSessionsIndicatorModel.d.ts +117 -0
- package/vscode/src/vs/sessions/contrib/sessions/browser/blockedSessionsIndicatorModel.js +320 -0
- package/vscode/src/vs/sessions/contrib/sessions/browser/blockedSessionsList.d.ts +65 -0
- package/vscode/src/vs/sessions/contrib/sessions/browser/blockedSessionsList.js +129 -0
- package/vscode/src/vs/sessions/contrib/sessions/browser/media/automationsCards.css +624 -0
- package/vscode/src/vs/sessions/contrib/sessions/browser/media/blockedSessionsList.css +111 -0
- package/vscode/src/vs/sessions/contrib/sessions/browser/media/newSessionActionViewItem.css +112 -0
- package/vscode/src/vs/sessions/contrib/sessions/browser/media/sessionsTitleBarWidget.css +159 -0
- package/vscode/src/vs/sessions/contrib/sessions/browser/sessionActionFeedback.d.ts +26 -0
- package/vscode/src/vs/sessions/contrib/sessions/browser/sessionActionFeedback.js +26 -0
- package/vscode/src/vs/sessions/contrib/sessions/browser/sessionDetailsAction.d.ts +2 -0
- package/vscode/src/vs/sessions/contrib/sessions/browser/sessionDetailsAction.js +77 -0
- package/vscode/src/vs/sessions/contrib/sessions/browser/sessions.contribution.d.ts +1 -0
- package/vscode/src/vs/sessions/contrib/sessions/browser/sessions.contribution.js +162 -0
- package/vscode/src/vs/sessions/contrib/sessions/browser/sessionsActions.d.ts +111 -0
- package/vscode/src/vs/sessions/contrib/sessions/browser/sessionsActions.js +1550 -0
- package/vscode/src/vs/sessions/contrib/sessions/browser/sessionsMouseNavigation.d.ts +13 -0
- package/vscode/src/vs/sessions/contrib/sessions/browser/sessionsMouseNavigation.js +69 -0
- package/vscode/src/vs/sessions/contrib/sessions/browser/sessionsPicker.d.ts +10 -0
- package/vscode/src/vs/sessions/contrib/sessions/browser/sessionsPicker.js +33 -0
- package/vscode/src/vs/sessions/contrib/sessions/browser/sessionsTelemetry.contribution.d.ts +126 -0
- package/vscode/src/vs/sessions/contrib/sessions/browser/sessionsTelemetry.contribution.js +724 -0
- package/vscode/src/vs/sessions/contrib/sessions/browser/sessionsTitleBarWidget.d.ts +150 -0
- package/vscode/src/vs/sessions/contrib/sessions/browser/sessionsTitleBarWidget.js +526 -0
- package/vscode/src/vs/sessions/contrib/sessions/browser/sessionsTypedCharactersTracker.d.ts +64 -0
- package/vscode/src/vs/sessions/contrib/sessions/browser/sessionsTypedCharactersTracker.js +99 -0
- package/vscode/src/vs/sessions/contrib/sessions/browser/sessionsWindowNotifier.d.ts +37 -0
- package/vscode/src/vs/sessions/contrib/sessions/browser/sessionsWindowNotifier.js +160 -0
- package/vscode/src/vs/sessions/contrib/sessions/browser/views/automationTemplates.d.ts +19 -0
- package/vscode/src/vs/sessions/contrib/sessions/browser/views/automationTemplates.js +74 -0
- package/vscode/src/vs/sessions/contrib/sessions/browser/views/automationsAccessibility.d.ts +4 -0
- package/vscode/src/vs/sessions/contrib/sessions/browser/views/automationsAccessibility.js +228 -0
- package/vscode/src/vs/sessions/contrib/sessions/browser/views/automationsView.d.ts +53 -0
- package/vscode/src/vs/sessions/contrib/sessions/browser/views/automationsView.js +2143 -0
- package/vscode/src/vs/sessions/contrib/sessions/browser/views/sessionsViewActions.d.ts +12 -0
- package/vscode/src/vs/sessions/contrib/sessions/browser/views/sessionsViewActions.js +1270 -0
- package/vscode/src/vs/sessions/contrib/workspace/browser/workspace.contribution.d.ts +1 -0
- package/vscode/src/vs/sessions/contrib/workspace/browser/workspace.contribution.js +5 -0
- package/vscode/src/vs/sessions/contrib/workspace/browser/workspaceFolderManagement.d.ts +28 -0
- package/vscode/src/vs/sessions/contrib/workspace/browser/workspaceFolderManagement.js +95 -0
- package/vscode/src/vs/sessions/services/agentHostFilter/browser/agentHostFilterService.d.ts +79 -0
- package/vscode/src/vs/sessions/services/agentHostFilter/browser/agentHostFilterService.js +259 -0
- package/vscode/src/vs/sessions/services/customView/browser/customView.d.ts +42 -0
- package/vscode/src/vs/sessions/services/customView/browser/customView.js +15 -0
- package/vscode/src/vs/sessions/services/customView/browser/customViewService.d.ts +21 -0
- package/vscode/src/vs/sessions/services/customView/browser/customViewService.js +68 -0
- package/vscode/src/vs/sessions/services/sessions/browser/closedItemHistory.d.ts +72 -0
- package/vscode/src/vs/sessions/services/sessions/browser/closedItemHistory.js +115 -0
- package/vscode/src/vs/sessions/services/sessions/browser/sessionGroupsService.d.ts +77 -0
- package/vscode/src/vs/sessions/services/sessions/browser/sessionGroupsService.js +330 -0
- package/vscode/src/vs/sessions/services/sessions/browser/sessionNavigation.d.ts +67 -0
- package/vscode/src/vs/sessions/services/sessions/browser/sessionNavigation.js +157 -0
- package/vscode/src/vs/sessions/services/sessions/browser/sessionOpenTelemetryService.d.ts +32 -0
- package/vscode/src/vs/sessions/services/sessions/browser/sessionOpenTelemetryService.js +162 -0
- package/vscode/src/vs/sessions/services/sessions/browser/sessionSectionOrderService.d.ts +40 -0
- package/vscode/src/vs/sessions/services/sessions/browser/sessionSectionOrderService.js +170 -0
- package/vscode/src/vs/sessions/services/sessions/browser/sessionsListModelService.d.ts +63 -0
- package/vscode/src/vs/sessions/services/sessions/browser/sessionsListModelService.js +419 -0
- package/vscode/src/vs/sessions/services/sessions/browser/sessionsManagementService.d.ts +229 -0
- package/vscode/src/vs/sessions/services/sessions/browser/sessionsManagementService.js +1212 -0
- package/vscode/src/vs/sessions/services/sessions/browser/sessionsProvidersService.d.ts +22 -0
- package/vscode/src/vs/sessions/services/sessions/browser/sessionsProvidersService.js +42 -0
- package/vscode/src/vs/sessions/services/sessions/browser/sessionsRecencyHistory.d.ts +43 -0
- package/vscode/src/vs/sessions/services/sessions/browser/sessionsRecencyHistory.js +103 -0
- package/vscode/src/vs/sessions/services/sessions/browser/sessionsService.d.ts +243 -0
- package/vscode/src/vs/sessions/services/sessions/browser/sessionsService.js +1121 -0
- package/vscode/src/vs/sessions/services/sessions/browser/sessionsWindowUsageService.d.ts +8 -0
- package/vscode/src/vs/sessions/services/sessions/browser/sessionsWindowUsageService.js +24 -0
- package/vscode/src/vs/sessions/services/sessions/browser/visibleSessions.d.ts +321 -0
- package/vscode/src/vs/sessions/services/sessions/browser/visibleSessions.js +729 -0
- package/vscode/src/vs/sessions/services/sessions/browser/worktreeTrust.d.ts +23 -0
- package/vscode/src/vs/sessions/services/sessions/browser/worktreeTrust.js +23 -0
- package/vscode/src/vs/sessions/services/sessions/common/sessionContextKeys.d.ts +32 -0
- package/vscode/src/vs/sessions/services/sessions/common/sessionContextKeys.js +103 -0
- package/vscode/src/vs/sessions/services/workspaceFolderLabel/browser/workspaceFolderLabelService.d.ts +16 -0
- package/vscode/src/vs/sessions/services/workspaceFolderLabel/browser/workspaceFolderLabelService.js +41 -0
- package/vscode/src/vs/workbench/browser/layout.js +7 -7
- package/vscode/src/vs/workbench/browser/workbench.js +3 -3
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import { Disposable } from "@codingame/monaco-vscode-api/vscode/vs/base/common/lifecycle";
|
|
2
|
+
import { URI } from "@codingame/monaco-vscode-api/vscode/vs/base/common/uri";
|
|
3
|
+
import { IContextKeyService } from "@codingame/monaco-vscode-api/vscode/vs/platform/contextkey/common/contextkey.service";
|
|
4
|
+
import { ISession } from "@codingame/monaco-vscode-api/vscode/vs/sessions/services/sessions/common/session";
|
|
5
|
+
import { ISessionsManagementService } from "@codingame/monaco-vscode-api/vscode/vs/sessions/services/sessions/common/sessionsManagement.service";
|
|
6
|
+
import { ISessionsPartService } from "@codingame/monaco-vscode-api/vscode/vs/sessions/services/sessions/browser/sessionsPartService.service";
|
|
7
|
+
import { VisibleSessions } from "./visibleSessions.js";
|
|
8
|
+
export declare enum ClosedItemKind {
|
|
9
|
+
Chat = "chat",
|
|
10
|
+
Session = "session"
|
|
11
|
+
}
|
|
12
|
+
/** A chat tab that was closed (hidden) within a session. */
|
|
13
|
+
export interface IClosedChatItem {
|
|
14
|
+
readonly kind: ClosedItemKind.Chat;
|
|
15
|
+
readonly session: ISession;
|
|
16
|
+
readonly chatResource: URI;
|
|
17
|
+
}
|
|
18
|
+
/** A session slot that left the sessions grid. */
|
|
19
|
+
export interface IClosedSessionItem {
|
|
20
|
+
readonly kind: ClosedItemKind.Session;
|
|
21
|
+
readonly session: ISession;
|
|
22
|
+
/** Grid index the slot occupied when the session left the grid. */
|
|
23
|
+
readonly index: number;
|
|
24
|
+
readonly sticky: boolean;
|
|
25
|
+
/**
|
|
26
|
+
* Set when the session left the grid because a newly opened slot took its
|
|
27
|
+
* place, holding the id of that slot (`undefined` for the empty
|
|
28
|
+
* new-session slot). Absent when the user closed the slot explicitly.
|
|
29
|
+
*/
|
|
30
|
+
readonly replacedBy?: {
|
|
31
|
+
readonly sessionId: string | undefined;
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
export type ClosedItem = IClosedChatItem | IClosedSessionItem;
|
|
35
|
+
/**
|
|
36
|
+
* Remembers the single most recently closed chat or session and reopens it
|
|
37
|
+
* (`Ctrl/Cmd+Shift+T`). Deliberately holds one entry only: reopening consumes
|
|
38
|
+
* it, so pressing the chord repeatedly cannot walk further back through
|
|
39
|
+
* history. In-memory only — a window reload starts empty.
|
|
40
|
+
*/
|
|
41
|
+
export declare class ClosedItemHistory extends Disposable {
|
|
42
|
+
private readonly _visibility;
|
|
43
|
+
private readonly _openChat;
|
|
44
|
+
private readonly _sessionsManagementService;
|
|
45
|
+
private readonly _sessionsPartService;
|
|
46
|
+
private readonly _item;
|
|
47
|
+
private _suspendDepth;
|
|
48
|
+
constructor(_visibility: VisibleSessions, _openChat: (session: ISession, chatResource: URI) => Promise<void>, _sessionsManagementService: ISessionsManagementService, _sessionsPartService: ISessionsPartService, contextKeyService: IContextKeyService);
|
|
49
|
+
/** Remember a chat that was hidden from its session's tab strip. */
|
|
50
|
+
recordClosedChat(session: ISession, chatResource: URI): void;
|
|
51
|
+
/**
|
|
52
|
+
* Remember a session the user closed, together with the grid slot it holds
|
|
53
|
+
* right now, so it can return to exactly that position. Must be called
|
|
54
|
+
* before the session leaves the grid; a session that is not visible is
|
|
55
|
+
* ignored.
|
|
56
|
+
*/
|
|
57
|
+
recordClosedSession(session: ISession): void;
|
|
58
|
+
/**
|
|
59
|
+
* Remember a session that lost its grid slot to a newly opened one, so it
|
|
60
|
+
* can take that slot back.
|
|
61
|
+
*/
|
|
62
|
+
recordReplacedSlot(replaced: ISession, index: number, sticky: boolean, replacedBySessionId: string | undefined): void;
|
|
63
|
+
/**
|
|
64
|
+
* Reopen the remembered chat or session and focus it, consuming the entry.
|
|
65
|
+
* No-op when nothing is remembered or the session is gone.
|
|
66
|
+
*/
|
|
67
|
+
reopenLast(): Promise<void>;
|
|
68
|
+
private _reopenSession;
|
|
69
|
+
private _recordSession;
|
|
70
|
+
private _record;
|
|
71
|
+
private _suspend;
|
|
72
|
+
}
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
|
|
2
|
+
import { __decorate, __param } from '@codingame/monaco-vscode-api/external/tslib/tslib.es6';
|
|
3
|
+
import { Disposable, toDisposable } from '@codingame/monaco-vscode-api/vscode/vs/base/common/lifecycle';
|
|
4
|
+
import '@codingame/monaco-vscode-api/vscode/vs/base/common/observableInternal/index';
|
|
5
|
+
import { IContextKeyService } from '@codingame/monaco-vscode-api/vscode/vs/platform/contextkey/common/contextkey.service';
|
|
6
|
+
import { SessionsHasClosedItemContext } from '@codingame/monaco-vscode-api/vscode/vs/sessions/common/contextkeys';
|
|
7
|
+
import { SessionStatus } from '@codingame/monaco-vscode-api/vscode/vs/sessions/services/sessions/common/session';
|
|
8
|
+
import { ISessionsManagementService } from '@codingame/monaco-vscode-api/vscode/vs/sessions/services/sessions/common/sessionsManagement.service';
|
|
9
|
+
import { ISessionsPartService } from '@codingame/monaco-vscode-api/vscode/vs/sessions/services/sessions/browser/sessionsPartService.service';
|
|
10
|
+
import { observableValue } from '@codingame/monaco-vscode-api/vscode/vs/base/common/observableInternal/observables/observableValue';
|
|
11
|
+
import { autorun } from '@codingame/monaco-vscode-api/vscode/vs/base/common/observableInternal/reactions/autorun';
|
|
12
|
+
|
|
13
|
+
var ClosedItemKind;
|
|
14
|
+
(function(ClosedItemKind) {
|
|
15
|
+
ClosedItemKind["Chat"] = "chat";
|
|
16
|
+
ClosedItemKind["Session"] = "session";
|
|
17
|
+
})(ClosedItemKind || (ClosedItemKind = {}));
|
|
18
|
+
let ClosedItemHistory = class ClosedItemHistory extends Disposable {
|
|
19
|
+
constructor(
|
|
20
|
+
_visibility,
|
|
21
|
+
_openChat,
|
|
22
|
+
_sessionsManagementService,
|
|
23
|
+
_sessionsPartService,
|
|
24
|
+
contextKeyService
|
|
25
|
+
) {
|
|
26
|
+
super();
|
|
27
|
+
this._visibility = _visibility;
|
|
28
|
+
this._openChat = _openChat;
|
|
29
|
+
this._sessionsManagementService = _sessionsManagementService;
|
|
30
|
+
this._sessionsPartService = _sessionsPartService;
|
|
31
|
+
this._item = observableValue(this, undefined);
|
|
32
|
+
this._suspendDepth = 0;
|
|
33
|
+
const hasClosedItem = SessionsHasClosedItemContext.bindTo(contextKeyService);
|
|
34
|
+
this._register(
|
|
35
|
+
autorun(reader => hasClosedItem.set(this._item.read(reader) !== undefined))
|
|
36
|
+
);
|
|
37
|
+
this._register(this._sessionsManagementService.onDidDeleteSession(session => {
|
|
38
|
+
if (this._item.get()?.session.sessionId === session.sessionId) {
|
|
39
|
+
this._item.set(undefined, undefined);
|
|
40
|
+
}
|
|
41
|
+
}));
|
|
42
|
+
}
|
|
43
|
+
recordClosedChat(session, chatResource) {
|
|
44
|
+
this._record({
|
|
45
|
+
kind: ClosedItemKind.Chat,
|
|
46
|
+
session,
|
|
47
|
+
chatResource
|
|
48
|
+
});
|
|
49
|
+
}
|
|
50
|
+
recordClosedSession(session) {
|
|
51
|
+
const slot = this._visibility.getSlot(session.sessionId);
|
|
52
|
+
if (slot) {
|
|
53
|
+
this._recordSession(session, slot.index, slot.sticky);
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
recordReplacedSlot(replaced, index, sticky, replacedBySessionId) {
|
|
57
|
+
this._recordSession(replaced, index, sticky, {
|
|
58
|
+
sessionId: replacedBySessionId
|
|
59
|
+
});
|
|
60
|
+
}
|
|
61
|
+
async reopenLast() {
|
|
62
|
+
const item = this._item.get();
|
|
63
|
+
if (!item) {
|
|
64
|
+
return;
|
|
65
|
+
}
|
|
66
|
+
this._item.set(undefined, undefined);
|
|
67
|
+
const session = this._sessionsManagementService.getSessions().find(s => s.sessionId === item.session.sessionId);
|
|
68
|
+
if (!session) {
|
|
69
|
+
return;
|
|
70
|
+
}
|
|
71
|
+
const suspension = this._suspend();
|
|
72
|
+
try {
|
|
73
|
+
if (item.kind === ClosedItemKind.Chat) {
|
|
74
|
+
await this._openChat(session, item.chatResource);
|
|
75
|
+
} else {
|
|
76
|
+
this._reopenSession(item, session);
|
|
77
|
+
}
|
|
78
|
+
} finally {
|
|
79
|
+
suspension.dispose();
|
|
80
|
+
}
|
|
81
|
+
this._sessionsPartService.focusSession(this._visibility.activeSession.get());
|
|
82
|
+
}
|
|
83
|
+
_reopenSession(item, session) {
|
|
84
|
+
if (item.replacedBy && this._visibility.getSlot(item.replacedBy.sessionId)) {
|
|
85
|
+
this._sessionsManagementService.discardNewSession(this._visibility.getSession(item.replacedBy.sessionId));
|
|
86
|
+
if (this._visibility.replaceSlot(item.replacedBy.sessionId, session, item.sticky)) {
|
|
87
|
+
return;
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
this._visibility.insertAtIndex(session, item.index, item.sticky);
|
|
91
|
+
}
|
|
92
|
+
_recordSession(session, index, sticky, replacedBy) {
|
|
93
|
+
if (session.status.get() !== SessionStatus.Untitled) {
|
|
94
|
+
this._record({
|
|
95
|
+
kind: ClosedItemKind.Session,
|
|
96
|
+
session,
|
|
97
|
+
index,
|
|
98
|
+
sticky,
|
|
99
|
+
replacedBy
|
|
100
|
+
});
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
_record(item) {
|
|
104
|
+
if (this._suspendDepth === 0) {
|
|
105
|
+
this._item.set(item, undefined);
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
_suspend() {
|
|
109
|
+
this._suspendDepth++;
|
|
110
|
+
return toDisposable(() => this._suspendDepth--);
|
|
111
|
+
}
|
|
112
|
+
};
|
|
113
|
+
ClosedItemHistory = ( __decorate([( __param(2, ISessionsManagementService)), ( __param(3, ISessionsPartService)), ( __param(4, IContextKeyService))], ClosedItemHistory));
|
|
114
|
+
|
|
115
|
+
export { ClosedItemHistory, ClosedItemKind };
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
import { Event } from "@codingame/monaco-vscode-api/vscode/vs/base/common/event";
|
|
2
|
+
import { Disposable } from "@codingame/monaco-vscode-api/vscode/vs/base/common/lifecycle";
|
|
3
|
+
import { IStorageService } from "@codingame/monaco-vscode-api/vscode/vs/platform/storage/common/storage.service";
|
|
4
|
+
import { ISessionsManagementService } from "@codingame/monaco-vscode-api/vscode/vs/sessions/services/sessions/common/sessionsManagement.service";
|
|
5
|
+
import { ISessionGroupsService } from "@codingame/monaco-vscode-api/vscode/vs/sessions/services/sessions/browser/sessionGroupsService.service";
|
|
6
|
+
/**
|
|
7
|
+
* A user-created group of sessions in the sessions list. Groups render like
|
|
8
|
+
* section headers and can be reordered, renamed and deleted. Their order is
|
|
9
|
+
* owned by the section-order service and is fully user-managed; this type only
|
|
10
|
+
* carries identity, name and creation time. Membership of a session in a group
|
|
11
|
+
* is tracked separately (see {@link ISessionGroupsService}).
|
|
12
|
+
*/
|
|
13
|
+
export interface ISessionGroup {
|
|
14
|
+
/** Stable identifier (uuid). */
|
|
15
|
+
readonly id: string;
|
|
16
|
+
/** User-provided display name. */
|
|
17
|
+
readonly name: string;
|
|
18
|
+
/** Creation timestamp (ms). Used as the default order (newest first). */
|
|
19
|
+
readonly createdAt: number;
|
|
20
|
+
}
|
|
21
|
+
export interface ISessionGroupsChangeEvent {
|
|
22
|
+
/** Groups added, removed, renamed or reordered. */
|
|
23
|
+
readonly groupsChanged: boolean;
|
|
24
|
+
/** Session ids whose group membership changed. */
|
|
25
|
+
readonly membershipChanged: ReadonlySet<string>;
|
|
26
|
+
}
|
|
27
|
+
export declare class SessionGroupsService extends Disposable implements ISessionGroupsService {
|
|
28
|
+
private readonly storageService;
|
|
29
|
+
private readonly sessionsManagementService;
|
|
30
|
+
readonly _serviceBrand: undefined;
|
|
31
|
+
private static readonly STORAGE_KEY;
|
|
32
|
+
private readonly _onDidChange;
|
|
33
|
+
readonly onDidChange: Event<ISessionGroupsChangeEvent>;
|
|
34
|
+
private readonly _groups;
|
|
35
|
+
/** sessionId -> groupId */
|
|
36
|
+
private readonly _membership;
|
|
37
|
+
private readonly _explicitlyUngroupedSessionIds;
|
|
38
|
+
/**
|
|
39
|
+
* Group that the composer's in-progress new session should join once sent,
|
|
40
|
+
* or `undefined` when there is no pending intent. Set via
|
|
41
|
+
* {@link setPendingNewSessionGroup} when the user picks "New Session" on a
|
|
42
|
+
* group header, locked onto a specific draft when that draft is sent, and
|
|
43
|
+
* cleared if the new session is abandoned.
|
|
44
|
+
*/
|
|
45
|
+
private _pendingNewSessionGroupId;
|
|
46
|
+
/**
|
|
47
|
+
* Sends in flight: draft (or, after graduation, committed) sessionId ->
|
|
48
|
+
* groupId. A grouped send is locked here the moment it is dispatched, so a
|
|
49
|
+
* later intent or a failed/concurrent send can never rebind it. Consumed
|
|
50
|
+
* when the session is started.
|
|
51
|
+
*/
|
|
52
|
+
private readonly _inFlightSessionGroups;
|
|
53
|
+
constructor(storageService: IStorageService, sessionsManagementService: ISessionsManagementService);
|
|
54
|
+
/** Fills missing custom-group membership from creation provenance; explicit membership or ungrouping remains authoritative. */
|
|
55
|
+
private updateDefaultPlacement;
|
|
56
|
+
getGroups(): ISessionGroup[];
|
|
57
|
+
getGroup(groupId: string): ISessionGroup | undefined;
|
|
58
|
+
createGroup(name: string, memberSessionIds?: Iterable<string>): ISessionGroup;
|
|
59
|
+
renameGroup(groupId: string, name: string): void;
|
|
60
|
+
deleteGroup(groupId: string): void;
|
|
61
|
+
addToGroup(sessionIdOrIds: string | Iterable<string>, groupId: string): void;
|
|
62
|
+
removeFromGroup(sessionId: string): void;
|
|
63
|
+
getGroupOfSession(sessionId: string): string | undefined;
|
|
64
|
+
getSessionIdsInGroup(groupId: string): string[];
|
|
65
|
+
setPendingNewSessionGroup(groupId: string): void;
|
|
66
|
+
private setMembership;
|
|
67
|
+
private markExplicitlyUngrouped;
|
|
68
|
+
private removeArchivedMembership;
|
|
69
|
+
/**
|
|
70
|
+
* Sort groups for display as a stable baseline: newest first (by creation
|
|
71
|
+
* time). The final user-managed order is applied by the section-order
|
|
72
|
+
* service; this baseline is used where that order is not available.
|
|
73
|
+
*/
|
|
74
|
+
private sortGroups;
|
|
75
|
+
private load;
|
|
76
|
+
private save;
|
|
77
|
+
}
|
|
@@ -0,0 +1,330 @@
|
|
|
1
|
+
|
|
2
|
+
import { __decorate, __param } from '@codingame/monaco-vscode-api/external/tslib/tslib.es6';
|
|
3
|
+
import { Emitter } from '@codingame/monaco-vscode-api/vscode/vs/base/common/event';
|
|
4
|
+
import { Disposable } from '@codingame/monaco-vscode-api/vscode/vs/base/common/lifecycle';
|
|
5
|
+
import { generateUuid } from '@codingame/monaco-vscode-api/vscode/vs/base/common/uuid';
|
|
6
|
+
import '@codingame/monaco-vscode-api/vscode/vs/platform/instantiation/common/extensions';
|
|
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
|
+
import { ISessionsManagementService } from '@codingame/monaco-vscode-api/vscode/vs/sessions/services/sessions/common/sessionsManagement.service';
|
|
10
|
+
import '@codingame/monaco-vscode-api/vscode/vs/platform/instantiation/common/instantiation';
|
|
11
|
+
|
|
12
|
+
var SessionGroupsService_1;
|
|
13
|
+
const EXPLICITLY_UNGROUPED_FIELD = "explicitlyUngroupedSessionIds";
|
|
14
|
+
let SessionGroupsService = class SessionGroupsService extends Disposable {
|
|
15
|
+
static {
|
|
16
|
+
SessionGroupsService_1 = this;
|
|
17
|
+
}
|
|
18
|
+
static {
|
|
19
|
+
this.STORAGE_KEY = "sessionsListControl.groups";
|
|
20
|
+
}
|
|
21
|
+
constructor(storageService, sessionsManagementService) {
|
|
22
|
+
super();
|
|
23
|
+
this.storageService = storageService;
|
|
24
|
+
this.sessionsManagementService = sessionsManagementService;
|
|
25
|
+
this._onDidChange = this._register(( new Emitter()));
|
|
26
|
+
this.onDidChange = this._onDidChange.event;
|
|
27
|
+
this._groups = ( new Map());
|
|
28
|
+
this._membership = ( new Map());
|
|
29
|
+
this._explicitlyUngroupedSessionIds = ( new Set());
|
|
30
|
+
this._inFlightSessionGroups = ( new Map());
|
|
31
|
+
this.load();
|
|
32
|
+
const archivedMembershipChanged = ( new Set());
|
|
33
|
+
const archivedStateChanged = this.removeArchivedMembership(this.sessionsManagementService.getSessions(), archivedMembershipChanged);
|
|
34
|
+
this.updateDefaultPlacement(this.sessionsManagementService.getSessions(), archivedMembershipChanged);
|
|
35
|
+
if (archivedStateChanged || archivedMembershipChanged.size > 0) {
|
|
36
|
+
this.save();
|
|
37
|
+
}
|
|
38
|
+
this._register(this.sessionsManagementService.onDidChangeSessions(e => {
|
|
39
|
+
for (const session of e.removed) {
|
|
40
|
+
this._inFlightSessionGroups.delete(session.sessionId);
|
|
41
|
+
}
|
|
42
|
+
const changed = ( new Set());
|
|
43
|
+
const archivedStateChanged = this.removeArchivedMembership([...e.added, ...e.changed], changed);
|
|
44
|
+
this.updateDefaultPlacement(this.sessionsManagementService.getSessions(), changed);
|
|
45
|
+
if (archivedStateChanged || changed.size > 0) {
|
|
46
|
+
this.save();
|
|
47
|
+
}
|
|
48
|
+
if (changed.size > 0) {
|
|
49
|
+
this._onDidChange.fire({
|
|
50
|
+
groupsChanged: false,
|
|
51
|
+
membershipChanged: changed
|
|
52
|
+
});
|
|
53
|
+
}
|
|
54
|
+
}));
|
|
55
|
+
this._register(this.sessionsManagementService.onDidDeleteSession(session => {
|
|
56
|
+
const membershipDeleted = this._membership.delete(session.sessionId);
|
|
57
|
+
const ungroupedDeleted = this._explicitlyUngroupedSessionIds.delete(session.sessionId);
|
|
58
|
+
if (membershipDeleted || ungroupedDeleted) {
|
|
59
|
+
this.save();
|
|
60
|
+
}
|
|
61
|
+
if (membershipDeleted) {
|
|
62
|
+
this._onDidChange.fire({
|
|
63
|
+
groupsChanged: false,
|
|
64
|
+
membershipChanged: ( new Set([session.sessionId]))
|
|
65
|
+
});
|
|
66
|
+
}
|
|
67
|
+
}));
|
|
68
|
+
this._register(this.sessionsManagementService.onDidArchiveSession(session => {
|
|
69
|
+
const membershipDeleted = this._membership.delete(session.sessionId);
|
|
70
|
+
const ungroupedAdded = this.markExplicitlyUngrouped(session.sessionId);
|
|
71
|
+
if (membershipDeleted || ungroupedAdded) {
|
|
72
|
+
this.save();
|
|
73
|
+
}
|
|
74
|
+
if (membershipDeleted) {
|
|
75
|
+
this._onDidChange.fire({
|
|
76
|
+
groupsChanged: false,
|
|
77
|
+
membershipChanged: ( new Set([session.sessionId]))
|
|
78
|
+
});
|
|
79
|
+
}
|
|
80
|
+
}));
|
|
81
|
+
this._register(this.sessionsManagementService.onWillSendRequest(session => {
|
|
82
|
+
if (this._pendingNewSessionGroupId === undefined) {
|
|
83
|
+
return;
|
|
84
|
+
}
|
|
85
|
+
this._inFlightSessionGroups.set(session.sessionId, this._pendingNewSessionGroupId);
|
|
86
|
+
this._pendingNewSessionGroupId = undefined;
|
|
87
|
+
}));
|
|
88
|
+
this._register(this.sessionsManagementService.onDidReplaceSession((
|
|
89
|
+
{
|
|
90
|
+
from,
|
|
91
|
+
to
|
|
92
|
+
}
|
|
93
|
+
) => {
|
|
94
|
+
if (from.sessionId === to.sessionId) {
|
|
95
|
+
return;
|
|
96
|
+
}
|
|
97
|
+
const groupId = this._inFlightSessionGroups.get(from.sessionId);
|
|
98
|
+
if (groupId !== undefined) {
|
|
99
|
+
this._inFlightSessionGroups.delete(from.sessionId);
|
|
100
|
+
this._inFlightSessionGroups.set(to.sessionId, groupId);
|
|
101
|
+
}
|
|
102
|
+
}));
|
|
103
|
+
this._register(this.sessionsManagementService.onDidStartSession(session => {
|
|
104
|
+
const groupId = this._inFlightSessionGroups.get(session.sessionId);
|
|
105
|
+
if (groupId === undefined) {
|
|
106
|
+
return;
|
|
107
|
+
}
|
|
108
|
+
this._inFlightSessionGroups.delete(session.sessionId);
|
|
109
|
+
if (( this._groups.has(groupId))) {
|
|
110
|
+
this.addToGroup(session.sessionId, groupId);
|
|
111
|
+
}
|
|
112
|
+
}));
|
|
113
|
+
this._register(this.sessionsManagementService.onDidDiscardNewSession(() => {
|
|
114
|
+
this._pendingNewSessionGroupId = undefined;
|
|
115
|
+
}));
|
|
116
|
+
}
|
|
117
|
+
updateDefaultPlacement(sessions, changed) {
|
|
118
|
+
let placed;
|
|
119
|
+
do {
|
|
120
|
+
placed = false;
|
|
121
|
+
for (const session of sessions) {
|
|
122
|
+
if (session.isArchived.get() || ( this._membership.has(session.sessionId)) || ( this._explicitlyUngroupedSessionIds.has(session.sessionId))) {
|
|
123
|
+
continue;
|
|
124
|
+
}
|
|
125
|
+
const creatorResource = session.createdBySession?.get()?.session;
|
|
126
|
+
const creator = creatorResource ? this.sessionsManagementService.getSession(creatorResource) : undefined;
|
|
127
|
+
const creatorGroupId = creator ? this._membership.get(creator.sessionId) : undefined;
|
|
128
|
+
if (creatorGroupId) {
|
|
129
|
+
this.setMembership(session.sessionId, creatorGroupId, changed);
|
|
130
|
+
placed = true;
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
} while (placed);
|
|
134
|
+
}
|
|
135
|
+
getGroups() {
|
|
136
|
+
return this.sortGroups([...( this._groups.values())]);
|
|
137
|
+
}
|
|
138
|
+
getGroup(groupId) {
|
|
139
|
+
return this._groups.get(groupId);
|
|
140
|
+
}
|
|
141
|
+
createGroup(name, memberSessionIds) {
|
|
142
|
+
const group = {
|
|
143
|
+
id: generateUuid(),
|
|
144
|
+
name,
|
|
145
|
+
createdAt: Date.now()
|
|
146
|
+
};
|
|
147
|
+
this._groups.set(group.id, group);
|
|
148
|
+
const membershipChanged = ( new Set());
|
|
149
|
+
if (memberSessionIds) {
|
|
150
|
+
for (const sessionId of memberSessionIds) {
|
|
151
|
+
this.setMembership(sessionId, group.id, membershipChanged);
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
this.updateDefaultPlacement(this.sessionsManagementService.getSessions(), membershipChanged);
|
|
155
|
+
this.save();
|
|
156
|
+
this._onDidChange.fire({
|
|
157
|
+
groupsChanged: true,
|
|
158
|
+
membershipChanged
|
|
159
|
+
});
|
|
160
|
+
return group;
|
|
161
|
+
}
|
|
162
|
+
renameGroup(groupId, name) {
|
|
163
|
+
const group = this._groups.get(groupId);
|
|
164
|
+
if (!group || group.name === name) {
|
|
165
|
+
return;
|
|
166
|
+
}
|
|
167
|
+
this._groups.set(groupId, {
|
|
168
|
+
...group,
|
|
169
|
+
name
|
|
170
|
+
});
|
|
171
|
+
this.save();
|
|
172
|
+
this._onDidChange.fire({
|
|
173
|
+
groupsChanged: true,
|
|
174
|
+
membershipChanged: ( new Set())
|
|
175
|
+
});
|
|
176
|
+
}
|
|
177
|
+
deleteGroup(groupId) {
|
|
178
|
+
if (!this._groups.delete(groupId)) {
|
|
179
|
+
return;
|
|
180
|
+
}
|
|
181
|
+
if (this._pendingNewSessionGroupId === groupId) {
|
|
182
|
+
this._pendingNewSessionGroupId = undefined;
|
|
183
|
+
}
|
|
184
|
+
for (const [sessionId, gid] of this._inFlightSessionGroups) {
|
|
185
|
+
if (gid === groupId) {
|
|
186
|
+
this._inFlightSessionGroups.delete(sessionId);
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
const membershipChanged = ( new Set());
|
|
190
|
+
for (const [sessionId, gid] of this._membership) {
|
|
191
|
+
if (gid === groupId) {
|
|
192
|
+
this._membership.delete(sessionId);
|
|
193
|
+
this.markExplicitlyUngrouped(sessionId);
|
|
194
|
+
membershipChanged.add(sessionId);
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
this.save();
|
|
198
|
+
this._onDidChange.fire({
|
|
199
|
+
groupsChanged: true,
|
|
200
|
+
membershipChanged
|
|
201
|
+
});
|
|
202
|
+
}
|
|
203
|
+
addToGroup(sessionIdOrIds, groupId) {
|
|
204
|
+
if (!( this._groups.has(groupId))) {
|
|
205
|
+
return;
|
|
206
|
+
}
|
|
207
|
+
const sessionIds = typeof sessionIdOrIds === "string" ? [sessionIdOrIds] : sessionIdOrIds;
|
|
208
|
+
const membershipChanged = ( new Set());
|
|
209
|
+
for (const sessionId of sessionIds) {
|
|
210
|
+
this.setMembership(sessionId, groupId, membershipChanged);
|
|
211
|
+
}
|
|
212
|
+
this.updateDefaultPlacement(this.sessionsManagementService.getSessions(), membershipChanged);
|
|
213
|
+
if (membershipChanged.size === 0) {
|
|
214
|
+
return;
|
|
215
|
+
}
|
|
216
|
+
this.save();
|
|
217
|
+
this._onDidChange.fire({
|
|
218
|
+
groupsChanged: false,
|
|
219
|
+
membershipChanged
|
|
220
|
+
});
|
|
221
|
+
}
|
|
222
|
+
removeFromGroup(sessionId) {
|
|
223
|
+
if (!this._membership.delete(sessionId)) {
|
|
224
|
+
return;
|
|
225
|
+
}
|
|
226
|
+
this.markExplicitlyUngrouped(sessionId);
|
|
227
|
+
this.save();
|
|
228
|
+
this._onDidChange.fire({
|
|
229
|
+
groupsChanged: false,
|
|
230
|
+
membershipChanged: ( new Set([sessionId]))
|
|
231
|
+
});
|
|
232
|
+
}
|
|
233
|
+
getGroupOfSession(sessionId) {
|
|
234
|
+
return this._membership.get(sessionId);
|
|
235
|
+
}
|
|
236
|
+
getSessionIdsInGroup(groupId) {
|
|
237
|
+
const result = [];
|
|
238
|
+
for (const [sessionId, gid] of this._membership) {
|
|
239
|
+
if (gid === groupId) {
|
|
240
|
+
result.push(sessionId);
|
|
241
|
+
}
|
|
242
|
+
}
|
|
243
|
+
return result;
|
|
244
|
+
}
|
|
245
|
+
setPendingNewSessionGroup(groupId) {
|
|
246
|
+
this._pendingNewSessionGroupId = ( this._groups.has(groupId)) ? groupId : undefined;
|
|
247
|
+
}
|
|
248
|
+
setMembership(sessionId, groupId, changed) {
|
|
249
|
+
if (this._explicitlyUngroupedSessionIds.delete(sessionId) || this._membership.get(sessionId) !== groupId) {
|
|
250
|
+
this._membership.set(sessionId, groupId);
|
|
251
|
+
changed.add(sessionId);
|
|
252
|
+
}
|
|
253
|
+
}
|
|
254
|
+
markExplicitlyUngrouped(sessionId) {
|
|
255
|
+
const size = this._explicitlyUngroupedSessionIds.size;
|
|
256
|
+
this._explicitlyUngroupedSessionIds.add(sessionId);
|
|
257
|
+
return this._explicitlyUngroupedSessionIds.size !== size;
|
|
258
|
+
}
|
|
259
|
+
removeArchivedMembership(sessions, changed) {
|
|
260
|
+
let stateChanged = false;
|
|
261
|
+
for (const session of sessions) {
|
|
262
|
+
if (session.isArchived.get()) {
|
|
263
|
+
if (this._membership.delete(session.sessionId)) {
|
|
264
|
+
changed.add(session.sessionId);
|
|
265
|
+
stateChanged = true;
|
|
266
|
+
}
|
|
267
|
+
stateChanged = this.markExplicitlyUngrouped(session.sessionId) || stateChanged;
|
|
268
|
+
}
|
|
269
|
+
}
|
|
270
|
+
return stateChanged;
|
|
271
|
+
}
|
|
272
|
+
sortGroups(groups) {
|
|
273
|
+
return groups.sort((a, b) => b.createdAt - a.createdAt);
|
|
274
|
+
}
|
|
275
|
+
load() {
|
|
276
|
+
const raw = this.storageService.get(SessionGroupsService_1.STORAGE_KEY, StorageScope.PROFILE);
|
|
277
|
+
if (!raw) {
|
|
278
|
+
return;
|
|
279
|
+
}
|
|
280
|
+
try {
|
|
281
|
+
const parsed = JSON.parse(raw);
|
|
282
|
+
if (Array.isArray(parsed.groups)) {
|
|
283
|
+
for (const group of parsed.groups) {
|
|
284
|
+
if (group && typeof group.id === "string" && typeof group.name === "string") {
|
|
285
|
+
this._groups.set(group.id, {
|
|
286
|
+
id: group.id,
|
|
287
|
+
name: group.name,
|
|
288
|
+
createdAt: typeof group.createdAt === "number" ? group.createdAt : Date.now()
|
|
289
|
+
});
|
|
290
|
+
}
|
|
291
|
+
}
|
|
292
|
+
}
|
|
293
|
+
if (parsed.membership && typeof parsed.membership === "object") {
|
|
294
|
+
for (const [sessionId, groupId] of Object.entries(parsed.membership)) {
|
|
295
|
+
if (typeof groupId === "string" && ( this._groups.has(groupId))) {
|
|
296
|
+
this._membership.set(sessionId, groupId);
|
|
297
|
+
}
|
|
298
|
+
}
|
|
299
|
+
}
|
|
300
|
+
const explicitlyUngroupedSessionIds = parsed[EXPLICITLY_UNGROUPED_FIELD];
|
|
301
|
+
if (Array.isArray(explicitlyUngroupedSessionIds)) {
|
|
302
|
+
for (const sessionId of explicitlyUngroupedSessionIds) {
|
|
303
|
+
if (typeof sessionId === "string") {
|
|
304
|
+
this._explicitlyUngroupedSessionIds.add(sessionId);
|
|
305
|
+
}
|
|
306
|
+
}
|
|
307
|
+
}
|
|
308
|
+
} catch {}
|
|
309
|
+
}
|
|
310
|
+
save() {
|
|
311
|
+
if (this._groups.size === 0 && this._explicitlyUngroupedSessionIds.size === 0) {
|
|
312
|
+
this.storageService.remove(SessionGroupsService_1.STORAGE_KEY, StorageScope.PROFILE);
|
|
313
|
+
return;
|
|
314
|
+
}
|
|
315
|
+
const state = {
|
|
316
|
+
groups: [...( this._groups.values())],
|
|
317
|
+
membership: Object.fromEntries(this._membership),
|
|
318
|
+
[EXPLICITLY_UNGROUPED_FIELD]: [...this._explicitlyUngroupedSessionIds]
|
|
319
|
+
};
|
|
320
|
+
this.storageService.store(
|
|
321
|
+
SessionGroupsService_1.STORAGE_KEY,
|
|
322
|
+
JSON.stringify(state),
|
|
323
|
+
StorageScope.PROFILE,
|
|
324
|
+
StorageTarget.USER
|
|
325
|
+
);
|
|
326
|
+
}
|
|
327
|
+
};
|
|
328
|
+
SessionGroupsService = SessionGroupsService_1 = ( __decorate([( __param(0, IStorageService)), ( __param(1, ISessionsManagementService))], SessionGroupsService));
|
|
329
|
+
|
|
330
|
+
export { SessionGroupsService };
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import { Disposable } from "@codingame/monaco-vscode-api/vscode/vs/base/common/lifecycle";
|
|
2
|
+
import { IObservable } from "@codingame/monaco-vscode-api/vscode/vs/base/common/observable";
|
|
3
|
+
import { URI } from "@codingame/monaco-vscode-api/vscode/vs/base/common/uri";
|
|
4
|
+
import { IContextKeyService } from "@codingame/monaco-vscode-api/vscode/vs/platform/contextkey/common/contextkey.service";
|
|
5
|
+
import { ILogService } from "@codingame/monaco-vscode-api/vscode/vs/platform/log/common/log.service";
|
|
6
|
+
import { ISession } from "@codingame/monaco-vscode-api/vscode/vs/sessions/services/sessions/common/session";
|
|
7
|
+
import { ISessionsChangeEvent, IActiveSession } from "@codingame/monaco-vscode-api/vscode/vs/sessions/services/sessions/common/sessionsManagement";
|
|
8
|
+
import { ISessionsManagementService } from "@codingame/monaco-vscode-api/vscode/vs/sessions/services/sessions/common/sessionsManagement.service";
|
|
9
|
+
import { SessionsRecencyHistory } from "./sessionsRecencyHistory.js";
|
|
10
|
+
/**
|
|
11
|
+
* The subset of opening behaviour {@link SessionsNavigation} drives. Implemented
|
|
12
|
+
* by the view service, passed in to avoid the navigation (a `services` module)
|
|
13
|
+
* depending on the core view service.
|
|
14
|
+
*/
|
|
15
|
+
export interface ISessionOpener {
|
|
16
|
+
openSession(sessionResource: URI, options?: {
|
|
17
|
+
preserveFocus?: boolean;
|
|
18
|
+
source?: "navigation";
|
|
19
|
+
}): Promise<void>;
|
|
20
|
+
openChat(session: ISession, chatResource: URI): Promise<void>;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Provides Back/Forward navigation over the shared session recency history
|
|
24
|
+
* ({@link SessionsRecencyHistory}). Created and owned by
|
|
25
|
+
* the `SessionsService` (view).
|
|
26
|
+
*
|
|
27
|
+
* The recency history is the single source of truth for ordering. Navigation
|
|
28
|
+
* keeps only a cursor (the currently-navigated entry) and walks the history:
|
|
29
|
+
* - Going Back/Forward moves the cursor over the existing order; it never
|
|
30
|
+
* re-promotes entries (that would break Forward).
|
|
31
|
+
* - Only explicit opens (recorded by the feeder autorun via
|
|
32
|
+
* {@link SessionsRecencyHistory.markOpened}) re-promote an entry to the front
|
|
33
|
+
* and reset the cursor to it.
|
|
34
|
+
*
|
|
35
|
+
* Because the history is MRU-ordered and not truncated, going somewhere new
|
|
36
|
+
* after a Back does not discard the previously-newer entries; they remain
|
|
37
|
+
* reachable as older entries (Alt+Tab-style rather than browser-style).
|
|
38
|
+
*/
|
|
39
|
+
export declare class SessionsNavigation extends Disposable {
|
|
40
|
+
private readonly _opener;
|
|
41
|
+
private readonly _activeSession;
|
|
42
|
+
private readonly _sessionsManagementService;
|
|
43
|
+
private readonly _recency;
|
|
44
|
+
private readonly _logService;
|
|
45
|
+
/** Identity of the entry the cursor currently points at. */
|
|
46
|
+
private readonly _currentKey;
|
|
47
|
+
/** Guard: true while we are performing a back/forward navigation. */
|
|
48
|
+
private _navigating;
|
|
49
|
+
/**
|
|
50
|
+
* True when the user has explicitly navigated to the new-session view after
|
|
51
|
+
* having been on a real session. Enables going back to the last real session
|
|
52
|
+
* without storing a new-session view entry in the history.
|
|
53
|
+
*/
|
|
54
|
+
private readonly _beyondHistory;
|
|
55
|
+
private readonly _canGoBackCtx;
|
|
56
|
+
private readonly _canGoForwardCtx;
|
|
57
|
+
private readonly _canGoBack;
|
|
58
|
+
private readonly _canGoForward;
|
|
59
|
+
constructor(_opener: ISessionOpener, _activeSession: IObservable<IActiveSession | undefined>, _sessionsManagementService: ISessionsManagementService, _recency: SessionsRecencyHistory, contextKeyService: IContextKeyService, _logService: ILogService);
|
|
60
|
+
onDidRemoveSessions(e: ISessionsChangeEvent): void;
|
|
61
|
+
goBack(): Promise<void>;
|
|
62
|
+
goForward(): Promise<void>;
|
|
63
|
+
/** Index of the current cursor entry in the recency history, or -1. */
|
|
64
|
+
private _indexOfCurrent;
|
|
65
|
+
private _indexOf;
|
|
66
|
+
private _navigateTo;
|
|
67
|
+
}
|