@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
|
@@ -2,16 +2,17 @@
|
|
|
2
2
|
import { __decorate, __param } from '@codingame/monaco-vscode-api/external/tslib/tslib.es6';
|
|
3
3
|
import { CancellationToken, CancellationTokenSource } from '@codingame/monaco-vscode-api/vscode/vs/base/common/cancellation';
|
|
4
4
|
import { CancellationError } from '@codingame/monaco-vscode-api/vscode/vs/base/common/errors';
|
|
5
|
-
import { raceCancellationError, raceTimeout } from '@codingame/monaco-vscode-api/vscode/vs/base/common/async';
|
|
5
|
+
import { SequencerByKey, raceCancellationError, raceTimeout } from '@codingame/monaco-vscode-api/vscode/vs/base/common/async';
|
|
6
6
|
import { Emitter, Event } from '@codingame/monaco-vscode-api/vscode/vs/base/common/event';
|
|
7
7
|
import { getComparisonKey } from '@codingame/monaco-vscode-api/vscode/vs/base/common/resources';
|
|
8
8
|
import { StringSHA1 } from '@codingame/monaco-vscode-api/vscode/vs/base/common/hash';
|
|
9
|
-
import { Disposable, DisposableMap, toDisposable, DisposableStore } from '@codingame/monaco-vscode-api/vscode/vs/base/common/lifecycle';
|
|
9
|
+
import { Disposable, DisposableMap, combinedDisposable, toDisposable, DisposableStore } from '@codingame/monaco-vscode-api/vscode/vs/base/common/lifecycle';
|
|
10
10
|
import '@codingame/monaco-vscode-api/vscode/vs/base/common/observableInternal/index';
|
|
11
11
|
import { Schemas } from '@codingame/monaco-vscode-api/vscode/vs/base/common/network';
|
|
12
12
|
import { URI } from '@codingame/monaco-vscode-api/vscode/vs/base/common/uri';
|
|
13
|
+
import { findDevContainerSample } from '@codingame/monaco-vscode-api/vscode/vs/platform/agentHost/common/devContainerSamples';
|
|
13
14
|
import { localize } from '@codingame/monaco-vscode-api/vscode/vs/nls';
|
|
14
|
-
import { agentHostAuthority, AGENT_HOST_SCHEME } from '@codingame/monaco-vscode-api/vscode/vs/platform/agentHost/common/agentHostUri';
|
|
15
|
+
import { agentHostAuthority, AGENT_HOST_SCHEME, fromAgentHostUri } from '@codingame/monaco-vscode-api/vscode/vs/platform/agentHost/common/agentHostUri';
|
|
15
16
|
import { agentsWindowAgentHostClientInfo } from '@codingame/monaco-vscode-api/vscode/vs/platform/agentHost/common/agentHostClientInfo';
|
|
16
17
|
import { AgentHostProtocolClient } from '@codingame/monaco-vscode-api/vscode/vs/platform/agentHost/browser/agentHostProtocolClient';
|
|
17
18
|
import { RemoteAgentHostEntryType, getEntryTypeConfig, RemoteAgentHostConnectionStatus, getEntryAddress } from '@codingame/monaco-vscode-api/vscode/vs/platform/agentHost/common/remoteAgentHostService';
|
|
@@ -20,20 +21,43 @@ import { IInstantiationService } from '@codingame/monaco-vscode-api/vscode/vs/pl
|
|
|
20
21
|
import '@codingame/monaco-vscode-api/vscode/vs/platform/instantiation/common/extensions';
|
|
21
22
|
import { StorageScope, StorageTarget } from '@codingame/monaco-vscode-api/vscode/vs/platform/storage/common/storage';
|
|
22
23
|
import { IStorageService } from '@codingame/monaco-vscode-api/vscode/vs/platform/storage/common/storage.service';
|
|
24
|
+
import { IWorkspaceTrustRequestService } from '@codingame/monaco-vscode-api/vscode/vs/platform/workspace/common/workspaceTrust.service';
|
|
23
25
|
import { ISessionsProvidersService } from '@codingame/monaco-vscode-api/vscode/vs/sessions/services/sessions/browser/sessionsProvidersService.service';
|
|
26
|
+
import { resolveRemoteAgentHostEntryAuthority } from '@codingame/monaco-vscode-api/vscode/vs/sessions/browser/openInVSCodeUtils';
|
|
27
|
+
import { devContainerSourcePath, getDevContainerSourceEntry, resolveDevContainerSourceConnection } from './devContainerSource.js';
|
|
24
28
|
import { RemoteAgentHostSessionsProvider } from '@codingame/monaco-vscode-api/vscode/vs/sessions/contrib/providers/remoteAgentHost/browser/remoteAgentHostSessionsProvider';
|
|
29
|
+
import { waitForState } from '@codingame/monaco-vscode-api/vscode/vs/base/common/observableInternal/utils/utilsCancellation';
|
|
30
|
+
import { observableFromEvent } from '@codingame/monaco-vscode-api/vscode/vs/base/common/observableInternal/observables/observableFromEvent';
|
|
25
31
|
import { observableValue } from '@codingame/monaco-vscode-api/vscode/vs/base/common/observableInternal/observables/observableValue';
|
|
26
32
|
|
|
27
33
|
const DEV_CONTAINER_AGENT_HOSTS_STORAGE_KEY = "devContainerAgentHost.connections";
|
|
28
34
|
const CONNECTOR_REGISTRATION_TIMEOUT_MS = 30_000;
|
|
29
35
|
function isStoredDevContainerAgentHost(value) {
|
|
30
|
-
return typeof value === "object" && value !== null && typeof Reflect.get(value, "workspaceUri") === "string" && typeof Reflect.get(value, "name") === "string";
|
|
36
|
+
return typeof value === "object" && value !== null && typeof Reflect.get(value, "workspaceUri") === "string" && typeof Reflect.get(value, "name") === "string" && (Reflect.get(value, "sandboxEnabled") === undefined || typeof Reflect.get(value, "sandboxEnabled") === "boolean");
|
|
31
37
|
}
|
|
32
38
|
function devContainerAddress(workspaceUri) {
|
|
33
39
|
const sha = ( new StringSHA1());
|
|
34
40
|
sha.update(getComparisonKey(workspaceUri));
|
|
35
41
|
return `devcontainer:${sha.digest()}`;
|
|
36
42
|
}
|
|
43
|
+
async function createDevContainerConnection(connector, workspaceUri, address, token, options) {
|
|
44
|
+
const key = getComparisonKey(workspaceUri);
|
|
45
|
+
let inspectedSupport;
|
|
46
|
+
const listener = connector.onDidChangeSandboxSupport?.(event => {
|
|
47
|
+
if (getComparisonKey(event.workspaceUri) === key) {
|
|
48
|
+
inspectedSupport = event.supported;
|
|
49
|
+
}
|
|
50
|
+
});
|
|
51
|
+
try {
|
|
52
|
+
const connection = await connector.createConnection(workspaceUri, address, token, options);
|
|
53
|
+
return inspectedSupport !== undefined ? {
|
|
54
|
+
...connection,
|
|
55
|
+
sandboxSupported: inspectedSupport
|
|
56
|
+
} : connection;
|
|
57
|
+
} finally {
|
|
58
|
+
listener?.dispose();
|
|
59
|
+
}
|
|
60
|
+
}
|
|
37
61
|
class DevContainerConnectionFactory extends Disposable {
|
|
38
62
|
constructor(_instantiationService) {
|
|
39
63
|
super();
|
|
@@ -43,20 +67,29 @@ class DevContainerConnectionFactory extends Disposable {
|
|
|
43
67
|
this._entries = observableValue(this, []);
|
|
44
68
|
this.entries = this._entries;
|
|
45
69
|
}
|
|
46
|
-
stageConnection(connector, workspaceUri, connection) {
|
|
70
|
+
stageConnection(connector, workspaceUri, connection, hostAuthority, sandboxEnabled) {
|
|
47
71
|
const entry = {
|
|
48
72
|
name: connection.name,
|
|
49
73
|
connection: {
|
|
50
74
|
type: RemoteAgentHostEntryType.DevContainer,
|
|
51
75
|
address: connection.address,
|
|
52
|
-
|
|
76
|
+
...(connection.repository ? {
|
|
77
|
+
repository: connection.repository
|
|
78
|
+
} : {
|
|
79
|
+
hostPath: connection.hostWorkspaceFolder ?? devContainerSourcePath(workspaceUri)
|
|
80
|
+
}),
|
|
81
|
+
...(hostAuthority ? {
|
|
82
|
+
hostAuthority
|
|
83
|
+
} : {})
|
|
53
84
|
}
|
|
54
85
|
};
|
|
55
86
|
this._stagedConnections.set(connection.address, {
|
|
56
87
|
entry,
|
|
57
88
|
connector,
|
|
58
89
|
workspaceUri,
|
|
59
|
-
initialConnection: connection
|
|
90
|
+
initialConnection: connection,
|
|
91
|
+
sandboxEnabled,
|
|
92
|
+
sandboxSupported: connection.sandboxSupported
|
|
60
93
|
});
|
|
61
94
|
this._updateEntries();
|
|
62
95
|
return entry;
|
|
@@ -67,7 +100,18 @@ class DevContainerConnectionFactory extends Disposable {
|
|
|
67
100
|
staged?.initialConnection?.transportDisposable?.dispose();
|
|
68
101
|
this._updateEntries();
|
|
69
102
|
}
|
|
70
|
-
|
|
103
|
+
getSandboxSupported(address) {
|
|
104
|
+
return this._stagedConnections.get(address)?.sandboxSupported;
|
|
105
|
+
}
|
|
106
|
+
setSandboxSupported(workspaceUri, supported) {
|
|
107
|
+
const key = getComparisonKey(workspaceUri);
|
|
108
|
+
for (const staged of ( this._stagedConnections.values())) {
|
|
109
|
+
if (getComparisonKey(staged.workspaceUri) === key) {
|
|
110
|
+
staged.sandboxSupported = supported;
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
async createConnection(entry, options) {
|
|
71
115
|
if (entry.connection.type !== RemoteAgentHostEntryType.DevContainer) {
|
|
72
116
|
throw ( new Error(
|
|
73
117
|
`Dev Container factory cannot create a ${entry.connection.type} connection.`
|
|
@@ -77,12 +121,23 @@ class DevContainerConnectionFactory extends Disposable {
|
|
|
77
121
|
if (!staged) {
|
|
78
122
|
throw ( new Error(`No Dev Container connection is staged for ${entry.connection.address}.`));
|
|
79
123
|
}
|
|
80
|
-
const connection = staged.initialConnection ?? (await
|
|
124
|
+
const connection = staged.initialConnection ?? (await createDevContainerConnection(
|
|
125
|
+
staged.connector,
|
|
126
|
+
staged.workspaceUri,
|
|
127
|
+
entry.connection.address,
|
|
128
|
+
CancellationToken.None,
|
|
129
|
+
{
|
|
130
|
+
resume: options.userInitiated,
|
|
131
|
+
...(staged.sandboxEnabled !== undefined ? {
|
|
132
|
+
sandboxEnabled: staged.sandboxEnabled
|
|
133
|
+
} : {})
|
|
134
|
+
}
|
|
135
|
+
));
|
|
81
136
|
try {
|
|
82
137
|
const authority = agentHostAuthority(entry.connection.address);
|
|
83
138
|
if (connection.workspaceUri.scheme !== AGENT_HOST_SCHEME || connection.workspaceUri.authority !== authority) {
|
|
84
139
|
throw ( new Error(( localize(
|
|
85
|
-
|
|
140
|
+
5299,
|
|
86
141
|
"Dev Container workspace URI must use the '{0}' scheme and '{1}' authority.",
|
|
87
142
|
AGENT_HOST_SCHEME,
|
|
88
143
|
authority
|
|
@@ -98,6 +153,7 @@ class DevContainerConnectionFactory extends Disposable {
|
|
|
98
153
|
}
|
|
99
154
|
);
|
|
100
155
|
staged.initialConnection = undefined;
|
|
156
|
+
staged.sandboxSupported = connection.sandboxSupported;
|
|
101
157
|
return {
|
|
102
158
|
connection: client,
|
|
103
159
|
transportDisposable: connection.transportDisposable
|
|
@@ -119,18 +175,23 @@ let DevContainerAgentHostService = class DevContainerAgentHostService extends Di
|
|
|
119
175
|
_instantiationService,
|
|
120
176
|
_remoteAgentHostService,
|
|
121
177
|
_sessionsProvidersService,
|
|
122
|
-
_storageService
|
|
178
|
+
_storageService,
|
|
179
|
+
_workspaceTrustRequestService
|
|
123
180
|
) {
|
|
124
181
|
super();
|
|
125
182
|
this._instantiationService = _instantiationService;
|
|
126
183
|
this._remoteAgentHostService = _remoteAgentHostService;
|
|
127
184
|
this._sessionsProvidersService = _sessionsProvidersService;
|
|
128
185
|
this._storageService = _storageService;
|
|
186
|
+
this._workspaceTrustRequestService = _workspaceTrustRequestService;
|
|
129
187
|
this._providerStores = this._register(( new DisposableMap()));
|
|
130
188
|
this._providers = ( new Map());
|
|
131
189
|
this._activeConnections = ( new Map());
|
|
190
|
+
this._knownSandboxSupport = ( new Map());
|
|
132
191
|
this._pendingConnections = ( new Map());
|
|
133
192
|
this._storedConnections = ( new Map());
|
|
193
|
+
this._lifecycleOperations = ( new SequencerByKey());
|
|
194
|
+
this._lifecycleTokenSource = this._register(( new CancellationTokenSource()));
|
|
134
195
|
this._onDidRegisterConnector = this._register(( new Emitter()));
|
|
135
196
|
this._onDidChangeAvailability = this._register(( new Emitter()));
|
|
136
197
|
this.onDidChangeAvailability = this._onDidChangeAvailability.event;
|
|
@@ -141,38 +202,91 @@ let DevContainerAgentHostService = class DevContainerAgentHostService extends Di
|
|
|
141
202
|
this._register(
|
|
142
203
|
this._remoteAgentHostService.onDidChangeConnections(() => this._reconcileConnections())
|
|
143
204
|
);
|
|
205
|
+
this._register(
|
|
206
|
+
this._remoteAgentHostService.onDidChangeConnections(() => this._onDidChangeAvailability.fire())
|
|
207
|
+
);
|
|
208
|
+
this._register(
|
|
209
|
+
this._sessionsProvidersService.onDidChangeProviders(() => this._initializeProviders())
|
|
210
|
+
);
|
|
144
211
|
this._restoreProviders();
|
|
212
|
+
this._initializeProviders();
|
|
145
213
|
this._register(this._storageService.onDidChangeValue(
|
|
146
214
|
StorageScope.APPLICATION,
|
|
147
215
|
DEV_CONTAINER_AGENT_HOSTS_STORAGE_KEY,
|
|
148
216
|
this._store
|
|
149
217
|
)(() => this._restoreProviders()));
|
|
150
218
|
}
|
|
219
|
+
_initializeProviders() {
|
|
220
|
+
for (const provider of this._sessionsProvidersService.getProviders()) {
|
|
221
|
+
if (provider instanceof RemoteAgentHostSessionsProvider) {
|
|
222
|
+
provider.initializeDevContainerSupport(this, this._sessionsProvidersService, this._workspaceTrustRequestService);
|
|
223
|
+
}
|
|
224
|
+
}
|
|
225
|
+
}
|
|
151
226
|
registerConnector(connector) {
|
|
152
227
|
if (this._connector) {
|
|
153
|
-
throw ( new Error(( localize(
|
|
228
|
+
throw ( new Error(( localize(5300, "A Dev Container Agent Host connector is already registered."))));
|
|
154
229
|
}
|
|
155
230
|
this._connector = connector;
|
|
231
|
+
const sandboxSupportListener = connector.onDidChangeSandboxSupport?.(event => this._setSandboxSupported(event.workspaceUri, event.supported));
|
|
156
232
|
this._onDidRegisterConnector.fire(connector);
|
|
157
233
|
this._onDidChangeAvailability.fire();
|
|
158
|
-
return toDisposable(() => {
|
|
234
|
+
return combinedDisposable(sandboxSupportListener ?? Disposable.None, toDisposable(() => {
|
|
159
235
|
if (this._connector === connector) {
|
|
160
236
|
this._connector = undefined;
|
|
161
237
|
this._onDidChangeAvailability.fire();
|
|
162
238
|
}
|
|
163
|
-
});
|
|
239
|
+
}));
|
|
164
240
|
}
|
|
165
241
|
isAvailable(workspaceUri) {
|
|
166
242
|
return this._connector?.isAvailable(workspaceUri) ?? Promise.resolve(false);
|
|
167
243
|
}
|
|
168
|
-
|
|
169
|
-
return this.
|
|
244
|
+
getSandboxSupported(workspaceUri) {
|
|
245
|
+
return this._knownSandboxSupport.get(getComparisonKey(workspaceUri));
|
|
170
246
|
}
|
|
171
|
-
|
|
247
|
+
_setSandboxSupported(workspaceUri, supported) {
|
|
172
248
|
const key = getComparisonKey(workspaceUri);
|
|
249
|
+
const previous = this._knownSandboxSupport.get(key);
|
|
250
|
+
if (supported === undefined) {
|
|
251
|
+
this._knownSandboxSupport.delete(key);
|
|
252
|
+
} else {
|
|
253
|
+
this._knownSandboxSupport.set(key, supported);
|
|
254
|
+
}
|
|
255
|
+
this._connectionFactory.setSandboxSupported(workspaceUri, supported);
|
|
173
256
|
const active = this._activeConnections.get(key);
|
|
174
|
-
if (active
|
|
175
|
-
|
|
257
|
+
if (active) {
|
|
258
|
+
active.sandboxSupported = supported;
|
|
259
|
+
}
|
|
260
|
+
this._providers.get(key)?.setDevContainerSandboxSupported(supported);
|
|
261
|
+
if (previous !== supported) {
|
|
262
|
+
this._onDidChangeAvailability.fire();
|
|
263
|
+
}
|
|
264
|
+
}
|
|
265
|
+
async connect(workspaceUri, token, options) {
|
|
266
|
+
const key = getComparisonKey(workspaceUri);
|
|
267
|
+
const active = this._activeConnections.get(key);
|
|
268
|
+
const target = active && this._acquireConnection(key, active);
|
|
269
|
+
try {
|
|
270
|
+
const connected = await this._ensureConnection(workspaceUri, token, options?.sandboxEnabled);
|
|
271
|
+
return target ?? this._acquireConnection(key, connected);
|
|
272
|
+
} catch (error) {
|
|
273
|
+
await target?.release();
|
|
274
|
+
throw error;
|
|
275
|
+
}
|
|
276
|
+
}
|
|
277
|
+
async showLog(workspaceUri) {
|
|
278
|
+
const connector = this._connector ?? (await this._waitForConnector(CancellationToken.None));
|
|
279
|
+
await connector.showLog(workspaceUri);
|
|
280
|
+
}
|
|
281
|
+
_ensureConnection(workspaceUri, token, sandboxEnabled) {
|
|
282
|
+
const key = getComparisonKey(workspaceUri);
|
|
283
|
+
sandboxEnabled ??= this._storedConnections.get(key)?.sandboxEnabled;
|
|
284
|
+
const active = this._activeConnections.get(key);
|
|
285
|
+
if (active) {
|
|
286
|
+
if (active.state === "running" && this._isConnectedOrReconnecting(active.address)) {
|
|
287
|
+
return this._waitForReconnection(active, token);
|
|
288
|
+
}
|
|
289
|
+
return raceCancellationError(this._ensureActiveConnection(key, active, sandboxEnabled), token).then(() => active);
|
|
176
290
|
}
|
|
177
291
|
const pending = this._pendingConnections.get(key);
|
|
178
292
|
if (pending) {
|
|
@@ -180,7 +294,7 @@ let DevContainerAgentHostService = class DevContainerAgentHostService extends Di
|
|
|
180
294
|
}
|
|
181
295
|
this._providers.get(key)?.setConnectionStatus(RemoteAgentHostConnectionStatus.connecting);
|
|
182
296
|
const tokenSource = ( new CancellationTokenSource(token));
|
|
183
|
-
const promise = this.
|
|
297
|
+
const promise = this._connectWhenReady(workspaceUri, key, tokenSource.token, sandboxEnabled);
|
|
184
298
|
const pendingConnection = {
|
|
185
299
|
promise,
|
|
186
300
|
tokenSource
|
|
@@ -192,6 +306,30 @@ let DevContainerAgentHostService = class DevContainerAgentHostService extends Di
|
|
|
192
306
|
);
|
|
193
307
|
return promise;
|
|
194
308
|
}
|
|
309
|
+
async _waitForReconnection(active, token) {
|
|
310
|
+
const {
|
|
311
|
+
connection,
|
|
312
|
+
canceled
|
|
313
|
+
} = await waitForState(observableFromEvent(this, Event.any(
|
|
314
|
+
this._remoteAgentHostService.onDidChangeConnections,
|
|
315
|
+
listener => token.onCancellationRequested(listener)
|
|
316
|
+
), () => ({
|
|
317
|
+
connection: this._remoteAgentHostService.connections.find(connection => connection.address === active.address),
|
|
318
|
+
canceled: token.isCancellationRequested
|
|
319
|
+
})), (
|
|
320
|
+
{
|
|
321
|
+
connection,
|
|
322
|
+
canceled
|
|
323
|
+
}
|
|
324
|
+
) => canceled || !connection || (!RemoteAgentHostConnectionStatus.isReconnecting(connection.status) && !RemoteAgentHostConnectionStatus.isConnecting(connection.status)));
|
|
325
|
+
if (canceled) {
|
|
326
|
+
throw ( new CancellationError());
|
|
327
|
+
}
|
|
328
|
+
if (!connection || !RemoteAgentHostConnectionStatus.isConnected(connection.status)) {
|
|
329
|
+
throw ( new Error(( localize(5301, "The Dev Container Agent Host disconnected while reconnecting."))));
|
|
330
|
+
}
|
|
331
|
+
return active;
|
|
332
|
+
}
|
|
195
333
|
_completePendingConnection(key, pending) {
|
|
196
334
|
if (this._pendingConnections.get(key) === pending) {
|
|
197
335
|
this._pendingConnections.delete(key);
|
|
@@ -201,30 +339,32 @@ let DevContainerAgentHostService = class DevContainerAgentHostService extends Di
|
|
|
201
339
|
}
|
|
202
340
|
pending.tokenSource.dispose();
|
|
203
341
|
}
|
|
204
|
-
async
|
|
342
|
+
async _connectWhenReady(workspaceUri, key, token, sandboxEnabled) {
|
|
205
343
|
const connector = this._connector ?? (await this._waitForConnector(token));
|
|
206
|
-
|
|
207
|
-
await this._disconnectActiveConnection(key, active);
|
|
208
|
-
}
|
|
209
|
-
return this._connect(connector, workspaceUri, key, token);
|
|
344
|
+
return this._connect(connector, workspaceUri, key, token, sandboxEnabled);
|
|
210
345
|
}
|
|
211
346
|
async _waitForConnector(token) {
|
|
212
347
|
const connectorPromise = Event.toPromise(this._onDidRegisterConnector.event);
|
|
213
348
|
try {
|
|
214
349
|
const connector = await raceCancellationError(raceTimeout(connectorPromise, CONNECTOR_REGISTRATION_TIMEOUT_MS), token);
|
|
215
350
|
if (!connector) {
|
|
216
|
-
throw ( new Error(( localize(
|
|
351
|
+
throw ( new Error(( localize(5302, "No Dev Container Agent Host connector is registered."))));
|
|
217
352
|
}
|
|
218
353
|
return connector;
|
|
219
354
|
} finally {
|
|
220
355
|
connectorPromise.cancel();
|
|
221
356
|
}
|
|
222
357
|
}
|
|
223
|
-
async _connect(connector, workspaceUri, key, token) {
|
|
358
|
+
async _connect(connector, workspaceUri, key, token, sandboxEnabled) {
|
|
224
359
|
if (token.isCancellationRequested) {
|
|
225
360
|
throw ( new CancellationError());
|
|
226
361
|
}
|
|
227
|
-
const connected = await connector
|
|
362
|
+
const connected = await createDevContainerConnection(connector, workspaceUri, devContainerAddress(workspaceUri), token, {
|
|
363
|
+
resume: true,
|
|
364
|
+
...(sandboxEnabled !== undefined ? {
|
|
365
|
+
sandboxEnabled
|
|
366
|
+
} : {})
|
|
367
|
+
});
|
|
228
368
|
if (token.isCancellationRequested) {
|
|
229
369
|
connected.transportDisposable?.dispose();
|
|
230
370
|
throw ( new CancellationError());
|
|
@@ -232,7 +372,15 @@ let DevContainerAgentHostService = class DevContainerAgentHostService extends Di
|
|
|
232
372
|
let stagedAddress;
|
|
233
373
|
try {
|
|
234
374
|
const provider = this._ensureProvider(workspaceUri, connected.name, connected.address);
|
|
235
|
-
|
|
375
|
+
this._setSandboxSupported(workspaceUri, connected.sandboxSupported);
|
|
376
|
+
const sourceEntry = getDevContainerSourceEntry(workspaceUri, this._remoteAgentHostService);
|
|
377
|
+
const entry = this._connectionFactory.stageConnection(
|
|
378
|
+
connector,
|
|
379
|
+
workspaceUri,
|
|
380
|
+
connected,
|
|
381
|
+
sourceEntry && resolveRemoteAgentHostEntryAuthority(sourceEntry),
|
|
382
|
+
sandboxEnabled
|
|
383
|
+
);
|
|
236
384
|
const address = getEntryAddress(entry);
|
|
237
385
|
stagedAddress = address;
|
|
238
386
|
if (token.isCancellationRequested) {
|
|
@@ -243,7 +391,7 @@ let DevContainerAgentHostService = class DevContainerAgentHostService extends Di
|
|
|
243
391
|
const connection = this._remoteAgentHostService.getConnection(connectionInfo.address);
|
|
244
392
|
if (!connection) {
|
|
245
393
|
throw ( new Error(( localize(
|
|
246
|
-
|
|
394
|
+
5303,
|
|
247
395
|
"Dev Container Agent Host connection was not available after connecting."
|
|
248
396
|
))));
|
|
249
397
|
}
|
|
@@ -251,7 +399,7 @@ let DevContainerAgentHostService = class DevContainerAgentHostService extends Di
|
|
|
251
399
|
provider.setConnectionStatus(connectionInfo.status);
|
|
252
400
|
await this._waitForSessionTypes(provider, token);
|
|
253
401
|
if (provider.getSessions().length > 0) {
|
|
254
|
-
this._storeConnection(workspaceUri, connected.name);
|
|
402
|
+
this._storeConnection(workspaceUri, connected.name, sandboxEnabled);
|
|
255
403
|
}
|
|
256
404
|
const target = {
|
|
257
405
|
providerId: provider.id,
|
|
@@ -261,9 +409,15 @@ let DevContainerAgentHostService = class DevContainerAgentHostService extends Di
|
|
|
261
409
|
address,
|
|
262
410
|
provider,
|
|
263
411
|
target,
|
|
264
|
-
|
|
412
|
+
connector,
|
|
413
|
+
workspaceUri,
|
|
414
|
+
state: "running",
|
|
415
|
+
references: 0,
|
|
416
|
+
sandboxEnabled,
|
|
417
|
+
sandboxSupported: this.getSandboxSupported(workspaceUri)
|
|
265
418
|
};
|
|
266
419
|
this._activeConnections.set(key, active);
|
|
420
|
+
this._onDidChangeAvailability.fire();
|
|
267
421
|
return active;
|
|
268
422
|
} catch (error) {
|
|
269
423
|
if (stagedAddress !== undefined) {
|
|
@@ -293,6 +447,9 @@ let DevContainerAgentHostService = class DevContainerAgentHostService extends Di
|
|
|
293
447
|
released = true;
|
|
294
448
|
active.references--;
|
|
295
449
|
if (active.references === 0 && this._activeConnections.get(key) === active) {
|
|
450
|
+
if (active.connector.stopContainer) {
|
|
451
|
+
return;
|
|
452
|
+
}
|
|
296
453
|
await this._disconnectActiveConnection(key, active);
|
|
297
454
|
if (active.provider.getSessions().length === 0) {
|
|
298
455
|
this._removeStoredConnection(key);
|
|
@@ -309,15 +466,29 @@ let DevContainerAgentHostService = class DevContainerAgentHostService extends Di
|
|
|
309
466
|
return existing;
|
|
310
467
|
}
|
|
311
468
|
const store = ( new DisposableStore());
|
|
469
|
+
const connectOnDemand = async () => {
|
|
470
|
+
await this._ensureConnection(workspaceUri, CancellationToken.None);
|
|
471
|
+
};
|
|
312
472
|
const provider = store.add(this._createProvider({
|
|
313
473
|
address,
|
|
314
474
|
name,
|
|
315
|
-
|
|
475
|
+
devContainerSourceWorkspaceUri: workspaceUri,
|
|
476
|
+
devContainerWorktreeScope: findDevContainerSample(workspaceUri) ? undefined : getComparisonKey(fromAgentHostUri(workspaceUri)),
|
|
477
|
+
resolveDevContainerWorktreeConnection: workspaceUri.scheme === AGENT_HOST_SCHEME ? () => resolveDevContainerSourceConnection(
|
|
478
|
+
workspaceUri,
|
|
479
|
+
this._remoteAgentHostService,
|
|
480
|
+
this._sessionsProvidersService,
|
|
481
|
+
CancellationToken.None
|
|
482
|
+
) : undefined,
|
|
316
483
|
omitHostFromWorkspaceLabel: true,
|
|
317
|
-
|
|
318
|
-
|
|
484
|
+
devContainerLifecycle: {
|
|
485
|
+
connect: connectOnDemand,
|
|
486
|
+
stop: () => this._stopContainer(key),
|
|
487
|
+
remove: () => this._removeContainer(key)
|
|
319
488
|
},
|
|
320
|
-
|
|
489
|
+
connectOnDemand,
|
|
490
|
+
disconnectOnDemand: () => this.disconnect(workspaceUri),
|
|
491
|
+
showConnectionLog: () => this.showLog(workspaceUri)
|
|
321
492
|
}));
|
|
322
493
|
provider.setConnectionStatus(RemoteAgentHostConnectionStatus.disconnected);
|
|
323
494
|
store.add(this._sessionsProvidersService.registerProvider(provider));
|
|
@@ -326,7 +497,11 @@ let DevContainerAgentHostService = class DevContainerAgentHostService extends Di
|
|
|
326
497
|
this._storeConnection(workspaceUri, name);
|
|
327
498
|
}
|
|
328
499
|
}));
|
|
329
|
-
store.add(toDisposable(() =>
|
|
500
|
+
store.add(toDisposable(() => {
|
|
501
|
+
this._providers.delete(key);
|
|
502
|
+
this._activeConnections.delete(key);
|
|
503
|
+
this._onDidChangeAvailability.fire();
|
|
504
|
+
}));
|
|
330
505
|
this._providers.set(key, provider);
|
|
331
506
|
this._providerStores.set(key, store);
|
|
332
507
|
return provider;
|
|
@@ -340,7 +515,7 @@ let DevContainerAgentHostService = class DevContainerAgentHostService extends Di
|
|
|
340
515
|
const remaining = deadline - Date.now();
|
|
341
516
|
if (remaining <= 0) {
|
|
342
517
|
throw ( new Error(( localize(
|
|
343
|
-
|
|
518
|
+
5304,
|
|
344
519
|
"Timed out waiting for the Dev Container Agent Host to advertise agents."
|
|
345
520
|
))));
|
|
346
521
|
}
|
|
@@ -352,7 +527,7 @@ let DevContainerAgentHostService = class DevContainerAgentHostService extends Di
|
|
|
352
527
|
), token);
|
|
353
528
|
if (timedOut) {
|
|
354
529
|
throw ( new Error(( localize(
|
|
355
|
-
|
|
530
|
+
5304,
|
|
356
531
|
"Timed out waiting for the Dev Container Agent Host to advertise agents."
|
|
357
532
|
))));
|
|
358
533
|
}
|
|
@@ -382,6 +557,129 @@ let DevContainerAgentHostService = class DevContainerAgentHostService extends Di
|
|
|
382
557
|
active.provider.clearConnection();
|
|
383
558
|
active.provider.setConnectionStatus(RemoteAgentHostConnectionStatus.disconnected);
|
|
384
559
|
}
|
|
560
|
+
_stopContainer(key) {
|
|
561
|
+
return this._lifecycleOperations.queue(key, async () => {
|
|
562
|
+
const active = this._activeConnections.get(key);
|
|
563
|
+
if (!active || active.state === "stopped" || active.state === "removed") {
|
|
564
|
+
return true;
|
|
565
|
+
}
|
|
566
|
+
if (!active.connector.stopContainer) {
|
|
567
|
+
return false;
|
|
568
|
+
}
|
|
569
|
+
active.state = "stopping";
|
|
570
|
+
try {
|
|
571
|
+
const stopped = await active.connector.stopContainer(active.workspaceUri);
|
|
572
|
+
if (!stopped) {
|
|
573
|
+
active.state = "running";
|
|
574
|
+
return false;
|
|
575
|
+
}
|
|
576
|
+
await this._disconnectActiveTransport(active);
|
|
577
|
+
active.state = "stopped";
|
|
578
|
+
if (active.references === 0 && active.provider.getSessions().length === 0) {
|
|
579
|
+
this._removeStoredConnection(key);
|
|
580
|
+
this._removeProvider(key);
|
|
581
|
+
}
|
|
582
|
+
return stopped;
|
|
583
|
+
} catch (error) {
|
|
584
|
+
await this._connectActive(active);
|
|
585
|
+
throw error;
|
|
586
|
+
}
|
|
587
|
+
});
|
|
588
|
+
}
|
|
589
|
+
_removeContainer(key) {
|
|
590
|
+
return this._lifecycleOperations.queue(key, async () => {
|
|
591
|
+
const active = this._activeConnections.get(key);
|
|
592
|
+
if (!active || active.state === "removed") {
|
|
593
|
+
return true;
|
|
594
|
+
}
|
|
595
|
+
if (!active.connector.removeContainer) {
|
|
596
|
+
return false;
|
|
597
|
+
}
|
|
598
|
+
active.state = "removing";
|
|
599
|
+
try {
|
|
600
|
+
const removed = await active.connector.removeContainer(active.workspaceUri);
|
|
601
|
+
if (!removed) {
|
|
602
|
+
active.state = "running";
|
|
603
|
+
return false;
|
|
604
|
+
}
|
|
605
|
+
await this._disconnectActiveTransport(active);
|
|
606
|
+
active.state = "removed";
|
|
607
|
+
active.sandboxSupported = undefined;
|
|
608
|
+
this._knownSandboxSupport.delete(key);
|
|
609
|
+
active.provider.setDevContainerSandboxSupported(undefined);
|
|
610
|
+
this._onDidChangeAvailability.fire();
|
|
611
|
+
return removed;
|
|
612
|
+
} catch (error) {
|
|
613
|
+
await this._connectActive(active);
|
|
614
|
+
throw error;
|
|
615
|
+
}
|
|
616
|
+
});
|
|
617
|
+
}
|
|
618
|
+
_ensureActiveConnection(key, active, sandboxEnabled) {
|
|
619
|
+
return this._lifecycleOperations.queue(key, async () => {
|
|
620
|
+
if (this._isConnectedOrReconnecting(active.address)) {
|
|
621
|
+
active.state = "running";
|
|
622
|
+
return;
|
|
623
|
+
}
|
|
624
|
+
await this._connectActive(active, active.state === "removed" ? sandboxEnabled : undefined);
|
|
625
|
+
});
|
|
626
|
+
}
|
|
627
|
+
async _connectActive(active, sandboxEnabled) {
|
|
628
|
+
const previousState = active.state;
|
|
629
|
+
const requestedSandboxEnabled = sandboxEnabled ?? active.sandboxEnabled;
|
|
630
|
+
active.state = "connecting";
|
|
631
|
+
try {
|
|
632
|
+
const connected = await createDevContainerConnection(
|
|
633
|
+
active.connector,
|
|
634
|
+
active.workspaceUri,
|
|
635
|
+
active.address,
|
|
636
|
+
this._lifecycleTokenSource.token,
|
|
637
|
+
{
|
|
638
|
+
resume: true,
|
|
639
|
+
...(requestedSandboxEnabled !== undefined ? {
|
|
640
|
+
sandboxEnabled: requestedSandboxEnabled
|
|
641
|
+
} : {})
|
|
642
|
+
}
|
|
643
|
+
);
|
|
644
|
+
this._setSandboxSupported(active.workspaceUri, connected.sandboxSupported);
|
|
645
|
+
const sourceEntry = getDevContainerSourceEntry(active.workspaceUri, this._remoteAgentHostService);
|
|
646
|
+
this._connectionFactory.stageConnection(
|
|
647
|
+
active.connector,
|
|
648
|
+
active.workspaceUri,
|
|
649
|
+
connected,
|
|
650
|
+
sourceEntry && resolveRemoteAgentHostEntryAuthority(sourceEntry),
|
|
651
|
+
requestedSandboxEnabled
|
|
652
|
+
);
|
|
653
|
+
this._remoteAgentHostService.reconnect(active.address, true);
|
|
654
|
+
const connectionInfo = await this._remoteAgentHostService.waitForConnection(active.address);
|
|
655
|
+
const connection = this._remoteAgentHostService.getConnection(connectionInfo.address);
|
|
656
|
+
if (!connection) {
|
|
657
|
+
throw ( new Error(( localize(
|
|
658
|
+
5303,
|
|
659
|
+
"Dev Container Agent Host connection was not available after connecting."
|
|
660
|
+
))));
|
|
661
|
+
}
|
|
662
|
+
active.provider.setConnection(connection, connected.defaultDirectory ?? connectionInfo.defaultDirectory);
|
|
663
|
+
active.provider.setConnectionStatus(connectionInfo.status);
|
|
664
|
+
active.sandboxEnabled = requestedSandboxEnabled;
|
|
665
|
+
if (( this._storedConnections.has(getComparisonKey(active.workspaceUri))) || active.provider.getSessions().length > 0) {
|
|
666
|
+
this._storeConnection(active.workspaceUri, connected.name, requestedSandboxEnabled);
|
|
667
|
+
}
|
|
668
|
+
active.state = "running";
|
|
669
|
+
this._onDidChangeAvailability.fire();
|
|
670
|
+
} catch (error) {
|
|
671
|
+
this._connectionFactory.unstageConnection(active.address);
|
|
672
|
+
await this._remoteAgentHostService.removeRemoteAgentHost(active.address);
|
|
673
|
+
active.state = previousState;
|
|
674
|
+
throw error;
|
|
675
|
+
}
|
|
676
|
+
}
|
|
677
|
+
async _disconnectActiveTransport(active) {
|
|
678
|
+
this._connectionFactory.unstageConnection(active.address);
|
|
679
|
+
active.provider.clearConnection();
|
|
680
|
+
active.provider.setConnectionStatus(RemoteAgentHostConnectionStatus.disconnected);
|
|
681
|
+
await this._remoteAgentHostService.removeRemoteAgentHost(active.address);
|
|
682
|
+
}
|
|
385
683
|
_isConnectedOrReconnecting(address) {
|
|
386
684
|
return ( this._remoteAgentHostService.connections.some(
|
|
387
685
|
connection => connection.address === address && (RemoteAgentHostConnectionStatus.isConnected(connection.status) || RemoteAgentHostConnectionStatus.isReconnecting(connection.status))
|
|
@@ -391,6 +689,10 @@ let DevContainerAgentHostService = class DevContainerAgentHostService extends Di
|
|
|
391
689
|
for (const [key, active] of this._activeConnections) {
|
|
392
690
|
const connectionInfo = this._remoteAgentHostService.connections.find(connection => connection.address === active.address);
|
|
393
691
|
if (!connectionInfo) {
|
|
692
|
+
if (active.state !== "running") {
|
|
693
|
+
active.provider.setConnectionStatus(RemoteAgentHostConnectionStatus.disconnected);
|
|
694
|
+
continue;
|
|
695
|
+
}
|
|
394
696
|
this._activeConnections.delete(key);
|
|
395
697
|
this._connectionFactory.unstageConnection(active.address);
|
|
396
698
|
active.provider.clearConnection();
|
|
@@ -402,6 +704,10 @@ let DevContainerAgentHostService = class DevContainerAgentHostService extends Di
|
|
|
402
704
|
}
|
|
403
705
|
active.provider.setConnectionStatus(connectionInfo.status);
|
|
404
706
|
if (RemoteAgentHostConnectionStatus.isConnected(connectionInfo.status)) {
|
|
707
|
+
const sandboxSupported = this._connectionFactory.getSandboxSupported(active.address);
|
|
708
|
+
if (sandboxSupported !== active.sandboxSupported) {
|
|
709
|
+
this._setSandboxSupported(active.workspaceUri, sandboxSupported);
|
|
710
|
+
}
|
|
405
711
|
const connection = this._remoteAgentHostService.getConnection(active.address);
|
|
406
712
|
if (connection) {
|
|
407
713
|
active.provider.setConnection(connection, connectionInfo.defaultDirectory);
|
|
@@ -441,12 +747,15 @@ let DevContainerAgentHostService = class DevContainerAgentHostService extends Di
|
|
|
441
747
|
continue;
|
|
442
748
|
}
|
|
443
749
|
const uri = ( URI.parse(candidate.workspaceUri));
|
|
444
|
-
if (uri.scheme !== Schemas.file || candidate.name.length === 0) {
|
|
750
|
+
if ((uri.scheme !== Schemas.file && (uri.scheme !== AGENT_HOST_SCHEME || !uri.authority) && !findDevContainerSample(uri)) || candidate.name.length === 0) {
|
|
445
751
|
continue;
|
|
446
752
|
}
|
|
447
753
|
result.set(getComparisonKey(uri), {
|
|
448
754
|
workspaceUri: ( uri.toString()),
|
|
449
|
-
name: candidate.name
|
|
755
|
+
name: candidate.name,
|
|
756
|
+
...(candidate.sandboxEnabled !== undefined ? {
|
|
757
|
+
sandboxEnabled: candidate.sandboxEnabled
|
|
758
|
+
} : {})
|
|
450
759
|
});
|
|
451
760
|
}
|
|
452
761
|
} catch {
|
|
@@ -454,14 +763,18 @@ let DevContainerAgentHostService = class DevContainerAgentHostService extends Di
|
|
|
454
763
|
}
|
|
455
764
|
return result;
|
|
456
765
|
}
|
|
457
|
-
_storeConnection(workspaceUri, name) {
|
|
766
|
+
_storeConnection(workspaceUri, name, sandboxEnabled) {
|
|
458
767
|
const key = getComparisonKey(workspaceUri);
|
|
768
|
+
const existing = this._storedConnections.get(key);
|
|
769
|
+
const requestedSandboxEnabled = sandboxEnabled ?? this._activeConnections.get(key)?.sandboxEnabled ?? existing?.sandboxEnabled;
|
|
459
770
|
const stored = {
|
|
460
771
|
workspaceUri: ( workspaceUri.toString()),
|
|
461
|
-
name
|
|
772
|
+
name,
|
|
773
|
+
...(requestedSandboxEnabled !== undefined ? {
|
|
774
|
+
sandboxEnabled: requestedSandboxEnabled
|
|
775
|
+
} : {})
|
|
462
776
|
};
|
|
463
|
-
|
|
464
|
-
if (existing?.workspaceUri === stored.workspaceUri && existing.name === stored.name) {
|
|
777
|
+
if (existing?.workspaceUri === stored.workspaceUri && existing.name === stored.name && existing.sandboxEnabled === stored.sandboxEnabled) {
|
|
465
778
|
return;
|
|
466
779
|
}
|
|
467
780
|
this._storedConnections.set(key, stored);
|
|
@@ -483,6 +796,7 @@ let DevContainerAgentHostService = class DevContainerAgentHostService extends Di
|
|
|
483
796
|
this._providerStores.deleteAndDispose(key);
|
|
484
797
|
}
|
|
485
798
|
dispose() {
|
|
799
|
+
this._lifecycleTokenSource.cancel();
|
|
486
800
|
for (const pending of ( this._pendingConnections.values())) {
|
|
487
801
|
pending.tokenSource.cancel();
|
|
488
802
|
pending.tokenSource.dispose();
|
|
@@ -491,6 +805,6 @@ let DevContainerAgentHostService = class DevContainerAgentHostService extends Di
|
|
|
491
805
|
super.dispose();
|
|
492
806
|
}
|
|
493
807
|
};
|
|
494
|
-
DevContainerAgentHostService = ( __decorate([( __param(0, IInstantiationService)), ( __param(1, IRemoteAgentHostService)), ( __param(2, ISessionsProvidersService)), ( __param(3, IStorageService))], DevContainerAgentHostService));
|
|
808
|
+
DevContainerAgentHostService = ( __decorate([( __param(0, IInstantiationService)), ( __param(1, IRemoteAgentHostService)), ( __param(2, ISessionsProvidersService)), ( __param(3, IStorageService)), ( __param(4, IWorkspaceTrustRequestService))], DevContainerAgentHostService));
|
|
495
809
|
|
|
496
810
|
export { DevContainerAgentHostService };
|