@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
|
@@ -0,0 +1,559 @@
|
|
|
1
|
+
|
|
2
|
+
import { __decorate, __param } from '@codingame/monaco-vscode-api/external/tslib/tslib.es6';
|
|
3
|
+
import { Codicon } from '@codingame/monaco-vscode-api/vscode/vs/base/common/codicons';
|
|
4
|
+
import { Disposable, DisposableStore } from '@codingame/monaco-vscode-api/vscode/vs/base/common/lifecycle';
|
|
5
|
+
import '@codingame/monaco-vscode-api/vscode/vs/base/common/observableInternal/index';
|
|
6
|
+
import { isEqual } from '@codingame/monaco-vscode-api/vscode/vs/base/common/resources';
|
|
7
|
+
import { localize } from '@codingame/monaco-vscode-api/vscode/vs/nls';
|
|
8
|
+
import { IConfigurationService } from '@codingame/monaco-vscode-api/vscode/vs/platform/configuration/common/configuration.service';
|
|
9
|
+
import { ContextKeyExpr } from '@codingame/monaco-vscode-api/vscode/vs/platform/contextkey/common/contextkey';
|
|
10
|
+
import { IInstantiationService } from '@codingame/monaco-vscode-api/vscode/vs/platform/instantiation/common/instantiation';
|
|
11
|
+
import { observableConfigValue } from '@codingame/monaco-vscode-api/vscode/vs/platform/observable/common/platformObservableUtils';
|
|
12
|
+
import { ReasoningEffortConfigKey } from '@codingame/monaco-vscode-api/vscode/vs/platform/agentHost/common/reasoningEffort';
|
|
13
|
+
import { ChatContextKeys } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/actions/chatContextKeys';
|
|
14
|
+
import { isIChatSessionFileChange2 } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/chatSessionsService';
|
|
15
|
+
import { ToolDataSource } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/tools/languageModelToolsService';
|
|
16
|
+
import { ILanguageModelToolsService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/tools/languageModelToolsService.service';
|
|
17
|
+
import { SessionStatus } from '@codingame/monaco-vscode-api/vscode/vs/sessions/services/sessions/common/session';
|
|
18
|
+
import { ISessionsManagementService } from '@codingame/monaco-vscode-api/vscode/vs/sessions/services/sessions/common/sessionsManagement.service';
|
|
19
|
+
import { SessionComparisonParticipantRole, getSessionComparisonAttemptLabel, COMPARE_AGENTS_ENABLED_SETTING, SessionComparisonValidationState, SessionComparisonValidationSource, SESSION_COMPARISON_MANIFEST_LIST_MAX_ITEMS, getBoundedSessionComparisonManifestList, getBoundedSessionComparisonManifestText } from '@codingame/monaco-vscode-api/vscode/vs/sessions/services/sessions/common/sessionComparison';
|
|
20
|
+
import { ISessionComparisonService } from '@codingame/monaco-vscode-api/vscode/vs/sessions/services/sessions/common/sessionComparison.service';
|
|
21
|
+
import { hashSessionIdForTelemetry } from '@codingame/monaco-vscode-api/vscode/vs/sessions/common/sessionsTelemetry';
|
|
22
|
+
import { autorun } from '@codingame/monaco-vscode-api/vscode/vs/base/common/observableInternal/reactions/autorun';
|
|
23
|
+
|
|
24
|
+
const CompleteSessionComparisonToolId = "vscode_completeAttemptComparison";
|
|
25
|
+
const ReadSessionComparisonToolId = "vscode_readAttemptComparison";
|
|
26
|
+
const MaxExplanationLength = 240;
|
|
27
|
+
const MaxRationalePointLength = 180;
|
|
28
|
+
let ReadSessionComparisonTool = class ReadSessionComparisonTool {
|
|
29
|
+
constructor(comparisonService, sessionsManagementService) {
|
|
30
|
+
this.comparisonService = comparisonService;
|
|
31
|
+
this.sessionsManagementService = sessionsManagementService;
|
|
32
|
+
}
|
|
33
|
+
getToolData() {
|
|
34
|
+
return {
|
|
35
|
+
id: ReadSessionComparisonToolId,
|
|
36
|
+
toolReferenceName: "readAttemptComparison",
|
|
37
|
+
canBeReferencedInPrompt: true,
|
|
38
|
+
icon: Codicon.compareChanges,
|
|
39
|
+
displayName: ( localize(5651, "Read Attempt Comparison")),
|
|
40
|
+
userDescription: ( localize(5652, "Read the attempts and evidence for an active comparison")),
|
|
41
|
+
modelDescription: "Read the bounded manifest for an active implementation-attempt comparison. Use this when judging or synthesizing that comparison, before inspecting individual transcripts. It returns the original task, every attempt with a semantic lifecycle status, changed-file evidence status, change summaries, authoritative worktree locations, exact targets for get_session_context, the Judge verdict mapped to attempt numbers when available, and any additional synthesis instructions. Attempt status is one of untitled, inProgress, needsInput, completed, error, or unavailable; only completed means the attempt finished successfully. Terminal commands start in the Judge or synthesis worktree, so explicitly cd to an attempt's listed workingDirectory in every command that inspects or validates it. Read implementation code only from the listed worktrees; transcripts are for rationale or validation evidence. A Judge must review every attempt diff, use get_session_context to identify validation the attempt already completed, never rerun a validation category with a clear reported result, and run only missing targeted validation when needed. If dependencies or build artifacts are unavailable, it must record validation as unavailable without installing dependencies or substituting another validation category. A synthesis agent must resolve the verdict's conflicts and treat additional synthesis instructions as user requirements. It does not return full transcripts or submit a verdict.",
|
|
42
|
+
source: ToolDataSource.Internal,
|
|
43
|
+
when: ( ContextKeyExpr.and(ChatContextKeys.enabled)),
|
|
44
|
+
runsInWorkspace: false,
|
|
45
|
+
inputSchema: {
|
|
46
|
+
type: "object",
|
|
47
|
+
properties: {
|
|
48
|
+
comparisonId: {
|
|
49
|
+
type: "string",
|
|
50
|
+
description: "The comparison ID supplied in the Judge or synthesis prompt."
|
|
51
|
+
}
|
|
52
|
+
},
|
|
53
|
+
required: ["comparisonId"],
|
|
54
|
+
additionalProperties: false
|
|
55
|
+
}
|
|
56
|
+
};
|
|
57
|
+
}
|
|
58
|
+
async prepareToolInvocation(_context, _token) {
|
|
59
|
+
return {
|
|
60
|
+
invocationMessage: ( localize(5653, "Reading attempt comparison")),
|
|
61
|
+
pastTenseMessage: ( localize(5654, "Read attempt comparison"))
|
|
62
|
+
};
|
|
63
|
+
}
|
|
64
|
+
async invoke(invocation, _countTokens, _progress, _token) {
|
|
65
|
+
const input = parseReadInput(invocation.parameters);
|
|
66
|
+
if (!input) {
|
|
67
|
+
return toolError("The comparison manifest input is invalid.");
|
|
68
|
+
}
|
|
69
|
+
const comparison = resolveComparison(this.comparisonService, input.comparisonId);
|
|
70
|
+
if (!comparison) {
|
|
71
|
+
return toolError(`Comparison '${input.comparisonId}' does not exist.`);
|
|
72
|
+
}
|
|
73
|
+
if (!isInvokingParticipant(comparison, invocation, [
|
|
74
|
+
SessionComparisonParticipantRole.Judge,
|
|
75
|
+
SessionComparisonParticipantRole.Synthesis
|
|
76
|
+
])) {
|
|
77
|
+
return toolError(
|
|
78
|
+
"Only the Judge or synthesis session for this comparison can read its manifest."
|
|
79
|
+
);
|
|
80
|
+
}
|
|
81
|
+
const invokingSession = invocation.context?.sessionResource ? this.sessionsManagementService.getSession(invocation.context.sessionResource) : undefined;
|
|
82
|
+
const allAttemptParticipants = comparison.participants.filter(
|
|
83
|
+
participant => participant.role === SessionComparisonParticipantRole.Attempt
|
|
84
|
+
);
|
|
85
|
+
const attemptNumbers = ( new Map(
|
|
86
|
+
allAttemptParticipants.map((participant, index) => [participant.id, index + 1])
|
|
87
|
+
));
|
|
88
|
+
const attemptParticipants = allAttemptParticipants.filter(participant => participant.sessionResource);
|
|
89
|
+
const attempts = attemptParticipants.map(participant => {
|
|
90
|
+
const session = this.sessionsManagementService.getSession(participant.sessionResource);
|
|
91
|
+
const changes = session?.mainChat.get().changes.get() ?? [];
|
|
92
|
+
const changedFiles = changes.slice(0, 200).map(change => ({
|
|
93
|
+
resource: ( (isIChatSessionFileChange2(change) ? change.uri : change.modifiedUri).toString()),
|
|
94
|
+
insertions: change.insertions,
|
|
95
|
+
deletions: change.deletions
|
|
96
|
+
}));
|
|
97
|
+
const workspace = session?.workspace.get();
|
|
98
|
+
const changesSummary = session?.changesSummary?.get();
|
|
99
|
+
const sessionContextTarget = session && invokingSession && invokingSession.providerId === session.providerId ? this.sessionsManagementService.getSessionContextReference(session.mainChat.get().resource) : undefined;
|
|
100
|
+
const reasoningEffort = participant.harness.modelConfiguration?.[ReasoningEffortConfigKey];
|
|
101
|
+
const attemptNumber = attemptNumbers.get(participant.id);
|
|
102
|
+
return {
|
|
103
|
+
attemptNumber,
|
|
104
|
+
label: getSessionComparisonAttemptLabel(participant, attemptNumber),
|
|
105
|
+
harness: {
|
|
106
|
+
agent: participant.harness.label,
|
|
107
|
+
model: participant.harness.modelLabel ?? "Default",
|
|
108
|
+
reasoningEffort: typeof reasoningEffort === "string" ? reasoningEffort : "default",
|
|
109
|
+
permissions: {
|
|
110
|
+
id: participant.harness.permissionId ?? "default",
|
|
111
|
+
label: participant.harness.permissionLabel ?? "Default"
|
|
112
|
+
}
|
|
113
|
+
},
|
|
114
|
+
status: getManifestSessionStatus(session?.status.get()),
|
|
115
|
+
launchError: participant.launchError,
|
|
116
|
+
sessionContextTarget,
|
|
117
|
+
sessionContextUnavailableReason: session && !sessionContextTarget ? "Transcript follow-up is unavailable from this Judge host; use the manifest and worktree evidence." : undefined,
|
|
118
|
+
worktree: workspace ? {
|
|
119
|
+
workingDirectory: workspace.folders[0]?.workingDirectory.fsPath,
|
|
120
|
+
folders: workspace.folders.map(folder => folder.workingDirectory.fsPath)
|
|
121
|
+
} : undefined,
|
|
122
|
+
changesSummary,
|
|
123
|
+
changedFiles,
|
|
124
|
+
changedFilesStatus: changes.length > 0 ? "available" : changesSummary?.files === 0 ? "noChanges" : "unavailable",
|
|
125
|
+
changedFilesTruncated: changes.length > changedFiles.length
|
|
126
|
+
};
|
|
127
|
+
});
|
|
128
|
+
const synthesisPlan = comparison.synthesisPlan ? {
|
|
129
|
+
instructions: comparison.synthesisPlan.instructions
|
|
130
|
+
} : undefined;
|
|
131
|
+
return toolResult(JSON.stringify({
|
|
132
|
+
comparisonId: comparison.id,
|
|
133
|
+
originalTask: comparison.prompt,
|
|
134
|
+
baseBranch: comparison.branch,
|
|
135
|
+
attempts,
|
|
136
|
+
verdict: comparison.verdict ? toManifestVerdict(comparison.verdict, attemptNumbers) : undefined,
|
|
137
|
+
synthesisPlan,
|
|
138
|
+
next: "Review every completed attempt diff in its authoritative worktree and treat error as failed and inProgress or needsInput as unfinished. Terminal commands start in this Judge or synthesis worktree, not an attempt worktree: explicitly cd to the exact attempt worktree.workingDirectory in every command that inspects or validates it. When changedFilesStatus is unavailable, read the Git diff from that worktree instead. Use get_session_context with an exact attempt sessionContextTarget to identify validation the attempt already completed and for rationale or other non-code evidence; never recover implementation code or paths from a transcript. Do not rerun a validation category with a clear reported result. Run only missing targeted validation when needed. If required dependencies or build artifacts are unavailable, record validation as unavailable without installing or building dependencies or substituting another validation category. Record each validation category as a consistent state and source pair. Submit verdict references using the manifest attemptNumber values; do not copy participant or session UUIDs. During synthesis, resolve every reported conflict and treat synthesisPlan instructions as explicit user requirements. Resolve dependencies coherently rather than copying hunks mechanically. Do not modify any attempt, inspect another checkout, discover sessions, guess references, or create sessions."
|
|
139
|
+
}));
|
|
140
|
+
}
|
|
141
|
+
};
|
|
142
|
+
ReadSessionComparisonTool = ( __decorate([( __param(0, ISessionComparisonService)), ( __param(1, ISessionsManagementService))], ReadSessionComparisonTool));
|
|
143
|
+
let CompleteSessionComparisonTool = class CompleteSessionComparisonTool {
|
|
144
|
+
constructor(comparisonService) {
|
|
145
|
+
this.comparisonService = comparisonService;
|
|
146
|
+
}
|
|
147
|
+
getToolData() {
|
|
148
|
+
return {
|
|
149
|
+
id: CompleteSessionComparisonToolId,
|
|
150
|
+
toolReferenceName: "completeAttemptComparison",
|
|
151
|
+
canBeReferencedInPrompt: true,
|
|
152
|
+
icon: Codicon.compareChanges,
|
|
153
|
+
displayName: ( localize(5655, "Complete Attempt Comparison")),
|
|
154
|
+
userDescription: ( localize(5656, "Submit the judge's structured attempt comparison")),
|
|
155
|
+
modelDescription: "Submit the final structured verdict for an active implementation-attempt comparison. Use this after reviewing every referenced attempt diff and running any missing targeted validation needed for a reliable recommendation. Reference attempts only by the attemptNumber values returned by readAttemptComparison; do not use participant or session UUIDs. Keep explanation to one concise sentence. Provide exactly one concise rationale point in this order: comparison, validation, codeQuality, and solution. Each point must cite concrete evidence and stay within the schema length limit. For each validation category, provide one consistent state and source evidence pair. Known passed or failed results must come from the attempt report or a Judge run; unavailable evidence cannot claim a known result. This persists an advisory verdict; synthesis only starts through an explicit user action. If invalid input is rejected, correct the reported fields and retry; do not submit again after success.",
|
|
156
|
+
source: ToolDataSource.Internal,
|
|
157
|
+
when: ( ContextKeyExpr.and(ChatContextKeys.enabled)),
|
|
158
|
+
runsInWorkspace: false,
|
|
159
|
+
inputSchema: {
|
|
160
|
+
type: "object",
|
|
161
|
+
properties: {
|
|
162
|
+
comparisonId: {
|
|
163
|
+
type: "string",
|
|
164
|
+
description: "The comparison ID supplied in the judge prompt."
|
|
165
|
+
},
|
|
166
|
+
recommendedAttemptNumber: {
|
|
167
|
+
type: "integer",
|
|
168
|
+
minimum: 1,
|
|
169
|
+
description: "The attemptNumber of the strongest attempt from readAttemptComparison."
|
|
170
|
+
},
|
|
171
|
+
explanation: {
|
|
172
|
+
type: "string",
|
|
173
|
+
minLength: 1,
|
|
174
|
+
maxLength: MaxExplanationLength,
|
|
175
|
+
description: "One concise sentence summarizing why the winning attempt is strongest."
|
|
176
|
+
},
|
|
177
|
+
rationale: {
|
|
178
|
+
type: "object",
|
|
179
|
+
description: "Four categorized, concise reasons why the recommended attempt won.",
|
|
180
|
+
properties: {
|
|
181
|
+
comparison: rationalePointSchema("The decisive advantage over the other attempts."),
|
|
182
|
+
validation: rationalePointSchema("The strongest concrete validation evidence."),
|
|
183
|
+
codeQuality: rationalePointSchema("Why the implementation is well scoped and maintainable."),
|
|
184
|
+
solution: rationalePointSchema("What the solution gets right.")
|
|
185
|
+
},
|
|
186
|
+
required: ["comparison", "validation", "codeQuality", "solution"],
|
|
187
|
+
additionalProperties: false
|
|
188
|
+
},
|
|
189
|
+
conflicts: {
|
|
190
|
+
type: "array",
|
|
191
|
+
description: "Cross-attempt conflicts or incompatible design choices that synthesis must resolve.",
|
|
192
|
+
items: {
|
|
193
|
+
type: "string"
|
|
194
|
+
}
|
|
195
|
+
},
|
|
196
|
+
attempts: {
|
|
197
|
+
type: "array",
|
|
198
|
+
description: "One structured verdict for each attempt.",
|
|
199
|
+
items: {
|
|
200
|
+
type: "object",
|
|
201
|
+
properties: {
|
|
202
|
+
attemptNumber: {
|
|
203
|
+
type: "integer",
|
|
204
|
+
minimum: 1,
|
|
205
|
+
description: "The attemptNumber from readAttemptComparison."
|
|
206
|
+
},
|
|
207
|
+
summary: {
|
|
208
|
+
type: "string"
|
|
209
|
+
},
|
|
210
|
+
validation: {
|
|
211
|
+
type: "object",
|
|
212
|
+
properties: {
|
|
213
|
+
tests: validationEvidenceSchema(),
|
|
214
|
+
build: validationEvidenceSchema(),
|
|
215
|
+
lint: validationEvidenceSchema(),
|
|
216
|
+
diagnostics: validationEvidenceSchema()
|
|
217
|
+
},
|
|
218
|
+
required: ["tests", "build", "lint", "diagnostics"],
|
|
219
|
+
additionalProperties: false
|
|
220
|
+
},
|
|
221
|
+
unresolvedIssues: {
|
|
222
|
+
type: "array",
|
|
223
|
+
items: {
|
|
224
|
+
type: "string"
|
|
225
|
+
}
|
|
226
|
+
},
|
|
227
|
+
notableDifferences: {
|
|
228
|
+
type: "array",
|
|
229
|
+
description: "The strongest reusable points from this attempt, especially when it is not recommended.",
|
|
230
|
+
items: {
|
|
231
|
+
type: "string"
|
|
232
|
+
}
|
|
233
|
+
}
|
|
234
|
+
},
|
|
235
|
+
required: [
|
|
236
|
+
"attemptNumber",
|
|
237
|
+
"summary",
|
|
238
|
+
"validation",
|
|
239
|
+
"unresolvedIssues",
|
|
240
|
+
"notableDifferences"
|
|
241
|
+
],
|
|
242
|
+
additionalProperties: false
|
|
243
|
+
}
|
|
244
|
+
}
|
|
245
|
+
},
|
|
246
|
+
required: [
|
|
247
|
+
"comparisonId",
|
|
248
|
+
"recommendedAttemptNumber",
|
|
249
|
+
"explanation",
|
|
250
|
+
"rationale",
|
|
251
|
+
"conflicts",
|
|
252
|
+
"attempts"
|
|
253
|
+
],
|
|
254
|
+
additionalProperties: false
|
|
255
|
+
}
|
|
256
|
+
};
|
|
257
|
+
}
|
|
258
|
+
async prepareToolInvocation(_context, _token) {
|
|
259
|
+
return {
|
|
260
|
+
invocationMessage: ( localize(5657, "Submitting attempt comparison")),
|
|
261
|
+
pastTenseMessage: ( localize(5658, "Submitted attempt comparison"))
|
|
262
|
+
};
|
|
263
|
+
}
|
|
264
|
+
async invoke(invocation, _countTokens, _progress, _token) {
|
|
265
|
+
const input = parseInput(invocation.parameters);
|
|
266
|
+
if (!input) {
|
|
267
|
+
return toolError(
|
|
268
|
+
"The comparison verdict input is invalid. Keep explanation to one sentence, provide concise comparison, validation, codeQuality, and solution rationale points, and use a consistent state and source pair for every validation category."
|
|
269
|
+
);
|
|
270
|
+
}
|
|
271
|
+
const comparison = resolveComparison(this.comparisonService, input.comparisonId);
|
|
272
|
+
if (!comparison) {
|
|
273
|
+
return toolError(`Comparison '${input.comparisonId}' does not exist.`);
|
|
274
|
+
}
|
|
275
|
+
if (!isInvokingParticipant(comparison, invocation, [SessionComparisonParticipantRole.Judge])) {
|
|
276
|
+
return toolError("Only the judge session for this comparison can submit its verdict.");
|
|
277
|
+
}
|
|
278
|
+
const allAttemptParticipants = comparison.participants.filter(
|
|
279
|
+
participant => participant.role === SessionComparisonParticipantRole.Attempt
|
|
280
|
+
);
|
|
281
|
+
const attemptParticipantsByNumber = ( new Map());
|
|
282
|
+
for (const [index, participant] of allAttemptParticipants.entries()) {
|
|
283
|
+
if (participant.sessionResource) {
|
|
284
|
+
attemptParticipantsByNumber.set(index + 1, participant);
|
|
285
|
+
}
|
|
286
|
+
}
|
|
287
|
+
const attemptParticipants = [...( attemptParticipantsByNumber.values())];
|
|
288
|
+
const validAttemptNumbers = ( new Set(( attemptParticipantsByNumber.keys())));
|
|
289
|
+
if (!Number.isInteger(input.recommendedAttemptNumber) || !( validAttemptNumbers.has(input.recommendedAttemptNumber)) || input.attempts.length !== attemptParticipants.length || ( input.attempts.some(attempt => !Number.isInteger(attempt.attemptNumber) || !( validAttemptNumbers.has(attempt.attemptNumber)))) || ( new Set(input.attempts.map(attempt => attempt.attemptNumber))).size !== input.attempts.length) {
|
|
290
|
+
return toolError(
|
|
291
|
+
"The verdict must recommend an attemptNumber and include exactly one finding for every attemptNumber returned by readAttemptComparison."
|
|
292
|
+
);
|
|
293
|
+
}
|
|
294
|
+
const verdict = {
|
|
295
|
+
recommendedParticipantId: attemptParticipantsByNumber.get(input.recommendedAttemptNumber).id,
|
|
296
|
+
explanation: input.explanation,
|
|
297
|
+
rationale: input.rationale,
|
|
298
|
+
conflicts: input.conflicts,
|
|
299
|
+
attempts: input.attempts.map(attempt => {
|
|
300
|
+
const {
|
|
301
|
+
attemptNumber,
|
|
302
|
+
...finding
|
|
303
|
+
} = attempt;
|
|
304
|
+
return {
|
|
305
|
+
participantId: attemptParticipantsByNumber.get(attemptNumber).id,
|
|
306
|
+
...finding
|
|
307
|
+
};
|
|
308
|
+
})
|
|
309
|
+
};
|
|
310
|
+
this.comparisonService.submitVerdict(comparison.id, verdict);
|
|
311
|
+
const result = toolResult(JSON.stringify({
|
|
312
|
+
status: "submitted",
|
|
313
|
+
comparisonId: comparison.id
|
|
314
|
+
}));
|
|
315
|
+
result.toolResultMessage = ( localize(5659, "Submitted attempt comparison"));
|
|
316
|
+
return result;
|
|
317
|
+
}
|
|
318
|
+
};
|
|
319
|
+
CompleteSessionComparisonTool = ( __decorate([( __param(0, ISessionComparisonService))], CompleteSessionComparisonTool));
|
|
320
|
+
let SessionComparisonToolContribution = class SessionComparisonToolContribution extends Disposable {
|
|
321
|
+
static {
|
|
322
|
+
this.ID = "sessions.contrib.sessionComparisonTool";
|
|
323
|
+
}
|
|
324
|
+
constructor(
|
|
325
|
+
toolsService,
|
|
326
|
+
instantiationService,
|
|
327
|
+
comparisonService,
|
|
328
|
+
configurationService
|
|
329
|
+
) {
|
|
330
|
+
super();
|
|
331
|
+
this._toolRegistrations = this._register(( new DisposableStore()));
|
|
332
|
+
this._toolsRegistered = false;
|
|
333
|
+
const enabled = observableConfigValue(COMPARE_AGENTS_ENABLED_SETTING, false, configurationService);
|
|
334
|
+
this._register(autorun(reader => {
|
|
335
|
+
const shouldRegister = enabled.read(reader) || ( comparisonService.comparisons.read(reader).some(comparison => comparison.archivedAt === undefined));
|
|
336
|
+
if (shouldRegister === this._toolsRegistered) {
|
|
337
|
+
return;
|
|
338
|
+
}
|
|
339
|
+
this._toolsRegistered = shouldRegister;
|
|
340
|
+
this._toolRegistrations.clear();
|
|
341
|
+
if (shouldRegister) {
|
|
342
|
+
this._registerComparisonTools(toolsService, instantiationService);
|
|
343
|
+
}
|
|
344
|
+
}));
|
|
345
|
+
}
|
|
346
|
+
_registerComparisonTools(toolsService, instantiationService) {
|
|
347
|
+
const toolSet = this._toolRegistrations.add(toolsService.createToolSet(
|
|
348
|
+
ToolDataSource.Internal,
|
|
349
|
+
"vscode_sessionComparison",
|
|
350
|
+
"sessionComparison",
|
|
351
|
+
{
|
|
352
|
+
icon: Codicon.compareChanges,
|
|
353
|
+
description: ( localize(5660, "Compare implementation attempts")),
|
|
354
|
+
hiddenInToolsPicker: true
|
|
355
|
+
}
|
|
356
|
+
));
|
|
357
|
+
const readTool = instantiationService.createInstance(ReadSessionComparisonTool);
|
|
358
|
+
const readToolData = readTool.getToolData();
|
|
359
|
+
this._toolRegistrations.add(toolsService.registerTool(readToolData, readTool));
|
|
360
|
+
this._toolRegistrations.add(toolSet.addTool(readToolData));
|
|
361
|
+
const tool = instantiationService.createInstance(CompleteSessionComparisonTool);
|
|
362
|
+
const toolData = tool.getToolData();
|
|
363
|
+
this._toolRegistrations.add(toolsService.registerTool(toolData, tool));
|
|
364
|
+
this._toolRegistrations.add(toolSet.addTool(toolData));
|
|
365
|
+
}
|
|
366
|
+
};
|
|
367
|
+
SessionComparisonToolContribution = ( __decorate([( __param(0, ILanguageModelToolsService)), ( __param(1, IInstantiationService)), ( __param(2, ISessionComparisonService)), ( __param(3, IConfigurationService))], SessionComparisonToolContribution));
|
|
368
|
+
function parseReadInput(value) {
|
|
369
|
+
return isRecord(value) && typeof value.comparisonId === "string" ? {
|
|
370
|
+
comparisonId: value.comparisonId
|
|
371
|
+
} : undefined;
|
|
372
|
+
}
|
|
373
|
+
function isInvokingParticipant(comparison, invocation, roles) {
|
|
374
|
+
const invokingSession = invocation.context?.sessionResource;
|
|
375
|
+
return !!invokingSession && ( comparison.participants.some(
|
|
376
|
+
participant => roles.includes(participant.role) && !!participant.sessionResource && isEqual(invokingSession, participant.sessionResource)
|
|
377
|
+
));
|
|
378
|
+
}
|
|
379
|
+
function parseInput(value) {
|
|
380
|
+
const rationale = isRecord(value) ? parseRationale(value.rationale) : undefined;
|
|
381
|
+
if (!isRecord(value) || typeof value.comparisonId !== "string" || typeof value.recommendedAttemptNumber !== "number" || !isConciseText(value.explanation, MaxExplanationLength) || !rationale || !isStringArray(value.conflicts) || !Array.isArray(value.attempts) || Object.hasOwn(value, "decisionSections")) {
|
|
382
|
+
return undefined;
|
|
383
|
+
}
|
|
384
|
+
const attempts = [];
|
|
385
|
+
for (const attempt of value.attempts) {
|
|
386
|
+
if (!isRecord(attempt) || typeof attempt.attemptNumber !== "number" || typeof attempt.summary !== "string" || !isRecord(attempt.validation) || !isValidationEvidence(attempt.validation.tests) || !isValidationEvidence(attempt.validation.build) || !isValidationEvidence(attempt.validation.lint) || !isValidationEvidence(attempt.validation.diagnostics) || !isStringArray(attempt.unresolvedIssues) || !isStringArray(attempt.notableDifferences)) {
|
|
387
|
+
return undefined;
|
|
388
|
+
}
|
|
389
|
+
attempts.push({
|
|
390
|
+
attemptNumber: attempt.attemptNumber,
|
|
391
|
+
summary: attempt.summary,
|
|
392
|
+
validation: {
|
|
393
|
+
tests: attempt.validation.tests,
|
|
394
|
+
build: attempt.validation.build,
|
|
395
|
+
lint: attempt.validation.lint,
|
|
396
|
+
diagnostics: attempt.validation.diagnostics
|
|
397
|
+
},
|
|
398
|
+
unresolvedIssues: attempt.unresolvedIssues,
|
|
399
|
+
notableDifferences: attempt.notableDifferences
|
|
400
|
+
});
|
|
401
|
+
}
|
|
402
|
+
return {
|
|
403
|
+
comparisonId: value.comparisonId,
|
|
404
|
+
recommendedAttemptNumber: value.recommendedAttemptNumber,
|
|
405
|
+
explanation: value.explanation,
|
|
406
|
+
rationale,
|
|
407
|
+
conflicts: value.conflicts,
|
|
408
|
+
attempts
|
|
409
|
+
};
|
|
410
|
+
}
|
|
411
|
+
function parseRationale(value) {
|
|
412
|
+
if (!isRecord(value) || !isConciseText(value.comparison, MaxRationalePointLength) || !isConciseText(value.validation, MaxRationalePointLength) || !isConciseText(value.codeQuality, MaxRationalePointLength) || !isConciseText(value.solution, MaxRationalePointLength)) {
|
|
413
|
+
return undefined;
|
|
414
|
+
}
|
|
415
|
+
return {
|
|
416
|
+
comparison: value.comparison,
|
|
417
|
+
validation: value.validation,
|
|
418
|
+
codeQuality: value.codeQuality,
|
|
419
|
+
solution: value.solution
|
|
420
|
+
};
|
|
421
|
+
}
|
|
422
|
+
function isConciseText(value, maxLength) {
|
|
423
|
+
return typeof value === "string" && value.trim().length > 0 && value.length <= maxLength && !value.includes("\n");
|
|
424
|
+
}
|
|
425
|
+
function rationalePointSchema(description) {
|
|
426
|
+
return {
|
|
427
|
+
type: "string",
|
|
428
|
+
minLength: 1,
|
|
429
|
+
maxLength: MaxRationalePointLength,
|
|
430
|
+
description
|
|
431
|
+
};
|
|
432
|
+
}
|
|
433
|
+
function getManifestSessionStatus(status) {
|
|
434
|
+
switch (status) {
|
|
435
|
+
case SessionStatus.Untitled:
|
|
436
|
+
return "untitled";
|
|
437
|
+
case SessionStatus.InProgress:
|
|
438
|
+
return "inProgress";
|
|
439
|
+
case SessionStatus.NeedsInput:
|
|
440
|
+
return "needsInput";
|
|
441
|
+
case SessionStatus.Completed:
|
|
442
|
+
return "completed";
|
|
443
|
+
case SessionStatus.Error:
|
|
444
|
+
return "error";
|
|
445
|
+
case undefined:
|
|
446
|
+
return "unavailable";
|
|
447
|
+
}
|
|
448
|
+
}
|
|
449
|
+
function validationEvidenceSchema() {
|
|
450
|
+
return {
|
|
451
|
+
description: "A consistent validation state and evidence source pair.",
|
|
452
|
+
oneOf: [validationEvidenceVariant([
|
|
453
|
+
SessionComparisonValidationState.Passed,
|
|
454
|
+
SessionComparisonValidationState.Failed
|
|
455
|
+
], [
|
|
456
|
+
SessionComparisonValidationSource.AttemptReport,
|
|
457
|
+
SessionComparisonValidationSource.JudgeRun
|
|
458
|
+
]), validationEvidenceVariant([
|
|
459
|
+
SessionComparisonValidationState.NotRun,
|
|
460
|
+
SessionComparisonValidationState.Unknown
|
|
461
|
+
], [
|
|
462
|
+
SessionComparisonValidationSource.AttemptReport,
|
|
463
|
+
SessionComparisonValidationSource.JudgeRun,
|
|
464
|
+
SessionComparisonValidationSource.Unavailable
|
|
465
|
+
]), validationEvidenceVariant(
|
|
466
|
+
[SessionComparisonValidationState.NotApplicable],
|
|
467
|
+
[SessionComparisonValidationSource.NotApplicable]
|
|
468
|
+
)]
|
|
469
|
+
};
|
|
470
|
+
}
|
|
471
|
+
function validationEvidenceVariant(states, sources) {
|
|
472
|
+
return {
|
|
473
|
+
type: "object",
|
|
474
|
+
properties: {
|
|
475
|
+
state: {
|
|
476
|
+
type: "string",
|
|
477
|
+
enum: [...states]
|
|
478
|
+
},
|
|
479
|
+
source: {
|
|
480
|
+
type: "string",
|
|
481
|
+
enum: [...sources]
|
|
482
|
+
}
|
|
483
|
+
},
|
|
484
|
+
required: ["state", "source"],
|
|
485
|
+
additionalProperties: false
|
|
486
|
+
};
|
|
487
|
+
}
|
|
488
|
+
function isRecord(value) {
|
|
489
|
+
return typeof value === "object" && value !== null;
|
|
490
|
+
}
|
|
491
|
+
function isStringArray(value) {
|
|
492
|
+
return Array.isArray(value) && value.every(item => typeof item === "string");
|
|
493
|
+
}
|
|
494
|
+
function isValidationEvidence(value) {
|
|
495
|
+
if (!isRecord(value)) {
|
|
496
|
+
return false;
|
|
497
|
+
}
|
|
498
|
+
switch (value.state) {
|
|
499
|
+
case SessionComparisonValidationState.Passed:
|
|
500
|
+
case SessionComparisonValidationState.Failed:
|
|
501
|
+
return value.source === SessionComparisonValidationSource.AttemptReport || value.source === SessionComparisonValidationSource.JudgeRun;
|
|
502
|
+
case SessionComparisonValidationState.NotRun:
|
|
503
|
+
case SessionComparisonValidationState.Unknown:
|
|
504
|
+
return value.source === SessionComparisonValidationSource.AttemptReport || value.source === SessionComparisonValidationSource.JudgeRun || value.source === SessionComparisonValidationSource.Unavailable;
|
|
505
|
+
case SessionComparisonValidationState.NotApplicable:
|
|
506
|
+
return value.source === SessionComparisonValidationSource.NotApplicable;
|
|
507
|
+
default:
|
|
508
|
+
return false;
|
|
509
|
+
}
|
|
510
|
+
}
|
|
511
|
+
function toManifestVerdict(verdict, attemptNumbers) {
|
|
512
|
+
const recommendedAttemptNumber = attemptNumbers.get(verdict.recommendedParticipantId);
|
|
513
|
+
if (!recommendedAttemptNumber) {
|
|
514
|
+
return undefined;
|
|
515
|
+
}
|
|
516
|
+
return {
|
|
517
|
+
recommendedAttemptNumber,
|
|
518
|
+
explanation: getBoundedSessionComparisonManifestText(verdict.explanation),
|
|
519
|
+
rationale: verdict.rationale,
|
|
520
|
+
conflicts: getBoundedSessionComparisonManifestList(verdict.conflicts),
|
|
521
|
+
attempts: verdict.attempts.slice(0, SESSION_COMPARISON_MANIFEST_LIST_MAX_ITEMS).flatMap(attempt => {
|
|
522
|
+
const attemptNumber = attemptNumbers.get(attempt.participantId);
|
|
523
|
+
return attemptNumber ? [{
|
|
524
|
+
attemptNumber,
|
|
525
|
+
summary: getBoundedSessionComparisonManifestText(attempt.summary),
|
|
526
|
+
validation: attempt.validation,
|
|
527
|
+
unresolvedIssues: getBoundedSessionComparisonManifestList(attempt.unresolvedIssues),
|
|
528
|
+
notableDifferences: getBoundedSessionComparisonManifestList(attempt.notableDifferences)
|
|
529
|
+
}] : [];
|
|
530
|
+
})
|
|
531
|
+
};
|
|
532
|
+
}
|
|
533
|
+
function toolResult(value) {
|
|
534
|
+
return {
|
|
535
|
+
content: [{
|
|
536
|
+
kind: "text",
|
|
537
|
+
value
|
|
538
|
+
}]
|
|
539
|
+
};
|
|
540
|
+
}
|
|
541
|
+
function toolError(message) {
|
|
542
|
+
return {
|
|
543
|
+
content: [{
|
|
544
|
+
kind: "text",
|
|
545
|
+
value: message
|
|
546
|
+
}],
|
|
547
|
+
toolResultError: message,
|
|
548
|
+
toolResultMessage: ( localize(5661, "Attempt comparison submission failed"))
|
|
549
|
+
};
|
|
550
|
+
}
|
|
551
|
+
function resolveComparison(comparisonService, comparisonId) {
|
|
552
|
+
const direct = comparisonService.getComparison(comparisonId);
|
|
553
|
+
if (direct) {
|
|
554
|
+
return direct;
|
|
555
|
+
}
|
|
556
|
+
return comparisonService.comparisons.get().find(comparison => hashSessionIdForTelemetry(comparison.id) === comparisonId);
|
|
557
|
+
}
|
|
558
|
+
|
|
559
|
+
export { CompleteSessionComparisonTool, ReadSessionComparisonTool, SessionComparisonToolContribution };
|
package/vscode/src/vs/sessions/contrib/sessionComparison/browser/sessionComparisonViewService.d.ts
ADDED
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { ISessionsService } from "@codingame/monaco-vscode-api/vscode/vs/sessions/services/sessions/browser/sessionsService.service";
|
|
2
|
+
import { ISessionComparisonService } from "@codingame/monaco-vscode-api/vscode/vs/sessions/services/sessions/common/sessionComparison.service";
|
|
3
|
+
import { ISessionsManagementService } from "@codingame/monaco-vscode-api/vscode/vs/sessions/services/sessions/common/sessionsManagement.service";
|
|
4
|
+
import { ISessionComparisonViewService } from "@codingame/monaco-vscode-api/vscode/vs/sessions/contrib/sessionComparison/browser/sessionComparisonViewService.service";
|
|
5
|
+
export declare class SessionComparisonViewService implements ISessionComparisonViewService {
|
|
6
|
+
private readonly comparisonService;
|
|
7
|
+
private readonly managementService;
|
|
8
|
+
private readonly sessionsService;
|
|
9
|
+
readonly _serviceBrand: undefined;
|
|
10
|
+
constructor(comparisonService: ISessionComparisonService, managementService: ISessionsManagementService, sessionsService: ISessionsService);
|
|
11
|
+
open(comparisonId: string): Promise<void>;
|
|
12
|
+
}
|
package/vscode/src/vs/sessions/contrib/sessionComparison/browser/sessionComparisonViewService.js
ADDED
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
|
|
2
|
+
import { __decorate, __param } from '@codingame/monaco-vscode-api/external/tslib/tslib.es6';
|
|
3
|
+
import { localize } from '@codingame/monaco-vscode-api/vscode/vs/nls';
|
|
4
|
+
import { ISessionsService } from '@codingame/monaco-vscode-api/vscode/vs/sessions/services/sessions/browser/sessionsService.service';
|
|
5
|
+
import { getSessionComparisonParticipantsInDisplayOrder, SessionComparisonParticipantRole } from '@codingame/monaco-vscode-api/vscode/vs/sessions/services/sessions/common/sessionComparison';
|
|
6
|
+
import { ISessionComparisonService } from '@codingame/monaco-vscode-api/vscode/vs/sessions/services/sessions/common/sessionComparison.service';
|
|
7
|
+
import { ISessionsManagementService } from '@codingame/monaco-vscode-api/vscode/vs/sessions/services/sessions/common/sessionsManagement.service';
|
|
8
|
+
|
|
9
|
+
let SessionComparisonViewService = class SessionComparisonViewService {
|
|
10
|
+
constructor(comparisonService, managementService, sessionsService) {
|
|
11
|
+
this.comparisonService = comparisonService;
|
|
12
|
+
this.managementService = managementService;
|
|
13
|
+
this.sessionsService = sessionsService;
|
|
14
|
+
}
|
|
15
|
+
async open(comparisonId) {
|
|
16
|
+
const comparison = this.comparisonService.getComparison(comparisonId);
|
|
17
|
+
if (!comparison) {
|
|
18
|
+
throw ( new Error(( localize(5662, "This comparison is no longer available."))));
|
|
19
|
+
}
|
|
20
|
+
const availableAttempts = getSessionComparisonParticipantsInDisplayOrder(comparison.participants).flatMap(participant => {
|
|
21
|
+
if (participant.role !== SessionComparisonParticipantRole.Attempt) {
|
|
22
|
+
return [];
|
|
23
|
+
}
|
|
24
|
+
if (!participant.sessionResource) {
|
|
25
|
+
return [];
|
|
26
|
+
}
|
|
27
|
+
const session = this.managementService.getSession(participant.sessionResource);
|
|
28
|
+
return session ? [session] : [];
|
|
29
|
+
});
|
|
30
|
+
if (!availableAttempts.length) {
|
|
31
|
+
throw ( new Error(( localize(5663, "No comparison attempts are available to open."))));
|
|
32
|
+
}
|
|
33
|
+
await this.sessionsService.openSessionsInGrid(availableAttempts);
|
|
34
|
+
}
|
|
35
|
+
};
|
|
36
|
+
SessionComparisonViewService = ( __decorate([( __param(0, ISessionComparisonService)), ( __param(1, ISessionsManagementService)), ( __param(2, ISessionsService))], SessionComparisonViewService));
|
|
37
|
+
|
|
38
|
+
export { SessionComparisonViewService };
|