@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.
Files changed (324) hide show
  1. package/common.js +2 -0
  2. package/index.js +9 -10
  3. package/package.json +10 -10
  4. package/session.js +45 -42
  5. package/vscode/src/vs/platform/agentHost/common/sessionComparisonPrompts.d.ts +1 -0
  6. package/vscode/src/vs/platform/agentHost/common/sessionComparisonPrompts.js +12 -0
  7. package/vscode/src/vs/sessions/browser/{singlePaneWorkbench.d.ts → desktopWorkbench.d.ts} +6 -5
  8. package/vscode/src/vs/sessions/browser/{singlePaneWorkbench.js → desktopWorkbench.js} +23 -25
  9. package/vscode/src/vs/sessions/browser/dockedAuxiliaryBarController.d.ts +5 -2
  10. package/vscode/src/vs/sessions/browser/dockedAuxiliaryBarController.js +41 -3
  11. package/vscode/src/vs/sessions/browser/layoutActions.js +25 -41
  12. package/vscode/src/vs/sessions/browser/mobileWorkbench.d.ts +4 -0
  13. package/vscode/src/vs/sessions/browser/mobileWorkbench.js +10 -0
  14. package/vscode/src/vs/sessions/browser/parts/chatCompositeBar.d.ts +10 -5
  15. package/vscode/src/vs/sessions/browser/parts/chatCompositeBar.js +138 -34
  16. package/vscode/src/vs/sessions/browser/parts/chatGroupDropTarget.d.ts +2 -0
  17. package/vscode/src/vs/sessions/browser/parts/chatGroupDropTarget.js +13 -5
  18. package/vscode/src/vs/sessions/browser/parts/chatGroupView.d.ts +27 -5
  19. package/vscode/src/vs/sessions/browser/parts/chatGroupView.js +129 -28
  20. package/vscode/src/vs/sessions/browser/parts/chatGroupsView.d.ts +22 -7
  21. package/vscode/src/vs/sessions/browser/parts/chatGroupsView.js +260 -21
  22. package/vscode/src/vs/sessions/browser/parts/chatHeader.d.ts +25 -0
  23. package/vscode/src/vs/sessions/browser/parts/chatHeader.js +42 -0
  24. package/vscode/src/vs/sessions/browser/parts/customViewGridPart.js +9 -1
  25. package/vscode/src/vs/sessions/browser/parts/customViewNode.js +1 -1
  26. package/vscode/src/vs/sessions/browser/parts/{singlePaneAuxiliaryBarPart.d.ts → desktopAuxiliaryBarPart.d.ts} +4 -4
  27. package/vscode/src/vs/sessions/browser/parts/desktopAuxiliaryBarPart.js +26 -0
  28. package/vscode/src/vs/sessions/browser/parts/{singlePaneEditorPart.d.ts → desktopEditorPart.d.ts} +8 -6
  29. package/vscode/src/vs/sessions/browser/parts/{singlePaneEditorPart.js → desktopEditorPart.js} +25 -5
  30. package/vscode/src/vs/sessions/browser/parts/editorPart.js +16 -4
  31. package/vscode/src/vs/sessions/browser/parts/editorParts.d.ts +1 -1
  32. package/vscode/src/vs/sessions/browser/parts/editorParts.js +7 -6
  33. package/vscode/src/vs/sessions/browser/parts/gridGap.d.ts +14 -0
  34. package/vscode/src/vs/sessions/browser/parts/gridGap.js +69 -0
  35. package/vscode/src/vs/sessions/browser/parts/media/chatCompositeBar.css +132 -4
  36. package/vscode/src/vs/sessions/browser/parts/media/chatGroupsView.css +10 -0
  37. package/vscode/src/vs/sessions/browser/parts/media/editorPart.css +46 -2
  38. package/vscode/src/vs/sessions/browser/parts/media/sessionReadOnlyBanner.css +3 -3
  39. package/vscode/src/vs/sessions/browser/parts/media/sessionView.css +45 -48
  40. package/vscode/src/vs/sessions/browser/parts/media/sessionsPart.css +15 -0
  41. package/vscode/src/vs/sessions/browser/parts/menubar.contribution.js +8 -8
  42. package/vscode/src/vs/sessions/browser/parts/mobile/mobileSessionsPart.js +1 -1
  43. package/vscode/src/vs/sessions/browser/parts/remoteHostUnavailableEmptyState.d.ts +9 -1
  44. package/vscode/src/vs/sessions/browser/parts/remoteHostUnavailableEmptyState.js +21 -3
  45. package/vscode/src/vs/sessions/browser/parts/sessionBarStyles.js +1 -1
  46. package/vscode/src/vs/sessions/browser/parts/sessionDropTarget.d.ts +4 -3
  47. package/vscode/src/vs/sessions/browser/parts/sessionDropTarget.js +29 -15
  48. package/vscode/src/vs/sessions/browser/parts/sessionGridLayout.d.ts +67 -0
  49. package/vscode/src/vs/sessions/browser/parts/sessionGridLayout.js +598 -0
  50. package/vscode/src/vs/sessions/browser/parts/sessionHeader.d.ts +11 -84
  51. package/vscode/src/vs/sessions/browser/parts/sessionHeader.js +37 -317
  52. package/vscode/src/vs/sessions/browser/parts/sessionHeaderBar.d.ts +103 -0
  53. package/vscode/src/vs/sessions/browser/parts/sessionHeaderBar.js +391 -0
  54. package/vscode/src/vs/sessions/browser/parts/sessionReadOnlyBanner.d.ts +6 -4
  55. package/vscode/src/vs/sessions/browser/parts/sessionReadOnlyBanner.js +58 -28
  56. package/vscode/src/vs/sessions/browser/parts/sessionRemoteConnection.d.ts +4 -0
  57. package/vscode/src/vs/sessions/browser/parts/sessionRemoteConnection.js +66 -23
  58. package/vscode/src/vs/sessions/browser/parts/sessionView.d.ts +24 -5
  59. package/vscode/src/vs/sessions/browser/parts/sessionView.js +143 -33
  60. package/vscode/src/vs/sessions/browser/parts/sessionsPart.d.ts +25 -19
  61. package/vscode/src/vs/sessions/browser/parts/sessionsPart.js +157 -58
  62. package/vscode/src/vs/sessions/browser/parts/sessionsParts.d.ts +12 -3
  63. package/vscode/src/vs/sessions/browser/parts/sessionsParts.js +17 -2
  64. package/vscode/src/vs/sessions/browser/sessionWorkspace.d.ts +6 -3
  65. package/vscode/src/vs/sessions/browser/sessionWorkspace.js +2 -2
  66. package/vscode/src/vs/sessions/browser/sessionsSetUpService.js +66 -20
  67. package/vscode/src/vs/sessions/browser/sessionsSignInDialog.d.ts +1 -0
  68. package/vscode/src/vs/sessions/browser/sessionsSignInDialog.js +5 -4
  69. package/vscode/src/vs/sessions/browser/workbenchFactory.d.ts +12 -0
  70. package/vscode/src/vs/sessions/browser/workbenchFactory.js +17 -0
  71. package/vscode/src/vs/sessions/contrib/accountMenu/browser/account.contribution.d.ts +85 -1
  72. package/vscode/src/vs/sessions/contrib/accountMenu/browser/account.contribution.js +118 -100
  73. package/vscode/src/vs/sessions/contrib/accountMenu/browser/chatPetAchievementBadges.d.ts +3 -2
  74. package/vscode/src/vs/sessions/contrib/accountMenu/browser/chatPetAchievementBadges.js +39 -34
  75. package/vscode/src/vs/sessions/contrib/accountMenu/browser/media/accountTitleBarWidget.css +6 -0
  76. package/vscode/src/vs/sessions/contrib/agentFeedback/browser/nullAgentFeedbackService.contribution.d.ts +3 -0
  77. package/vscode/src/vs/sessions/contrib/agentFeedback/browser/nullAgentFeedbackService.contribution.js +6 -0
  78. package/vscode/src/vs/sessions/contrib/aiCustomizationTreeView/browser/aiCustomizationTreeView.contribution.js +18 -18
  79. package/vscode/src/vs/sessions/contrib/aiCustomizationTreeView/browser/aiCustomizationTreeViewViews.js +12 -12
  80. package/vscode/src/vs/sessions/contrib/applyCommitsToParentRepo/browser/applyChangesToParentRepo.js +7 -7
  81. package/vscode/src/vs/sessions/contrib/aquarium/browser/aquarium.contribution.js +12 -12
  82. package/vscode/src/vs/sessions/contrib/aquarium/browser/aquariumOverlay.js +10 -10
  83. package/vscode/src/vs/sessions/contrib/automations/browser/automationDialog.d.ts +78 -8
  84. package/vscode/src/vs/sessions/contrib/automations/browser/automationDialog.js +1166 -202
  85. package/vscode/src/vs/sessions/contrib/automations/browser/automationDialogService.d.ts +11 -1
  86. package/vscode/src/vs/sessions/contrib/automations/browser/automationDialogService.js +190 -69
  87. package/vscode/src/vs/sessions/contrib/automations/browser/automationRunner.d.ts +11 -9
  88. package/vscode/src/vs/sessions/contrib/automations/browser/automationRunner.js +122 -233
  89. package/vscode/src/vs/sessions/contrib/automations/browser/automationTelemetry.d.ts +22 -0
  90. package/vscode/src/vs/sessions/contrib/automations/browser/automationTelemetry.js +62 -0
  91. package/vscode/src/vs/sessions/contrib/automations/browser/automationTools.d.ts +7 -2
  92. package/vscode/src/vs/sessions/contrib/automations/browser/automationTools.js +172 -84
  93. package/vscode/src/vs/sessions/contrib/automations/browser/automations.contribution.js +17 -7
  94. package/vscode/src/vs/sessions/contrib/automations/browser/media/automationDialog.css +242 -60
  95. package/vscode/src/vs/sessions/contrib/automations/browser/providerAutomationService.d.ts +24 -36
  96. package/vscode/src/vs/sessions/contrib/automations/browser/providerAutomationService.js +104 -420
  97. package/vscode/src/vs/sessions/contrib/changes/browser/changes.contribution.js +15 -14
  98. package/vscode/src/vs/sessions/contrib/changes/browser/changesActions.d.ts +13 -3
  99. package/vscode/src/vs/sessions/contrib/changes/browser/changesActions.js +66 -43
  100. package/vscode/src/vs/sessions/contrib/changes/browser/changesMultiDiffSourceResolver.js +2 -7
  101. package/vscode/src/vs/sessions/contrib/changes/browser/changesViewActions.js +54 -59
  102. package/vscode/src/vs/sessions/contrib/changes/browser/changesetReviewActions.js +7 -7
  103. package/vscode/src/vs/sessions/contrib/changes/browser/media/changesActions.css +6 -0
  104. package/vscode/src/vs/sessions/contrib/changes/browser/sessionSyncChanges.js +25 -21
  105. package/vscode/src/vs/sessions/contrib/changes/browser/sessionsChangesAccessibilityHelp.js +21 -27
  106. package/vscode/src/vs/sessions/contrib/chat/browser/sessionChatInputToolbarDebug.js +17 -17
  107. package/vscode/src/vs/sessions/contrib/chat/browser/sessionTaskRunner.d.ts +5 -5
  108. package/vscode/src/vs/sessions/contrib/chat/browser/sessionTaskRunner.js +2 -2
  109. package/vscode/src/vs/sessions/contrib/chatDebug/browser/chatDebug.contribution.js +2 -2
  110. package/vscode/src/vs/sessions/contrib/codeReview/browser/codeReview.contributions.js +9 -16
  111. package/vscode/src/vs/sessions/contrib/customViewTest/browser/customViewTest.contribution.js +7 -7
  112. package/vscode/src/vs/sessions/contrib/editor/browser/addTabActions.js +15 -13
  113. package/vscode/src/vs/sessions/contrib/editor/browser/editor.contribution.d.ts +13 -1
  114. package/vscode/src/vs/sessions/contrib/editor/browser/editor.contribution.js +104 -117
  115. package/vscode/src/vs/sessions/contrib/editor/browser/emptyFileEditor.contribution.js +8 -7
  116. package/vscode/src/vs/sessions/contrib/editor/browser/emptyFileEditor.js +5 -5
  117. package/vscode/src/vs/sessions/contrib/editor/browser/emptyFileEditorInput.js +1 -1
  118. package/vscode/src/vs/sessions/contrib/editor/browser/media/editorBreadcrumbs.css +0 -1
  119. package/vscode/src/vs/sessions/contrib/editor/browser/media/editorHeader.css +1 -1
  120. package/vscode/src/vs/sessions/contrib/files/browser/files.contribution.d.ts +7 -0
  121. package/vscode/src/vs/sessions/contrib/files/browser/files.contribution.js +77 -13
  122. package/vscode/src/vs/sessions/contrib/files/browser/filesView.d.ts +2 -1
  123. package/vscode/src/vs/sessions/contrib/files/browser/filesView.js +14 -4
  124. package/vscode/src/vs/sessions/contrib/layout/browser/baseSessionLayoutController.d.ts +45 -10
  125. package/vscode/src/vs/sessions/contrib/layout/browser/baseSessionLayoutController.js +527 -96
  126. package/vscode/src/vs/sessions/contrib/layout/browser/chatLayoutOwnerKeys.d.ts +18 -0
  127. package/vscode/src/vs/sessions/contrib/layout/browser/chatLayoutOwnerKeys.js +95 -0
  128. package/vscode/src/vs/sessions/contrib/layout/browser/{singlePane/singlePaneDetailPanelCoordinator.d.ts → desktop/desktopDetailPanelCoordinator.d.ts} +5 -4
  129. package/vscode/src/vs/sessions/contrib/layout/browser/{singlePane/singlePaneDetailPanelCoordinator.js → desktop/desktopDetailPanelCoordinator.js} +10 -7
  130. package/vscode/src/vs/sessions/contrib/layout/browser/{singlePane/singlePaneDockedTabsCoordinator.d.ts → desktop/desktopDockedTabsCoordinator.d.ts} +15 -12
  131. package/vscode/src/vs/sessions/contrib/layout/browser/{singlePane/singlePaneDockedTabsCoordinator.js → desktop/desktopDockedTabsCoordinator.js} +91 -44
  132. package/vscode/src/vs/sessions/contrib/layout/browser/{singlePane/singlePaneDraftSessionStrategy.d.ts → desktop/desktopDraftSessionStrategy.d.ts} +10 -5
  133. package/vscode/src/vs/sessions/contrib/layout/browser/{singlePane/singlePaneDraftSessionStrategy.js → desktop/desktopDraftSessionStrategy.js} +95 -22
  134. package/vscode/src/vs/sessions/contrib/layout/browser/{singlePane/singlePaneExistingSessionStrategy.d.ts → desktop/desktopExistingSessionStrategy.d.ts} +13 -11
  135. package/vscode/src/vs/sessions/contrib/layout/browser/{singlePane/singlePaneExistingSessionStrategy.js → desktop/desktopExistingSessionStrategy.js} +137 -57
  136. package/vscode/src/vs/sessions/contrib/layout/browser/{singlePane/singlePaneLayoutStrategy.d.ts → desktop/desktopLayoutStrategy.d.ts} +22 -13
  137. package/vscode/src/vs/sessions/contrib/layout/browser/{singlePane/singlePaneLayoutStrategy.js → desktop/desktopLayoutStrategy.js} +2 -2
  138. package/vscode/src/vs/sessions/contrib/layout/browser/desktop/desktopOwnerCompositionStore.d.ts +22 -0
  139. package/vscode/src/vs/sessions/contrib/layout/browser/desktop/desktopOwnerCompositionStore.js +136 -0
  140. package/vscode/src/vs/sessions/contrib/layout/browser/{singlePane/singlePaneSharedHelpers.d.ts → desktop/desktopSharedHelpers.d.ts} +9 -2
  141. package/vscode/src/vs/sessions/contrib/layout/browser/desktop/desktopSharedHelpers.js +56 -0
  142. package/vscode/src/vs/sessions/contrib/layout/browser/{singlePane/singlePaneVisibilityProfileStore.d.ts → desktop/desktopVisibilityProfileStore.d.ts} +3 -2
  143. package/vscode/src/vs/sessions/contrib/layout/browser/{singlePane/singlePaneVisibilityProfileStore.js → desktop/desktopVisibilityProfileStore.js} +10 -9
  144. package/vscode/src/vs/sessions/contrib/layout/browser/desktopLayoutController.d.ts +71 -0
  145. package/vscode/src/vs/sessions/contrib/layout/browser/desktopLayoutController.js +201 -0
  146. package/vscode/src/vs/sessions/contrib/layout/browser/sessions.layout.contribution.d.ts +8 -1
  147. package/vscode/src/vs/sessions/contrib/layout/browser/sessions.layout.contribution.js +35 -35
  148. package/vscode/src/vs/sessions/contrib/layout/common/sessionEditorWorkingSet.d.ts +39 -0
  149. package/vscode/src/vs/sessions/contrib/layout/common/sessionEditorWorkingSet.js +73 -0
  150. package/vscode/src/vs/sessions/contrib/onboardingTours/browser/newSessionTourContribution.d.ts +42 -1
  151. package/vscode/src/vs/sessions/contrib/onboardingTours/browser/newSessionTourContribution.js +14 -10
  152. package/vscode/src/vs/sessions/contrib/onboardingTours/browser/newSessionViewTourContribution.js +3 -4
  153. package/vscode/src/vs/sessions/contrib/onboardingTours/browser/newSessionViewTourTrigger.d.ts +2 -2
  154. package/vscode/src/vs/sessions/contrib/onboardingTours/browser/newSessionViewTourTrigger.js +13 -9
  155. package/vscode/src/vs/sessions/contrib/onboardingTours/browser/newSessionViewV2TourContribution.js +20 -5
  156. package/vscode/src/vs/sessions/contrib/onboardingTours/browser/newSessionViewV2TourVariation.d.ts +8 -0
  157. package/vscode/src/vs/sessions/contrib/onboardingTours/browser/newSessionViewV2TourVariation.js +19 -0
  158. package/vscode/src/vs/sessions/contrib/onboardingTours/browser/newSessionViewV3Prompt.js +21 -20
  159. package/vscode/src/vs/sessions/contrib/onboardingTours/browser/tours/newSessionTour.js +10 -5
  160. package/vscode/src/vs/sessions/contrib/onboardingTours/browser/tours/newSessionViewTour.js +12 -8
  161. package/vscode/src/vs/sessions/contrib/onboardingTours/browser/tours/newSessionViewTourShared.d.ts +3 -1
  162. package/vscode/src/vs/sessions/contrib/onboardingTours/browser/tours/newSessionViewTourShared.js +12 -7
  163. package/vscode/src/vs/sessions/contrib/onboardingTours/browser/tours/newSessionViewV2Tour.d.ts +9 -1
  164. package/vscode/src/vs/sessions/contrib/onboardingTours/browser/tours/newSessionViewV2Tour.js +46 -19
  165. package/vscode/src/vs/sessions/contrib/onboardingTours/browser/tours/newSessionViewV3Tour.js +2 -0
  166. package/vscode/src/vs/sessions/contrib/policyBlocked/browser/media/sessionsPolicyBlocked.css +33 -0
  167. package/vscode/src/vs/sessions/contrib/policyBlocked/browser/policyBlocked.contribution.d.ts +4 -2
  168. package/vscode/src/vs/sessions/contrib/policyBlocked/browser/policyBlocked.contribution.js +29 -8
  169. package/vscode/src/vs/sessions/contrib/policyBlocked/browser/sessionsPolicyBlocked.d.ts +15 -2
  170. package/vscode/src/vs/sessions/contrib/policyBlocked/browser/sessionsPolicyBlocked.js +169 -32
  171. package/vscode/src/vs/sessions/contrib/providers/agentHost/browser/agentHostForkActions.js +30 -8
  172. package/vscode/src/vs/sessions/contrib/providers/agentHost/browser/agentHostSessionBranchActions.js +8 -34
  173. package/vscode/src/vs/sessions/contrib/providers/agentHost/browser/agentMergeActions.js +63 -49
  174. package/vscode/src/vs/sessions/contrib/providers/agentHost/browser/exportDebugLogsAction.js +1 -1
  175. package/vscode/src/vs/sessions/contrib/providers/agentHost/browser/mobile/mobileChatInputConfigPicker.js +31 -17
  176. package/vscode/src/vs/sessions/contrib/providers/remoteAgentHost/browser/connectionDiagnostics.contribution.d.ts +32 -0
  177. package/vscode/src/vs/sessions/contrib/providers/remoteAgentHost/browser/connectionDiagnostics.contribution.js +250 -0
  178. package/vscode/src/vs/sessions/contrib/providers/remoteAgentHost/browser/connectionDiagnosticsLogs.d.ts +6 -0
  179. package/vscode/src/vs/sessions/contrib/providers/remoteAgentHost/browser/connectionDiagnosticsLogs.js +52 -0
  180. package/vscode/src/vs/sessions/contrib/providers/remoteAgentHost/browser/connectionDiagnosticsReport.d.ts +51 -0
  181. package/vscode/src/vs/sessions/contrib/providers/remoteAgentHost/browser/connectionDiagnosticsReport.js +439 -0
  182. package/vscode/src/vs/sessions/contrib/providers/remoteAgentHost/browser/connectionDiagnosticsService.d.ts +45 -0
  183. package/vscode/src/vs/sessions/contrib/providers/remoteAgentHost/browser/connectionDiagnosticsService.js +595 -0
  184. package/vscode/src/vs/sessions/contrib/providers/remoteAgentHost/browser/devContainerAgentHostService.d.ts +20 -3
  185. package/vscode/src/vs/sessions/contrib/providers/remoteAgentHost/browser/devContainerAgentHostService.js +360 -46
  186. package/vscode/src/vs/sessions/contrib/providers/remoteAgentHost/browser/devContainerSource.d.ts +9 -0
  187. package/vscode/src/vs/sessions/contrib/providers/remoteAgentHost/browser/devContainerSource.js +59 -0
  188. package/vscode/src/vs/sessions/contrib/providers/remoteAgentHost/browser/media/connectionDiagnostics.css +201 -0
  189. package/vscode/src/vs/sessions/contrib/remoteSessions/browser/getRemoteSessionTool.d.ts +10 -0
  190. package/vscode/src/vs/sessions/contrib/remoteSessions/browser/getRemoteSessionTool.js +70 -0
  191. package/vscode/src/vs/sessions/contrib/remoteSessions/browser/remoteSessionChatService.d.ts +20 -0
  192. package/vscode/src/vs/sessions/contrib/remoteSessions/browser/remoteSessionChatService.js +104 -0
  193. package/vscode/src/vs/sessions/contrib/remoteSessions/browser/remoteSessionInspector.d.ts +15 -0
  194. package/vscode/src/vs/sessions/contrib/remoteSessions/browser/remoteSessionInspector.js +152 -0
  195. package/vscode/src/vs/sessions/contrib/remoteSessions/browser/remoteSessionMessageRouter.d.ts +49 -0
  196. package/vscode/src/vs/sessions/contrib/remoteSessions/browser/remoteSessionMessageRouter.js +340 -0
  197. package/vscode/src/vs/sessions/contrib/remoteSessions/browser/remoteSessionService.d.ts +41 -0
  198. package/vscode/src/vs/sessions/contrib/remoteSessions/browser/remoteSessionService.js +400 -0
  199. package/vscode/src/vs/sessions/contrib/remoteSessions/browser/remoteSessionSource.d.ts +28 -0
  200. package/vscode/src/vs/sessions/contrib/remoteSessions/browser/remoteSessionSource.js +178 -0
  201. package/vscode/src/vs/sessions/contrib/remoteSessions/browser/remoteSessionTools.d.ts +17 -0
  202. package/vscode/src/vs/sessions/contrib/remoteSessions/browser/remoteSessionTools.js +206 -0
  203. package/vscode/src/vs/sessions/contrib/remoteSessions/browser/remoteSessions.contribution.d.ts +1 -0
  204. package/vscode/src/vs/sessions/contrib/remoteSessions/browser/remoteSessions.contribution.js +58 -0
  205. package/vscode/src/vs/sessions/contrib/remoteSessions/browser/sendRemoteMessageTool.d.ts +10 -0
  206. package/vscode/src/vs/sessions/contrib/remoteSessions/browser/sendRemoteMessageTool.js +90 -0
  207. package/vscode/src/vs/sessions/contrib/remoteSessions/common/remoteSessionInspection.d.ts +38 -0
  208. package/vscode/src/vs/sessions/contrib/remoteSessions/common/remoteSessionInspection.js +58 -0
  209. package/vscode/src/vs/sessions/contrib/search/browser/search.contribution.js +4 -5
  210. package/vscode/src/vs/sessions/contrib/search/browser/searchEditorEmptyState.contribution.js +1 -1
  211. package/vscode/src/vs/sessions/contrib/sessionComparison/browser/sessionComparison.contribution.d.ts +1 -0
  212. package/vscode/src/vs/sessions/contrib/sessionComparison/browser/sessionComparison.contribution.js +33 -0
  213. package/vscode/src/vs/sessions/contrib/sessionComparison/browser/sessionComparisonGridController.d.ts +30 -0
  214. package/vscode/src/vs/sessions/contrib/sessionComparison/browser/sessionComparisonGridController.js +190 -0
  215. package/vscode/src/vs/sessions/contrib/sessionComparison/browser/sessionComparisonTool.d.ts +31 -0
  216. package/vscode/src/vs/sessions/contrib/sessionComparison/browser/sessionComparisonTool.js +559 -0
  217. package/vscode/src/vs/sessions/contrib/sessionComparison/browser/sessionComparisonViewService.d.ts +12 -0
  218. package/vscode/src/vs/sessions/contrib/sessionComparison/browser/sessionComparisonViewService.js +38 -0
  219. package/vscode/src/vs/sessions/contrib/sessions/browser/blockedSessionsIndicatorModel.d.ts +13 -4
  220. package/vscode/src/vs/sessions/contrib/sessions/browser/blockedSessionsIndicatorModel.js +155 -22
  221. package/vscode/src/vs/sessions/contrib/sessions/browser/blockedSessionsList.js +9 -5
  222. package/vscode/src/vs/sessions/contrib/sessions/browser/media/automationsCards.css +90 -25
  223. package/vscode/src/vs/sessions/contrib/sessions/browser/media/sessionsTitleBarWidget.css +21 -4
  224. package/vscode/src/vs/sessions/contrib/sessions/browser/sessionDetailsAction.d.ts +2 -1
  225. package/vscode/src/vs/sessions/contrib/sessions/browser/sessionDetailsAction.js +11 -7
  226. package/vscode/src/vs/sessions/contrib/sessions/browser/sessions.contribution.d.ts +116 -1
  227. package/vscode/src/vs/sessions/contrib/sessions/browser/sessions.contribution.js +126 -30
  228. package/vscode/src/vs/sessions/contrib/sessions/browser/sessionsAccountTelemetry.d.ts +26 -0
  229. package/vscode/src/vs/sessions/contrib/sessions/browser/sessionsAccountTelemetry.js +160 -0
  230. package/vscode/src/vs/sessions/contrib/sessions/browser/sessionsActions.d.ts +14 -6
  231. package/vscode/src/vs/sessions/contrib/sessions/browser/sessionsActions.js +555 -151
  232. package/vscode/src/vs/sessions/contrib/sessions/browser/sessionsLifecycleTracker.d.ts +192 -0
  233. package/vscode/src/vs/sessions/contrib/sessions/browser/sessionsLifecycleTracker.js +510 -0
  234. package/vscode/src/vs/sessions/contrib/sessions/browser/sessionsTelemetry.contribution.d.ts +6 -7
  235. package/vscode/src/vs/sessions/contrib/sessions/browser/sessionsTelemetry.contribution.js +64 -57
  236. package/vscode/src/vs/sessions/contrib/sessions/browser/sessionsTitleBarWidget.d.ts +5 -3
  237. package/vscode/src/vs/sessions/contrib/sessions/browser/sessionsTitleBarWidget.js +83 -51
  238. package/vscode/src/vs/sessions/contrib/sessions/browser/sessionsWindowNotifier.d.ts +5 -1
  239. package/vscode/src/vs/sessions/contrib/sessions/browser/sessionsWindowNotifier.js +33 -12
  240. package/vscode/src/vs/sessions/contrib/sessions/browser/views/automationCataloguePresentation.d.ts +3 -0
  241. package/vscode/src/vs/sessions/contrib/sessions/browser/views/automationCataloguePresentation.js +53 -0
  242. package/vscode/src/vs/sessions/contrib/sessions/browser/views/automationTemplates.js +10 -10
  243. package/vscode/src/vs/sessions/contrib/sessions/browser/views/automationsAccessibility.d.ts +2 -2
  244. package/vscode/src/vs/sessions/contrib/sessions/browser/views/automationsAccessibility.js +103 -55
  245. package/vscode/src/vs/sessions/contrib/sessions/browser/views/automationsView.d.ts +7 -1
  246. package/vscode/src/vs/sessions/contrib/sessions/browser/views/automationsView.js +679 -325
  247. package/vscode/src/vs/sessions/contrib/sessions/browser/views/sessionsViewActions.d.ts +27 -1
  248. package/vscode/src/vs/sessions/contrib/sessions/browser/views/sessionsViewActions.js +508 -163
  249. package/vscode/src/vs/sessions/contrib/terminal/browser/agentHostSessionTaskRunner.d.ts +20 -2
  250. package/vscode/src/vs/sessions/contrib/terminal/browser/agentHostSessionTaskRunner.js +100 -17
  251. package/vscode/src/vs/sessions/contrib/terminal/browser/sessionsTerminalContribution.d.ts +5 -1
  252. package/vscode/src/vs/sessions/contrib/terminal/browser/sessionsTerminalContribution.js +108 -30
  253. package/vscode/src/vs/sessions/contrib/workspace/browser/workspaceFolderManagement.d.ts +5 -3
  254. package/vscode/src/vs/sessions/contrib/workspace/browser/workspaceFolderManagement.js +47 -35
  255. package/vscode/src/vs/sessions/services/agentHostFilter/browser/agentHostFilterService.d.ts +9 -4
  256. package/vscode/src/vs/sessions/services/agentHostFilter/browser/agentHostFilterService.js +75 -25
  257. package/vscode/src/vs/sessions/services/customView/browser/customViewService.d.ts +11 -4
  258. package/vscode/src/vs/sessions/services/customView/browser/customViewService.js +17 -9
  259. package/vscode/src/vs/sessions/services/sessions/browser/closedItemHistory.d.ts +5 -0
  260. package/vscode/src/vs/sessions/services/sessions/browser/closedItemHistory.js +20 -2
  261. package/vscode/src/vs/sessions/services/sessions/browser/sessionComparisonService.d.ts +75 -0
  262. package/vscode/src/vs/sessions/services/sessions/browser/sessionComparisonService.js +1135 -0
  263. package/vscode/src/vs/sessions/services/sessions/browser/sessionGridState.d.ts +17 -0
  264. package/vscode/src/vs/sessions/services/sessions/browser/sessionGridState.js +99 -0
  265. package/vscode/src/vs/sessions/services/sessions/browser/sessionGroupsService.d.ts +4 -0
  266. package/vscode/src/vs/sessions/services/sessions/browser/sessionGroupsService.js +88 -23
  267. package/vscode/src/vs/sessions/services/sessions/browser/sessionNavigation.d.ts +19 -26
  268. package/vscode/src/vs/sessions/services/sessions/browser/sessionNavigation.js +115 -74
  269. package/vscode/src/vs/sessions/services/sessions/browser/sessionsListModelService.js +1 -1
  270. package/vscode/src/vs/sessions/services/sessions/browser/sessionsManagementService.d.ts +22 -7
  271. package/vscode/src/vs/sessions/services/sessions/browser/sessionsManagementService.js +278 -60
  272. package/vscode/src/vs/sessions/services/sessions/browser/sessionsRecencyHistory.d.ts +17 -20
  273. package/vscode/src/vs/sessions/services/sessions/browser/sessionsRecencyHistory.js +33 -22
  274. package/vscode/src/vs/sessions/services/sessions/browser/sessionsService.d.ts +28 -8
  275. package/vscode/src/vs/sessions/services/sessions/browser/sessionsService.js +673 -160
  276. package/vscode/src/vs/sessions/services/sessions/browser/visibleSessions.d.ts +13 -4
  277. package/vscode/src/vs/sessions/services/sessions/browser/visibleSessions.js +105 -15
  278. package/vscode/src/vs/sessions/services/sessions/common/sessionContextKeys.js +53 -34
  279. package/vscode/src/vs/sessions/services/workspaceFolderLabel/browser/workspaceFolderLabelService.js +1 -1
  280. package/vscode/src/vs/workbench/browser/layout.d.ts +46 -70
  281. package/vscode/src/vs/workbench/browser/layout.js +243 -44
  282. package/vscode/src/vs/workbench/browser/workbench.d.ts +1 -3
  283. package/vscode/src/vs/workbench/browser/workbench.js +26 -24
  284. package/vscode/src/vs/workbench/contrib/chat/common/automations/schedule.d.ts +6 -0
  285. package/vscode/src/vs/workbench/contrib/chat/common/automations/schedule.js +41 -0
  286. package/vscode/src/vs/workbench/contrib/chat/common/chatUsage.d.ts +15 -0
  287. package/vscode/src/vs/workbench/contrib/chat/common/chatUsage.js +56 -0
  288. package/vscode/src/vs/platform/agentHost/common/meta/agentCheckoutOperationMeta.d.ts +0 -18
  289. package/vscode/src/vs/platform/agentHost/common/meta/agentCheckoutOperationMeta.js +0 -27
  290. package/vscode/src/vs/sessions/browser/parts/singlePaneAuxiliaryBarPart.js +0 -36
  291. package/vscode/src/vs/sessions/contrib/automations/browser/automationLeaderElection.d.ts +0 -37
  292. package/vscode/src/vs/sessions/contrib/automations/browser/automationLeaderElection.js +0 -126
  293. package/vscode/src/vs/sessions/contrib/automations/browser/automationScheduler.d.ts +0 -59
  294. package/vscode/src/vs/sessions/contrib/automations/browser/automationScheduler.js +0 -232
  295. package/vscode/src/vs/sessions/contrib/automations/browser/automationStorageService.d.ts +0 -13
  296. package/vscode/src/vs/sessions/contrib/automations/browser/automationStorageService.js +0 -22
  297. package/vscode/src/vs/sessions/contrib/blockedSessions/browser/blockedSessions.d.ts +0 -45
  298. package/vscode/src/vs/sessions/contrib/blockedSessions/browser/blockedSessions.js +0 -110
  299. package/vscode/src/vs/sessions/contrib/layout/browser/desktopSessionLayoutController.d.ts +0 -112
  300. package/vscode/src/vs/sessions/contrib/layout/browser/desktopSessionLayoutController.js +0 -444
  301. package/vscode/src/vs/sessions/contrib/layout/browser/singlePane/singlePaneSharedHelpers.js +0 -43
  302. package/vscode/src/vs/sessions/contrib/layout/browser/singlePaneLayoutController.d.ts +0 -55
  303. package/vscode/src/vs/sessions/contrib/layout/browser/singlePaneLayoutController.js +0 -91
  304. package/vscode/src/vs/sessions/contrib/providers/agentHost/browser/agentHostClaudePermissionModePicker.d.ts +0 -26
  305. package/vscode/src/vs/sessions/contrib/providers/agentHost/browser/agentHostClaudePermissionModePicker.js +0 -98
  306. package/vscode/src/vs/sessions/contrib/providers/agentHost/browser/agentHostCodexApprovalsPicker.d.ts +0 -33
  307. package/vscode/src/vs/sessions/contrib/providers/agentHost/browser/agentHostCodexApprovalsPicker.js +0 -98
  308. package/vscode/src/vs/sessions/contrib/providers/agentHost/browser/agentHostModeIcon.d.ts +0 -2
  309. package/vscode/src/vs/sessions/contrib/providers/agentHost/browser/agentHostModeIcon.js +0 -13
  310. package/vscode/src/vs/sessions/contrib/providers/agentHost/browser/agentHostModePicker.d.ts +0 -122
  311. package/vscode/src/vs/sessions/contrib/providers/agentHost/browser/agentHostModePicker.js +0 -464
  312. package/vscode/src/vs/sessions/contrib/providers/agentHost/browser/agentHostPermissionPickerActionItem.d.ts +0 -35
  313. package/vscode/src/vs/sessions/contrib/providers/agentHost/browser/agentHostPermissionPickerActionItem.js +0 -90
  314. package/vscode/src/vs/sessions/contrib/providers/agentHost/browser/agentHostPermissionPickerDelegate.d.ts +0 -84
  315. package/vscode/src/vs/sessions/contrib/providers/agentHost/browser/agentHostPermissionPickerDelegate.js +0 -328
  316. package/vscode/src/vs/sessions/contrib/providers/agentHost/browser/agentHostSessionConfigPicker.d.ts +0 -174
  317. package/vscode/src/vs/sessions/contrib/providers/agentHost/browser/agentHostSessionConfigPicker.js +0 -1390
  318. package/vscode/src/vs/sessions/contrib/providers/agentHost/browser/media/agentHostSessionConfigPicker.css +0 -44
  319. package/vscode/src/vs/sessions/contrib/providers/agentHost/browser/mobile/mobileAgentHostModePicker.d.ts +0 -30
  320. package/vscode/src/vs/sessions/contrib/providers/agentHost/browser/mobile/mobileAgentHostModePicker.js +0 -78
  321. package/vscode/src/vs/sessions/contrib/providers/agentHost/browser/mobile/mobileChatPhoneInputTarget.d.ts +0 -11
  322. package/vscode/src/vs/sessions/contrib/providers/agentHost/browser/mobile/mobileChatPhoneInputTarget.js +0 -26
  323. package/vscode/src/vs/sessions/contrib/providers/remoteAgentHost/browser/remoteAgentHostConnectionCustomization.d.ts +0 -27
  324. package/vscode/src/vs/sessions/contrib/providers/remoteAgentHost/browser/remoteAgentHostConnectionCustomization.js +0 -26
