@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
@@ -0,0 +1,56 @@
1
+
2
+
3
+ function aggregateChatUsage(usages) {
4
+ const models = ( new Map());
5
+ let inputTokens = 0;
6
+ let cachedTokens = 0;
7
+ let outputTokens = 0;
8
+ let hasUsage = false;
9
+ let isComplete = true;
10
+ for (const usage of usages) {
11
+ if (!usage) {
12
+ isComplete = false;
13
+ continue;
14
+ }
15
+ const modelTotals = usage.modelTotals?.filter(isValidModelTotal);
16
+ if (modelTotals?.length) {
17
+ hasUsage = true;
18
+ for (const total of modelTotals) {
19
+ inputTokens += total.inputTokens;
20
+ cachedTokens += total.cachedTokens;
21
+ outputTokens += total.outputTokens;
22
+ const current = models.get(total.model);
23
+ models.set(total.model, {
24
+ model: total.model,
25
+ inputTokens: (current?.inputTokens ?? 0) + total.inputTokens,
26
+ cachedTokens: (current?.cachedTokens ?? 0) + total.cachedTokens,
27
+ outputTokens: (current?.outputTokens ?? 0) + total.outputTokens
28
+ });
29
+ }
30
+ continue;
31
+ }
32
+ isComplete = false;
33
+ if (isTokenCount(usage.promptTokens) && isTokenCount(usage.completionTokens)) {
34
+ hasUsage = true;
35
+ inputTokens += usage.promptTokens;
36
+ outputTokens += usage.completionTokens;
37
+ }
38
+ }
39
+ return hasUsage ? {
40
+ inputTokens,
41
+ ...(isComplete ? {
42
+ cachedTokens
43
+ } : {}),
44
+ outputTokens,
45
+ models: [...( models.values())],
46
+ isComplete
47
+ } : undefined;
48
+ }
49
+ function isValidModelTotal(total) {
50
+ return !!total.model && isTokenCount(total.inputTokens) && isTokenCount(total.cachedTokens) && isTokenCount(total.outputTokens);
51
+ }
52
+ function isTokenCount(value) {
53
+ return Number.isFinite(value) && value >= 0;
54
+ }
55
+
56
+ export { aggregateChatUsage };
@@ -1,18 +0,0 @@
1
- interface IHasCheckoutOperationMeta {
2
- readonly _meta?: Record<string, unknown>;
3
- }
4
- export declare enum CheckoutOperationPreAction {
5
- Stash = "stash",
6
- Commit = "commit"
7
- }
8
- /** Creates request metadata for a Checkout changeset operation. */
9
- export declare function checkoutOperationMeta(treeish: string, preCheckoutAction?: CheckoutOperationPreAction): Record<string, unknown>;
10
- /** Reads and validates the treeish requested by a Checkout changeset operation. */
11
- export declare function readCheckoutOperationTreeish(source: IHasCheckoutOperationMeta): string | undefined;
12
- /** Reads and validates the action requested before a Checkout changeset operation. */
13
- export declare function readCheckoutOperationPreAction(source: IHasCheckoutOperationMeta): CheckoutOperationPreAction | undefined;
14
- /** Creates structured error data for a Checkout operation blocked by a dirty working tree. */
15
- export declare function checkoutOperationDirtyWorkingTreeErrorData(): Record<string, unknown>;
16
- /** Returns whether error data identifies a Checkout operation blocked by a dirty working tree. */
17
- export declare function isCheckoutOperationDirtyWorkingTreeErrorData(data: unknown): boolean;
18
- export {};
@@ -1,27 +0,0 @@
1
-
2
- import { hasKey } from '@codingame/monaco-vscode-api/vscode/vs/base/common/types';
3
-
4
- const TREEISH_META_KEY = 'treeish';
5
- const PRE_CHECKOUT_ACTION_META_KEY = 'preCheckoutAction';
6
- const DIRTY_WORKING_TREE_ERROR_REASON = 'dirtyWorkingTree';
7
- var CheckoutOperationPreAction;
8
- (function (CheckoutOperationPreAction) {
9
- CheckoutOperationPreAction["Stash"] = "stash";
10
- CheckoutOperationPreAction["Commit"] = "commit";
11
- })(CheckoutOperationPreAction || (CheckoutOperationPreAction = {}));
12
- function checkoutOperationMeta(treeish, preCheckoutAction) {
13
- return {
14
- [TREEISH_META_KEY]: treeish,
15
- ...(preCheckoutAction
16
- ? { [PRE_CHECKOUT_ACTION_META_KEY]: preCheckoutAction }
17
- : {}),
18
- };
19
- }
20
- function hasErrorReason(data) {
21
- return typeof data === 'object' && data !== null && hasKey(data, { reason: true });
22
- }
23
- function isCheckoutOperationDirtyWorkingTreeErrorData(data) {
24
- return hasErrorReason(data) && data.reason === DIRTY_WORKING_TREE_ERROR_REASON;
25
- }
26
-
27
- export { CheckoutOperationPreAction, checkoutOperationMeta, isCheckoutOperationDirtyWorkingTreeErrorData };
@@ -1,36 +0,0 @@
1
-
2
- import '@codingame/monaco-vscode-api/vscode/vs/platform/theme/common/colorUtils';
3
- import '@codingame/monaco-vscode-api/vscode/vs/platform/theme/common/colors/baseColors';
4
- import '@codingame/monaco-vscode-api/vscode/vs/platform/theme/common/colors/chartsColors';
5
- import { editorBackground } from '@codingame/monaco-vscode-api/vscode/vs/platform/theme/common/colors/editorColors';
6
- import '@codingame/monaco-vscode-api/vscode/vs/platform/theme/common/colors/inputColors';
7
- import '@codingame/monaco-vscode-api/vscode/vs/platform/theme/common/colors/listColors';
8
- import '@codingame/monaco-vscode-api/vscode/vs/platform/theme/common/colors/menuColors';
9
- import '@codingame/monaco-vscode-api/vscode/vs/platform/theme/common/colors/minimapColors';
10
- import '@codingame/monaco-vscode-api/vscode/vs/platform/theme/common/colors/miscColors';
11
- import '@codingame/monaco-vscode-api/vscode/vs/platform/theme/common/colors/quickpickColors';
12
- import '@codingame/monaco-vscode-api/vscode/vs/platform/theme/common/colors/searchColors';
13
- import { AbstractPaneCompositePart } from '@codingame/monaco-vscode-api/vscode/vs/workbench/browser/parts/paneCompositePart';
14
- import { Parts } from '@codingame/monaco-vscode-api/vscode/vs/workbench/services/layout/browser/layoutService';
15
- import { AuxiliaryBarPart } from '@codingame/monaco-vscode-api/vscode/vs/sessions/browser/parts/auxiliaryBarPart';
16
-
17
- class SinglePaneAuxiliaryBarPart extends AuxiliaryBarPart {
18
- create(parent) {
19
- this.options = { ...this.options, hasTitle: false };
20
- super.create(parent);
21
- }
22
- shouldShowCompositeBar() {
23
- return false;
24
- }
25
- getPartBackgroundColor() {
26
- return this.getColor(editorBackground) || '';
27
- }
28
- layout(width, height, top, left) {
29
- if (!this.layoutService.isVisible(Parts.AUXILIARYBAR_PART)) {
30
- return;
31
- }
32
- AbstractPaneCompositePart.prototype.layout.call(this, width, height, top, left);
33
- }
34
- }
35
-
36
- export { SinglePaneAuxiliaryBarPart };
@@ -1,37 +0,0 @@
1
- import { Disposable, IDisposable } from "@codingame/monaco-vscode-api/vscode/vs/base/common/lifecycle";
2
- import { IObservable } from "@codingame/monaco-vscode-api/vscode/vs/base/common/observable";
3
- import { ILogService } from "@codingame/monaco-vscode-api/vscode/vs/platform/log/common/log.service";
4
- import { IStorageService } from "@codingame/monaco-vscode-api/vscode/vs/platform/storage/common/storage.service";
5
- export declare const DEFAULT_HEARTBEAT_INTERVAL_MS = 30000;
6
- export declare const DEFAULT_STALE_AFTER_MS = 90000;
7
- export interface IAutomationLeaderElectionOptions {
8
- readonly heartbeatIntervalMs?: number;
9
- readonly staleAfterMs?: number;
10
- readonly now?: () => number;
11
- readonly instanceId?: string;
12
- }
13
- export declare class AutomationLeaderElection extends Disposable {
14
- private readonly storageService;
15
- private readonly logService;
16
- private readonly _isLeader;
17
- readonly isLeader: IObservable<boolean>;
18
- private readonly _instanceId;
19
- private readonly _heartbeatIntervalMs;
20
- private readonly _staleAfterMs;
21
- private readonly _now;
22
- private readonly _timer;
23
- constructor(storageService: IStorageService, logService: ILogService, options?: IAutomationLeaderElectionOptions);
24
- get instanceId(): string;
25
- /** Test-only: drive the evaluation cycle synchronously. */
26
- evaluateForTesting(): void;
27
- private evaluate;
28
- private readLeader;
29
- /** Returns true if the write succeeded, false if storage threw. */
30
- private writeLeader;
31
- private releaseIfLeader;
32
- }
33
- export interface IAutomationLeaderElection extends IDisposable {
34
- readonly isLeader: IObservable<boolean>;
35
- readonly instanceId: string;
36
- evaluateForTesting(): void;
37
- }
@@ -1,126 +0,0 @@
1
-
2
- import { IntervalTimer } from '@codingame/monaco-vscode-api/vscode/vs/base/common/async';
3
- import { Disposable, toDisposable } from '@codingame/monaco-vscode-api/vscode/vs/base/common/lifecycle';
4
- import '@codingame/monaco-vscode-api/vscode/vs/base/common/observableInternal/index';
5
- import { generateUuid } from '@codingame/monaco-vscode-api/vscode/vs/base/common/uuid';
6
- import { StorageScope, StorageTarget } from '@codingame/monaco-vscode-api/vscode/vs/platform/storage/common/storage';
7
- import { observableValue } from '@codingame/monaco-vscode-api/vscode/vs/base/common/observableInternal/observables/observableValue';
8
-
9
- const LEADER_KEY = "chat.automations.leader";
10
- const DEFAULT_HEARTBEAT_INTERVAL_MS = 30_000;
11
- const DEFAULT_STALE_AFTER_MS = 90_000;
12
- class AutomationLeaderElection extends Disposable {
13
- constructor(storageService, logService, options = {}) {
14
- super();
15
- this.storageService = storageService;
16
- this.logService = logService;
17
- this._timer = this._register(( new IntervalTimer()));
18
- this._instanceId = options.instanceId ?? generateUuid();
19
- this._heartbeatIntervalMs = options.heartbeatIntervalMs ?? DEFAULT_HEARTBEAT_INTERVAL_MS;
20
- this._staleAfterMs = options.staleAfterMs ?? DEFAULT_STALE_AFTER_MS;
21
- this._now = options.now ?? Date.now;
22
- this._isLeader = observableValue(this, false);
23
- this.isLeader = this._isLeader;
24
- this._register(toDisposable(() => this.releaseIfLeader()));
25
- this.evaluate();
26
- this._timer.cancelAndSet(() => this.evaluate(), this._heartbeatIntervalMs);
27
- }
28
- get instanceId() {
29
- return this._instanceId;
30
- }
31
- evaluateForTesting() {
32
- this.evaluate();
33
- }
34
- evaluate() {
35
- const now = this._now();
36
- const current = this.readLeader();
37
- const claimable = !current || current.instanceId === this._instanceId || current.instanceId === "" || (now - current.heartbeatAt) > this._staleAfterMs;
38
- if (!claimable) {
39
- if (this._isLeader.get()) {
40
- this.logService.info(
41
- `[AutomationLeaderElection] window ${this._instanceId} stood down for ${current.instanceId}.`
42
- );
43
- }
44
- this._isLeader.set(false, undefined);
45
- return;
46
- }
47
- const nonce = generateUuid();
48
- const writeOk = this.writeLeader({
49
- instanceId: this._instanceId,
50
- heartbeatAt: now,
51
- nonce
52
- });
53
- if (!writeOk) {
54
- this._isLeader.set(false, undefined);
55
- return;
56
- }
57
- const verify = this.readLeader();
58
- if (verify?.instanceId === this._instanceId && verify.nonce === nonce) {
59
- if (!this._isLeader.get()) {
60
- this.logService.info(
61
- `[AutomationLeaderElection] window ${this._instanceId} claimed leader slot.`
62
- );
63
- }
64
- this._isLeader.set(true, undefined);
65
- } else {
66
- if (this._isLeader.get()) {
67
- this.logService.info(
68
- `[AutomationLeaderElection] window ${this._instanceId} lost leader race to ${verify?.instanceId ?? "<none>"}.`
69
- );
70
- }
71
- this._isLeader.set(false, undefined);
72
- }
73
- }
74
- readLeader() {
75
- let raw;
76
- try {
77
- raw = this.storageService.get(LEADER_KEY, StorageScope.APPLICATION);
78
- } catch (err) {
79
- this.logService.warn("[AutomationLeaderElection] storage read failed", err);
80
- return undefined;
81
- }
82
- if (!raw) {
83
- return undefined;
84
- }
85
- try {
86
- const parsed = JSON.parse(raw);
87
- if (typeof parsed?.instanceId !== "string" || typeof parsed?.heartbeatAt !== "number") {
88
- return undefined;
89
- }
90
- return {
91
- instanceId: parsed.instanceId,
92
- heartbeatAt: parsed.heartbeatAt,
93
- nonce: typeof parsed.nonce === "string" ? parsed.nonce : ""
94
- };
95
- } catch {
96
- return undefined;
97
- }
98
- }
99
- writeLeader(record) {
100
- try {
101
- this.storageService.store(
102
- LEADER_KEY,
103
- JSON.stringify(record),
104
- StorageScope.APPLICATION,
105
- StorageTarget.MACHINE
106
- );
107
- return true;
108
- } catch (err) {
109
- this.logService.warn("[AutomationLeaderElection] storage write failed", err);
110
- return false;
111
- }
112
- }
113
- releaseIfLeader() {
114
- const current = this.readLeader();
115
- if (current?.instanceId !== this._instanceId) {
116
- return;
117
- }
118
- this.writeLeader({
119
- instanceId: "",
120
- heartbeatAt: 0,
121
- nonce: ""
122
- });
123
- }
124
- }
125
-
126
- export { AutomationLeaderElection, DEFAULT_HEARTBEAT_INTERVAL_MS, DEFAULT_STALE_AFTER_MS };
@@ -1,59 +0,0 @@
1
- import { Event } from "@codingame/monaco-vscode-api/vscode/vs/base/common/event";
2
- import { Disposable } from "@codingame/monaco-vscode-api/vscode/vs/base/common/lifecycle";
3
- import { IConfigurationService } from "@codingame/monaco-vscode-api/vscode/vs/platform/configuration/common/configuration.service";
4
- import { ILogService } from "@codingame/monaco-vscode-api/vscode/vs/platform/log/common/log.service";
5
- import { IStorageService } from "@codingame/monaco-vscode-api/vscode/vs/platform/storage/common/storage.service";
6
- import { IWorkbenchContribution } from "@codingame/monaco-vscode-api/vscode/vs/workbench/common/contributions";
7
- import { IAutomationRunner } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/automations/automationRunner.service";
8
- import { IAutomationService } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/automations/automationService.service";
9
- import { ISessionsManagementService } from "@codingame/monaco-vscode-api/vscode/vs/sessions/services/sessions/common/sessionsManagement.service";
10
- import { IAutomationLeaderElection } from "./automationLeaderElection.js";
11
- export declare const DEFAULT_SCHEDULER_TICK_MS = 60000;
12
- export declare const CRASH_RECOVERY_REASON: string;
13
- export declare const RUN_TIMEOUT_REASON_PREFIX = "Timed out after";
14
- export interface IAutomationSchedulerCoreOptions {
15
- readonly tickIntervalMs?: number;
16
- readonly now?: () => Date;
17
- readonly leaderElection?: IAutomationLeaderElection;
18
- readonly disableAutoTick?: boolean;
19
- readonly isFeatureEnabled?: () => boolean;
20
- readonly getRunTimeoutMs?: () => number;
21
- readonly onDidChangeTargetAvailability?: Event<void>;
22
- }
23
- export declare class AutomationSchedulerCore extends Disposable {
24
- private readonly automationService;
25
- private readonly runner;
26
- private readonly logService;
27
- private readonly _leader;
28
- private readonly _tickIntervalMs;
29
- private readonly _now;
30
- private readonly _isFeatureEnabled;
31
- private readonly _getRunTimeoutMs;
32
- private readonly _timer;
33
- private readonly _runCts;
34
- private _didStartupForCurrentLeadership;
35
- private _pendingRuns;
36
- constructor(automationService: IAutomationService, runner: IAutomationRunner, storageService: IStorageService, logService: ILogService, options?: IAutomationSchedulerCoreOptions);
37
- /** Test-only: run a single tick and await it. */
38
- tickForTesting(): Promise<void>;
39
- /** Test-only: await in-flight runs. */
40
- waitForPendingRuns(): Promise<void>;
41
- private kickoffPendingRuns;
42
- private tickOnce;
43
- private dispatchDue;
44
- private runOneWithTimeout;
45
- dispose(): void;
46
- }
47
- export declare class AutomationScheduler extends Disposable implements IWorkbenchContribution {
48
- private readonly _automationService;
49
- private readonly _runner;
50
- private readonly _storageService;
51
- private readonly _logService;
52
- private readonly _configurationService;
53
- private readonly _sessionsManagementService;
54
- static readonly ID = "workbench.contrib.automationScheduler";
55
- private readonly _core;
56
- constructor(_automationService: IAutomationService, _runner: IAutomationRunner, _storageService: IStorageService, _logService: ILogService, _configurationService: IConfigurationService, _sessionsManagementService: ISessionsManagementService);
57
- private _isEnabled;
58
- private _createCore;
59
- }
@@ -1,232 +0,0 @@
1
-
2
- import { __decorate, __param } from '@codingame/monaco-vscode-api/external/tslib/tslib.es6';
3
- import { IntervalTimer, raceTimeout } from '@codingame/monaco-vscode-api/vscode/vs/base/common/async';
4
- import { CancellationTokenSource } from '@codingame/monaco-vscode-api/vscode/vs/base/common/cancellation';
5
- import { stringHash } from '@codingame/monaco-vscode-api/vscode/vs/base/common/hash';
6
- import { Disposable, MutableDisposable } 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 { ILogService } from '@codingame/monaco-vscode-api/vscode/vs/platform/log/common/log.service';
11
- import { IStorageService } from '@codingame/monaco-vscode-api/vscode/vs/platform/storage/common/storage.service';
12
- import { IAutomationRunner } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/automations/automationRunner.service';
13
- import { IAutomationService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/automations/automationService.service';
14
- import { DEFAULT_AUTOMATIONS_RUN_TIMEOUT_MINUTES, CHAT_AUTOMATIONS_ENABLED_SETTING, CHAT_AUTOMATIONS_RUN_TIMEOUT_MINUTES_SETTING } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/automations/automationsEnabled';
15
- import { ISessionsManagementService } from '@codingame/monaco-vscode-api/vscode/vs/sessions/services/sessions/common/sessionsManagement.service';
16
- import { AutomationLeaderElection } from './automationLeaderElection.js';
17
- import { autorun } from '@codingame/monaco-vscode-api/vscode/vs/base/common/observableInternal/reactions/autorun';
18
-
19
- const DEFAULT_SCHEDULER_TICK_MS = 60_000;
20
- const CRASH_RECOVERY_REASON = ( localize(3364, "Interrupted by app shutdown"));
21
- class AutomationSchedulerCore extends Disposable {
22
- constructor(automationService, runner, storageService, logService, options = {}) {
23
- super();
24
- this.automationService = automationService;
25
- this.runner = runner;
26
- this.logService = logService;
27
- this._timer = this._register(( new IntervalTimer()));
28
- this._runCts = this._register(( new CancellationTokenSource()));
29
- this._didStartupForCurrentLeadership = false;
30
- this._pendingRuns = Promise.resolve();
31
- this._tickIntervalMs = options.tickIntervalMs ?? DEFAULT_SCHEDULER_TICK_MS;
32
- this._now = options.now ?? (() => ( new Date()));
33
- this._isFeatureEnabled = options.isFeatureEnabled ?? (() => true);
34
- this._getRunTimeoutMs = options.getRunTimeoutMs ?? (() => DEFAULT_AUTOMATIONS_RUN_TIMEOUT_MINUTES * 60_000);
35
- this._leader = options.leaderElection ?? this._register(( new AutomationLeaderElection(storageService, logService)));
36
- this._register(autorun(reader => {
37
- const isLeader = this._leader.isLeader.read(reader);
38
- if (!isLeader) {
39
- this._didStartupForCurrentLeadership = false;
40
- this.automationService.stopStaleRunRecovery();
41
- return;
42
- }
43
- this.kickoffPendingRuns(() => this.tickOnce(true));
44
- }));
45
- if (!options.disableAutoTick) {
46
- this._timer.cancelAndSet(() => {
47
- this.kickoffPendingRuns(() => this.tickOnce(false));
48
- }, this._tickIntervalMs);
49
- }
50
- if (options.onDidChangeTargetAvailability) {
51
- this._register(options.onDidChangeTargetAvailability(() => {
52
- this.kickoffPendingRuns(() => this.tickOnce(false));
53
- }));
54
- }
55
- }
56
- async tickForTesting() {
57
- this.kickoffPendingRuns(() => this.tickOnce(false));
58
- await this._pendingRuns;
59
- }
60
- async waitForPendingRuns() {
61
- await this._pendingRuns;
62
- }
63
- kickoffPendingRuns(task) {
64
- if (this._store.isDisposed) {
65
- return;
66
- }
67
- this._pendingRuns = this._pendingRuns.then(task).catch(err => {
68
- this.logService.error("[AutomationScheduler] tick failed", err);
69
- });
70
- }
71
- async tickOnce(isLeadershipTransition) {
72
- if (!this._leader.isLeader.get()) {
73
- return;
74
- }
75
- if (!this._isFeatureEnabled()) {
76
- return;
77
- }
78
- if (!this._didStartupForCurrentLeadership) {
79
- this._didStartupForCurrentLeadership = true;
80
- await this.automationService.startStaleRunRecovery(CRASH_RECOVERY_REASON);
81
- await this.dispatchDue("catch_up");
82
- if (isLeadershipTransition) {
83
- return;
84
- }
85
- }
86
- await this.dispatchDue("schedule");
87
- }
88
- async dispatchDue(trigger) {
89
- const now = this._now();
90
- const due = this.automationService.automations.get().filter(
91
- automation => this.automationService.isSchedulingOwnedByHost?.(automation.id) !== true && isDue(automation, now)
92
- );
93
- if (due.length === 0) {
94
- return;
95
- }
96
- const leaderWindowId = stringHash(this._leader.instanceId, 0);
97
- for (const automation of due) {
98
- try {
99
- await this.runOneWithTimeout(automation, trigger, leaderWindowId);
100
- } catch (err) {
101
- this.logService.error("[AutomationScheduler] dispatch failed for automation", automation.id, err);
102
- }
103
- }
104
- }
105
- async runOneWithTimeout(automation, trigger, leaderWindowId) {
106
- const timeoutMs = this._getRunTimeoutMs();
107
- const perRunCts = ( new CancellationTokenSource(this._runCts.token));
108
- try {
109
- if (timeoutMs <= 0) {
110
- await this.runner.runOnce(automation, trigger, leaderWindowId, perRunCts.token).whenCompleted;
111
- return;
112
- }
113
- let timedOut = false;
114
- await raceTimeout(
115
- this.runner.runOnce(automation, trigger, leaderWindowId, perRunCts.token).whenCompleted,
116
- timeoutMs,
117
- () => {
118
- timedOut = true;
119
- }
120
- );
121
- if (!timedOut) {
122
- return;
123
- }
124
- try {
125
- const active = this.automationService.getActiveRunFor(automation.id);
126
- if (active) {
127
- const updated = await this.automationService.updateRun(active.id, {
128
- status: "failed",
129
- errorMessage: ( localize(3365, "Timed out after {0} minute(s).", Math.round(timeoutMs / 60_000))),
130
- completedAt: this._now().toISOString()
131
- });
132
- if (updated) {
133
- this.logService.warn(
134
- `[AutomationScheduler] automation ${automation.id} timed out after ${timeoutMs}ms; marked run ${active.id} failed (previousStatus=${active.status}, session=${updated.sessionResource?.toString() ?? "(none)"}).`
135
- );
136
- } else {
137
- this.logService.warn(
138
- `[AutomationScheduler] automation ${automation.id} timed out after ${timeoutMs}ms, but active run ${active.id} disappeared before it could be marked failed (previousStatus=${active.status}, session=${active.sessionResource?.toString() ?? "(none)"}).`
139
- );
140
- }
141
- } else {
142
- this.logService.warn(
143
- `[AutomationScheduler] automation ${automation.id} timed out after ${timeoutMs}ms with no active run recorded.`
144
- );
145
- }
146
- } catch (err) {
147
- this.logService.warn(
148
- `[AutomationScheduler] automation ${automation.id} timed out after ${timeoutMs}ms and failed to mark its active run as failed.`,
149
- err
150
- );
151
- }
152
- perRunCts.cancel();
153
- } finally {
154
- perRunCts.dispose();
155
- }
156
- }
157
- dispose() {
158
- this.automationService.stopStaleRunRecovery();
159
- this._runCts.cancel();
160
- super.dispose();
161
- }
162
- }
163
- let AutomationScheduler = class AutomationScheduler extends Disposable {
164
- static {
165
- this.ID = "workbench.contrib.automationScheduler";
166
- }
167
- constructor(
168
- _automationService,
169
- _runner,
170
- _storageService,
171
- _logService,
172
- _configurationService,
173
- _sessionsManagementService
174
- ) {
175
- super();
176
- this._automationService = _automationService;
177
- this._runner = _runner;
178
- this._storageService = _storageService;
179
- this._logService = _logService;
180
- this._configurationService = _configurationService;
181
- this._sessionsManagementService = _sessionsManagementService;
182
- this._core = this._register(( new MutableDisposable()));
183
- if (this._isEnabled()) {
184
- this._createCore();
185
- }
186
- this._register(_configurationService.onDidChangeConfiguration(e => {
187
- if (e.affectsConfiguration(CHAT_AUTOMATIONS_ENABLED_SETTING)) {
188
- if (this._isEnabled()) {
189
- this._createCore();
190
- } else {
191
- this._core.clear();
192
- }
193
- }
194
- }));
195
- }
196
- _isEnabled() {
197
- return this._configurationService.getValue(CHAT_AUTOMATIONS_ENABLED_SETTING) === true;
198
- }
199
- _createCore() {
200
- if (this._core.value) {
201
- return;
202
- }
203
- this._core.value = ( new AutomationSchedulerCore(
204
- this._automationService,
205
- this._runner,
206
- this._storageService,
207
- this._logService,
208
- {
209
- isFeatureEnabled: () => this._isEnabled(),
210
- getRunTimeoutMs: () => {
211
- const minutes = this._configurationService.getValue(CHAT_AUTOMATIONS_RUN_TIMEOUT_MINUTES_SETTING);
212
- const sane = typeof minutes === "number" && Number.isFinite(minutes) && minutes >= 1 ? minutes : DEFAULT_AUTOMATIONS_RUN_TIMEOUT_MINUTES;
213
- return sane * 60_000;
214
- },
215
- onDidChangeTargetAvailability: this._sessionsManagementService.onDidChangeSessionTypes
216
- }
217
- ));
218
- }
219
- };
220
- AutomationScheduler = ( __decorate([( __param(0, IAutomationService)), ( __param(1, IAutomationRunner)), ( __param(2, IStorageService)), ( __param(3, ILogService)), ( __param(4, IConfigurationService)), ( __param(5, ISessionsManagementService))], AutomationScheduler));
221
- function isDue(automation, now) {
222
- if (!automation.enabled || !automation.nextRunAt) {
223
- return false;
224
- }
225
- const next = Date.parse(automation.nextRunAt);
226
- if (Number.isNaN(next)) {
227
- return false;
228
- }
229
- return next <= now.getTime();
230
- }
231
-
232
- export { AutomationScheduler, AutomationSchedulerCore, CRASH_RECOVERY_REASON, DEFAULT_SCHEDULER_TICK_MS };
@@ -1,13 +0,0 @@
1
- import { IStorageService } from "@codingame/monaco-vscode-api/vscode/vs/platform/storage/common/storage.service";
2
- import { IAutomationStorageCompareAndSwapResult } from "@codingame/monaco-vscode-api/vscode/vs/sessions/contrib/automations/common/automationStorageService";
3
- import { IAutomationStorageService } from "@codingame/monaco-vscode-api/vscode/vs/sessions/contrib/automations/common/automationStorageService.service";
4
- /**
5
- * Uses an IndexedDB transaction so automation writes remain atomic across browser tabs.
6
- */
7
- export declare class BrowserAutomationStorageService implements IAutomationStorageService {
8
- readonly _serviceBrand: undefined;
9
- private readonly storageService;
10
- constructor(storageService: IStorageService);
11
- read(key: string): Promise<string | undefined>;
12
- compareAndSwap(key: string, expectedValue: string | undefined, newValue: string): Promise<IAutomationStorageCompareAndSwapResult>;
13
- }
@@ -1,22 +0,0 @@
1
-
2
- import { __decorate, __param } from '@codingame/monaco-vscode-api/external/tslib/tslib.es6';
3
- import { IStorageService } from '@codingame/monaco-vscode-api/vscode/vs/platform/storage/common/storage.service';
4
- import { BrowserStorageService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/services/storage/browser/storageService';
5
-
6
- let BrowserAutomationStorageService = class BrowserAutomationStorageService {
7
- constructor(storageService) {
8
- if (!(storageService instanceof BrowserStorageService)) {
9
- throw ( new Error("Browser automation storage requires BrowserStorageService."));
10
- }
11
- this.storageService = storageService;
12
- }
13
- async read(key) {
14
- return this.storageService.getApplicationStorageValue(key);
15
- }
16
- async compareAndSwap(key, expectedValue, newValue) {
17
- return this.storageService.compareAndSwapApplicationStorage(key, expectedValue, newValue);
18
- }
19
- };
20
- BrowserAutomationStorageService = ( __decorate([( __param(0, IStorageService))], BrowserAutomationStorageService));
21
-
22
- export { BrowserAutomationStorageService };