@codingame/monaco-vscode-workbench-service-override 37.1.0 → 37.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/common.d.ts +3 -0
- package/common.js +29 -0
- package/index.d.ts +1 -1
- package/index.js +25 -32
- package/package.json +18 -8
- package/session.d.ts +4 -0
- package/session.js +260 -0
- package/vscode/src/vs/platform/agentHost/browser/remoteAgentHostLocationPreferenceService.d.ts +24 -0
- package/vscode/src/vs/platform/agentHost/browser/remoteAgentHostLocationPreferenceService.js +71 -0
- package/vscode/src/vs/platform/agentHost/common/remoteAgentHostLocationPreference.d.ts +7 -0
- package/vscode/src/vs/platform/agentHost/common/remoteAgentHostLocationPreference.js +7 -0
- package/vscode/src/vs/sessions/browser/dockedAuxiliaryBarController.d.ts +50 -0
- package/vscode/src/vs/sessions/browser/dockedAuxiliaryBarController.js +120 -0
- package/vscode/src/vs/sessions/browser/media/sessions-logo-dark.svg +6 -0
- package/vscode/src/vs/sessions/browser/media/sessions-logo-light.svg +6 -0
- package/vscode/src/vs/sessions/browser/media/sessionsSetUp.css +72 -0
- package/vscode/src/vs/sessions/browser/parts/chatCompositeBar.d.ts +116 -0
- package/vscode/src/vs/sessions/browser/parts/chatCompositeBar.js +566 -0
- package/vscode/src/vs/sessions/browser/parts/chatGroupDropTarget.d.ts +43 -0
- package/vscode/src/vs/sessions/browser/parts/chatGroupDropTarget.js +308 -0
- package/vscode/src/vs/sessions/browser/parts/chatGroupView.d.ts +108 -0
- package/vscode/src/vs/sessions/browser/parts/chatGroupView.js +324 -0
- package/vscode/src/vs/sessions/browser/parts/chatGroupsView.d.ts +136 -0
- package/vscode/src/vs/sessions/browser/parts/chatGroupsView.js +771 -0
- package/vscode/src/vs/sessions/browser/parts/customViewGridPart.d.ts +43 -0
- package/vscode/src/vs/sessions/browser/parts/customViewGridPart.js +113 -0
- package/vscode/src/vs/sessions/browser/parts/customViewGridParts.d.ts +17 -0
- package/vscode/src/vs/sessions/browser/parts/customViewGridParts.js +31 -0
- package/vscode/src/vs/sessions/browser/parts/customViewNode.d.ts +24 -0
- package/vscode/src/vs/sessions/browser/parts/customViewNode.js +131 -0
- package/vscode/src/vs/sessions/browser/parts/editorPart.d.ts +11 -0
- package/vscode/src/vs/sessions/browser/parts/editorPart.js +36 -0
- package/vscode/src/vs/sessions/browser/parts/editorParts.d.ts +12 -0
- package/vscode/src/vs/sessions/browser/parts/editorParts.js +45 -0
- package/vscode/src/vs/sessions/browser/parts/media/chatCompositeBar.css +559 -0
- package/vscode/src/vs/sessions/browser/parts/media/chatGroupDropTarget.css +27 -0
- package/vscode/src/vs/sessions/browser/parts/media/chatGroupsView.css +60 -0
- package/vscode/src/vs/sessions/browser/parts/media/customViewGridPart.css +108 -0
- package/vscode/src/vs/sessions/browser/parts/media/editorPart.css +210 -0
- package/vscode/src/vs/sessions/browser/parts/media/remoteHostUnavailableEmptyState.css +81 -0
- package/vscode/src/vs/sessions/browser/parts/media/sessionDropTarget.css +31 -0
- package/vscode/src/vs/sessions/browser/parts/media/sessionReadOnlyBanner.css +87 -0
- package/vscode/src/vs/sessions/browser/parts/media/sessionView.css +107 -0
- package/vscode/src/vs/sessions/browser/parts/media/sessionsPart.css +134 -0
- package/vscode/src/vs/sessions/browser/parts/menubar.contribution.d.ts +1 -0
- package/vscode/src/vs/sessions/browser/parts/menubar.contribution.js +79 -0
- package/vscode/src/vs/sessions/browser/parts/mobile/mobileCustomViewGridPart.d.ts +13 -0
- package/vscode/src/vs/sessions/browser/parts/mobile/mobileCustomViewGridPart.js +33 -0
- package/vscode/src/vs/sessions/browser/parts/mobile/mobileSessionsPart.d.ts +14 -0
- package/vscode/src/vs/sessions/browser/parts/mobile/mobileSessionsPart.js +34 -0
- package/vscode/src/vs/sessions/browser/parts/remoteHostUnavailableEmptyState.d.ts +39 -0
- package/vscode/src/vs/sessions/browser/parts/remoteHostUnavailableEmptyState.js +136 -0
- package/vscode/src/vs/sessions/browser/parts/sessionBarStyles.d.ts +9 -0
- package/vscode/src/vs/sessions/browser/parts/sessionBarStyles.js +62 -0
- package/vscode/src/vs/sessions/browser/parts/sessionDropTarget.d.ts +39 -0
- package/vscode/src/vs/sessions/browser/parts/sessionDropTarget.js +261 -0
- package/vscode/src/vs/sessions/browser/parts/sessionHeader.d.ts +97 -0
- package/vscode/src/vs/sessions/browser/parts/sessionHeader.js +345 -0
- package/vscode/src/vs/sessions/browser/parts/sessionReadOnlyBanner.d.ts +43 -0
- package/vscode/src/vs/sessions/browser/parts/sessionReadOnlyBanner.js +69 -0
- package/vscode/src/vs/sessions/browser/parts/sessionRemoteConnection.d.ts +79 -0
- package/vscode/src/vs/sessions/browser/parts/sessionRemoteConnection.js +363 -0
- package/vscode/src/vs/sessions/browser/parts/sessionView.d.ts +125 -0
- package/vscode/src/vs/sessions/browser/parts/sessionView.js +300 -0
- package/vscode/src/vs/sessions/browser/parts/sessionsPart.d.ts +124 -0
- package/vscode/src/vs/sessions/browser/parts/sessionsPart.js +336 -0
- package/vscode/src/vs/sessions/browser/parts/sessionsParts.d.ts +33 -0
- package/vscode/src/vs/sessions/browser/parts/sessionsParts.js +62 -0
- package/vscode/src/vs/sessions/browser/parts/singlePaneAuxiliaryBarPart.d.ts +13 -0
- package/vscode/src/vs/sessions/browser/parts/singlePaneAuxiliaryBarPart.js +36 -0
- package/vscode/src/vs/sessions/browser/parts/singlePaneEditorPart.d.ts +65 -0
- package/vscode/src/vs/sessions/browser/parts/singlePaneEditorPart.js +178 -0
- package/vscode/src/vs/sessions/browser/sessionWorkspace.d.ts +12 -0
- package/vscode/src/vs/sessions/browser/sessionWorkspace.js +19 -0
- package/vscode/src/vs/sessions/browser/sessionsSetUpService.d.ts +24 -0
- package/vscode/src/vs/sessions/browser/sessionsSetUpService.js +598 -0
- package/vscode/src/vs/sessions/browser/sessionsSignInDialog.d.ts +25 -0
- package/vscode/src/vs/sessions/browser/sessionsSignInDialog.js +91 -0
- package/vscode/src/vs/sessions/common/welcome.d.ts +1 -0
- package/vscode/src/vs/sessions/common/welcome.js +5 -0
- package/vscode/src/vs/sessions/contrib/accountMenu/browser/account.contribution.d.ts +11 -0
- package/vscode/src/vs/sessions/contrib/accountMenu/browser/account.contribution.js +1052 -0
- package/vscode/src/vs/sessions/contrib/accountMenu/browser/chatPetAchievementBadges.d.ts +23 -0
- package/vscode/src/vs/sessions/contrib/accountMenu/browser/chatPetAchievementBadges.js +168 -0
- package/vscode/src/vs/sessions/contrib/accountMenu/browser/media/accountTitleBarWidget.css +646 -0
- package/vscode/src/vs/sessions/contrib/accountMenu/browser/media/accountWidget.css +231 -0
- package/vscode/src/vs/sessions/contrib/accountMenu/browser/media/chatPetAchievementBadges.css +120 -0
- package/vscode/src/vs/sessions/contrib/agentFeedback/browser/nullAgentFeedbackService.contribution.d.ts +53 -0
- package/vscode/src/vs/sessions/contrib/agentFeedback/browser/nullAgentFeedbackService.contribution.js +99 -0
- package/vscode/src/vs/sessions/contrib/aiCustomizationTreeView/browser/aiCustomizationTreeView.contribution.d.ts +1 -0
- package/vscode/src/vs/sessions/contrib/aiCustomizationTreeView/browser/aiCustomizationTreeView.contribution.js +270 -0
- package/vscode/src/vs/sessions/contrib/aiCustomizationTreeView/browser/aiCustomizationTreeViewViews.d.ts +62 -0
- package/vscode/src/vs/sessions/contrib/aiCustomizationTreeView/browser/aiCustomizationTreeViewViews.js +606 -0
- package/vscode/src/vs/sessions/contrib/aiCustomizationTreeView/browser/media/aiCustomizationTreeView.css +116 -0
- package/vscode/src/vs/sessions/contrib/aquarium/browser/aquarium.contribution.d.ts +1 -0
- package/vscode/src/vs/sessions/contrib/aquarium/browser/aquarium.contribution.js +97 -0
- package/vscode/src/vs/sessions/contrib/aquarium/browser/aquariumOverlay.d.ts +72 -0
- package/vscode/src/vs/sessions/contrib/aquarium/browser/aquariumOverlay.js +776 -0
- package/vscode/src/vs/sessions/contrib/aquarium/browser/fish.d.ts +68 -0
- package/vscode/src/vs/sessions/contrib/aquarium/browser/fish.js +153 -0
- package/vscode/src/vs/sessions/contrib/aquarium/browser/fishFeedingStreak.d.ts +58 -0
- package/vscode/src/vs/sessions/contrib/aquarium/browser/fishFeedingStreak.js +172 -0
- package/vscode/src/vs/sessions/contrib/aquarium/browser/media/aquarium.css +316 -0
- package/vscode/src/vs/sessions/contrib/aquarium/browser/vscodeLogoPath.d.ts +1 -0
- package/vscode/src/vs/sessions/contrib/aquarium/browser/vscodeLogoPath.js +5 -0
- package/vscode/src/vs/sessions/contrib/automations/browser/automationDialog.d.ts +173 -0
- package/vscode/src/vs/sessions/contrib/automations/browser/automationDialog.js +1589 -0
- package/vscode/src/vs/sessions/contrib/automations/browser/automationDialogService.d.ts +32 -0
- package/vscode/src/vs/sessions/contrib/automations/browser/automationDialogService.js +396 -0
- package/vscode/src/vs/sessions/contrib/automations/browser/automationInputCompletions.d.ts +33 -0
- package/vscode/src/vs/sessions/contrib/automations/browser/automationInputCompletions.js +216 -0
- package/vscode/src/vs/sessions/contrib/automations/browser/automationLeaderElection.d.ts +37 -0
- package/vscode/src/vs/sessions/contrib/automations/browser/automationLeaderElection.js +126 -0
- package/vscode/src/vs/sessions/contrib/automations/browser/automationRunner.d.ts +21 -0
- package/vscode/src/vs/sessions/contrib/automations/browser/automationRunner.js +294 -0
- package/vscode/src/vs/sessions/contrib/automations/browser/automationScheduler.d.ts +59 -0
- package/vscode/src/vs/sessions/contrib/automations/browser/automationScheduler.js +232 -0
- package/vscode/src/vs/sessions/contrib/automations/browser/automationStorageService.d.ts +13 -0
- package/vscode/src/vs/sessions/contrib/automations/browser/automationStorageService.js +22 -0
- package/vscode/src/vs/sessions/contrib/automations/browser/automationTools.d.ts +60 -0
- package/vscode/src/vs/sessions/contrib/automations/browser/automationTools.js +1256 -0
- package/vscode/src/vs/sessions/contrib/automations/browser/automations.contribution.d.ts +1 -0
- package/vscode/src/vs/sessions/contrib/automations/browser/automations.contribution.js +88 -0
- package/vscode/src/vs/sessions/contrib/automations/browser/media/automationDialog.css +746 -0
- package/vscode/src/vs/sessions/contrib/automations/browser/providerAutomationService.d.ts +62 -0
- package/vscode/src/vs/sessions/contrib/automations/browser/providerAutomationService.js +493 -0
- package/vscode/src/vs/sessions/contrib/automations/common/isolationGroupModel.d.ts +38 -0
- package/vscode/src/vs/sessions/contrib/automations/common/isolationGroupModel.js +123 -0
- package/vscode/src/vs/sessions/contrib/blockedSessions/browser/blockedSessions.d.ts +45 -0
- package/vscode/src/vs/sessions/contrib/blockedSessions/browser/blockedSessions.js +110 -0
- package/vscode/src/vs/sessions/contrib/browserView/browser/sessionBrowserView.contribution.d.ts +1 -0
- package/vscode/src/vs/sessions/contrib/browserView/browser/sessionBrowserView.contribution.js +5 -0
- package/vscode/src/vs/sessions/contrib/browserView/browser/sessionBrowserView.d.ts +31 -0
- package/vscode/src/vs/sessions/contrib/browserView/browser/sessionBrowserView.js +137 -0
- package/vscode/src/vs/sessions/contrib/changes/browser/changes.contribution.d.ts +1 -0
- package/vscode/src/vs/sessions/contrib/changes/browser/changes.contribution.js +130 -0
- package/vscode/src/vs/sessions/contrib/changes/browser/changesActions.d.ts +8 -0
- package/vscode/src/vs/sessions/contrib/changes/browser/changesActions.js +385 -0
- package/vscode/src/vs/sessions/contrib/changes/browser/changesMultiDiffSourceResolver.d.ts +28 -0
- package/vscode/src/vs/sessions/contrib/changes/browser/changesMultiDiffSourceResolver.js +76 -0
- package/vscode/src/vs/sessions/contrib/changes/browser/changesViewActions.d.ts +1 -0
- package/vscode/src/vs/sessions/contrib/changes/browser/changesViewActions.js +509 -0
- package/vscode/src/vs/sessions/contrib/changes/browser/changesetReviewActions.d.ts +6 -0
- package/vscode/src/vs/sessions/contrib/changes/browser/changesetReviewActions.js +58 -0
- package/vscode/src/vs/sessions/contrib/changes/browser/media/changesActions.css +11 -0
- package/vscode/src/vs/sessions/contrib/changes/browser/sessionSyncChanges.d.ts +24 -0
- package/vscode/src/vs/sessions/contrib/changes/browser/sessionSyncChanges.js +188 -0
- package/vscode/src/vs/sessions/contrib/changes/browser/sessionsChangesAccessibilityHelp.d.ts +15 -0
- package/vscode/src/vs/sessions/contrib/changes/browser/sessionsChangesAccessibilityHelp.js +100 -0
- package/vscode/src/vs/sessions/contrib/chat/browser/chatViewStateService.d.ts +9 -0
- package/vscode/src/vs/sessions/contrib/chat/browser/chatViewStateService.js +18 -0
- package/vscode/src/vs/sessions/contrib/chat/browser/media/sessionChatInputToolbarDebug.css +59 -0
- package/vscode/src/vs/sessions/contrib/chat/browser/sessionChatInputToolbarDebug.d.ts +47 -0
- package/vscode/src/vs/sessions/contrib/chat/browser/sessionChatInputToolbarDebug.js +306 -0
- package/vscode/src/vs/sessions/contrib/chat/browser/sessionTaskRunner.d.ts +41 -0
- package/vscode/src/vs/sessions/contrib/chat/browser/sessionTaskRunner.js +31 -0
- package/vscode/src/vs/sessions/contrib/chatDebug/browser/chatDebug.contribution.d.ts +1 -0
- package/vscode/src/vs/sessions/contrib/chatDebug/browser/chatDebug.contribution.js +84 -0
- package/vscode/src/vs/sessions/contrib/customViewTest/browser/customViewTest.contribution.d.ts +1 -0
- package/vscode/src/vs/sessions/contrib/customViewTest/browser/customViewTest.contribution.js +111 -0
- package/vscode/src/vs/sessions/contrib/customViewTest/browser/media/customViewTest.css +9 -0
- package/vscode/src/vs/sessions/contrib/editor/browser/addTabActions.d.ts +21 -0
- package/vscode/src/vs/sessions/contrib/editor/browser/addTabActions.js +170 -0
- package/vscode/src/vs/sessions/contrib/editor/browser/editor.contribution.d.ts +14 -0
- package/vscode/src/vs/sessions/contrib/editor/browser/editor.contribution.js +425 -0
- package/vscode/src/vs/sessions/contrib/editor/browser/emptyFileEditor.contribution.d.ts +1 -0
- package/vscode/src/vs/sessions/contrib/editor/browser/emptyFileEditor.contribution.js +35 -0
- package/vscode/src/vs/sessions/contrib/editor/browser/emptyFileEditor.d.ts +18 -0
- package/vscode/src/vs/sessions/contrib/editor/browser/emptyFileEditor.js +85 -0
- package/vscode/src/vs/sessions/contrib/editor/browser/emptyFileEditorInput.d.ts +31 -0
- package/vscode/src/vs/sessions/contrib/editor/browser/emptyFileEditorInput.js +125 -0
- package/vscode/src/vs/sessions/contrib/editor/browser/media/editorBreadcrumbs.css +66 -0
- package/vscode/src/vs/sessions/contrib/editor/browser/media/editorHeader.css +113 -0
- package/vscode/src/vs/sessions/contrib/editor/browser/media/emptyFileEditor.css +30 -0
- package/vscode/src/vs/sessions/contrib/fileTreeView/browser/fileTreeView.contribution.d.ts +1 -0
- package/vscode/src/vs/sessions/contrib/fileTreeView/browser/fileTreeView.contribution.js +25 -0
- package/vscode/src/vs/sessions/contrib/fileTreeView/browser/githubFileSystemProvider.d.ts +66 -0
- package/vscode/src/vs/sessions/contrib/fileTreeView/browser/githubFileSystemProvider.js +274 -0
- package/vscode/src/vs/sessions/contrib/files/browser/files.contribution.d.ts +6 -0
- package/vscode/src/vs/sessions/contrib/files/browser/files.contribution.js +100 -0
- package/vscode/src/vs/sessions/contrib/files/browser/filesView.d.ts +21 -0
- package/vscode/src/vs/sessions/contrib/files/browser/filesView.js +76 -0
- package/vscode/src/vs/sessions/contrib/files/browser/media/filesView.css +29 -0
- package/vscode/src/vs/sessions/contrib/layout/browser/baseSessionLayoutController.d.ts +211 -0
- package/vscode/src/vs/sessions/contrib/layout/browser/baseSessionLayoutController.js +587 -0
- package/vscode/src/vs/sessions/contrib/layout/browser/desktopSessionLayoutController.d.ts +112 -0
- package/vscode/src/vs/sessions/contrib/layout/browser/desktopSessionLayoutController.js +444 -0
- package/vscode/src/vs/sessions/contrib/layout/browser/mobileSessionLayoutController.d.ts +13 -0
- package/vscode/src/vs/sessions/contrib/layout/browser/mobileSessionLayoutController.js +8 -0
- package/vscode/src/vs/sessions/contrib/layout/browser/sessions.layout.contribution.d.ts +1 -0
- package/vscode/src/vs/sessions/contrib/layout/browser/sessions.layout.contribution.js +68 -0
- package/vscode/src/vs/sessions/contrib/layout/browser/singlePane/singlePaneDetailPanelCoordinator.d.ts +32 -0
- package/vscode/src/vs/sessions/contrib/layout/browser/singlePane/singlePaneDetailPanelCoordinator.js +81 -0
- package/vscode/src/vs/sessions/contrib/layout/browser/singlePane/singlePaneDockedTabsCoordinator.d.ts +111 -0
- package/vscode/src/vs/sessions/contrib/layout/browser/singlePane/singlePaneDockedTabsCoordinator.js +513 -0
- package/vscode/src/vs/sessions/contrib/layout/browser/singlePane/singlePaneDraftSessionStrategy.d.ts +44 -0
- package/vscode/src/vs/sessions/contrib/layout/browser/singlePane/singlePaneDraftSessionStrategy.js +423 -0
- package/vscode/src/vs/sessions/contrib/layout/browser/singlePane/singlePaneExistingSessionStrategy.d.ts +62 -0
- package/vscode/src/vs/sessions/contrib/layout/browser/singlePane/singlePaneExistingSessionStrategy.js +435 -0
- package/vscode/src/vs/sessions/contrib/layout/browser/singlePane/singlePaneLayoutStrategy.d.ts +46 -0
- package/vscode/src/vs/sessions/contrib/layout/browser/singlePane/singlePaneLayoutStrategy.js +11 -0
- package/vscode/src/vs/sessions/contrib/layout/browser/singlePane/singlePaneSharedHelpers.d.ts +11 -0
- package/vscode/src/vs/sessions/contrib/layout/browser/singlePane/singlePaneSharedHelpers.js +43 -0
- package/vscode/src/vs/sessions/contrib/layout/browser/singlePane/singlePaneVisibilityProfileStore.d.ts +21 -0
- package/vscode/src/vs/sessions/contrib/layout/browser/singlePane/singlePaneVisibilityProfileStore.js +77 -0
- package/vscode/src/vs/sessions/contrib/layout/browser/singlePaneLayoutController.d.ts +55 -0
- package/vscode/src/vs/sessions/contrib/layout/browser/singlePaneLayoutController.js +91 -0
- package/vscode/src/vs/sessions/contrib/onboardingTours/browser/agentHostReadinessContext.d.ts +11 -0
- package/vscode/src/vs/sessions/contrib/onboardingTours/browser/agentHostReadinessContext.js +39 -0
- package/vscode/src/vs/sessions/contrib/onboardingTours/browser/newSessionTourContribution.d.ts +1 -0
- package/vscode/src/vs/sessions/contrib/onboardingTours/browser/newSessionTourContribution.js +109 -0
- package/vscode/src/vs/sessions/contrib/onboardingTours/browser/newSessionViewTourContribution.d.ts +1 -0
- package/vscode/src/vs/sessions/contrib/onboardingTours/browser/newSessionViewTourContribution.js +123 -0
- package/vscode/src/vs/sessions/contrib/onboardingTours/browser/newSessionViewTourTrigger.d.ts +24 -0
- package/vscode/src/vs/sessions/contrib/onboardingTours/browser/newSessionViewTourTrigger.js +67 -0
- package/vscode/src/vs/sessions/contrib/onboardingTours/browser/newSessionViewV2TourContribution.d.ts +1 -0
- package/vscode/src/vs/sessions/contrib/onboardingTours/browser/newSessionViewV2TourContribution.js +47 -0
- package/vscode/src/vs/sessions/contrib/onboardingTours/browser/newSessionViewV3Prompt.d.ts +79 -0
- package/vscode/src/vs/sessions/contrib/onboardingTours/browser/newSessionViewV3Prompt.js +1277 -0
- package/vscode/src/vs/sessions/contrib/onboardingTours/browser/newSessionViewV3TourContribution.d.ts +1 -0
- package/vscode/src/vs/sessions/contrib/onboardingTours/browser/newSessionViewV3TourContribution.js +75 -0
- package/vscode/src/vs/sessions/contrib/onboardingTours/browser/tours/newSessionTour.d.ts +34 -0
- package/vscode/src/vs/sessions/contrib/onboardingTours/browser/tours/newSessionTour.js +53 -0
- package/vscode/src/vs/sessions/contrib/onboardingTours/browser/tours/newSessionViewTour.d.ts +40 -0
- package/vscode/src/vs/sessions/contrib/onboardingTours/browser/tours/newSessionViewTour.js +69 -0
- package/vscode/src/vs/sessions/contrib/onboardingTours/browser/tours/newSessionViewTourShared.d.ts +4 -0
- package/vscode/src/vs/sessions/contrib/onboardingTours/browser/tours/newSessionViewTourShared.js +38 -0
- package/vscode/src/vs/sessions/contrib/onboardingTours/browser/tours/newSessionViewV2Tour.d.ts +6 -0
- package/vscode/src/vs/sessions/contrib/onboardingTours/browser/tours/newSessionViewV2Tour.js +63 -0
- package/vscode/src/vs/sessions/contrib/onboardingTours/browser/tours/newSessionViewV3Tour.d.ts +15 -0
- package/vscode/src/vs/sessions/contrib/onboardingTours/browser/tours/newSessionViewV3Tour.js +49 -0
- package/vscode/src/vs/sessions/contrib/policyBlocked/browser/media/sessionsPolicyBlocked.css +125 -0
- package/vscode/src/vs/sessions/contrib/policyBlocked/browser/policyBlocked.contribution.d.ts +20 -0
- package/vscode/src/vs/sessions/contrib/policyBlocked/browser/policyBlocked.contribution.js +98 -0
- package/vscode/src/vs/sessions/contrib/policyBlocked/browser/sessionsPolicyBlocked.d.ts +39 -0
- package/vscode/src/vs/sessions/contrib/policyBlocked/browser/sessionsPolicyBlocked.js +218 -0
- package/vscode/src/vs/sessions/contrib/providers/remoteAgentHost/browser/devContainerAgentHostService.d.ts +53 -0
- package/vscode/src/vs/sessions/contrib/providers/remoteAgentHost/browser/devContainerAgentHostService.js +496 -0
- package/vscode/src/vs/sessions/contrib/providers/remoteAgentHost/browser/remoteAgentHostConnectionCustomization.d.ts +27 -0
- package/vscode/src/vs/sessions/contrib/providers/remoteAgentHost/browser/remoteAgentHostConnectionCustomization.js +26 -0
- package/vscode/src/vs/sessions/contrib/search/browser/media/searchEditorEmptyState.css +15 -0
- package/vscode/src/vs/sessions/contrib/search/browser/search.contribution.d.ts +1 -0
- package/vscode/src/vs/sessions/contrib/search/browser/search.contribution.js +79 -0
- package/vscode/src/vs/sessions/contrib/search/browser/searchEditorEmptyState.contribution.d.ts +7 -0
- package/vscode/src/vs/sessions/contrib/search/browser/searchEditorEmptyState.contribution.js +57 -0
- package/vscode/src/vs/sessions/contrib/sessions/browser/blockedSessionsCIFixModel.d.ts +39 -0
- package/vscode/src/vs/sessions/contrib/sessions/browser/blockedSessionsCIFixModel.js +155 -0
- package/vscode/src/vs/sessions/contrib/sessions/browser/blockedSessionsIndicatorModel.d.ts +117 -0
- package/vscode/src/vs/sessions/contrib/sessions/browser/blockedSessionsIndicatorModel.js +320 -0
- package/vscode/src/vs/sessions/contrib/sessions/browser/blockedSessionsList.d.ts +65 -0
- package/vscode/src/vs/sessions/contrib/sessions/browser/blockedSessionsList.js +129 -0
- package/vscode/src/vs/sessions/contrib/sessions/browser/media/automationsCards.css +624 -0
- package/vscode/src/vs/sessions/contrib/sessions/browser/media/blockedSessionsList.css +111 -0
- package/vscode/src/vs/sessions/contrib/sessions/browser/media/newSessionActionViewItem.css +112 -0
- package/vscode/src/vs/sessions/contrib/sessions/browser/media/sessionsTitleBarWidget.css +159 -0
- package/vscode/src/vs/sessions/contrib/sessions/browser/sessionActionFeedback.d.ts +26 -0
- package/vscode/src/vs/sessions/contrib/sessions/browser/sessionActionFeedback.js +26 -0
- package/vscode/src/vs/sessions/contrib/sessions/browser/sessionDetailsAction.d.ts +2 -0
- package/vscode/src/vs/sessions/contrib/sessions/browser/sessionDetailsAction.js +77 -0
- package/vscode/src/vs/sessions/contrib/sessions/browser/sessions.contribution.d.ts +1 -0
- package/vscode/src/vs/sessions/contrib/sessions/browser/sessions.contribution.js +162 -0
- package/vscode/src/vs/sessions/contrib/sessions/browser/sessionsActions.d.ts +111 -0
- package/vscode/src/vs/sessions/contrib/sessions/browser/sessionsActions.js +1550 -0
- package/vscode/src/vs/sessions/contrib/sessions/browser/sessionsMouseNavigation.d.ts +13 -0
- package/vscode/src/vs/sessions/contrib/sessions/browser/sessionsMouseNavigation.js +69 -0
- package/vscode/src/vs/sessions/contrib/sessions/browser/sessionsPicker.d.ts +10 -0
- package/vscode/src/vs/sessions/contrib/sessions/browser/sessionsPicker.js +33 -0
- package/vscode/src/vs/sessions/contrib/sessions/browser/sessionsTelemetry.contribution.d.ts +126 -0
- package/vscode/src/vs/sessions/contrib/sessions/browser/sessionsTelemetry.contribution.js +724 -0
- package/vscode/src/vs/sessions/contrib/sessions/browser/sessionsTitleBarWidget.d.ts +150 -0
- package/vscode/src/vs/sessions/contrib/sessions/browser/sessionsTitleBarWidget.js +526 -0
- package/vscode/src/vs/sessions/contrib/sessions/browser/sessionsTypedCharactersTracker.d.ts +64 -0
- package/vscode/src/vs/sessions/contrib/sessions/browser/sessionsTypedCharactersTracker.js +99 -0
- package/vscode/src/vs/sessions/contrib/sessions/browser/sessionsWindowNotifier.d.ts +37 -0
- package/vscode/src/vs/sessions/contrib/sessions/browser/sessionsWindowNotifier.js +160 -0
- package/vscode/src/vs/sessions/contrib/sessions/browser/views/automationTemplates.d.ts +19 -0
- package/vscode/src/vs/sessions/contrib/sessions/browser/views/automationTemplates.js +74 -0
- package/vscode/src/vs/sessions/contrib/sessions/browser/views/automationsAccessibility.d.ts +4 -0
- package/vscode/src/vs/sessions/contrib/sessions/browser/views/automationsAccessibility.js +228 -0
- package/vscode/src/vs/sessions/contrib/sessions/browser/views/automationsView.d.ts +53 -0
- package/vscode/src/vs/sessions/contrib/sessions/browser/views/automationsView.js +2143 -0
- package/vscode/src/vs/sessions/contrib/sessions/browser/views/sessionsViewActions.d.ts +12 -0
- package/vscode/src/vs/sessions/contrib/sessions/browser/views/sessionsViewActions.js +1270 -0
- package/vscode/src/vs/sessions/contrib/workspace/browser/workspace.contribution.d.ts +1 -0
- package/vscode/src/vs/sessions/contrib/workspace/browser/workspace.contribution.js +5 -0
- package/vscode/src/vs/sessions/contrib/workspace/browser/workspaceFolderManagement.d.ts +28 -0
- package/vscode/src/vs/sessions/contrib/workspace/browser/workspaceFolderManagement.js +95 -0
- package/vscode/src/vs/sessions/services/agentHostFilter/browser/agentHostFilterService.d.ts +79 -0
- package/vscode/src/vs/sessions/services/agentHostFilter/browser/agentHostFilterService.js +259 -0
- package/vscode/src/vs/sessions/services/customView/browser/customView.d.ts +42 -0
- package/vscode/src/vs/sessions/services/customView/browser/customView.js +15 -0
- package/vscode/src/vs/sessions/services/customView/browser/customViewService.d.ts +21 -0
- package/vscode/src/vs/sessions/services/customView/browser/customViewService.js +68 -0
- package/vscode/src/vs/sessions/services/sessions/browser/closedItemHistory.d.ts +72 -0
- package/vscode/src/vs/sessions/services/sessions/browser/closedItemHistory.js +115 -0
- package/vscode/src/vs/sessions/services/sessions/browser/sessionGroupsService.d.ts +77 -0
- package/vscode/src/vs/sessions/services/sessions/browser/sessionGroupsService.js +330 -0
- package/vscode/src/vs/sessions/services/sessions/browser/sessionNavigation.d.ts +67 -0
- package/vscode/src/vs/sessions/services/sessions/browser/sessionNavigation.js +157 -0
- package/vscode/src/vs/sessions/services/sessions/browser/sessionOpenTelemetryService.d.ts +32 -0
- package/vscode/src/vs/sessions/services/sessions/browser/sessionOpenTelemetryService.js +162 -0
- package/vscode/src/vs/sessions/services/sessions/browser/sessionSectionOrderService.d.ts +40 -0
- package/vscode/src/vs/sessions/services/sessions/browser/sessionSectionOrderService.js +170 -0
- package/vscode/src/vs/sessions/services/sessions/browser/sessionsListModelService.d.ts +63 -0
- package/vscode/src/vs/sessions/services/sessions/browser/sessionsListModelService.js +419 -0
- package/vscode/src/vs/sessions/services/sessions/browser/sessionsManagementService.d.ts +229 -0
- package/vscode/src/vs/sessions/services/sessions/browser/sessionsManagementService.js +1212 -0
- package/vscode/src/vs/sessions/services/sessions/browser/sessionsProvidersService.d.ts +22 -0
- package/vscode/src/vs/sessions/services/sessions/browser/sessionsProvidersService.js +42 -0
- package/vscode/src/vs/sessions/services/sessions/browser/sessionsRecencyHistory.d.ts +43 -0
- package/vscode/src/vs/sessions/services/sessions/browser/sessionsRecencyHistory.js +103 -0
- package/vscode/src/vs/sessions/services/sessions/browser/sessionsService.d.ts +243 -0
- package/vscode/src/vs/sessions/services/sessions/browser/sessionsService.js +1121 -0
- package/vscode/src/vs/sessions/services/sessions/browser/sessionsWindowUsageService.d.ts +8 -0
- package/vscode/src/vs/sessions/services/sessions/browser/sessionsWindowUsageService.js +24 -0
- package/vscode/src/vs/sessions/services/sessions/browser/visibleSessions.d.ts +321 -0
- package/vscode/src/vs/sessions/services/sessions/browser/visibleSessions.js +729 -0
- package/vscode/src/vs/sessions/services/sessions/browser/worktreeTrust.d.ts +23 -0
- package/vscode/src/vs/sessions/services/sessions/browser/worktreeTrust.js +23 -0
- package/vscode/src/vs/sessions/services/sessions/common/sessionContextKeys.d.ts +32 -0
- package/vscode/src/vs/sessions/services/sessions/common/sessionContextKeys.js +103 -0
- package/vscode/src/vs/sessions/services/workspaceFolderLabel/browser/workspaceFolderLabelService.d.ts +16 -0
- package/vscode/src/vs/sessions/services/workspaceFolderLabel/browser/workspaceFolderLabelService.js +41 -0
- package/vscode/src/vs/workbench/browser/layout.js +7 -7
- package/vscode/src/vs/workbench/browser/workbench.js +3 -3
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
|
|
2
|
+
import { __decorate, __param } from '@codingame/monaco-vscode-api/external/tslib/tslib.es6';
|
|
3
|
+
import { RunOnceScheduler } from '@codingame/monaco-vscode-api/vscode/vs/base/common/async';
|
|
4
|
+
import { Disposable, DisposableMap, toDisposable } from '@codingame/monaco-vscode-api/vscode/vs/base/common/lifecycle';
|
|
5
|
+
import { IModelService } from '@codingame/monaco-vscode-api/vscode/vs/editor/common/services/model.service';
|
|
6
|
+
import { isUserEdit } from '@codingame/monaco-vscode-api/vscode/vs/editor/common/textModelEditSource';
|
|
7
|
+
|
|
8
|
+
const TYPED_CHARACTERS_REPORT_DELAY = 5000;
|
|
9
|
+
const MAX_TYPED_CHARACTERS_RETRIES = 3;
|
|
10
|
+
let SessionsTypedCharactersTracker = class SessionsTypedCharactersTracker extends Disposable {
|
|
11
|
+
constructor(_getActiveSession, _report, modelService) {
|
|
12
|
+
super();
|
|
13
|
+
this._getActiveSession = _getActiveSession;
|
|
14
|
+
this._report = _report;
|
|
15
|
+
this._pending = ( new Map());
|
|
16
|
+
this._modelListeners = this._register(( new DisposableMap()));
|
|
17
|
+
this._register(toDisposable(() => this.flush()));
|
|
18
|
+
this._reportScheduler = this._register(( new RunOnceScheduler(() => this.flush(), TYPED_CHARACTERS_REPORT_DELAY)));
|
|
19
|
+
for (const model of modelService.getModels()) {
|
|
20
|
+
this._trackModel(model);
|
|
21
|
+
}
|
|
22
|
+
this._register(modelService.onModelAdded(model => this._trackModel(model)));
|
|
23
|
+
this._register(
|
|
24
|
+
modelService.onModelRemoved(model => this._modelListeners.deleteAndDispose(model))
|
|
25
|
+
);
|
|
26
|
+
}
|
|
27
|
+
flush() {
|
|
28
|
+
if (this._pending.size === 0) {
|
|
29
|
+
return;
|
|
30
|
+
}
|
|
31
|
+
const flushed = ( new Map(this._pending));
|
|
32
|
+
this._pending.clear();
|
|
33
|
+
for (const entry of this._report([...( flushed.values())])) {
|
|
34
|
+
const key = toKey(entry.session.sessionId, entry.resource);
|
|
35
|
+
const deferred = flushed.get(key);
|
|
36
|
+
if (!deferred || deferred.retries >= MAX_TYPED_CHARACTERS_RETRIES) {
|
|
37
|
+
continue;
|
|
38
|
+
}
|
|
39
|
+
deferred.retries++;
|
|
40
|
+
this._add(key, deferred);
|
|
41
|
+
}
|
|
42
|
+
if (this._pending.size > 0) {
|
|
43
|
+
this._reportScheduler.schedule();
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
_trackModel(model) {
|
|
47
|
+
this._modelListeners.set(model, model.onDidChangeContent(e => this._handleContentChange(model, e)));
|
|
48
|
+
}
|
|
49
|
+
_handleContentChange(model, e) {
|
|
50
|
+
const characters = countTypedCharacters(e);
|
|
51
|
+
if (characters === 0) {
|
|
52
|
+
return;
|
|
53
|
+
}
|
|
54
|
+
const session = this._getActiveSession();
|
|
55
|
+
if (!session) {
|
|
56
|
+
return;
|
|
57
|
+
}
|
|
58
|
+
this._add(toKey(session.sessionId, model.uri), {
|
|
59
|
+
session,
|
|
60
|
+
resource: model.uri,
|
|
61
|
+
characters,
|
|
62
|
+
retries: 0
|
|
63
|
+
});
|
|
64
|
+
if (!this._reportScheduler.isScheduled()) {
|
|
65
|
+
this._reportScheduler.schedule();
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
_add(key, entry) {
|
|
69
|
+
const existing = this._pending.get(key);
|
|
70
|
+
if (existing) {
|
|
71
|
+
existing.characters += entry.characters;
|
|
72
|
+
} else {
|
|
73
|
+
this._pending.set(key, entry);
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
};
|
|
77
|
+
SessionsTypedCharactersTracker = ( __decorate([( __param(2, IModelService))], SessionsTypedCharactersTracker));
|
|
78
|
+
function toKey(sessionId, resource) {
|
|
79
|
+
return `${sessionId}\u0000${( resource.toString())}`;
|
|
80
|
+
}
|
|
81
|
+
function countTypedCharacters(e) {
|
|
82
|
+
if (e.isUndoing || e.isRedoing) {
|
|
83
|
+
return 0;
|
|
84
|
+
}
|
|
85
|
+
let characters = 0;
|
|
86
|
+
let changeIndex = 0;
|
|
87
|
+
for (let i = 0; i < e.detailedReasons.length; i++) {
|
|
88
|
+
const changeEnd = Math.min(changeIndex + e.detailedReasonsChangeLengths[i], e.changes.length);
|
|
89
|
+
if (isUserEdit(e.detailedReasons[i])) {
|
|
90
|
+
for (let j = changeIndex; j < changeEnd; j++) {
|
|
91
|
+
characters += e.changes[j].text.length;
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
changeIndex = changeEnd;
|
|
95
|
+
}
|
|
96
|
+
return characters;
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
export { MAX_TYPED_CHARACTERS_RETRIES, SessionsTypedCharactersTracker, TYPED_CHARACTERS_REPORT_DELAY, countTypedCharacters };
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { Disposable } from "@codingame/monaco-vscode-api/vscode/vs/base/common/lifecycle";
|
|
2
|
+
import { IConfigurationService } from "@codingame/monaco-vscode-api/vscode/vs/platform/configuration/common/configuration.service";
|
|
3
|
+
import { IWorkbenchContribution } from "@codingame/monaco-vscode-api/vscode/vs/workbench/common/contributions";
|
|
4
|
+
import { IChatWidgetService } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/browser/chat.service";
|
|
5
|
+
import { IChatService } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/chatService/chatService.service";
|
|
6
|
+
import { IHostService } from "@codingame/monaco-vscode-api/vscode/vs/workbench/services/host/browser/host.service";
|
|
7
|
+
import { ISessionsService } from "@codingame/monaco-vscode-api/vscode/vs/sessions/services/sessions/browser/sessionsService.service";
|
|
8
|
+
import { ISessionsManagementService } from "@codingame/monaco-vscode-api/vscode/vs/sessions/services/sessions/common/sessionsManagement.service";
|
|
9
|
+
export declare class SessionsWindowNotifier extends Disposable implements IWorkbenchContribution {
|
|
10
|
+
private readonly _sessionsManagementService;
|
|
11
|
+
private readonly _sessionsService;
|
|
12
|
+
private readonly _hostService;
|
|
13
|
+
private readonly _configurationService;
|
|
14
|
+
private readonly _chatService;
|
|
15
|
+
private readonly _chatWidgetService;
|
|
16
|
+
static readonly ID = "workbench.contrib.sessionsWindowNotifier";
|
|
17
|
+
private readonly _statusListeners;
|
|
18
|
+
private readonly _activeNotifications;
|
|
19
|
+
constructor(_sessionsManagementService: ISessionsManagementService, _sessionsService: ISessionsService, _hostService: IHostService, _configurationService: IConfigurationService, _chatService: IChatService, _chatWidgetService: IChatWidgetService);
|
|
20
|
+
/**
|
|
21
|
+
* Delay before a completed session is announced, to swallow the brief idle
|
|
22
|
+
* gap between a turn ending and the next queued turn starting. A method
|
|
23
|
+
* rather than a field so tests can override it before `_trackSession` runs
|
|
24
|
+
* during construction.
|
|
25
|
+
*/
|
|
26
|
+
protected _getCompletedNotificationDelay(): number;
|
|
27
|
+
/**
|
|
28
|
+
* Delay before any toast from this window, which by definition is not showing
|
|
29
|
+
* the session, so that a window showing it notifies first.
|
|
30
|
+
*/
|
|
31
|
+
protected _getBackgroundNotificationDelay(): number;
|
|
32
|
+
private _trackSession;
|
|
33
|
+
private _notify;
|
|
34
|
+
private _getNotificationBody;
|
|
35
|
+
private _sanitizeOSToastText;
|
|
36
|
+
private _clearNotification;
|
|
37
|
+
}
|
|
@@ -0,0 +1,160 @@
|
|
|
1
|
+
|
|
2
|
+
import { __decorate, __param } from '@codingame/monaco-vscode-api/external/tslib/tslib.es6';
|
|
3
|
+
import { RunOnceScheduler, timeout } from '@codingame/monaco-vscode-api/vscode/vs/base/common/async';
|
|
4
|
+
import { mainWindow } from '@codingame/monaco-vscode-api/vscode/vs/base/browser/window';
|
|
5
|
+
import { CancellationTokenSource } from '@codingame/monaco-vscode-api/vscode/vs/base/common/cancellation';
|
|
6
|
+
import { Disposable, DisposableMap, DisposableResourceMap, DisposableStore, toDisposable } from '@codingame/monaco-vscode-api/vscode/vs/base/common/lifecycle';
|
|
7
|
+
import '@codingame/monaco-vscode-api/vscode/vs/base/common/observableInternal/index';
|
|
8
|
+
import { localize } from '@codingame/monaco-vscode-api/vscode/vs/nls';
|
|
9
|
+
import { IConfigurationService } from '@codingame/monaco-vscode-api/vscode/vs/platform/configuration/common/configuration.service';
|
|
10
|
+
import { FocusMode } from '@codingame/monaco-vscode-api/vscode/vs/platform/native/common/native';
|
|
11
|
+
import { IChatWidgetService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/browser/chat.service';
|
|
12
|
+
import { IChatService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/chatService/chatService.service';
|
|
13
|
+
import { getChatNotificationDedupeKey, ChatNotificationKind } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/chatNotification';
|
|
14
|
+
import { ChatConfiguration, ChatNotificationMode } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/constants';
|
|
15
|
+
import { IHostService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/services/host/browser/host.service';
|
|
16
|
+
import { ISessionsService } from '@codingame/monaco-vscode-api/vscode/vs/sessions/services/sessions/browser/sessionsService.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 { autorunDelta } from '@codingame/monaco-vscode-api/vscode/vs/base/common/observableInternal/reactions/autorun';
|
|
20
|
+
|
|
21
|
+
let SessionsWindowNotifier = class SessionsWindowNotifier extends Disposable {
|
|
22
|
+
static {
|
|
23
|
+
this.ID = "workbench.contrib.sessionsWindowNotifier";
|
|
24
|
+
}
|
|
25
|
+
constructor(
|
|
26
|
+
_sessionsManagementService,
|
|
27
|
+
_sessionsService,
|
|
28
|
+
_hostService,
|
|
29
|
+
_configurationService,
|
|
30
|
+
_chatService,
|
|
31
|
+
_chatWidgetService
|
|
32
|
+
) {
|
|
33
|
+
super();
|
|
34
|
+
this._sessionsManagementService = _sessionsManagementService;
|
|
35
|
+
this._sessionsService = _sessionsService;
|
|
36
|
+
this._hostService = _hostService;
|
|
37
|
+
this._configurationService = _configurationService;
|
|
38
|
+
this._chatService = _chatService;
|
|
39
|
+
this._chatWidgetService = _chatWidgetService;
|
|
40
|
+
this._statusListeners = this._register(( new DisposableMap()));
|
|
41
|
+
this._activeNotifications = this._register(( new DisposableResourceMap()));
|
|
42
|
+
for (const session of this._sessionsManagementService.getSessions()) {
|
|
43
|
+
this._trackSession(session);
|
|
44
|
+
}
|
|
45
|
+
this._register(this._sessionsManagementService.onDidChangeSessions(event => {
|
|
46
|
+
for (const session of event.removed) {
|
|
47
|
+
this._statusListeners.deleteAndDispose(session.sessionId);
|
|
48
|
+
this._clearNotification(session);
|
|
49
|
+
}
|
|
50
|
+
for (const session of event.added) {
|
|
51
|
+
this._trackSession(session);
|
|
52
|
+
}
|
|
53
|
+
}));
|
|
54
|
+
}
|
|
55
|
+
_getCompletedNotificationDelay() {
|
|
56
|
+
return 1_500;
|
|
57
|
+
}
|
|
58
|
+
_getBackgroundNotificationDelay() {
|
|
59
|
+
return 250;
|
|
60
|
+
}
|
|
61
|
+
_trackSession(session) {
|
|
62
|
+
const store = ( new DisposableStore());
|
|
63
|
+
const completedNotificationScheduler = store.add(( new RunOnceScheduler(
|
|
64
|
+
() => void this._notify(session, SessionStatus.Completed),
|
|
65
|
+
this._getCompletedNotificationDelay()
|
|
66
|
+
)));
|
|
67
|
+
store.add(autorunDelta(session.status, (
|
|
68
|
+
{
|
|
69
|
+
lastValue,
|
|
70
|
+
newValue
|
|
71
|
+
}
|
|
72
|
+
) => {
|
|
73
|
+
if (lastValue === undefined || lastValue === newValue) {
|
|
74
|
+
return;
|
|
75
|
+
}
|
|
76
|
+
this._clearNotification(session);
|
|
77
|
+
if (newValue === SessionStatus.Completed) {
|
|
78
|
+
completedNotificationScheduler.schedule();
|
|
79
|
+
} else {
|
|
80
|
+
completedNotificationScheduler.cancel();
|
|
81
|
+
}
|
|
82
|
+
if (newValue === SessionStatus.NeedsInput || newValue === SessionStatus.Error) {
|
|
83
|
+
void this._notify(session, newValue);
|
|
84
|
+
}
|
|
85
|
+
}));
|
|
86
|
+
this._statusListeners.set(session.sessionId, store);
|
|
87
|
+
}
|
|
88
|
+
async _notify(session, status) {
|
|
89
|
+
if (session.status.get() !== status) {
|
|
90
|
+
return;
|
|
91
|
+
}
|
|
92
|
+
if (this._chatService.getSession(session.resource) || this._chatWidgetService.getWidgetBySessionResource(session.resource)) {
|
|
93
|
+
return;
|
|
94
|
+
}
|
|
95
|
+
const setting = status === SessionStatus.NeedsInput ? ChatConfiguration.NotifyWindowOnConfirmation : ChatConfiguration.NotifyWindowOnResponseReceived;
|
|
96
|
+
const mode = this._configurationService.getValue(setting);
|
|
97
|
+
if (mode === ChatNotificationMode.Off || (mode !== ChatNotificationMode.Always && this._hostService.hasFocus)) {
|
|
98
|
+
return;
|
|
99
|
+
}
|
|
100
|
+
const cts = ( new CancellationTokenSource());
|
|
101
|
+
this._activeNotifications.set(session.resource, toDisposable(() => cts.dispose(true)));
|
|
102
|
+
try {
|
|
103
|
+
await timeout(this._getBackgroundNotificationDelay());
|
|
104
|
+
if (cts.token.isCancellationRequested || session.status.get() !== status || this._chatService.getSession(session.resource) || this._chatWidgetService.getWidgetBySessionResource(session.resource)) {
|
|
105
|
+
return;
|
|
106
|
+
}
|
|
107
|
+
if (!this._hostService.hasFocus) {
|
|
108
|
+
await this._hostService.focus(mainWindow, {
|
|
109
|
+
mode: FocusMode.Notify
|
|
110
|
+
});
|
|
111
|
+
}
|
|
112
|
+
if (cts.token.isCancellationRequested) {
|
|
113
|
+
return;
|
|
114
|
+
}
|
|
115
|
+
const result = await this._hostService.showToast({
|
|
116
|
+
title: this._sanitizeOSToastText(( localize(4603, "Session: {0}", session.title.get()))),
|
|
117
|
+
body: this._sanitizeOSToastText(this._getNotificationBody(session, status)),
|
|
118
|
+
actions: [( localize(4604, "Open Session"))],
|
|
119
|
+
dedupeKey: getChatNotificationDedupeKey(
|
|
120
|
+
session.resource,
|
|
121
|
+
status === SessionStatus.NeedsInput ? ChatNotificationKind.NeedsInput : ChatNotificationKind.Idle
|
|
122
|
+
)
|
|
123
|
+
}, cts.token);
|
|
124
|
+
if (result.clicked || typeof result.actionIndex === "number") {
|
|
125
|
+
await this._hostService.focus(mainWindow, {
|
|
126
|
+
mode: FocusMode.Force
|
|
127
|
+
});
|
|
128
|
+
await this._sessionsService.openSession(session.resource, {
|
|
129
|
+
source: "notification"
|
|
130
|
+
});
|
|
131
|
+
}
|
|
132
|
+
} finally {
|
|
133
|
+
if (!cts.token.isCancellationRequested) {
|
|
134
|
+
this._clearNotification(session);
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
_getNotificationBody(session, status) {
|
|
139
|
+
const workspaceLabel = session.workspace.get()?.label;
|
|
140
|
+
switch (status) {
|
|
141
|
+
case SessionStatus.NeedsInput:
|
|
142
|
+
return workspaceLabel ? ( localize(4605, "Input needed in {0}.", workspaceLabel)) : ( localize(4606, "Input needed."));
|
|
143
|
+
case SessionStatus.Completed:
|
|
144
|
+
return workspaceLabel ? ( localize(4607, "Completed in {0}.", workspaceLabel)) : ( localize(4608, "Session completed."));
|
|
145
|
+
case SessionStatus.Error:
|
|
146
|
+
return workspaceLabel ? ( localize(4609, "Failed in {0}.", workspaceLabel)) : ( localize(4610, "Session failed."));
|
|
147
|
+
default:
|
|
148
|
+
return "";
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
_sanitizeOSToastText(text) {
|
|
152
|
+
return text.replace(/`/g, "'");
|
|
153
|
+
}
|
|
154
|
+
_clearNotification(session) {
|
|
155
|
+
this._activeNotifications.deleteAndDispose(session.resource);
|
|
156
|
+
}
|
|
157
|
+
};
|
|
158
|
+
SessionsWindowNotifier = ( __decorate([( __param(0, ISessionsManagementService)), ( __param(1, ISessionsService)), ( __param(2, IHostService)), ( __param(3, IConfigurationService)), ( __param(4, IChatService)), ( __param(5, IChatWidgetService))], SessionsWindowNotifier));
|
|
159
|
+
|
|
160
|
+
export { SessionsWindowNotifier };
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { IReader } from "@codingame/monaco-vscode-api/vscode/vs/base/common/observable";
|
|
2
|
+
import { URI } from "@codingame/monaco-vscode-api/vscode/vs/base/common/uri";
|
|
3
|
+
import type { IAutomationSchedule } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/automations/automation";
|
|
4
|
+
import { IAgentPlugin } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/plugins/agentPluginService";
|
|
5
|
+
export interface IAutomationTemplateSource {
|
|
6
|
+
readonly label: string;
|
|
7
|
+
readonly uri: URI;
|
|
8
|
+
}
|
|
9
|
+
export interface IAutomationTemplate {
|
|
10
|
+
readonly id: string;
|
|
11
|
+
readonly name: string;
|
|
12
|
+
readonly description: string;
|
|
13
|
+
readonly prompt: string;
|
|
14
|
+
readonly schedule: IAutomationSchedule;
|
|
15
|
+
readonly source?: IAutomationTemplateSource;
|
|
16
|
+
readonly enabled?: boolean;
|
|
17
|
+
}
|
|
18
|
+
export declare const AUTOMATION_TEMPLATES: readonly IAutomationTemplate[];
|
|
19
|
+
export declare function readAutomationTemplates(plugins: readonly IAgentPlugin[], reader?: IReader): readonly IAutomationTemplate[];
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
|
|
2
|
+
import { localize } from '@codingame/monaco-vscode-api/vscode/vs/nls';
|
|
3
|
+
import { isContributionEnabled } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/enablement';
|
|
4
|
+
|
|
5
|
+
const AUTOMATION_TEMPLATES = [{
|
|
6
|
+
id: "main-updates",
|
|
7
|
+
name: ( localize(4611, "Catch up on main")),
|
|
8
|
+
description: ( localize(4612, "Pull the latest main and summarize new commits.")),
|
|
9
|
+
prompt: ( localize(
|
|
10
|
+
4613,
|
|
11
|
+
"Pull the latest main and summarize the commits that were pulled.\n\nInspect this repository's current branch, working tree, and configured remotes. Resolve the remote for main from the repository configuration rather than assuming origin. Record HEAD, then pull that remote's main into the current checkout using --ff-only. Proceed only with a clean working tree and a fast-forward update. If the remote is ambiguous, main is missing, or the update is blocked, stop and explain why. Do not switch branches, stash or discard local changes, rebase, or force an update.\n\nCompare the starting and ending HEAD and summarize only newly pulled commits, grouped by theme. Highlight user-visible changes, bug fixes, breaking changes, and follow-up actions. Include commit links and related pull requests when available. If no commits were pulled, say so."
|
|
12
|
+
)),
|
|
13
|
+
schedule: {
|
|
14
|
+
interval: "daily",
|
|
15
|
+
scheduleHour: 9,
|
|
16
|
+
scheduleMinute: 0,
|
|
17
|
+
scheduleDay: 0
|
|
18
|
+
}
|
|
19
|
+
}, {
|
|
20
|
+
id: "issue-triage",
|
|
21
|
+
name: ( localize(4614, "Issue triage")),
|
|
22
|
+
description: ( localize(4615, "Triage my GitHub repositories' issues using their precedents.")),
|
|
23
|
+
prompt: ( localize(
|
|
24
|
+
4616,
|
|
25
|
+
"Triage my GitHub repositories' issues using existing repository precedents.\n\nUse the authenticated GitHub account to find my repositories, prioritizing active repositories and new or untriaged issues. For each repository, read its contribution guidelines, issue templates, existing labels, and comparable issues with maintainer decisions. Learn each repository's conventions separately before making recommendations.\n\nProduce a report grouped by repository. Link to each issue, recommend existing labels, identify likely duplicates, and draft a reply when useful. Cite prior issues, pull requests, or maintainer comments supporting each recommendation. Flag uncertainty or missing precedent rather than inventing a rule. Do not apply labels, post comments, close issues, or make other GitHub changes. State which repositories and issues were reviewed and any access limitations."
|
|
26
|
+
)),
|
|
27
|
+
schedule: {
|
|
28
|
+
interval: "daily",
|
|
29
|
+
scheduleHour: 9,
|
|
30
|
+
scheduleMinute: 0,
|
|
31
|
+
scheduleDay: 0
|
|
32
|
+
}
|
|
33
|
+
}, {
|
|
34
|
+
id: "find-bugs",
|
|
35
|
+
name: ( localize(4617, "Find bugs")),
|
|
36
|
+
description: ( localize(4618, "Explore the codebase and report verified, reproducible bugs.")),
|
|
37
|
+
prompt: ( localize(
|
|
38
|
+
4619,
|
|
39
|
+
"Explore this codebase and find concrete, reproducible bugs.\n\nRead the repository guidance and understand the architecture before choosing a focused area to investigate, such as recent changes, complex state transitions, or error handling. Trace suspected problems through callers and existing tests. Use the smallest relevant tests or a minimal reproduction to verify behavior, and distinguish confirmed bugs from hypotheses. Avoid style-only suggestions and speculative findings.\n\nReport high-confidence, actionable bugs with severity, file and line references, a triggering scenario, expected versus actual behavior, and supporting test or reproduction results. Suggest a focused fix for each finding without modifying repository files or committing changes. State what you explored, any validation limitations, and when no confirmed bugs were found."
|
|
40
|
+
)),
|
|
41
|
+
schedule: {
|
|
42
|
+
interval: "weekly",
|
|
43
|
+
scheduleHour: 9,
|
|
44
|
+
scheduleMinute: 0,
|
|
45
|
+
scheduleDay: 1
|
|
46
|
+
}
|
|
47
|
+
}];
|
|
48
|
+
function readAutomationTemplates(plugins, reader) {
|
|
49
|
+
const templates = [...AUTOMATION_TEMPLATES];
|
|
50
|
+
for (const plugin of plugins) {
|
|
51
|
+
const enablement = reader ? plugin.enablement.read(reader) : plugin.enablement.get();
|
|
52
|
+
if (!isContributionEnabled(enablement)) {
|
|
53
|
+
continue;
|
|
54
|
+
}
|
|
55
|
+
const automations = reader ? plugin.automations.read(reader) : plugin.automations.get();
|
|
56
|
+
for (const automation of automations) {
|
|
57
|
+
templates.push({
|
|
58
|
+
id: `${( plugin.uri.toString())}#automation=${automation.blueprint.id}`,
|
|
59
|
+
name: automation.blueprint.name,
|
|
60
|
+
description: automation.blueprint.description ?? ( localize(4620, "Provided by {0}.", plugin.label)),
|
|
61
|
+
prompt: automation.blueprint.prompt,
|
|
62
|
+
schedule: automation.blueprint.schedule,
|
|
63
|
+
source: {
|
|
64
|
+
label: plugin.label,
|
|
65
|
+
uri: automation.uri
|
|
66
|
+
},
|
|
67
|
+
enabled: false
|
|
68
|
+
});
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
return templates;
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
export { AUTOMATION_TEMPLATES, readAutomationTemplates };
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { IAutomationDescriptor, IAutomationRun } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/automations/automation";
|
|
2
|
+
import { AutomationCatalogueState } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/automations/automationService";
|
|
3
|
+
import { IAutomationTemplate } from "./automationTemplates.js";
|
|
4
|
+
export declare function buildAutomationsAccessibleContent(automations: readonly IAutomationDescriptor[], runs: readonly IAutomationRun[], catalogueState: AutomationCatalogueState, templates?: readonly IAutomationTemplate[]): string;
|
|
@@ -0,0 +1,228 @@
|
|
|
1
|
+
|
|
2
|
+
import { localize } from '@codingame/monaco-vscode-api/vscode/vs/nls';
|
|
3
|
+
import { getActiveElement, isHTMLElement } from '@codingame/monaco-vscode-api/vscode/vs/base/browser/dom';
|
|
4
|
+
import { AccessibleViewType, AccessibleContentProvider, AccessibleViewProviderId } from '@codingame/monaco-vscode-api/vscode/vs/platform/accessibility/browser/accessibleView';
|
|
5
|
+
import { AccessibleViewRegistry } from '@codingame/monaco-vscode-api/vscode/vs/platform/accessibility/browser/accessibleViewRegistry';
|
|
6
|
+
import { AccessibilityVerbositySettingId } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/accessibility/browser/accessibilityConfiguration';
|
|
7
|
+
import { IAutomationService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/automations/automationService.service';
|
|
8
|
+
import { DAYS_OF_WEEK } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/automations/schedule';
|
|
9
|
+
import { IAgentPluginService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/plugins/agentPluginService.service';
|
|
10
|
+
import { Parts } from '@codingame/monaco-vscode-api/vscode/vs/workbench/services/layout/browser/layoutService';
|
|
11
|
+
import { IAgentWorkbenchLayoutService } from '@codingame/monaco-vscode-api/vscode/vs/sessions/browser/workbench.service';
|
|
12
|
+
import { AutomationsCustomViewFocusContext } from '@codingame/monaco-vscode-api/vscode/vs/sessions/common/contextkeys';
|
|
13
|
+
import { ISessionsManagementService } from '@codingame/monaco-vscode-api/vscode/vs/sessions/services/sessions/common/sessionsManagement.service';
|
|
14
|
+
import { readAutomationTemplates } from './automationTemplates.js';
|
|
15
|
+
|
|
16
|
+
class AutomationsCustomViewAccessibilityHelp {
|
|
17
|
+
constructor() {
|
|
18
|
+
this.type = AccessibleViewType.Help;
|
|
19
|
+
this.priority = 106;
|
|
20
|
+
this.name = "sessions-automations-help";
|
|
21
|
+
this.when = AutomationsCustomViewFocusContext;
|
|
22
|
+
}
|
|
23
|
+
getProvider(accessor) {
|
|
24
|
+
const layoutService = accessor.get(IAgentWorkbenchLayoutService);
|
|
25
|
+
const automationService = accessor.get(IAutomationService);
|
|
26
|
+
const agentPluginService = accessor.get(IAgentPluginService);
|
|
27
|
+
const restoreFocus = createFocusRestorer(layoutService);
|
|
28
|
+
const templates = readAutomationTemplates(agentPluginService.plugins.get());
|
|
29
|
+
const hasSavedAutomations = automationService.automations.get().length > 0;
|
|
30
|
+
const builtInTemplatesVisible = ( templates.some(template => !template.source));
|
|
31
|
+
const pluginTemplatesVisible = ( templates.some(template => !!template.source));
|
|
32
|
+
const content = [( localize(
|
|
33
|
+
4621,
|
|
34
|
+
"You are in the Automations view. It contains available automation cards followed by run history. Loading, unavailable, and error messages indicate that the catalogue may be incomplete."
|
|
35
|
+
)), ...(builtInTemplatesVisible ? [hasSavedAutomations ? ( localize(
|
|
36
|
+
4622,
|
|
37
|
+
"The Built-in Templates section is collapsed by default because saved automations exist. Press Enter or Space on its disclosure control to expand it."
|
|
38
|
+
)) : ( localize(
|
|
39
|
+
4623,
|
|
40
|
+
"The Built-in Templates section is expanded by default while there are no saved automations. Tab to a template and press Enter or Space to open a New automation dialog with an editable name, prompt, and schedule."
|
|
41
|
+
))] : []), ...(pluginTemplatesVisible ? [( localize(
|
|
42
|
+
4624,
|
|
43
|
+
"The Templates from Plugins section is available whenever enabled plugins provide templates. Press Enter or Space on its disclosure control to expand or collapse it. A blue marker indicates templates added since the section was last expanded. Plugin templates start disabled."
|
|
44
|
+
))] : []), ( localize(
|
|
45
|
+
4625,
|
|
46
|
+
"Use Import Automation in the view header, or drop one .automation.md file anywhere in the view, to review a shared Automation blueprint. Imported Automations start disabled. Open a saved Automation's context menu and choose Export to save a portable blueprint."
|
|
47
|
+
)), ( localize(
|
|
48
|
+
4626,
|
|
49
|
+
"For saved automations, Tab to a card's Edit control and action buttons. Use Left Arrow and Right Arrow to move between Run now and Delete. Press Enter or Space to activate a control. Edit, or clicking anywhere else on the card, opens the automation dialog. Open a card's context menu{0} (for example Shift+F10). Duplicate opens a prefilled New automation dialog, Disable prevents scheduled runs, and Delete asks for confirmation. Run now starts a session immediately.",
|
|
50
|
+
"<keybinding:editor.action.showContextMenu>"
|
|
51
|
+
)), ( localize(
|
|
52
|
+
4627,
|
|
53
|
+
"Run history is grouped by date. While a run is waiting for its session, a lightweight row shows the automation name with a Working... description. Once the session is available, use Up Arrow and Down Arrow to navigate the Sessions list, Enter to open, and Tab to reach Stop, the configured Archive or Mark as Done action, or Delete when available. Open a row's context menu, for example with Shift+F10, to rename it, change its active or read state, or delete it. Delete permanently deletes the session and removes it from run history after confirmation."
|
|
54
|
+
)), ( localize(
|
|
55
|
+
4628,
|
|
56
|
+
"Completed and failed runs that have not been opened are announced as unread. Use Mark all as read to clear all available unread runs."
|
|
57
|
+
)), ( localize(
|
|
58
|
+
4629,
|
|
59
|
+
"Use Open Accessible View to read the current automations and run history as text."
|
|
60
|
+
))].join("\n");
|
|
61
|
+
return ( new AccessibleContentProvider(AccessibleViewProviderId.Automations, {
|
|
62
|
+
type: AccessibleViewType.Help
|
|
63
|
+
}, () => content, restoreFocus, AccessibilityVerbositySettingId.Automations));
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
class AutomationsCustomViewAccessibleView {
|
|
67
|
+
constructor() {
|
|
68
|
+
this.type = AccessibleViewType.View;
|
|
69
|
+
this.priority = 106;
|
|
70
|
+
this.name = "sessions-automations-view";
|
|
71
|
+
this.when = AutomationsCustomViewFocusContext;
|
|
72
|
+
}
|
|
73
|
+
getProvider(accessor) {
|
|
74
|
+
const automationService = accessor.get(IAutomationService);
|
|
75
|
+
const layoutService = accessor.get(IAgentWorkbenchLayoutService);
|
|
76
|
+
const sessionsManagementService = accessor.get(ISessionsManagementService);
|
|
77
|
+
const agentPluginService = accessor.get(IAgentPluginService);
|
|
78
|
+
const restoreFocus = createFocusRestorer(layoutService);
|
|
79
|
+
return ( new AccessibleContentProvider(AccessibleViewProviderId.Automations, {
|
|
80
|
+
type: AccessibleViewType.View
|
|
81
|
+
}, () => buildAutomationsAccessibleContent(automationService.automations.get(), automationService.runs.get().filter(
|
|
82
|
+
run => run.status === "pending" || run.status === "running" || (!!run.sessionResource && !!sessionsManagementService.getSession(run.sessionResource))
|
|
83
|
+
), automationService.catalogueState.get(), readAutomationTemplates(agentPluginService.plugins.get())), restoreFocus, AccessibilityVerbositySettingId.Automations));
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
function createFocusRestorer(layoutService) {
|
|
87
|
+
const focusedElement = getActiveElement();
|
|
88
|
+
return () => {
|
|
89
|
+
if (isHTMLElement(focusedElement) && focusedElement.isConnected) {
|
|
90
|
+
focusedElement.focus();
|
|
91
|
+
} else {
|
|
92
|
+
layoutService.focusPart(Parts.CUSTOM_VIEW_GRID_PART);
|
|
93
|
+
}
|
|
94
|
+
};
|
|
95
|
+
}
|
|
96
|
+
function buildAutomationsAccessibleContent(automations, runs, catalogueState, templates = readAutomationTemplates([])) {
|
|
97
|
+
const lines = [( localize(4630, "Automations"))];
|
|
98
|
+
const builtInTemplates = templates.filter(template => !template.source);
|
|
99
|
+
const pluginTemplates = templates.filter(template => !!template.source);
|
|
100
|
+
if (automations.length > 0) {
|
|
101
|
+
if (catalogueState === "loading") {
|
|
102
|
+
lines.push(( localize(4631, "Additional automations are loading.")));
|
|
103
|
+
} else if (catalogueState === "unavailable") {
|
|
104
|
+
lines.push(( localize(4632, "Some automations are unavailable.")));
|
|
105
|
+
} else if (catalogueState === "error") {
|
|
106
|
+
lines.push(( localize(4633, "Some automations could not be loaded.")));
|
|
107
|
+
}
|
|
108
|
+
for (const automation of automations) {
|
|
109
|
+
lines.push("");
|
|
110
|
+
lines.push(automation.enabled ? ( localize(4634, "{0}, enabled", automation.name)) : ( localize(4635, "{0}, disabled", automation.name)));
|
|
111
|
+
lines.push(( localize(4636, "Schedule: {0}", formatSchedule(automation.schedule))));
|
|
112
|
+
lines.push(( localize(4637, "Prompt: {0}", automation.prompt)));
|
|
113
|
+
}
|
|
114
|
+
} else if (catalogueState === "loading") {
|
|
115
|
+
lines.push(( localize(4638, "Loading automations.")));
|
|
116
|
+
} else if (catalogueState === "unavailable") {
|
|
117
|
+
lines.push(( localize(
|
|
118
|
+
4639,
|
|
119
|
+
"Some automations are unavailable. One or more providers are disconnected, disabled, or do not support automations."
|
|
120
|
+
)));
|
|
121
|
+
} else if (catalogueState === "error") {
|
|
122
|
+
lines.push(( localize(4640, "Unable to load automations.")));
|
|
123
|
+
} else {
|
|
124
|
+
lines.push(( localize(4641, "No automations.")));
|
|
125
|
+
}
|
|
126
|
+
if (builtInTemplates.length > 0 || pluginTemplates.length > 0) {
|
|
127
|
+
lines.push("");
|
|
128
|
+
lines.push(( localize(4642, "Available templates")));
|
|
129
|
+
if (builtInTemplates.length > 0) {
|
|
130
|
+
lines.push(( localize(4643, "Built-in Templates")));
|
|
131
|
+
for (const template of builtInTemplates) {
|
|
132
|
+
lines.push(( localize(
|
|
133
|
+
4644,
|
|
134
|
+
"{0}, {1}. {2}",
|
|
135
|
+
template.name,
|
|
136
|
+
formatSchedule(template.schedule),
|
|
137
|
+
template.description
|
|
138
|
+
)));
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
if (pluginTemplates.length > 0) {
|
|
142
|
+
lines.push(( localize(4645, "Templates from Plugins")));
|
|
143
|
+
for (const template of pluginTemplates) {
|
|
144
|
+
if (template.source) {
|
|
145
|
+
lines.push(( localize(
|
|
146
|
+
4646,
|
|
147
|
+
"{0}, {1}. {2} From {3}.",
|
|
148
|
+
template.name,
|
|
149
|
+
formatSchedule(template.schedule),
|
|
150
|
+
template.description,
|
|
151
|
+
template.source.label
|
|
152
|
+
)));
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
lines.push("");
|
|
158
|
+
lines.push(( localize(4647, "Run history")));
|
|
159
|
+
if (runs.length === 0) {
|
|
160
|
+
lines.push(( localize(4648, "No runs.")));
|
|
161
|
+
} else {
|
|
162
|
+
const automationNames = ( new Map(automations.map(automation => [automation.id, automation.name])));
|
|
163
|
+
for (const run of runs) {
|
|
164
|
+
lines.push(( localize(
|
|
165
|
+
4649,
|
|
166
|
+
"{0}, {1}, started {2}",
|
|
167
|
+
automationNames.get(run.automationId) ?? ( localize(4650, "Unknown automation")),
|
|
168
|
+
formatRunStatus(run),
|
|
169
|
+
( new Date(run.startedAt)).toLocaleString()
|
|
170
|
+
)));
|
|
171
|
+
if (run.errorMessage) {
|
|
172
|
+
lines.push(( localize(4651, "Error: {0}", run.errorMessage)));
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
return lines.join("\n");
|
|
177
|
+
}
|
|
178
|
+
function formatSchedule(schedule) {
|
|
179
|
+
switch (schedule.interval) {
|
|
180
|
+
case "manual":
|
|
181
|
+
return localize(4652, "Manual");
|
|
182
|
+
case "hourly":
|
|
183
|
+
return localize(4653, "Hourly");
|
|
184
|
+
case "daily":
|
|
185
|
+
return localize(
|
|
186
|
+
4654,
|
|
187
|
+
"Daily at {0}",
|
|
188
|
+
formatTime(schedule.scheduleHour, schedule.scheduleMinute)
|
|
189
|
+
);
|
|
190
|
+
case "weekly":
|
|
191
|
+
return localize(
|
|
192
|
+
4655,
|
|
193
|
+
"{0} at {1}",
|
|
194
|
+
DAYS_OF_WEEK[((schedule.scheduleDay % 7) + 7) % 7],
|
|
195
|
+
formatTime(schedule.scheduleHour, schedule.scheduleMinute)
|
|
196
|
+
);
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
function formatTime(hour, minute) {
|
|
200
|
+
const date = ( new Date(Date.UTC(
|
|
201
|
+
2000,
|
|
202
|
+
0,
|
|
203
|
+
1,
|
|
204
|
+
Math.max(0, Math.min(23, hour | 0)),
|
|
205
|
+
Math.max(0, Math.min(59, minute | 0))
|
|
206
|
+
)));
|
|
207
|
+
return date.toLocaleTimeString(undefined, {
|
|
208
|
+
hour: "numeric",
|
|
209
|
+
minute: "2-digit",
|
|
210
|
+
timeZone: "UTC"
|
|
211
|
+
});
|
|
212
|
+
}
|
|
213
|
+
function formatRunStatus(run) {
|
|
214
|
+
switch (run.status) {
|
|
215
|
+
case "pending":
|
|
216
|
+
return localize(4656, "Pending");
|
|
217
|
+
case "running":
|
|
218
|
+
return localize(4657, "Running");
|
|
219
|
+
case "completed":
|
|
220
|
+
return localize(4658, "Completed");
|
|
221
|
+
case "failed":
|
|
222
|
+
return localize(4659, "Failed");
|
|
223
|
+
}
|
|
224
|
+
}
|
|
225
|
+
AccessibleViewRegistry.register(( new AutomationsCustomViewAccessibilityHelp()));
|
|
226
|
+
AccessibleViewRegistry.register(( new AutomationsCustomViewAccessibleView()));
|
|
227
|
+
|
|
228
|
+
export { buildAutomationsAccessibleContent };
|