@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
|
@@ -4,10 +4,13 @@ import { IObservable } from "@codingame/monaco-vscode-api/vscode/vs/base/common/
|
|
|
4
4
|
import { IInstantiationService } from "@codingame/monaco-vscode-api/vscode/vs/platform/instantiation/common/instantiation";
|
|
5
5
|
import { ILogService } from "@codingame/monaco-vscode-api/vscode/vs/platform/log/common/log.service";
|
|
6
6
|
import { IProductService } from "@codingame/monaco-vscode-api/vscode/vs/platform/product/common/productService.service";
|
|
7
|
+
import { IStorageService } from "@codingame/monaco-vscode-api/vscode/vs/platform/storage/common/storage.service";
|
|
7
8
|
import { AgentSessionApprovalModel } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/browser/agentSessions/agentSessionApprovalModel";
|
|
9
|
+
import { IAgentHostFilterService } from "@codingame/monaco-vscode-api/vscode/vs/sessions/services/agentHostFilter/common/agentHostFilter.service";
|
|
8
10
|
import { ISessionsService } from "@codingame/monaco-vscode-api/vscode/vs/sessions/services/sessions/browser/sessionsService.service";
|
|
9
11
|
import { ISession } from "@codingame/monaco-vscode-api/vscode/vs/sessions/services/sessions/common/session";
|
|
10
|
-
import {
|
|
12
|
+
import { ISessionsManagementService } from "@codingame/monaco-vscode-api/vscode/vs/sessions/services/sessions/common/sessionsManagement.service";
|
|
13
|
+
import { BlockedSessions, IBlockedSession } from "@codingame/monaco-vscode-api/vscode/vs/sessions/contrib/blockedSessions/browser/blockedSessions";
|
|
11
14
|
import { BlockedSessionsCIFixModel } from "./blockedSessionsCIFixModel.js";
|
|
12
15
|
import { IApprovedSession } from "@codingame/monaco-vscode-api/vscode/vs/sessions/contrib/sessions/browser/views/sessionsList";
|
|
13
16
|
/**
|
|
@@ -42,6 +45,7 @@ export declare enum RequiresInputKind {
|
|
|
42
45
|
export declare class BlockedSessionsIndicatorModel extends Disposable {
|
|
43
46
|
private readonly _sessionsService;
|
|
44
47
|
private readonly _logService;
|
|
48
|
+
private readonly _storageService;
|
|
45
49
|
/** Computes the raw set of blocked sessions (needs input / failing CI). */
|
|
46
50
|
private readonly _blockedSessionsModel;
|
|
47
51
|
/** Tracks pending tool approvals per chat; distinguishes terminal vs question. */
|
|
@@ -52,10 +56,12 @@ export declare class BlockedSessionsIndicatorModel extends Disposable {
|
|
|
52
56
|
private readonly _ciFixModel;
|
|
53
57
|
/** The CI-fix model, shared with the dropdown list so the fix action and the hide-while-fixing agree. */
|
|
54
58
|
get ciFixModel(): BlockedSessionsCIFixModel;
|
|
55
|
-
/**
|
|
59
|
+
/** Acknowledged occurrences by session id, in acknowledgement order; the latest 50 survive reloads. */
|
|
56
60
|
private readonly _ignoredBlockOccurrences;
|
|
61
|
+
private _storedIgnoredOccurrences;
|
|
62
|
+
private _writingIgnoredOccurrences;
|
|
57
63
|
/**
|
|
58
|
-
* Blocked sessions that are not visible, ignored, being fixed, or already approved.
|
|
64
|
+
* Blocked sessions in the selected host scope that are not visible, ignored, being fixed, or already approved.
|
|
59
65
|
* Visible blocked occurrences stay acknowledged after the user navigates away.
|
|
60
66
|
*/
|
|
61
67
|
readonly blockedSessions: IObservable<readonly IBlockedSession[]>;
|
|
@@ -81,7 +87,7 @@ export declare class BlockedSessionsIndicatorModel extends Disposable {
|
|
|
81
87
|
* call {@link consumePendingBlink}.
|
|
82
88
|
*/
|
|
83
89
|
readonly onDidRequestBlink: Event<void>;
|
|
84
|
-
constructor(approvalModel: AgentSessionApprovalModel | undefined, blockedSessions: BlockedSessions | undefined, ciFixModel: BlockedSessionsCIFixModel | undefined, _sessionsService: ISessionsService, instantiationService: IInstantiationService, productService: IProductService, _logService: ILogService);
|
|
90
|
+
constructor(approvalModel: AgentSessionApprovalModel | undefined, blockedSessions: BlockedSessions | undefined, ciFixModel: BlockedSessionsCIFixModel | undefined, _sessionsService: ISessionsService, instantiationService: IInstantiationService, productService: IProductService, _logService: ILogService, _storageService: IStorageService, sessionsManagementService: ISessionsManagementService, agentHostFilterService: IAgentHostFilterService);
|
|
85
91
|
/**
|
|
86
92
|
* Whether a fresh attention blink is pending. Returns `true` only when a session
|
|
87
93
|
* queued as newly blocked is still in the surfaced (visible-filtered) blocked set,
|
|
@@ -105,6 +111,9 @@ export declare class BlockedSessionsIndicatorModel extends Disposable {
|
|
|
105
111
|
* falls back to the generic "N sessions require input".
|
|
106
112
|
*/
|
|
107
113
|
getRequiresInputLabel(count: number, kind: RequiresInputKind | undefined): string;
|
|
114
|
+
private _loadIgnoredOccurrences;
|
|
115
|
+
private _setIgnoredOccurrences;
|
|
116
|
+
private _storeIgnoredOccurrences;
|
|
108
117
|
private _ignoreOccurrence;
|
|
109
118
|
private _isBlockIgnored;
|
|
110
119
|
private _getBlockOccurrenceId;
|
|
@@ -7,16 +7,24 @@ import { localize } from '@codingame/monaco-vscode-api/vscode/vs/nls';
|
|
|
7
7
|
import { IInstantiationService } from '@codingame/monaco-vscode-api/vscode/vs/platform/instantiation/common/instantiation';
|
|
8
8
|
import { ILogService } from '@codingame/monaco-vscode-api/vscode/vs/platform/log/common/log.service';
|
|
9
9
|
import { IProductService } from '@codingame/monaco-vscode-api/vscode/vs/platform/product/common/productService.service';
|
|
10
|
+
import { StorageScope, StorageTarget } from '@codingame/monaco-vscode-api/vscode/vs/platform/storage/common/storage';
|
|
11
|
+
import { IStorageService } from '@codingame/monaco-vscode-api/vscode/vs/platform/storage/common/storage.service';
|
|
10
12
|
import { AgentSessionApprovalModel, agentSessionApprovalId, AgentSessionApprovalKind } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/browser/agentSessions/agentSessionApprovalModel';
|
|
13
|
+
import { IAgentHostFilterService } from '@codingame/monaco-vscode-api/vscode/vs/sessions/services/agentHostFilter/common/agentHostFilter.service';
|
|
11
14
|
import { ISessionsService } from '@codingame/monaco-vscode-api/vscode/vs/sessions/services/sessions/browser/sessionsService.service';
|
|
12
|
-
import {
|
|
15
|
+
import { SessionStatus } from '@codingame/monaco-vscode-api/vscode/vs/sessions/services/sessions/common/session';
|
|
16
|
+
import { ISessionsManagementService } from '@codingame/monaco-vscode-api/vscode/vs/sessions/services/sessions/common/sessionsManagement.service';
|
|
17
|
+
import { BlockedSessions, BlockedSessionReason, describeBlockedSessions } from '@codingame/monaco-vscode-api/vscode/vs/sessions/contrib/blockedSessions/browser/blockedSessions';
|
|
13
18
|
import { BlockedSessionsCIFixModel } from './blockedSessionsCIFixModel.js';
|
|
14
19
|
import { getFirstApprovalAcrossChats } from '@codingame/monaco-vscode-api/vscode/vs/sessions/contrib/sessions/browser/views/sessionsList';
|
|
15
20
|
import { observableValue } from '@codingame/monaco-vscode-api/vscode/vs/base/common/observableInternal/observables/observableValue';
|
|
21
|
+
import { observableFromEvent } from '@codingame/monaco-vscode-api/vscode/vs/base/common/observableInternal/observables/observableFromEvent';
|
|
16
22
|
import { derived } from '@codingame/monaco-vscode-api/vscode/vs/base/common/observableInternal/observables/derived';
|
|
17
23
|
import { autorun } from '@codingame/monaco-vscode-api/vscode/vs/base/common/observableInternal/reactions/autorun';
|
|
18
24
|
|
|
19
25
|
const LOG_PREFIX = "[BlockedSessionsIndicator]";
|
|
26
|
+
const IGNORED_OCCURRENCES_STORAGE_KEY = "sessions.blockedIndicator.ignoredOccurrences";
|
|
27
|
+
const MAX_STORED_IGNORED_SESSIONS = 50;
|
|
20
28
|
var RequiresInputKind;
|
|
21
29
|
(function(RequiresInputKind) {
|
|
22
30
|
RequiresInputKind[RequiresInputKind["TerminalApproval"] = 0] = "TerminalApproval";
|
|
@@ -37,12 +45,18 @@ let BlockedSessionsIndicatorModel = class BlockedSessionsIndicatorModel extends
|
|
|
37
45
|
_sessionsService,
|
|
38
46
|
instantiationService,
|
|
39
47
|
productService,
|
|
40
|
-
_logService
|
|
48
|
+
_logService,
|
|
49
|
+
_storageService,
|
|
50
|
+
sessionsManagementService,
|
|
51
|
+
agentHostFilterService
|
|
41
52
|
) {
|
|
42
53
|
super();
|
|
43
54
|
this._sessionsService = _sessionsService;
|
|
44
55
|
this._logService = _logService;
|
|
56
|
+
this._storageService = _storageService;
|
|
45
57
|
this._ignoredBlockOccurrences = observableValue("ignoredBlockOccurrences", ( new Map()));
|
|
58
|
+
this._storedIgnoredOccurrences = ( new Map());
|
|
59
|
+
this._writingIgnoredOccurrences = false;
|
|
46
60
|
this._lastBlockedOccurrences = ( new Map());
|
|
47
61
|
this._pendingBlinkOccurrences = ( new Map());
|
|
48
62
|
this._onDidRequestBlink = this._register(( new Emitter()));
|
|
@@ -51,14 +65,36 @@ let BlockedSessionsIndicatorModel = class BlockedSessionsIndicatorModel extends
|
|
|
51
65
|
this._blockedSessionsModel = blockedSessions ?? this._register(instantiationService.createInstance(BlockedSessions));
|
|
52
66
|
this._ciFixModel = ciFixModel ?? this._register(instantiationService.createInstance(BlockedSessionsCIFixModel));
|
|
53
67
|
const enabled = productService.quality !== "stable";
|
|
68
|
+
this._storedIgnoredOccurrences = this._loadIgnoredOccurrences();
|
|
69
|
+
this._ignoredBlockOccurrences.set(this._storedIgnoredOccurrences, undefined);
|
|
70
|
+
if (enabled) {
|
|
71
|
+
this._storeIgnoredOccurrences(this._storedIgnoredOccurrences);
|
|
72
|
+
this._register(
|
|
73
|
+
this._storageService.onDidChangeValue(StorageScope.PROFILE, IGNORED_OCCURRENCES_STORAGE_KEY, this._store)(() => {
|
|
74
|
+
if (!this._writingIgnoredOccurrences) {
|
|
75
|
+
this._storedIgnoredOccurrences = this._loadIgnoredOccurrences();
|
|
76
|
+
this._ignoredBlockOccurrences.set(this._storedIgnoredOccurrences, undefined);
|
|
77
|
+
}
|
|
78
|
+
})
|
|
79
|
+
);
|
|
80
|
+
}
|
|
81
|
+
const allSessions = observableFromEvent(
|
|
82
|
+
this,
|
|
83
|
+
sessionsManagementService.onDidChangeSessions,
|
|
84
|
+
() => sessionsManagementService.getSessions()
|
|
85
|
+
);
|
|
86
|
+
const scopedProviderIds = observableFromEvent(
|
|
87
|
+
this,
|
|
88
|
+
agentHostFilterService.onDidChange,
|
|
89
|
+
() => agentHostFilterService.selectedHost?.providerIds
|
|
90
|
+
);
|
|
54
91
|
this._logService.trace(`${LOG_PREFIX} created (enabled: ${enabled})`);
|
|
55
|
-
this._register(toDisposable(() => this._logService.trace(
|
|
56
|
-
`${LOG_PREFIX} disposed, discarding ${this._ignoredBlockOccurrences.get().size} acknowledged occurrence(s)`
|
|
57
|
-
)));
|
|
92
|
+
this._register(toDisposable(() => this._logService.trace(`${LOG_PREFIX} disposed`)));
|
|
58
93
|
this.blockedSessions = derived(this, reader => {
|
|
59
94
|
if (!enabled) {
|
|
60
95
|
return [];
|
|
61
96
|
}
|
|
97
|
+
const providerIds = scopedProviderIds.read(reader);
|
|
62
98
|
const visibleSessionIds = ( new Set());
|
|
63
99
|
for (const session of this._sessionsService.visibleSessions.read(reader)) {
|
|
64
100
|
if (session) {
|
|
@@ -67,7 +103,9 @@ let BlockedSessionsIndicatorModel = class BlockedSessionsIndicatorModel extends
|
|
|
67
103
|
}
|
|
68
104
|
const ignoredOccurrences = this._ignoredBlockOccurrences.read(reader);
|
|
69
105
|
const ciFixHidden = this._ciFixModel.hiddenSessions.read(reader);
|
|
70
|
-
return this._blockedSessionsModel.blockedSessionsWithReasons.read(reader).filter(
|
|
106
|
+
return this._blockedSessionsModel.blockedSessionsWithReasons.read(reader).filter(
|
|
107
|
+
blocked => (!providerIds || providerIds.includes(blocked.session.providerId)) && !( visibleSessionIds.has(blocked.session.sessionId)) && !( ciFixHidden.has(blocked.session.sessionId)) && !this._isBlockIgnored(blocked, ignoredOccurrences, reader)
|
|
108
|
+
);
|
|
71
109
|
});
|
|
72
110
|
this.requiresInputKind = derived(this, reader => {
|
|
73
111
|
const blocked = this.blockedSessions.read(reader);
|
|
@@ -90,6 +128,7 @@ let BlockedSessionsIndicatorModel = class BlockedSessionsIndicatorModel extends
|
|
|
90
128
|
}
|
|
91
129
|
return common;
|
|
92
130
|
});
|
|
131
|
+
let observedInputSessions = ( new Map());
|
|
93
132
|
this._register(autorun(reader => {
|
|
94
133
|
if (!enabled) {
|
|
95
134
|
return;
|
|
@@ -100,9 +139,25 @@ let BlockedSessionsIndicatorModel = class BlockedSessionsIndicatorModel extends
|
|
|
100
139
|
this._sessionsService.visibleSessions.read(reader).filter(session => session !== undefined).map(session => session.sessionId)
|
|
101
140
|
));
|
|
102
141
|
const ignoredOccurrences = this._ignoredBlockOccurrences.read(reader);
|
|
142
|
+
const sessionsById = ( new Map(
|
|
143
|
+
ignoredOccurrences.size > 0 ? allSessions.read(reader).map(session => [session.sessionId, session]) : []
|
|
144
|
+
));
|
|
103
145
|
const next = ( new Map(ignoredOccurrences));
|
|
146
|
+
const nextObservedInputSessions = ( new Map());
|
|
104
147
|
let changed = false;
|
|
105
148
|
for (const [sessionId, acknowledged] of ignoredOccurrences) {
|
|
149
|
+
const session = sessionsById.get(sessionId);
|
|
150
|
+
if (session?.isArchived.read(reader)) {
|
|
151
|
+
next.delete(sessionId);
|
|
152
|
+
changed = true;
|
|
153
|
+
this._logService.trace(`${LOG_PREFIX} releasing acknowledgement of ${sessionId}: archived`);
|
|
154
|
+
continue;
|
|
155
|
+
}
|
|
156
|
+
const connectionStatus = session?.remoteConnectionStatus?.read(reader);
|
|
157
|
+
const connected = !connectionStatus || connectionStatus.kind === "connected";
|
|
158
|
+
if (session && connected && (session.status.read(reader) === SessionStatus.NeedsInput || observedInputSessions.get(sessionId) === session)) {
|
|
159
|
+
nextObservedInputSessions.set(sessionId, session);
|
|
160
|
+
}
|
|
106
161
|
const blockedSession = blockedById.get(sessionId);
|
|
107
162
|
if (blockedSession) {
|
|
108
163
|
const occurrenceId = this._getBlockOccurrenceId(blockedSession, reader, acknowledged.occurrenceId);
|
|
@@ -115,6 +170,9 @@ let BlockedSessionsIndicatorModel = class BlockedSessionsIndicatorModel extends
|
|
|
115
170
|
}
|
|
116
171
|
continue;
|
|
117
172
|
}
|
|
173
|
+
if (!session || !connected || nextObservedInputSessions.get(sessionId) !== session || session.status.read(reader) === SessionStatus.NeedsInput) {
|
|
174
|
+
continue;
|
|
175
|
+
}
|
|
118
176
|
if (acknowledged.reason === BlockedSessionReason.FailingCI) {
|
|
119
177
|
this._logService.trace(
|
|
120
178
|
`${LOG_PREFIX} keeping acknowledgement of ${sessionId} (${acknowledged.occurrenceId}) while it is not reported as blocked`
|
|
@@ -134,6 +192,7 @@ let BlockedSessionsIndicatorModel = class BlockedSessionsIndicatorModel extends
|
|
|
134
192
|
}
|
|
135
193
|
const occurrenceId = this._getBlockOccurrenceId(blockedSession, reader, next.get(sessionId)?.occurrenceId);
|
|
136
194
|
if (next.get(sessionId)?.occurrenceId !== occurrenceId) {
|
|
195
|
+
next.delete(sessionId);
|
|
137
196
|
next.set(sessionId, {
|
|
138
197
|
occurrenceId,
|
|
139
198
|
reason: blockedSession.reason
|
|
@@ -144,8 +203,9 @@ let BlockedSessionsIndicatorModel = class BlockedSessionsIndicatorModel extends
|
|
|
144
203
|
);
|
|
145
204
|
}
|
|
146
205
|
}
|
|
206
|
+
observedInputSessions = nextObservedInputSessions;
|
|
147
207
|
if (changed) {
|
|
148
|
-
this.
|
|
208
|
+
this._setIgnoredOccurrences(next);
|
|
149
209
|
}
|
|
150
210
|
}));
|
|
151
211
|
this._register(autorun(reader => {
|
|
@@ -163,14 +223,11 @@ let BlockedSessionsIndicatorModel = class BlockedSessionsIndicatorModel extends
|
|
|
163
223
|
));
|
|
164
224
|
const previousOccurrences = this._lastBlockedOccurrences;
|
|
165
225
|
this._lastBlockedOccurrences = currentOccurrences;
|
|
166
|
-
const
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
visibleSessionIds.add(session.sessionId);
|
|
170
|
-
}
|
|
171
|
-
}
|
|
226
|
+
const surfacedSessionIds = ( new Set(
|
|
227
|
+
this.blockedSessions.read(reader).map(blocked => blocked.session.sessionId)
|
|
228
|
+
));
|
|
172
229
|
for (const [sessionId, occurrenceId] of this._pendingBlinkOccurrences) {
|
|
173
|
-
if (currentOccurrences.get(sessionId) !== occurrenceId || (
|
|
230
|
+
if (currentOccurrences.get(sessionId) !== occurrenceId || !( surfacedSessionIds.has(sessionId))) {
|
|
174
231
|
this._pendingBlinkOccurrences.delete(sessionId);
|
|
175
232
|
}
|
|
176
233
|
}
|
|
@@ -178,7 +235,7 @@ let BlockedSessionsIndicatorModel = class BlockedSessionsIndicatorModel extends
|
|
|
178
235
|
for (const blocked of modelBlocked) {
|
|
179
236
|
const sessionId = blocked.session.sessionId;
|
|
180
237
|
const occurrenceId = currentOccurrences.get(sessionId);
|
|
181
|
-
if (previousOccurrences.get(sessionId) !== occurrenceId &&
|
|
238
|
+
if (previousOccurrences.get(sessionId) !== occurrenceId && ( surfacedSessionIds.has(sessionId))) {
|
|
182
239
|
this._pendingBlinkOccurrences.set(sessionId, occurrenceId);
|
|
183
240
|
queued = true;
|
|
184
241
|
this._logService.trace(`${LOG_PREFIX} queued attention blink for ${sessionId} (${occurrenceId})`);
|
|
@@ -240,13 +297,14 @@ let BlockedSessionsIndicatorModel = class BlockedSessionsIndicatorModel extends
|
|
|
240
297
|
for (const blocked of blockedSessions) {
|
|
241
298
|
const sessionId = blocked.session.sessionId;
|
|
242
299
|
const occurrenceId = this._getBlockOccurrenceId(blocked, undefined, next.get(sessionId)?.occurrenceId);
|
|
300
|
+
next.delete(sessionId);
|
|
243
301
|
next.set(sessionId, {
|
|
244
302
|
occurrenceId,
|
|
245
303
|
reason: blocked.reason
|
|
246
304
|
});
|
|
247
305
|
this._logService.trace(`${LOG_PREFIX} ignoring ${sessionId} (${occurrenceId}): ignore all`);
|
|
248
306
|
}
|
|
249
|
-
this.
|
|
307
|
+
this._setIgnoredOccurrences(next);
|
|
250
308
|
}
|
|
251
309
|
dismissApproval(approved) {
|
|
252
310
|
const blocked = this._blockedSessionsModel.blockedSessionsWithReasons.get().find(entry => entry.session.sessionId === approved.session.sessionId);
|
|
@@ -258,22 +316,97 @@ let BlockedSessionsIndicatorModel = class BlockedSessionsIndicatorModel extends
|
|
|
258
316
|
getRequiresInputLabel(count, kind) {
|
|
259
317
|
switch (kind) {
|
|
260
318
|
case RequiresInputKind.TerminalApproval:
|
|
261
|
-
return count === 1 ? ( localize(
|
|
319
|
+
return count === 1 ? ( localize(5749, "1 session requires terminal approval")) : ( localize(5750, "{0} sessions require terminal approval", count));
|
|
262
320
|
case RequiresInputKind.Question:
|
|
263
|
-
return count === 1 ? ( localize(
|
|
321
|
+
return count === 1 ? ( localize(5751, "1 session has a question")) : ( localize(5752, "{0} sessions have questions", count));
|
|
264
322
|
case RequiresInputKind.FailingCI:
|
|
265
|
-
return count === 1 ? ( localize(
|
|
323
|
+
return count === 1 ? ( localize(5753, "1 session is failing CI")) : ( localize(5754, "{0} sessions are failing CI", count));
|
|
266
324
|
default:
|
|
267
|
-
return count === 1 ? ( localize(
|
|
325
|
+
return count === 1 ? ( localize(5755, "1 session requires input")) : ( localize(5756, "{0} sessions require input", count));
|
|
326
|
+
}
|
|
327
|
+
}
|
|
328
|
+
_loadIgnoredOccurrences() {
|
|
329
|
+
const raw = this._storageService.get(IGNORED_OCCURRENCES_STORAGE_KEY, StorageScope.PROFILE);
|
|
330
|
+
if (raw === undefined) {
|
|
331
|
+
return ( new Map());
|
|
332
|
+
}
|
|
333
|
+
try {
|
|
334
|
+
const parsed = JSON.parse(raw);
|
|
335
|
+
if (!Array.isArray(parsed)) {
|
|
336
|
+
throw ( new Error("Expected an array of ignored blocked occurrences"));
|
|
337
|
+
}
|
|
338
|
+
const occurrences = ( new Map());
|
|
339
|
+
const entries = parsed;
|
|
340
|
+
for (const entry of entries) {
|
|
341
|
+
if (!Array.isArray(entry) || entry.length !== 2 || typeof entry[0] !== "string") {
|
|
342
|
+
throw ( new Error("Invalid ignored blocked occurrence"));
|
|
343
|
+
}
|
|
344
|
+
const occurrence = entry[1];
|
|
345
|
+
if (!occurrence || typeof occurrence !== "object" || typeof occurrence.occurrenceId !== "string" || (occurrence.reason !== BlockedSessionReason.NeedsInput && occurrence.reason !== BlockedSessionReason.FailingCI)) {
|
|
346
|
+
throw ( new Error("Invalid ignored blocked occurrence"));
|
|
347
|
+
}
|
|
348
|
+
occurrences.delete(entry[0]);
|
|
349
|
+
occurrences.set(entry[0], {
|
|
350
|
+
occurrenceId: occurrence.occurrenceId,
|
|
351
|
+
reason: occurrence.reason
|
|
352
|
+
});
|
|
353
|
+
}
|
|
354
|
+
return ( new Map([...occurrences].slice(-MAX_STORED_IGNORED_SESSIONS)));
|
|
355
|
+
} catch (error) {
|
|
356
|
+
this._logService.warn(`${LOG_PREFIX} Failed to load ignored occurrences`, error);
|
|
357
|
+
return ( new Map());
|
|
358
|
+
}
|
|
359
|
+
}
|
|
360
|
+
_setIgnoredOccurrences(next) {
|
|
361
|
+
const previous = this._ignoredBlockOccurrences.get();
|
|
362
|
+
const stored = ( new Map(this._loadIgnoredOccurrences()));
|
|
363
|
+
for (const [sessionId, occurrence] of previous) {
|
|
364
|
+
if (!( next.has(sessionId)) && stored.get(sessionId)?.occurrenceId === occurrence.occurrenceId) {
|
|
365
|
+
stored.delete(sessionId);
|
|
366
|
+
}
|
|
367
|
+
}
|
|
368
|
+
for (const [sessionId, occurrence] of next) {
|
|
369
|
+
if (occurrence !== previous.get(sessionId)) {
|
|
370
|
+
stored.delete(sessionId);
|
|
371
|
+
stored.set(sessionId, occurrence);
|
|
372
|
+
}
|
|
373
|
+
}
|
|
374
|
+
const reconciled = ( new Map(next));
|
|
375
|
+
for (const sessionId of ( this._storedIgnoredOccurrences.keys())) {
|
|
376
|
+
reconciled.delete(sessionId);
|
|
377
|
+
}
|
|
378
|
+
for (const [sessionId, occurrence] of stored) {
|
|
379
|
+
reconciled.set(sessionId, occurrence);
|
|
380
|
+
}
|
|
381
|
+
this._storeIgnoredOccurrences(stored);
|
|
382
|
+
this._ignoredBlockOccurrences.set(reconciled, undefined);
|
|
383
|
+
}
|
|
384
|
+
_storeIgnoredOccurrences(occurrences) {
|
|
385
|
+
this._storedIgnoredOccurrences = ( new Map([...occurrences].slice(-MAX_STORED_IGNORED_SESSIONS)));
|
|
386
|
+
this._writingIgnoredOccurrences = true;
|
|
387
|
+
try {
|
|
388
|
+
if (this._storedIgnoredOccurrences.size === 0) {
|
|
389
|
+
this._storageService.remove(IGNORED_OCCURRENCES_STORAGE_KEY, StorageScope.PROFILE);
|
|
390
|
+
} else {
|
|
391
|
+
this._storageService.store(
|
|
392
|
+
IGNORED_OCCURRENCES_STORAGE_KEY,
|
|
393
|
+
JSON.stringify([...this._storedIgnoredOccurrences]),
|
|
394
|
+
StorageScope.PROFILE,
|
|
395
|
+
StorageTarget.MACHINE
|
|
396
|
+
);
|
|
397
|
+
}
|
|
398
|
+
} finally {
|
|
399
|
+
this._writingIgnoredOccurrences = false;
|
|
268
400
|
}
|
|
269
401
|
}
|
|
270
402
|
_ignoreOccurrence(blocked, occurrenceId) {
|
|
271
403
|
const next = ( new Map(this._ignoredBlockOccurrences.get()));
|
|
404
|
+
next.delete(blocked.session.sessionId);
|
|
272
405
|
next.set(blocked.session.sessionId, {
|
|
273
406
|
occurrenceId,
|
|
274
407
|
reason: blocked.reason
|
|
275
408
|
});
|
|
276
|
-
this.
|
|
409
|
+
this._setIgnoredOccurrences(next);
|
|
277
410
|
this._logService.trace(`${LOG_PREFIX} ignoring ${blocked.session.sessionId} (${occurrenceId})`);
|
|
278
411
|
}
|
|
279
412
|
_isBlockIgnored(blocked, ignoredOccurrences, reader) {
|
|
@@ -315,6 +448,6 @@ let BlockedSessionsIndicatorModel = class BlockedSessionsIndicatorModel extends
|
|
|
315
448
|
}
|
|
316
449
|
}
|
|
317
450
|
};
|
|
318
|
-
BlockedSessionsIndicatorModel = ( __decorate([( __param(3, ISessionsService)), ( __param(4, IInstantiationService)), ( __param(5, IProductService)), ( __param(6, ILogService))], BlockedSessionsIndicatorModel));
|
|
451
|
+
BlockedSessionsIndicatorModel = ( __decorate([( __param(3, ISessionsService)), ( __param(4, IInstantiationService)), ( __param(5, IProductService)), ( __param(6, ILogService)), ( __param(7, IStorageService)), ( __param(8, ISessionsManagementService)), ( __param(9, IAgentHostFilterService))], BlockedSessionsIndicatorModel));
|
|
319
452
|
|
|
320
453
|
export { BlockedSessionsIndicatorModel, RequiresInputKind };
|
|
@@ -23,7 +23,7 @@ function registerBlockedSessionsItemActions() {
|
|
|
23
23
|
return combinedDisposable(MenuRegistry.appendMenuItem(Menus.BlockedSessionsItem, {
|
|
24
24
|
command: {
|
|
25
25
|
id: IGNORE_INPUT_NEEDED_COMMAND_ID,
|
|
26
|
-
title: ( localize(
|
|
26
|
+
title: ( localize(5757, "Ignore Needs Attention Alert")),
|
|
27
27
|
icon: Codicon.bellSlash
|
|
28
28
|
},
|
|
29
29
|
group: "navigation",
|
|
@@ -32,7 +32,7 @@ function registerBlockedSessionsItemActions() {
|
|
|
32
32
|
}), MenuRegistry.appendMenuItem(Menus.BlockedSessionsItem, {
|
|
33
33
|
command: {
|
|
34
34
|
id: IGNORE_CI_FAILURE_COMMAND_ID,
|
|
35
|
-
title: ( localize(
|
|
35
|
+
title: ( localize(5758, "Ignore CI Failure")),
|
|
36
36
|
icon: Codicon.bellSlash
|
|
37
37
|
},
|
|
38
38
|
group: "navigation",
|
|
@@ -54,7 +54,7 @@ let BlockedSessionsList = class BlockedSessionsList extends Disposable {
|
|
|
54
54
|
const element = append(container, $(".agent-sessions-blocked-list"));
|
|
55
55
|
const header = append(element, $(".agent-sessions-blocked-list-header"));
|
|
56
56
|
const title = append(header, $(".agent-sessions-blocked-list-title"));
|
|
57
|
-
title.textContent = ( localize(
|
|
57
|
+
title.textContent = ( localize(5759, "Sessions needing attention"));
|
|
58
58
|
const headerActions = append(header, $(".agent-sessions-blocked-list-header-actions"));
|
|
59
59
|
this._register(
|
|
60
60
|
instantiationService.createInstance(MenuWorkbenchToolBar, headerActions, Menus.BlockedSessionsHeader, {
|
|
@@ -64,7 +64,7 @@ let BlockedSessionsList = class BlockedSessionsList extends Disposable {
|
|
|
64
64
|
showAllSessions: options.onShowAllSessions,
|
|
65
65
|
ignoreAllSessions: () => {
|
|
66
66
|
options.onIgnoreAllSessions();
|
|
67
|
-
status(( localize(
|
|
67
|
+
status(( localize(5760, "All current blocked sessions were ignored.")));
|
|
68
68
|
},
|
|
69
69
|
close: options.onClose
|
|
70
70
|
}
|
|
@@ -84,12 +84,16 @@ let BlockedSessionsList = class BlockedSessionsList extends Disposable {
|
|
|
84
84
|
ciFixModel: options.ciFixModel,
|
|
85
85
|
approvalRowMaxLines: BLOCKED_LIST_APPROVAL_ROW_MAX_LINES,
|
|
86
86
|
toolbarMenuId: Menus.BlockedSessionsItem,
|
|
87
|
+
toolbarTelemetrySource: "blockedSessionsList.row",
|
|
87
88
|
onToolbarAction: (action, session) => {
|
|
88
89
|
if (action.id !== IGNORE_INPUT_NEEDED_COMMAND_ID && action.id !== IGNORE_CI_FAILURE_COMMAND_ID) {
|
|
89
90
|
return false;
|
|
90
91
|
}
|
|
91
92
|
options.onIgnoreSession(session);
|
|
92
|
-
status(action.id === IGNORE_INPUT_NEEDED_COMMAND_ID ? ( localize(
|
|
93
|
+
status(action.id === IGNORE_INPUT_NEEDED_COMMAND_ID ? ( localize(
|
|
94
|
+
5761,
|
|
95
|
+
"Needs attention alert ignored until this session needs attention again."
|
|
96
|
+
)) : ( localize(5762, "CI failure ignored until this session has another CI failure.")));
|
|
93
97
|
return true;
|
|
94
98
|
}
|
|
95
99
|
})
|
|
@@ -69,6 +69,7 @@
|
|
|
69
69
|
.automations-cards-state,
|
|
70
70
|
.automations-cards-partial-state,
|
|
71
71
|
.automations-templates,
|
|
72
|
+
.automations-history-state,
|
|
72
73
|
.automations-history {
|
|
73
74
|
width: 100%;
|
|
74
75
|
max-width: 900px;
|
|
@@ -130,6 +131,7 @@
|
|
|
130
131
|
|
|
131
132
|
/* Individual Card */
|
|
132
133
|
.automations-card {
|
|
134
|
+
position: relative;
|
|
133
135
|
display: flex;
|
|
134
136
|
flex-direction: row;
|
|
135
137
|
align-items: flex-start;
|
|
@@ -166,6 +168,7 @@
|
|
|
166
168
|
font: inherit;
|
|
167
169
|
text-align: left;
|
|
168
170
|
cursor: pointer;
|
|
171
|
+
align-self: stretch;
|
|
169
172
|
}
|
|
170
173
|
|
|
171
174
|
.monaco-workbench .automations-card-main:focus {
|
|
@@ -178,24 +181,25 @@
|
|
|
178
181
|
flex-direction: row;
|
|
179
182
|
align-items: center;
|
|
180
183
|
gap: 8px;
|
|
184
|
+
min-height: var(--vscode-spacing-size240);
|
|
185
|
+
padding-right: calc(2 * var(--vscode-spacing-size240) + var(--vscode-spacing-size40) + var(--vscode-spacing-size80));
|
|
181
186
|
}
|
|
182
187
|
|
|
183
188
|
.automations-card-name-text {
|
|
184
189
|
flex: 1 1 0;
|
|
185
190
|
min-width: 0;
|
|
186
|
-
font-size:
|
|
187
|
-
font-weight:
|
|
191
|
+
font-size: var(--vscode-fontSize-heading3);
|
|
192
|
+
font-weight: var(--vscode-fontWeight-semiBold);
|
|
188
193
|
color: var(--vscode-foreground);
|
|
189
194
|
overflow: hidden;
|
|
190
195
|
white-space: nowrap;
|
|
191
196
|
text-overflow: ellipsis;
|
|
192
197
|
}
|
|
193
198
|
|
|
194
|
-
.automations-card-disabled-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
color: var(--vscode-descriptionForeground);
|
|
199
|
+
.automations-card.automation-disabled .automations-card-name-text,
|
|
200
|
+
.automations-card.automation-disabled .automations-card-prompt,
|
|
201
|
+
.automations-card.automation-disabled .automations-card-meta {
|
|
202
|
+
color: var(--vscode-disabledForeground);
|
|
199
203
|
}
|
|
200
204
|
|
|
201
205
|
/* Card Metadata */
|
|
@@ -204,12 +208,31 @@
|
|
|
204
208
|
flex-direction: row;
|
|
205
209
|
align-items: center;
|
|
206
210
|
gap: 6px;
|
|
207
|
-
font-size:
|
|
211
|
+
font-size: var(--vscode-fontSize-label1);
|
|
208
212
|
color: var(--vscode-descriptionForeground);
|
|
209
213
|
min-width: 0;
|
|
214
|
+
margin-top: auto;
|
|
215
|
+
padding-top: var(--vscode-spacing-size80);
|
|
216
|
+
}
|
|
217
|
+
|
|
218
|
+
.automations-card-meta-item {
|
|
219
|
+
display: flex;
|
|
220
|
+
align-items: center;
|
|
221
|
+
gap: var(--vscode-spacing-size60);
|
|
222
|
+
min-width: 0;
|
|
223
|
+
}
|
|
224
|
+
|
|
225
|
+
.automations-card-meta-item > .codicon {
|
|
226
|
+
font-size: var(--vscode-codiconFontSize);
|
|
227
|
+
color: inherit;
|
|
228
|
+
flex-shrink: 0;
|
|
210
229
|
}
|
|
211
230
|
|
|
212
231
|
.automations-card-folder {
|
|
232
|
+
flex: 1;
|
|
233
|
+
}
|
|
234
|
+
|
|
235
|
+
.automations-card-meta-label {
|
|
213
236
|
min-width: 0;
|
|
214
237
|
overflow: hidden;
|
|
215
238
|
white-space: nowrap;
|
|
@@ -218,7 +241,6 @@
|
|
|
218
241
|
|
|
219
242
|
.automations-card-meta-item + .automations-card-meta-item::before {
|
|
220
243
|
content: '·';
|
|
221
|
-
margin-right: 6px;
|
|
222
244
|
opacity: 0.6;
|
|
223
245
|
}
|
|
224
246
|
|
|
@@ -232,9 +254,10 @@
|
|
|
232
254
|
|
|
233
255
|
/* Card Prompt */
|
|
234
256
|
.automations-card-prompt {
|
|
235
|
-
font-size:
|
|
257
|
+
font-size: var(--vscode-fontSize-body1);
|
|
236
258
|
color: var(--vscode-descriptionForeground);
|
|
237
|
-
margin-top:
|
|
259
|
+
margin-top: var(--vscode-spacing-size20);
|
|
260
|
+
line-height: 1.4;
|
|
238
261
|
overflow: hidden;
|
|
239
262
|
text-overflow: ellipsis;
|
|
240
263
|
word-break: break-word;
|
|
@@ -245,6 +268,9 @@
|
|
|
245
268
|
|
|
246
269
|
/* Card Action Buttons (icon-only, matching native pattern) */
|
|
247
270
|
.automations-card-actions {
|
|
271
|
+
position: absolute;
|
|
272
|
+
top: var(--vscode-spacing-size120);
|
|
273
|
+
right: var(--vscode-spacing-size160);
|
|
248
274
|
display: flex;
|
|
249
275
|
flex-direction: row;
|
|
250
276
|
gap: 4px;
|
|
@@ -296,8 +322,8 @@
|
|
|
296
322
|
align-items: center;
|
|
297
323
|
justify-content: center;
|
|
298
324
|
text-align: center;
|
|
299
|
-
padding:
|
|
300
|
-
gap:
|
|
325
|
+
padding: var(--vscode-spacing-size320) var(--vscode-spacing-size200);
|
|
326
|
+
gap: var(--vscode-spacing-size80);
|
|
301
327
|
flex: 1;
|
|
302
328
|
}
|
|
303
329
|
|
|
@@ -309,9 +335,9 @@
|
|
|
309
335
|
}
|
|
310
336
|
|
|
311
337
|
.automations-cards-empty-description {
|
|
312
|
-
font-size:
|
|
338
|
+
font-size: var(--vscode-fontSize-body1);
|
|
313
339
|
color: var(--vscode-descriptionForeground);
|
|
314
|
-
margin: 0 0
|
|
340
|
+
margin: 0 0 var(--vscode-spacing-size80);
|
|
315
341
|
max-width: 320px;
|
|
316
342
|
line-height: 1.4;
|
|
317
343
|
}
|
|
@@ -365,11 +391,29 @@
|
|
|
365
391
|
max-width: 180px;
|
|
366
392
|
}
|
|
367
393
|
|
|
394
|
+
.automations-cards-unavailable .automations-cards-state-description,
|
|
395
|
+
.automations-cards-partial-state-message {
|
|
396
|
+
white-space: pre-line;
|
|
397
|
+
}
|
|
398
|
+
|
|
399
|
+
.automations-unavailable-reasons {
|
|
400
|
+
margin: 0 auto;
|
|
401
|
+
padding: 0 0 0 var(--vscode-spacing-size200);
|
|
402
|
+
width: fit-content;
|
|
403
|
+
max-width: 100%;
|
|
404
|
+
box-sizing: border-box;
|
|
405
|
+
text-align: left;
|
|
406
|
+
}
|
|
407
|
+
|
|
408
|
+
.automations-unavailable-reasons > li + li {
|
|
409
|
+
margin-top: var(--vscode-spacing-size40);
|
|
410
|
+
}
|
|
411
|
+
|
|
368
412
|
.automations-cards-partial-state {
|
|
369
413
|
display: flex;
|
|
370
414
|
align-items: center;
|
|
371
415
|
gap: var(--vscode-spacing-size80);
|
|
372
|
-
margin-
|
|
416
|
+
margin-top: var(--vscode-spacing-size120);
|
|
373
417
|
padding: var(--vscode-spacing-size80) var(--vscode-spacing-size120);
|
|
374
418
|
border: var(--vscode-strokeThickness) solid var(--vscode-editorWidget-border);
|
|
375
419
|
border-radius: var(--vscode-cornerRadius-small);
|
|
@@ -526,8 +570,7 @@
|
|
|
526
570
|
|
|
527
571
|
.automations-template-card-badge,
|
|
528
572
|
.automations-template-card-source,
|
|
529
|
-
.automations-template-card-schedule
|
|
530
|
-
.automations-template-card-prompt {
|
|
573
|
+
.automations-template-card-schedule {
|
|
531
574
|
font-size: var(--vscode-fontSize-label1);
|
|
532
575
|
color: var(--vscode-descriptionForeground);
|
|
533
576
|
}
|
|
@@ -543,6 +586,8 @@
|
|
|
543
586
|
}
|
|
544
587
|
|
|
545
588
|
.automations-template-card-prompt {
|
|
589
|
+
font-size: var(--vscode-fontSize-body1);
|
|
590
|
+
color: var(--vscode-descriptionForeground);
|
|
546
591
|
display: -webkit-box;
|
|
547
592
|
overflow: hidden;
|
|
548
593
|
margin-top: var(--vscode-spacing-size20);
|
|
@@ -553,6 +598,11 @@
|
|
|
553
598
|
-webkit-box-orient: vertical;
|
|
554
599
|
}
|
|
555
600
|
|
|
601
|
+
.automations-template-card-schedule {
|
|
602
|
+
margin-top: auto;
|
|
603
|
+
padding-top: var(--vscode-spacing-size80);
|
|
604
|
+
}
|
|
605
|
+
|
|
556
606
|
/* Run History */
|
|
557
607
|
.automations-history {
|
|
558
608
|
margin-top: 32px;
|
|
@@ -601,21 +651,36 @@
|
|
|
601
651
|
border-radius: 0;
|
|
602
652
|
}
|
|
603
653
|
|
|
604
|
-
.automations-history-group-runs
|
|
605
|
-
.automations-history-group-runs .automations-run-session-list:not(:empty) .monaco-list-row:not(:first-child)
|
|
606
|
-
.automations-history-group-runs .automations-temporary-runs:not(:empty) + .automations-run-session-list:not(:empty) {
|
|
654
|
+
.automations-history-group-runs > :not(:first-child),
|
|
655
|
+
.automations-history-group-runs .automations-run-session-list:not(:empty) .monaco-list-row:not(:first-child) {
|
|
607
656
|
border-top: var(--vscode-strokeThickness) solid var(--vscode-editorWidget-border);
|
|
608
657
|
}
|
|
609
658
|
|
|
610
|
-
.automations-temporary-runs:empty {
|
|
611
|
-
display: none;
|
|
612
|
-
}
|
|
613
|
-
|
|
614
659
|
.automations-temporary-run {
|
|
615
660
|
height: 54px;
|
|
616
661
|
width: 100%;
|
|
617
662
|
}
|
|
618
663
|
|
|
664
|
+
.automations-history-state {
|
|
665
|
+
margin-top: var(--vscode-spacing-size160);
|
|
666
|
+
color: var(--vscode-descriptionForeground);
|
|
667
|
+
font-size: var(--vscode-fontSize-label1);
|
|
668
|
+
}
|
|
669
|
+
|
|
670
|
+
.automations-temporary-run .automations-run-actions {
|
|
671
|
+
flex-shrink: 0;
|
|
672
|
+
margin-left: var(--vscode-spacing-size80);
|
|
673
|
+
opacity: 0;
|
|
674
|
+
pointer-events: none;
|
|
675
|
+
}
|
|
676
|
+
|
|
677
|
+
.automations-temporary-run:hover .automations-run-actions,
|
|
678
|
+
.automations-temporary-run:focus-within .automations-run-actions,
|
|
679
|
+
.agent-sessions-workbench.phone-layout .automations-temporary-run .automations-run-actions {
|
|
680
|
+
opacity: 1;
|
|
681
|
+
pointer-events: auto;
|
|
682
|
+
}
|
|
683
|
+
|
|
619
684
|
.hc-black .automations-card,
|
|
620
685
|
.hc-light .automations-card,
|
|
621
686
|
.hc-black .automations-template-card,
|