@@ -10,16 +10,19 @@ import { ConfirmationOptionKind } from '@codingame/monaco-vscode-api/vscode/vs/p
10
10
  import { IConfigurationService } from '@codingame/monaco-vscode-api/vscode/vs/platform/configuration/common/configuration.service';
11
11
  import { ContextKeyExpr } from '@codingame/monaco-vscode-api/vscode/vs/platform/contextkey/common/contextkey';
12
12
  import { IInstantiationService } from '@codingame/monaco-vscode-api/vscode/vs/platform/instantiation/common/instantiation';
13
+ import { ITelemetryService } from '@codingame/monaco-vscode-api/vscode/vs/platform/telemetry/common/telemetry.service';
13
14
  import { ChatContextKeys } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/actions/chatContextKeys';
14
15
  import { isAutomationModelConfiguration } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/automations/automation';
15
16
  import { IAutomationRunner } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/automations/automationRunner.service';
16
- import { ConfigureAutomationToolReferenceName, serializeAutomationEditableState, AutomationSessionTemplateAuthorityError } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/automations/automationService';
17
+ import { AutomationUnavailableError, ConfigureAutomationToolReferenceName, serializeAutomationEditableState, assertAutomationTargetAuthority, AutomationSessionTemplateAuthorityError } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/automations/automationService';
17
18
  import { IAutomationService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/automations/automationService.service';
18
19
  import { ChatAutomationsEnabledContext, CHAT_AUTOMATIONS_ENABLED_SETTING } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/automations/automationsEnabled';
19
20
  import { ChatPermissionLevel } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/constants';
20
21
  import { ToolDataSource } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/tools/languageModelToolsService';
21
22
  import { ILanguageModelToolsService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/tools/languageModelToolsService.service';
23
+ import { ISessionsProvidersService } from '@codingame/monaco-vscode-api/vscode/vs/sessions/services/sessions/browser/sessionsProvidersService.service';
22
24
  import { ISessionsManagementService } from '@codingame/monaco-vscode-api/vscode/vs/sessions/services/sessions/common/sessionsManagement.service';
25
+ import { logAutomationConfigureOutcome } from './automationTelemetry.js';
23
26
 
24
27
  const ListAutomationsToolId = "vscode_listAutomations";
25
28
  const ConfigureAutomationToolId = "vscode_configureAutomation";
@@ -27,8 +30,7 @@ const RunAutomationToolId = "vscode_runAutomation";
27
30
  const DeleteAutomationToolId = "vscode_deleteAutomation";
28
31
  const automationToolWhen = ( ContextKeyExpr.and(ChatContextKeys.enabled, ChatAutomationsEnabledContext));
29
32
  const deleteAutomationConfirmationId = "delete";
30
- const manualRunLeaderWindowId = 0;
31
- const automationIntervals = ["manual", "hourly", "daily", "weekly"];
33
+ const automationIntervals = ["manual", "hourly", "daily", "weekdays", "weekly"];
32
34
  const automationIsolationKinds = ["default", "folder", "worktree"];
33
35
  const chatPermissionLevels = [
34
36
  ChatPermissionLevel.Default,
@@ -47,9 +49,10 @@ class AutomationToolMutationBlockedError extends Error {
47
49
  }
48
50
  }
49
51
  let ListAutomationsTool = class ListAutomationsTool {
50
- constructor(automationService, configurationService) {
52
+ constructor(automationService, configurationService, sessionsProvidersService) {
51
53
  this.automationService = automationService;
52
54
  this.configurationService = configurationService;
55
+ this.sessionsProvidersService = sessionsProvidersService;
53
56
  }
54
57
  getToolData() {
55
58
  return {
@@ -57,9 +60,9 @@ let ListAutomationsTool = class ListAutomationsTool {
57
60
  toolReferenceName: "listAutomations",
58
61
  canBeReferencedInPrompt: false,
59
62
  icon: Codicon.calendar,
60
- displayName: ( localize(3366, "List Automations")),
61
- userDescription: ( localize(3367, "List scheduled agent automations")),
62
- modelDescription: "List all currently available scheduled automations and their stable IDs, editable fields, targets, and timing metadata. The result includes catalogueState; only \"ready\" means the list is complete, so never interpret an empty non-ready result as no configured automations. Use this before configureAutomation, runAutomation, or deleteAutomation when acting on an existing automation. This tool never changes automation state.",
63
+ displayName: ( localize(3776, "List Automations")),
64
+ userDescription: ( localize(3777, "List scheduled agent automations")),
65
+ modelDescription: "List Automation providers and their currently visible scheduled automations. The result is an array with one entry per provider. A provider's state applies only to that provider and never makes automations from another provider unavailable. When a provider is \"ready\", its automations array is complete; otherwise it may be incomplete, including when empty. Use canCreateAutomation and each automation's availableOperations before calling configureAutomation, runAutomation, or deleteAutomation. This tool never changes automation state.",
63
66
  source: ToolDataSource.Internal,
64
67
  when: automationToolWhen,
65
68
  runsInWorkspace: false,
@@ -72,29 +75,48 @@ let ListAutomationsTool = class ListAutomationsTool {
72
75
  }
73
76
  async prepareToolInvocation(_context, _token) {
74
77
  return {
75
- invocationMessage: ( localize(3368, "Reading automations")),
76
- pastTenseMessage: ( localize(3369, "Read automations"))
78
+ invocationMessage: ( localize(3778, "Reading automations")),
79
+ pastTenseMessage: ( localize(3779, "Read automations"))
77
80
  };
78
81
  }
79
82
  async invoke(_invocation, _countTokens, _progress, _token) {
80
83
  if (!isAutomationsEnabled(this.configurationService)) {
81
84
  return automationToolError("Automations are disabled.");
82
85
  }
83
- const catalogueState = this.automationService.catalogueState.get();
84
- const automations = this.automationService.automations.get().map(toAutomationToolOutput);
85
- const result = automationToolResult(JSON.stringify({
86
- catalogueState,
87
- automations
88
- }, undefined, 2));
89
- result.toolResultMessage = catalogueState !== "ready" ? ( localize(
90
- 3370,
91
- "Listed {0} available automations; catalogue is incomplete",
92
- automations.length
93
- )) : automations.length === 1 ? ( localize(3371, "Listed 1 automation")) : ( localize(3372, "Listed {0} automations", automations.length));
86
+ const providers = this.sessionsProvidersService.getProviders().flatMap(provider => {
87
+ const store = provider.automations;
88
+ if (!store || store.enabled?.get() === false) {
89
+ return [];
90
+ }
91
+ const state = store.catalogueState.get();
92
+ const unavailableReason = store.unavailableReason?.get();
93
+ return [{
94
+ providerId: provider.id,
95
+ providerLabel: provider.label,
96
+ state,
97
+ canCreateAutomation: store.canCreateAutomation.get(),
98
+ ...(unavailableReason !== undefined ? {
99
+ unavailableReason
100
+ } : {}),
101
+ automations: store.automations.get().map(
102
+ automation => toAutomationListToolOutput(automation, this.automationService)
103
+ )
104
+ }];
105
+ });
106
+ const automationCount = providers.reduce((count, provider) => count + provider.automations.length, 0);
107
+ const incompleteProviderCount = providers.filter(provider => provider.state !== "ready").length;
108
+ const result = automationToolResult(JSON.stringify(providers, undefined, 2));
109
+ result.toolResultMessage = incompleteProviderCount > 0 ? ( localize(
110
+ 3780,
111
+ "Visible automations: {0}; incomplete providers: {1} of {2}",
112
+ automationCount,
113
+ incompleteProviderCount,
114
+ providers.length
115
+ )) : automationCount === 1 ? ( localize(3781, "Listed 1 automation")) : ( localize(3782, "Listed {0} automations", automationCount));
94
116
  return result;
95
117
  }
96
118
  };
97
- ListAutomationsTool = ( __decorate([( __param(0, IAutomationService)), ( __param(1, IConfigurationService))], ListAutomationsTool));
119
+ ListAutomationsTool = ( __decorate([( __param(0, IAutomationService)), ( __param(1, IConfigurationService)), ( __param(2, ISessionsProvidersService))], ListAutomationsTool));
98
120
  let RunAutomationTool = class RunAutomationTool {
99
121
  constructor(automationService, automationRunner, configurationService) {
100
122
  this.automationService = automationService;
@@ -107,8 +129,8 @@ let RunAutomationTool = class RunAutomationTool {
107
129
  toolReferenceName: "runAutomation",
108
130
  canBeReferencedInPrompt: false,
109
131
  icon: Codicon.play,
110
- displayName: ( localize(3373, "Run Automation")),
111
- userDescription: ( localize(3374, "Run a configured agent automation now")),
132
+ displayName: ( localize(3783, "Run Automation")),
133
+ userDescription: ( localize(3784, "Run a configured agent automation now")),
112
134
  modelDescription: "Run a configured automation immediately by stable ID. Call listAutomations first to obtain the current ID. This starts a fresh agent session in the background using the saved prompt, target, and provider session configuration, even when scheduled runs are disabled. The tool returns after session dispatch commits; do not run it again unless the user asks.",
113
135
  source: ToolDataSource.Internal,
114
136
  when: automationToolWhen,
@@ -134,17 +156,17 @@ let RunAutomationTool = class RunAutomationTool {
134
156
  const activeRun = this.automationService.getActiveRunFor(automation.id);
135
157
  if (activeRun) {
136
158
  return {
137
- invocationMessage: ( localize(3375, "Automation {0} is already running", automation.name)),
138
- pastTenseMessage: ( localize(3376, "Automation {0} was already running", automation.name))
159
+ invocationMessage: ( localize(3785, "Automation {0} is already running", automation.name)),
160
+ pastTenseMessage: ( localize(3786, "Automation {0} was already running", automation.name))
139
161
  };
140
162
  }
141
163
  return {
142
- invocationMessage: ( localize(3377, "Running automation {0}", automation.name)),
143
- pastTenseMessage: ( localize(3378, "Started automation {0}", automation.name)),
164
+ invocationMessage: ( localize(3787, "Running automation {0}", automation.name)),
165
+ pastTenseMessage: ( localize(3788, "Started automation {0}", automation.name)),
144
166
  confirmationMessages: {
145
- title: ( localize(3379, "Run Automation?")),
167
+ title: ( localize(3789, "Run Automation?")),
146
168
  message: ( new MarkdownString(( localize(
147
- 3380,
169
+ 3790,
148
170
  "Run **{0}** (`{1}`) now? This starts a new agent session using the automation's configured prompt and permissions.",
149
171
  automation.name,
150
172
  automation.id
@@ -169,7 +191,7 @@ let RunAutomationTool = class RunAutomationTool {
169
191
  throw error;
170
192
  }
171
193
  const dispatchCancellation = ( new CancellationTokenSource(token));
172
- const operation = this.automationRunner.runOnce(automation, "manual", manualRunLeaderWindowId, dispatchCancellation.token);
194
+ const operation = this.automationRunner.runOnce(automation, dispatchCancellation.token);
173
195
  let dispatch;
174
196
  try {
175
197
  dispatch = await operation.whenDispatched;
@@ -182,6 +204,21 @@ let RunAutomationTool = class RunAutomationTool {
182
204
  if (dispatch.kind === "notStarted") {
183
205
  return automationNotStarted(automation, dispatch);
184
206
  }
207
+ if (dispatch.kind === "accepted") {
208
+ const result = automationToolResult(JSON.stringify({
209
+ status: "accepted",
210
+ automation: {
211
+ id: automation.id,
212
+ name: automation.name
213
+ }
214
+ }));
215
+ result.toolResultMessage = ( localize(
216
+ 3791,
217
+ "Requested automation {0}; the provider has not returned a run.",
218
+ automation.name
219
+ ));
220
+ return result;
221
+ }
185
222
  const result = automationToolResult(JSON.stringify({
186
223
  status: "started",
187
224
  automation: {
@@ -194,7 +231,7 @@ let RunAutomationTool = class RunAutomationTool {
194
231
  sessionResource: ( dispatch.sessionResource.toString())
195
232
  }
196
233
  }, undefined, 2));
197
- result.toolResultMessage = ( localize(3381, "Started automation {0}", automation.name));
234
+ result.toolResultMessage = ( localize(3792, "Started automation {0}", automation.name));
198
235
  return result;
199
236
  }
200
237
  };
@@ -210,8 +247,8 @@ let DeleteAutomationTool = class DeleteAutomationTool {
210
247
  toolReferenceName: "deleteAutomation",
211
248
  canBeReferencedInPrompt: false,
212
249
  icon: Codicon.trash,
213
- displayName: ( localize(3382, "Delete Automation")),
214
- userDescription: ( localize(3383, "Delete a scheduled agent automation")),
250
+ displayName: ( localize(3793, "Delete Automation")),
251
+ userDescription: ( localize(3794, "Delete a scheduled agent automation")),
215
252
  modelDescription: "Delete an automation by stable ID. Call listAutomations first to obtain the current ID. The current approval policy may approve the action automatically; otherwise the user is shown a Delete/Cancel confirmation.",
216
253
  source: ToolDataSource.Internal,
217
254
  when: automationToolWhen,
@@ -235,23 +272,23 @@ let DeleteAutomationTool = class DeleteAutomationTool {
235
272
  }
236
273
  const automation = resolveAutomationInput(this.automationService, context.parameters, "deleteAutomation");
237
274
  return {
238
- invocationMessage: ( localize(3384, "Deleting automation {0}", automation.name)),
239
- pastTenseMessage: ( localize(3385, "Deleted automation {0}", automation.name)),
275
+ invocationMessage: ( localize(3795, "Deleting automation {0}", automation.name)),
276
+ pastTenseMessage: ( localize(3796, "Deleted automation {0}", automation.name)),
240
277
  confirmationMessages: {
241
- title: ( localize(3386, "Delete Automation?")),
278
+ title: ( localize(3797, "Delete Automation?")),
242
279
  message: ( new MarkdownString(( localize(
243
- 3387,
280
+ 3798,
244
281
  "Delete **{0}** (`{1}`)? Its saved configuration and run history will be permanently removed. Runs already in flight will continue.",
245
282
  automation.name,
246
283
  automation.id
247
284
  )))),
248
285
  customOptions: [{
249
286
  id: deleteAutomationConfirmationId,
250
- label: ( localize(3388, "Delete")),
287
+ label: ( localize(3799, "Delete")),
251
288
  kind: ConfirmationOptionKind.Approve
252
289
  }, {
253
290
  id: "cancel",
254
- label: ( localize(3389, "Cancel")),
291
+ label: ( localize(3800, "Cancel")),
255
292
  kind: ConfirmationOptionKind.Deny
256
293
  }]
257
294
  }
@@ -282,6 +319,9 @@ let DeleteAutomationTool = class DeleteAutomationTool {
282
319
  if (error instanceof AutomationToolMutationBlockedError) {
283
320
  return error.result;
284
321
  }
322
+ if (error instanceof AutomationUnavailableError) {
323
+ return automationToolError(error.message);
324
+ }
285
325
  throw error;
286
326
  }
287
327
  const result = automationToolResult(JSON.stringify({
@@ -291,7 +331,7 @@ let DeleteAutomationTool = class DeleteAutomationTool {
291
331
  name: automation.name
292
332
  }
293
333
  }));
294
- result.toolResultMessage = ( localize(3390, "Deleted automation {0}", automation.name));
334
+ result.toolResultMessage = ( localize(3801, "Deleted automation {0}", automation.name));
295
335
  return result;
296
336
  }
297
337
  createMutationGuard(token) {
@@ -307,10 +347,16 @@ let DeleteAutomationTool = class DeleteAutomationTool {
307
347
  };
308
348
  DeleteAutomationTool = ( __decorate([( __param(0, IAutomationService)), ( __param(1, IConfigurationService))], DeleteAutomationTool));
309
349
  let ConfigureAutomationTool = class ConfigureAutomationTool {
310
- constructor(automationService, sessionsManagementService, configurationService) {
350
+ constructor(
351
+ automationService,
352
+ sessionsManagementService,
353
+ configurationService,
354
+ telemetryService
355
+ ) {
311
356
  this.automationService = automationService;
312
357
  this.sessionsManagementService = sessionsManagementService;
313
358
  this.configurationService = configurationService;
359
+ this.telemetryService = telemetryService;
314
360
  }
315
361
  getToolData() {
316
362
  return {
@@ -318,13 +364,13 @@ let ConfigureAutomationTool = class ConfigureAutomationTool {
318
364
  toolReferenceName: ConfigureAutomationToolReferenceName,
319
365
  canBeReferencedInPrompt: false,
320
366
  icon: Codicon.calendar,
321
- displayName: ( localize(3391, "Configure Automation")),
322
- userDescription: ( localize(3392, "Create or update an automation")),
367
+ displayName: ( localize(3802, "Configure Automation")),
368
+ userDescription: ( localize(3803, "Create or update an automation")),
323
369
  modelDescription: `Create or update a persistent scheduled automation.
324
370
 
325
371
  Create a new automation only when the user explicitly asks for an automation, or for a prompt to run on a recurring schedule. Do not infer that intent from requests merely to monitor, watch, follow, or keep something (such as a pull request) green.
326
372
 
327
- Omit "automationId" to create an automation; "name", "prompt", and "schedule.interval" are then required. If "target" is omitted, the automation targets the current Agents window session. Include "automationId" to update an existing automation, and only provide fields that should change. Call listAutomations first to obtain the stable ID and current values.
373
+ Omit "automationId" to create an automation; "name", "prompt", and "schedule.interval" are then required. If "target" is omitted, the automation targets the current Agents window session. The target must be a connected Agent Host that supports automations; there is no local execution fallback. Include "automationId" to update an existing automation, and only provide fields that should change. Call listAutomations first to obtain the stable ID and current values. An existing automation cannot move between hosts; create a separate definition on the new host and explicitly disable the original if it should stop scheduling.
328
374
 
329
375
  Use "sessionTemplate" for provider-owned Model, Agent, Mode, Approvals, and other configuration returned by listAutomations. Omit it on unrelated partial updates, or set it to null to reset provider configuration. Do not combine it with the legacy "modelId", "mode", or "permissionLevel" aliases.
330
376
 
@@ -356,19 +402,19 @@ The change uses the current tool-approval policy. When approval is required, the
356
402
  interval: {
357
403
  type: "string",
358
404
  enum: [...automationIntervals],
359
- description: "manual, hourly, daily, or weekly."
405
+ description: "manual, hourly, daily, weekdays, or weekly. Weekdays runs Monday-Friday at the same local time on an Agent Host; it is not supported by Cloud."
360
406
  },
361
407
  scheduleHour: {
362
408
  type: "integer",
363
409
  minimum: 0,
364
410
  maximum: 23,
365
- description: "Local hour, used for daily and weekly schedules."
411
+ description: "Local hour, used for daily, weekdays, and weekly schedules."
366
412
  },
367
413
  scheduleMinute: {
368
414
  type: "integer",
369
415
  minimum: 0,
370
416
  maximum: 59,
371
- description: "Local minute, used for daily and weekly schedules."
417
+ description: "Local minute, used for daily, weekdays, and weekly schedules."
372
418
  },
373
419
  scheduleDay: {
374
420
  type: "integer",
@@ -467,21 +513,32 @@ The change uses the current tool-approval policy. When approval is required, the
467
513
  }
468
514
  async prepareToolInvocation(context, _token) {
469
515
  if (!isAutomationsEnabled(this.configurationService)) {
516
+ logAutomationConfigureOutcome(this.telemetryService, "unknown", "blocked");
470
517
  throw ( new AutomationToolInputError("Automations are disabled."));
471
518
  }
472
- const proposal = this.parseProposal(context.parameters, context.chatSessionResource);
473
- const isUpdate = proposal.kind === "update";
519
+ let proposal;
520
+ try {
521
+ proposal = this.parseProposal(context.parameters, context.chatSessionResource);
522
+ } catch (error) {
523
+ logAutomationConfigureOutcome(
524
+ this.telemetryService,
525
+ "unknown",
526
+ error instanceof AutomationToolInputError ? "blocked" : "failed"
527
+ );
528
+ throw error;
529
+ }
530
+ const existing = proposal.kind === "update" ? proposal.existing : undefined;
474
531
  return {
475
- invocationMessage: isUpdate ? ( localize(3393, "Configuring automation")) : ( localize(3394, "Configuring a new automation")),
476
- pastTenseMessage: isUpdate ? ( localize(3395, "Configured automation")) : ( localize(3396, "Configured a new automation")),
532
+ invocationMessage: existing ? ( localize(3804, "Configuring automation")) : ( localize(3805, "Configuring a new automation")),
533
+ pastTenseMessage: existing ? ( localize(3806, "Configured automation")) : ( localize(3807, "Configured a new automation")),
477
534
  confirmationMessages: {
478
- title: isUpdate ? ( localize(3397, "Update Automation?")) : ( localize(3398, "Create Automation?")),
479
- message: isUpdate ? ( new MarkdownString(( localize(
480
- 3399,
535
+ title: existing ? ( localize(3808, "Update Automation?")) : ( localize(3809, "Create Automation?")),
536
+ message: existing ? ( new MarkdownString(( localize(
537
+ 3810,
481
538
  "Apply the proposed changes to **{0}** (`{1}`)?",
482
- proposal.existing.name,
483
- proposal.existing.id
484
- )))) : ( new MarkdownString(( localize(3400, "Create the automation **{0}**?", proposal.initialValues.name))))
539
+ existing.name,
540
+ existing.id
541
+ )))) : ( new MarkdownString(( localize(3811, "Create the automation **{0}**?", proposal.initialValues.name))))
485
542
  },
486
543
  toolSpecificData: proposal.kind === "update" ? {
487
544
  kind: "automationConfiguration",
@@ -492,65 +549,83 @@ The change uses the current tool-approval policy. When approval is required, the
492
549
  }
493
550
  async invoke(invocation, _countTokens, _progress, token) {
494
551
  if (!isAutomationsEnabled(this.configurationService)) {
495
- return automationToolError("Automations are disabled.");
552
+ return this.completeOperation("unknown", automationToolError("Automations are disabled."));
496
553
  }
497
554
  if (token.isCancellationRequested) {
498
- return automationToolCancelled();
555
+ return this.completeOperation("unknown", automationToolCancelled());
499
556
  }
500
557
  let proposal;
501
558
  try {
502
559
  proposal = this.parseProposal(invocation.parameters, invocation.context?.sessionResource);
503
560
  } catch (error) {
504
561
  if (error instanceof AutomationToolInputError) {
505
- return automationToolError(error.message);
562
+ return this.completeOperation("unknown", automationToolError(error.message));
506
563
  }
564
+ logAutomationConfigureOutcome(this.telemetryService, "unknown", "failed");
507
565
  throw error;
508
566
  }
509
567
  try {
510
568
  if (proposal.kind === "create") {
511
569
  const target = proposal.validateTargetAvailability ? this.resolveAvailableTarget(proposal.initialValues.target) : proposal.initialValues.target;
512
- return await this.applyCreate({
570
+ return this.completeOperation("create", await this.applyCreate({
513
571
  ...proposal.initialValues,
514
572
  target
515
- }, token);
573
+ }, token));
516
574
  }
517
- const target = proposal.initialValues.target ? proposal.validateTargetAvailability ? this.resolveAvailableTarget(proposal.initialValues.target) : proposal.initialValues.target : undefined;
518
- const patch = target ? {
519
- ...proposal.initialValues,
520
- target
521
- } : proposal.initialValues;
522
575
  const prepared = invocation.toolSpecificData?.kind === "automationConfiguration" ? invocation.toolSpecificData : undefined;
523
576
  if (prepared && (prepared.expectedAutomationId !== proposal.existing.id || prepared.expectedEditableState !== serializeAutomationEditableState(proposal.existing))) {
524
- return automationToolError(
577
+ return this.completeOperation("update", automationToolError(
525
578
  `Automation "${proposal.existing.id}" changed before the update was applied. Call listAutomations to refresh it before proposing new changes. No changes were made.`
526
- );
579
+ ));
527
580
  }
528
- return await this.applyUpdate(proposal.existing, patch, token);
581
+ const proposedTarget = proposal.initialValues.target;
582
+ const ownedTarget = proposedTarget?.kind === "workspace" && proposedTarget.providerId === undefined ? {
583
+ ...proposedTarget,
584
+ providerId: proposal.existing.target.providerId
585
+ } : proposedTarget;
586
+ assertAutomationTargetAuthority(proposal.existing, ownedTarget);
587
+ const target = ownedTarget !== undefined && proposal.validateTargetAvailability ? this.resolveAvailableTarget(ownedTarget, proposal.existing) : ownedTarget;
588
+ const patch = target ? {
589
+ ...proposal.initialValues,
590
+ target
591
+ } : proposal.initialValues;
592
+ return this.completeOperation("update", await this.applyUpdate(proposal.existing, patch, token));
529
593
  } catch (error) {
530
594
  if (error instanceof AutomationToolMutationBlockedError) {
531
- return error.result;
595
+ return this.completeOperation(proposal.kind, error.result);
532
596
  }
533
- if (error instanceof AutomationToolInputError) {
534
- return automationToolError(error.message);
597
+ if (error instanceof AutomationToolInputError || error instanceof AutomationUnavailableError) {
598
+ return this.completeOperation(proposal.kind, automationToolError(error.message));
535
599
  }
536
600
  if (error instanceof AutomationSessionTemplateAuthorityError) {
537
- return automationToolError(error.message);
601
+ return this.completeOperation(proposal.kind, automationToolError(error.message));
538
602
  }
603
+ logAutomationConfigureOutcome(this.telemetryService, proposal.kind, "failed");
539
604
  throw error;
540
605
  }
541
606
  }
607
+ completeOperation(operation, result) {
608
+ const configured = result.toolSpecificData?.kind === "automationConfigured" ? result.toolSpecificData.operation : undefined;
609
+ logAutomationConfigureOutcome(this.telemetryService, operation, configured ?? "blocked");
610
+ return result;
611
+ }
542
612
  async applyCreate(options, token) {
543
613
  const blocked = this.getMutationBlockedResult(token);
544
614
  if (blocked) {
545
615
  return blocked;
546
616
  }
617
+ if (!this.automationService.canCreateAutomation(options.target.providerId)) {
618
+ return automationToolError(
619
+ "The selected provider is unavailable or does not support automations. Connect to an Agent Host that supports automations."
620
+ );
621
+ }
547
622
  const created = await this.automationService.createAutomation(options, this.createMutationGuard(token));
548
623
  const result = automationToolResult(JSON.stringify({
549
624
  status: "created",
550
625
  automation: toAutomationToolOutput(created)
551
626
  }, undefined, 2));
552
627
  result.toolSpecificData = toAutomationConfiguredData(created, "created");
553
- result.toolResultMessage = ( localize(3401, "Created automation {0}", created.name));
628
+ result.toolResultMessage = ( localize(3812, "Created automation {0}", created.name));
554
629
  return result;
555
630
  }
556
631
  async applyUpdate(existing, patch, token) {
@@ -575,7 +650,7 @@ The change uses the current tool-approval policy. When approval is required, the
575
650
  automation: toAutomationToolOutput(updated)
576
651
  }, undefined, 2));
577
652
  result.toolSpecificData = toAutomationConfiguredData(updated, "updated");
578
- result.toolResultMessage = ( localize(3402, "Updated automation {0}", updated.name));
653
+ result.toolResultMessage = ( localize(3813, "Updated automation {0}", updated.name));
579
654
  return result;
580
655
  }
581
656
  createMutationGuard(token) {
@@ -595,9 +670,12 @@ The change uses the current tool-approval policy. When approval is required, the
595
670
  }
596
671
  return undefined;
597
672
  }
598
- resolveAvailableTarget(target) {
673
+ resolveAvailableTarget(target, existing) {
599
674
  const candidates = target.kind === "quickChat" ? this.sessionsManagementService.getQuickChatSessionTypes() : this.sessionsManagementService.getSessionTypesForFolder(target.folderUri);
600
- const candidate = findSessionType(candidates, target.providerId, target.sessionTypeId);
675
+ const eligible = candidates.filter(
676
+ candidate => existing === undefined ? this.automationService.canCreateAutomation(candidate.providerId) : candidate.providerId === existing.target.providerId && this.automationService.canUpdateAutomation(existing.id)
677
+ );
678
+ const candidate = findSessionType(eligible, target.providerId, target.sessionTypeId);
601
679
  if (!candidate) {
602
680
  throw ( new AutomationToolInputError(
603
681
  target.kind === "quickChat" ? `The quick-chat target "${target.providerId}/${target.sessionTypeId}" is not available.` : "The proposed workspace target is not available for the selected provider and session type."
@@ -749,7 +827,7 @@ The change uses the current tool-approval policy. When approval is required, the
749
827
  return session ? automationTargetFromSession(session) : undefined;
750
828
  }
751
829
  };
752
- ConfigureAutomationTool = ( __decorate([( __param(0, IAutomationService)), ( __param(1, ISessionsManagementService)), ( __param(2, IConfigurationService))], ConfigureAutomationTool));
830
+ ConfigureAutomationTool = ( __decorate([( __param(0, IAutomationService)), ( __param(1, ISessionsManagementService)), ( __param(2, IConfigurationService)), ( __param(3, ITelemetryService))], ConfigureAutomationTool));
753
831
  let AutomationToolsContribution = class AutomationToolsContribution extends Disposable {
754
832
  static {
755
833
  this.ID = "sessions.contrib.automationTools";
@@ -1053,6 +1131,16 @@ function toAutomationToolOutput(automation) {
1053
1131
  nextRunAt: automation.nextRunAt ?? null
1054
1132
  };
1055
1133
  }
1134
+ function toAutomationListToolOutput(automation, automationService) {
1135
+ return {
1136
+ ...toAutomationToolOutput(automation),
1137
+ availableOperations: [
1138
+ ...(automationService.canRunAutomation(automation.id) ? ["run"] : []),
1139
+ ...(automationService.canUpdateAutomation(automation.id) ? ["update"] : []),
1140
+ ...(automationService.canDeleteAutomation(automation.id) ? ["delete"] : [])
1141
+ ]
1142
+ };
1143
+ }
1056
1144
  function toAutomationConfiguredData(automation, operation) {
1057
1145
  return {
1058
1146
  kind: "automationConfigured",
@@ -1076,7 +1164,7 @@ function automationToolError(message) {
1076
1164
  value: message
1077
1165
  }],
1078
1166
  toolResultError: message,
1079
- toolResultMessage: ( localize(3403, "Automation request failed"))
1167
+ toolResultMessage: ( localize(3814, "Automation request failed"))
1080
1168
  };
1081
1169
  }
1082
1170
  function automationToolCancelled() {
@@ -1084,7 +1172,7 @@ function automationToolCancelled() {
1084
1172
  status: "cancelled",
1085
1173
  message: "The automation change was cancelled. No changes were made."
1086
1174
  }));
1087
- result.toolResultMessage = ( localize(3404, "Automation change cancelled"));
1175
+ result.toolResultMessage = ( localize(3815, "Automation change cancelled"));
1088
1176
  return result;
1089
1177
  }
1090
1178
  function automationDeleteCancelled() {
@@ -1092,7 +1180,7 @@ function automationDeleteCancelled() {
1092
1180
  status: "cancelled",
1093
1181
  message: "The automation was not deleted."
1094
1182
  }));
1095
- result.toolResultMessage = ( localize(3405, "Automation deletion cancelled"));
1183
+ result.toolResultMessage = ( localize(3816, "Automation deletion cancelled"));
1096
1184
  return result;
1097
1185
  }
1098
1186
  function automationRunCancelled() {
@@ -1100,7 +1188,7 @@ function automationRunCancelled() {
1100
1188
  status: "cancelled",
1101
1189
  message: "The automation was not started."
1102
1190
  }));
1103
- result.toolResultMessage = ( localize(3406, "Automation run cancelled"));
1191
+ result.toolResultMessage = ( localize(3817, "Automation run cancelled"));
1104
1192
  return result;
1105
1193
  }
1106
1194
  function automationAlreadyRunning(automation, run) {
@@ -1116,7 +1204,7 @@ function automationAlreadyRunning(automation, run) {
1116
1204
  sessionResource: run.sessionResource?.toString() ?? null
1117
1205
  }
1118
1206
  }, undefined, 2));
1119
- result.toolResultMessage = ( localize(3407, "Automation {0} is already running", automation.name));
1207
+ result.toolResultMessage = ( localize(3818, "Automation {0} is already running", automation.name));
1120
1208
  return result;
1121
1209
  }
1122
1210
  function automationNotStarted(automation, dispatch) {
@@ -11,18 +11,15 @@ import product from '@codingame/monaco-vscode-api/vscode/vs/platform/product/com
11
11
  import { Registry } from '@codingame/monaco-vscode-api/vscode/vs/platform/registry/common/platform';
12
12
  import { Extensions, registerWorkbenchContribution2, WorkbenchPhase } from '@codingame/monaco-vscode-api/vscode/vs/workbench/common/contributions';
13
13
  import '@codingame/monaco-vscode-api/vscode/vs/platform/instantiation/common/instantiation';
14
- import { CHAT_AUTOMATIONS_RUN_TIMEOUT_MINUTES_SETTING, DEFAULT_AUTOMATIONS_RUN_TIMEOUT_MINUTES, CHAT_AUTOMATIONS_ENABLED_SETTING, ChatAutomationsEnabledContext } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/automations/automationsEnabled';
14
+ import { CHAT_AUTOMATIONS_RUN_TIMEOUT_MINUTES_SETTING, DEFAULT_AUTOMATIONS_RUN_TIMEOUT_MINUTES, CHAT_AUTOMATIONS_ENABLED_SETTING, CHAT_CLOUD_AUTOMATIONS_ENABLED_SETTING, ChatAutomationsEnabledContext } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/automations/automationsEnabled';
15
15
  import './automationDialogService.js';
16
16
  import './automationRunner.js';
17
- import { AutomationScheduler } from './automationScheduler.js';
18
17
  import './providerAutomationService.js';
19
- import './automationStorageService.js';
20
18
  import { AutomationToolsContribution } from './automationTools.js';
21
- import { AGENT_HOST_AUTOMATION_RUN_TIMEOUT_MINUTES_CONFIG_KEY, AGENT_HOST_AUTOMATIONS_ENABLED_CONFIG_KEY } from '@codingame/monaco-vscode-api/vscode/vs/platform/agentHost/common/automationMigration';
19
+ import { AGENT_HOST_AUTOMATION_RUN_TIMEOUT_MINUTES_CONFIG_KEY, AGENT_HOST_AUTOMATIONS_ENABLED_CONFIG_KEY } from '@codingame/monaco-vscode-api/vscode/vs/platform/agentHost/common/automationConfig';
22
20
  import { observableFromPromise } from '@codingame/monaco-vscode-api/vscode/vs/base/common/observableInternal/utils/utils';
23
21
 
24
22
  observableFromPromise(( Registry.as(Extensions.Workbench)).whenRestored.then(() => true)).map(result => result.value === true);
25
- registerWorkbenchContribution2(AutomationScheduler.ID, AutomationScheduler, WorkbenchPhase.Eventually);
26
23
  registerWorkbenchContribution2(
27
24
  AutomationToolsContribution.ID,
28
25
  AutomationToolsContribution,
@@ -31,13 +28,26 @@ registerWorkbenchContribution2(
31
28
  ( Registry.as(Extensions$1.Configuration)).registerConfiguration({
32
29
  id: "chat",
33
30
  properties: {
31
+ [CHAT_CLOUD_AUTOMATIONS_ENABLED_SETTING]: {
32
+ type: "boolean",
33
+ default: false,
34
+ scope: ConfigurationScope.MACHINE,
35
+ tags: ["experimental", "advanced"],
36
+ description: ( localize(
37
+ 3819,
38
+ "Enables managing user-owned cloud automations in known private GitHub repositories. Disabling this setting does not stop schedules already running on GitHub."
39
+ )),
40
+ experiment: {
41
+ mode: "auto"
42
+ }
43
+ },
34
44
  [CHAT_AUTOMATIONS_ENABLED_SETTING]: {
35
45
  type: "boolean",
36
46
  default: true,
37
47
  scope: ConfigurationScope.MACHINE,
38
48
  tags: ["experimental", "advanced"],
39
49
  description: ( localize(
40
- 3408,
50
+ 3820,
41
51
  "Enables the Automations feature: scheduling agent sessions to run on a cadence. When disabled, the Automations entry in the Customizations sidebar, the Automations section in the Customizations editor, and the Automation option in the new-session composer are hidden, and scheduled automations are not dispatched."
42
52
  )),
43
53
  experiment: {
@@ -54,7 +64,7 @@ registerWorkbenchContribution2(
54
64
  scope: ConfigurationScope.MACHINE,
55
65
  tags: ["experimental", "advanced"],
56
66
  description: ( localize(
57
- 3409,
67
+ 3821,
58
68
  "Maximum number of minutes an automation run is allowed to take before it is ended. Prevents a single hung run from permanently blocking subsequent runs."
59
69
  )),
60
70
  included: product.quality !== "stable",