@codingame/monaco-vscode-workbench-service-override 37.6.1 → 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 (323) 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 +10 -10
  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 -77
  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.js +1 -1
  281. package/vscode/src/vs/workbench/browser/workbench.d.ts +0 -2
  282. package/vscode/src/vs/workbench/browser/workbench.js +23 -20
  283. package/vscode/src/vs/workbench/contrib/chat/common/automations/schedule.d.ts +6 -0
  284. package/vscode/src/vs/workbench/contrib/chat/common/automations/schedule.js +41 -0
  285. package/vscode/src/vs/workbench/contrib/chat/common/chatUsage.d.ts +15 -0
  286. package/vscode/src/vs/workbench/contrib/chat/common/chatUsage.js +56 -0
  287. package/vscode/src/vs/platform/agentHost/common/meta/agentCheckoutOperationMeta.d.ts +0 -18
  288. package/vscode/src/vs/platform/agentHost/common/meta/agentCheckoutOperationMeta.js +0 -27
  289. package/vscode/src/vs/sessions/browser/parts/singlePaneAuxiliaryBarPart.js +0 -36
  290. package/vscode/src/vs/sessions/contrib/automations/browser/automationLeaderElection.d.ts +0 -37
  291. package/vscode/src/vs/sessions/contrib/automations/browser/automationLeaderElection.js +0 -126
  292. package/vscode/src/vs/sessions/contrib/automations/browser/automationScheduler.d.ts +0 -59
  293. package/vscode/src/vs/sessions/contrib/automations/browser/automationScheduler.js +0 -232
  294. package/vscode/src/vs/sessions/contrib/automations/browser/automationStorageService.d.ts +0 -13
  295. package/vscode/src/vs/sessions/contrib/automations/browser/automationStorageService.js +0 -22
  296. package/vscode/src/vs/sessions/contrib/blockedSessions/browser/blockedSessions.d.ts +0 -45
  297. package/vscode/src/vs/sessions/contrib/blockedSessions/browser/blockedSessions.js +0 -110
  298. package/vscode/src/vs/sessions/contrib/layout/browser/desktopSessionLayoutController.d.ts +0 -112
  299. package/vscode/src/vs/sessions/contrib/layout/browser/desktopSessionLayoutController.js +0 -444
  300. package/vscode/src/vs/sessions/contrib/layout/browser/singlePane/singlePaneSharedHelpers.js +0 -43
  301. package/vscode/src/vs/sessions/contrib/layout/browser/singlePaneLayoutController.d.ts +0 -55
  302. package/vscode/src/vs/sessions/contrib/layout/browser/singlePaneLayoutController.js +0 -91
  303. package/vscode/src/vs/sessions/contrib/providers/agentHost/browser/agentHostClaudePermissionModePicker.d.ts +0 -26
  304. package/vscode/src/vs/sessions/contrib/providers/agentHost/browser/agentHostClaudePermissionModePicker.js +0 -98
  305. package/vscode/src/vs/sessions/contrib/providers/agentHost/browser/agentHostCodexApprovalsPicker.d.ts +0 -33
  306. package/vscode/src/vs/sessions/contrib/providers/agentHost/browser/agentHostCodexApprovalsPicker.js +0 -98
  307. package/vscode/src/vs/sessions/contrib/providers/agentHost/browser/agentHostModeIcon.d.ts +0 -2
  308. package/vscode/src/vs/sessions/contrib/providers/agentHost/browser/agentHostModeIcon.js +0 -13
  309. package/vscode/src/vs/sessions/contrib/providers/agentHost/browser/agentHostModePicker.d.ts +0 -122
  310. package/vscode/src/vs/sessions/contrib/providers/agentHost/browser/agentHostModePicker.js +0 -464
  311. package/vscode/src/vs/sessions/contrib/providers/agentHost/browser/agentHostPermissionPickerActionItem.d.ts +0 -35
  312. package/vscode/src/vs/sessions/contrib/providers/agentHost/browser/agentHostPermissionPickerActionItem.js +0 -90
  313. package/vscode/src/vs/sessions/contrib/providers/agentHost/browser/agentHostPermissionPickerDelegate.d.ts +0 -84
  314. package/vscode/src/vs/sessions/contrib/providers/agentHost/browser/agentHostPermissionPickerDelegate.js +0 -328
  315. package/vscode/src/vs/sessions/contrib/providers/agentHost/browser/agentHostSessionConfigPicker.d.ts +0 -174
  316. package/vscode/src/vs/sessions/contrib/providers/agentHost/browser/agentHostSessionConfigPicker.js +0 -1390
  317. package/vscode/src/vs/sessions/contrib/providers/agentHost/browser/media/agentHostSessionConfigPicker.css +0 -44
  318. package/vscode/src/vs/sessions/contrib/providers/agentHost/browser/mobile/mobileAgentHostModePicker.d.ts +0 -30
  319. package/vscode/src/vs/sessions/contrib/providers/agentHost/browser/mobile/mobileAgentHostModePicker.js +0 -78
  320. package/vscode/src/vs/sessions/contrib/providers/agentHost/browser/mobile/mobileChatPhoneInputTarget.d.ts +0 -11
  321. package/vscode/src/vs/sessions/contrib/providers/agentHost/browser/mobile/mobileChatPhoneInputTarget.js +0 -26
  322. package/vscode/src/vs/sessions/contrib/providers/remoteAgentHost/browser/remoteAgentHostConnectionCustomization.d.ts +0 -27
  323. package/vscode/src/vs/sessions/contrib/providers/remoteAgentHost/browser/remoteAgentHostConnectionCustomization.js +0 -26
@@ -6,7 +6,7 @@ import { ITerminalService } from "@codingame/monaco-vscode-api/vscode/vs/workben
6
6
  import { ISessionTaskRunner } from "../../chat/browser/sessionTaskRunner.js";
7
7
  import { ITaskEntry } from "@codingame/monaco-vscode-api/vscode/vs/sessions/contrib/chat/browser/sessionsTasksService";
8
8
  import { ISessionsTasksService } from "@codingame/monaco-vscode-api/vscode/vs/sessions/contrib/chat/browser/sessionsTasksService.service";
9
- import { ISession } from "@codingame/monaco-vscode-api/vscode/vs/sessions/services/sessions/common/session";
9
+ import { IChat, ISession } from "@codingame/monaco-vscode-api/vscode/vs/sessions/services/sessions/common/session";
10
10
  import { ISessionsProvidersService } from "@codingame/monaco-vscode-api/vscode/vs/sessions/services/sessions/browser/sessionsProvidersService.service";
11
11
  import { IConfigurationResolverService } from "@codingame/monaco-vscode-api/vscode/vs/workbench/services/configurationResolver/common/configurationResolver.service";
12
12
  /**
@@ -25,9 +25,27 @@ export declare class AgentHostSessionTaskRunner implements ISessionTaskRunner {
25
25
  private readonly _logService;
26
26
  readonly id = "agentHost";
27
27
  readonly priority = 100;
28
+ /** The terminal that last ran each task, keyed by host, working directory, and task label. */
29
+ private readonly _taskTerminals;
28
30
  constructor(_agentHostTerminalService: IAgentHostTerminalService, _sessionsProvidersService: ISessionsProvidersService, _sessionsTasksService: ISessionsTasksService, _configurationResolverService: IConfigurationResolverService, _terminalService: ITerminalService, _terminalGroupService: ITerminalGroupService, _logService: ILogService);
29
31
  canRun(session: ISession): boolean;
30
- runTask(task: ITaskEntry, session: ISession): Promise<IDisposable | undefined>;
32
+ runTask(task: ITaskEntry, session: ISession, chat?: IChat): Promise<IDisposable | undefined>;
33
+ /**
34
+ * Returns the terminal that last ran the task identified by {@link key}
35
+ * when it can run the task again, mirroring how the workbench task system
36
+ * reuses task terminals. A terminal is only reused when it is known to be
37
+ * idle, so that the command is never typed into a still running process,
38
+ * when the shell is still in the directory the terminal started in, so
39
+ * that the command runs from the task's working directory, and when it is
40
+ * not hidden in the background (e.g. after switching sessions), since only
41
+ * foreground terminals can be activated.
42
+ */
43
+ private _getReusableTerminal;
44
+ /**
45
+ * Reads the task's presentation options, falling back to the legacy
46
+ * `terminal` property like the workbench task configuration does.
47
+ */
48
+ private _getPresentation;
31
49
  private _getAddress;
32
50
  private _isSessionRemoteHostAvailable;
33
51
  private _getCwd;
@@ -2,7 +2,8 @@
2
2
  import { __decorate, __param } from '@codingame/monaco-vscode-api/external/tslib/tslib.es6';
3
3
  import { localize } from '@codingame/monaco-vscode-api/vscode/vs/nls';
4
4
  import { Schemas } from '@codingame/monaco-vscode-api/vscode/vs/base/common/network';
5
- import { OS } from '@codingame/monaco-vscode-api/vscode/vs/base/common/platform';
5
+ import { OS, OperatingSystem } from '@codingame/monaco-vscode-api/vscode/vs/base/common/platform';
6
+ import { timeout } from '@codingame/monaco-vscode-api/vscode/vs/base/common/async';
6
7
  import { toDisposable } from '@codingame/monaco-vscode-api/vscode/vs/base/common/lifecycle';
7
8
  import { ILogService } from '@codingame/monaco-vscode-api/vscode/vs/platform/log/common/log.service';
8
9
  import { AGENT_HOST_SCHEME, fromAgentHostUri } from '@codingame/monaco-vscode-api/vscode/vs/platform/agentHost/common/agentHostUri';
@@ -18,6 +19,14 @@ import { basename } from '@codingame/monaco-vscode-api/vscode/vs/base/common/res
18
19
 
19
20
  const LOG_PREFIX = "[AgentHostSessionTaskRunner]";
20
21
  const LOCAL_AGENT_HOST_ADDRESS = "__local__";
22
+ function normalizeCwd(cwd) {
23
+ return cwd.replace(/(?<=[^\\/:])[\\/]+$/, "");
24
+ }
25
+ function isEqualCwd(a, b, ignoreCase) {
26
+ a = normalizeCwd(a);
27
+ b = normalizeCwd(b);
28
+ return ignoreCase ? a.toLowerCase() === b.toLowerCase() : a === b;
29
+ }
21
30
  let AgentHostSessionTaskRunner = class AgentHostSessionTaskRunner {
22
31
  constructor(
23
32
  _agentHostTerminalService,
@@ -37,11 +46,12 @@ let AgentHostSessionTaskRunner = class AgentHostSessionTaskRunner {
37
46
  this._logService = _logService;
38
47
  this.id = "agentHost";
39
48
  this.priority = 100;
49
+ this._taskTerminals = ( new Map());
40
50
  }
41
51
  canRun(session) {
42
52
  return this._isSessionRemoteHostAvailable(session) && this._getAddress(session) !== undefined;
43
53
  }
44
- async runTask(task, session) {
54
+ async runTask(task, session, chat) {
45
55
  if (!this._isSessionRemoteHostAvailable(session)) {
46
56
  return undefined;
47
57
  }
@@ -49,12 +59,13 @@ let AgentHostSessionTaskRunner = class AgentHostSessionTaskRunner {
49
59
  if (!address) {
50
60
  return undefined;
51
61
  }
52
- const allTasks = await this._sessionsTasksService.getAllTasks(session);
62
+ const owner = chat ?? session;
63
+ const allTasks = await this._sessionsTasksService.getAllTasks(owner);
53
64
  const byLabel = ( new Map());
54
65
  for (const entry of allTasks) {
55
66
  byLabel.set(entry.task.label, entry.task);
56
67
  }
57
- const cwd = this._getCwd(session);
68
+ const cwd = this._getCwd(owner);
58
69
  const command = await resolveTaskCommand(task, {
59
70
  targetOS: address === LOCAL_AGENT_HOST_ADDRESS ? osToTaskTargetOS(OS) : undefined,
60
71
  lookup: label => byLabel.get(label),
@@ -69,23 +80,95 @@ let AgentHostSessionTaskRunner = class AgentHostSessionTaskRunner {
69
80
  if (!this._isSessionRemoteHostAvailable(session)) {
70
81
  return undefined;
71
82
  }
72
- const instance = await this._agentHostTerminalService.createTerminalForEntry(address, {
73
- cwd,
74
- name: ( localize(5021, "Task: {0}", task.label))
75
- });
76
- if (!instance) {
77
- this._logService.warn(
78
- `${LOG_PREFIX} Failed to create terminal for task '${task.label}' on '${address}'.`
79
- );
80
- return undefined;
83
+ const terminalKey = JSON.stringify([address, cwd?.toString(), task.label]);
84
+ const presentation = this._getPresentation(task);
85
+ const shouldReuse = !(typeof presentation?.panel === "string" && presentation.panel.toLowerCase() === "new");
86
+ let taskTerminal = shouldReuse ? this._getReusableTerminal(terminalKey, address) : undefined;
87
+ const isReused = !!taskTerminal;
88
+ if (!taskTerminal) {
89
+ const instance = await this._agentHostTerminalService.createTerminalForEntry(address, {
90
+ cwd,
91
+ name: ( localize(6311, "Task: {0}", task.label))
92
+ });
93
+ if (!instance) {
94
+ this._logService.warn(
95
+ `${LOG_PREFIX} Failed to create terminal for task '${task.label}' on '${address}'.`
96
+ );
97
+ return undefined;
98
+ }
99
+ taskTerminal = {
100
+ instance,
101
+ isLaunching: false,
102
+ executionId: 0
103
+ };
104
+ if (shouldReuse) {
105
+ this._taskTerminals.set(terminalKey, taskTerminal);
106
+ instance.store.add(instance.onDisposed(() => {
107
+ if (this._taskTerminals.get(terminalKey) === taskTerminal) {
108
+ this._taskTerminals.delete(terminalKey);
109
+ }
110
+ }));
111
+ }
112
+ }
113
+ const {
114
+ instance
115
+ } = taskTerminal;
116
+ taskTerminal.isLaunching = true;
117
+ const executionId = ++taskTerminal.executionId;
118
+ try {
119
+ this._terminalService.setActiveInstance(instance);
120
+ await this._terminalGroupService.showPanel(true);
121
+ if (isReused) {
122
+ await instance.sendText("\u0003", false);
123
+ await timeout(100);
124
+ }
125
+ if (isReused && presentation?.clear === true) {
126
+ instance.clearBuffer();
127
+ }
128
+ this._agentHostTerminalService.markCommandPending(instance);
129
+ await instance.sendText(command, true);
130
+ } finally {
131
+ taskTerminal.isLaunching = false;
81
132
  }
82
- this._terminalService.setActiveInstance(instance);
83
- await this._terminalGroupService.showPanel(true);
84
- await instance.sendText(command, true);
85
133
  return toDisposable(() => {
86
- instance.dispose(TerminalExitReason.User);
134
+ if (taskTerminal.executionId === executionId) {
135
+ instance.dispose(TerminalExitReason.User);
136
+ }
87
137
  });
88
138
  }
139
+ _getReusableTerminal(key, address) {
140
+ const taskTerminal = this._taskTerminals.get(key);
141
+ if (!taskTerminal) {
142
+ return undefined;
143
+ }
144
+ const {
145
+ instance
146
+ } = taskTerminal;
147
+ if (instance.isDisposed) {
148
+ this._taskTerminals.delete(key);
149
+ return undefined;
150
+ }
151
+ if (taskTerminal.isLaunching || this._agentHostTerminalService.isCommandExecuting(instance) !== false) {
152
+ return undefined;
153
+ }
154
+ if (!this._terminalService.foregroundInstances.includes(instance)) {
155
+ return undefined;
156
+ }
157
+ const terminalCwd = this._agentHostTerminalService.getCwd(instance);
158
+ if (!terminalCwd) {
159
+ return undefined;
160
+ }
161
+ const ignoreCase = address === LOCAL_AGENT_HOST_ADDRESS ? OS !== OperatingSystem.Linux : /^[a-zA-Z]:[\\/]/.test(terminalCwd.initial);
162
+ return isEqualCwd(terminalCwd.current, terminalCwd.initial, ignoreCase) ? taskTerminal : undefined;
163
+ }
164
+ _getPresentation(task) {
165
+ for (const value of [task.presentation, task.terminal]) {
166
+ if (typeof value === "object" && value !== null) {
167
+ return value;
168
+ }
169
+ }
170
+ return undefined;
171
+ }
89
172
  _getAddress(session) {
90
173
  const provider = this._sessionsProvidersService.getProvider(session.providerId);
91
174
  if (!provider || !isAgentHostProvider(provider)) {
@@ -6,7 +6,7 @@ import { IWorkbenchContribution } from "@codingame/monaco-vscode-api/vscode/vs/w
6
6
  import { IAgentHostTerminalService } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/terminal/browser/agentHostTerminalService.service";
7
7
  import { ITerminalInstance } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/terminal/browser/terminal";
8
8
  import { ITerminalService } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/terminal/browser/terminal.service";
9
- import { IPathService } from "@codingame/monaco-vscode-api/vscode/vs/workbench/services/path/common/pathService.service";
9
+ import { IPathService } from "@codingame/monaco-vscode-api/vscode/vs/workbench/services/path/common/pathService";
10
10
  import { ISessionsManagementService } from "@codingame/monaco-vscode-api/vscode/vs/sessions/services/sessions/common/sessionsManagement.service";
11
11
  import { ISessionsService } from "@codingame/monaco-vscode-api/vscode/vs/sessions/services/sessions/browser/sessionsService.service";
12
12
  import { ISession } from "@codingame/monaco-vscode-api/vscode/vs/sessions/services/sessions/common/session";
@@ -33,8 +33,10 @@ export declare class SessionsTerminalContribution extends Disposable implements
33
33
  private readonly _terminalProfileService;
34
34
  static readonly ID = "workbench.contrib.sessionsTerminal";
35
35
  private _activeKey;
36
+ private _activeAgentHostAddress;
36
37
  private _activeSessionId;
37
38
  private readonly _sessionTerminals;
39
+ private readonly _trackedTerminalScopes;
38
40
  private readonly _standaloneTerminalIds;
39
41
  /** In-flight terminal work for drafts, retained only until each operation settles. */
40
42
  private readonly _pendingTerminalOperations;
@@ -60,6 +62,7 @@ export declare class SessionsTerminalContribution extends Disposable implements
60
62
  */
61
63
  ensureTerminal(cwd: URI, focus: boolean, session?: ISession): Promise<ITerminalInstance[]>;
62
64
  private _ensureTerminal;
65
+ private _filterTerminalsForScope;
63
66
  private _isTerminalOperationCancelled;
64
67
  private _isSessionRemoteHostAvailable;
65
68
  private _getTerminalOperationGeneration;
@@ -96,6 +99,7 @@ export declare class SessionsTerminalContribution extends Disposable implements
96
99
  * session has no tracked terminals yet, falls back to initial cwd matching
97
100
  * for compatibility with restored terminals from previous sessions.
98
101
  */
102
+ private _terminalMatchesScope;
99
103
  private _updateTerminalVisibility;
100
104
  /**
101
105
  * Disposes (kills) terminals associated with the given session id. Used
@@ -7,7 +7,7 @@ import { Schemas } from '@codingame/monaco-vscode-api/vscode/vs/base/common/netw
7
7
  import { URI } from '@codingame/monaco-vscode-api/vscode/vs/base/common/uri';
8
8
  import { localize2 } from '@codingame/monaco-vscode-api/vscode/vs/nls';
9
9
  import { Action2, registerAction2 } from '@codingame/monaco-vscode-api/vscode/vs/platform/actions/common/actions';
10
- import { AGENT_HOST_SCHEME, fromAgentHostUri } from '@codingame/monaco-vscode-api/vscode/vs/platform/agentHost/common/agentHostUri';
10
+ import { fromAgentHostUri, AGENT_HOST_SCHEME } from '@codingame/monaco-vscode-api/vscode/vs/platform/agentHost/common/agentHostUri';
11
11
  import { IInstantiationService } from '@codingame/monaco-vscode-api/vscode/vs/platform/instantiation/common/instantiation';
12
12
  import { IFileService } from '@codingame/monaco-vscode-api/vscode/vs/platform/files/common/files.service';
13
13
  import { ILogService } from '@codingame/monaco-vscode-api/vscode/vs/platform/log/common/log.service';
@@ -15,7 +15,7 @@ import { registerWorkbenchContribution2, WorkbenchPhase, getWorkbenchContributio
15
15
  import { IAgentHostTerminalService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/terminal/browser/agentHostTerminalService.service';
16
16
  import { ITerminalService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/terminal/browser/terminal.service';
17
17
  import { TerminalCapability } from '@codingame/monaco-vscode-api/vscode/vs/platform/terminal/common/capabilities/capabilities';
18
- import { IPathService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/services/path/common/pathService.service';
18
+ import '@codingame/monaco-vscode-api/vscode/vs/workbench/services/path/common/pathService';
19
19
  import { LOCAL_AGENT_HOST_PROVIDER_ID, isAgentHostProvider } from '@codingame/monaco-vscode-api/vscode/vs/sessions/common/agentHostSessionsProvider';
20
20
  import { ISessionsManagementService } from '@codingame/monaco-vscode-api/vscode/vs/sessions/services/sessions/common/sessionsManagement.service';
21
21
  import { ISessionsService } from '@codingame/monaco-vscode-api/vscode/vs/sessions/services/sessions/browser/sessionsService.service';
@@ -25,12 +25,25 @@ import { ISessionTaskRunnerRegistry } from '@codingame/monaco-vscode-api/vscode/
25
25
  import { AgentHostSessionTaskRunner } from './agentHostSessionTaskRunner.js';
26
26
  import { derived } from '@codingame/monaco-vscode-api/vscode/vs/base/common/observableInternal/observables/derived';
27
27
  import { autorun } from '@codingame/monaco-vscode-api/vscode/vs/base/common/observableInternal/reactions/autorun';
28
+ import { IPathService } from '@codingame/monaco-vscode-api/vscode/vs/platform/path/common/pathService.service';
28
29
 
30
+ const LOCAL_AGENT_HOST_ADDRESS = "__local__";
29
31
  function getSessionTerminalInfo(session, reader) {
30
32
  if (!session) {
31
33
  return undefined;
32
34
  }
33
- const workspace = reader ? session.workspace.read(reader) : session.workspace.get();
35
+ const workspace = session.workspace.get();
36
+ return getWorkspaceTerminalInfo(workspace);
37
+ }
38
+ function getActiveSessionTerminalInfo(session, reader) {
39
+ if (!session) {
40
+ return undefined;
41
+ }
42
+ const activeChat = reader ? session.activeChat.read(reader) : session.activeChat.get();
43
+ const workspace = reader ? activeChat.workspace.read(reader) : activeChat.workspace.get();
44
+ return getWorkspaceTerminalInfo(workspace);
45
+ }
46
+ function getWorkspaceTerminalInfo(workspace) {
34
47
  if (workspace?.isVirtualWorkspace !== false) {
35
48
  return undefined;
36
49
  }
@@ -39,9 +52,13 @@ function getSessionTerminalInfo(session, reader) {
39
52
  if (!cwd) {
40
53
  return undefined;
41
54
  }
55
+ const terminalCwd = fromAgentHostUri(cwd);
56
+ if (terminalCwd.scheme !== Schemas.file && terminalCwd.scheme !== Schemas.vscodeRemote) {
57
+ return undefined;
58
+ }
42
59
  if (cwd.scheme === AGENT_HOST_SCHEME) {
43
60
  return {
44
- cwd: fromAgentHostUri(cwd),
61
+ cwd: terminalCwd,
45
62
  agentHostCwd: cwd
46
63
  };
47
64
  }
@@ -79,6 +96,7 @@ let SessionsTerminalContribution = class SessionsTerminalContribution extends Di
79
96
  this._fileService = _fileService;
80
97
  this._terminalProfileService = _terminalProfileService;
81
98
  this._sessionTerminals = ( new Map());
99
+ this._trackedTerminalScopes = ( new Map());
82
100
  this._standaloneTerminalIds = ( new Set());
83
101
  this._pendingTerminalOperations = ( new Map());
84
102
  this._sessionTerminalGenerations = ( new Map());
@@ -116,7 +134,7 @@ let SessionsTerminalContribution = class SessionsTerminalContribution extends Di
116
134
  this._agentHostTerminalService.setDefaultCwd(undefined);
117
135
  return;
118
136
  }
119
- const info = getSessionTerminalInfo(session, reader);
137
+ const info = getActiveSessionTerminalInfo(session, reader);
120
138
  this._agentHostTerminalService.setDefaultCwd(info?.cwd);
121
139
  }));
122
140
  this._register(autorun(reader => {
@@ -136,11 +154,13 @@ let SessionsTerminalContribution = class SessionsTerminalContribution extends Di
136
154
  }
137
155
  if (!preserveActiveTerminalState) {
138
156
  this._activeKey = undefined;
157
+ this._activeAgentHostAddress = undefined;
139
158
  this._activeSessionId = undefined;
140
159
  }
141
160
  return;
142
161
  }
143
- this._onActiveSessionChanged(session);
162
+ const info = getActiveSessionTerminalInfo(session, reader);
163
+ this._onActiveSessionChanged(session, info);
144
164
  }));
145
165
  this._register(this._sessionsManagementService.onDidReplaceNewDraftSession((
146
166
  {
@@ -233,16 +253,20 @@ let SessionsTerminalContribution = class SessionsTerminalContribution extends Di
233
253
  this._endTerminalOperation(session.sessionId);
234
254
  }
235
255
  }
236
- async _ensureTerminal(cwd, focus, session, generation) {
256
+ async _ensureTerminal(cwd, focus, session, generation, requireCwdMatch = false) {
237
257
  if (session && this._isTerminalOperationCancelled(session, generation)) {
238
258
  return [];
239
259
  }
240
260
  const key = cwd.fsPath.toLowerCase();
261
+ const agentHostAddress = this._getSessionAgentHostAddress(session);
241
262
  let existing = session ? this._getTrackedTerminalsForSession(session.sessionId) : [];
263
+ if (requireCwdMatch && existing.length > 0) {
264
+ existing = await this._filterTerminalsForScope(existing, key, agentHostAddress);
265
+ }
242
266
  if (existing.length === 0) {
243
- existing = await this._findTerminalsForKey(key, {
267
+ existing = await this._filterTerminalsForScope(await this._findTerminalsForKey(key, {
244
268
  excludeTracked: !!session
245
- });
269
+ }), key, agentHostAddress);
246
270
  if (session && this._isTerminalOperationCancelled(session, generation)) {
247
271
  return [];
248
272
  }
@@ -272,13 +296,26 @@ let SessionsTerminalContribution = class SessionsTerminalContribution extends Di
272
296
  }
273
297
  }
274
298
  if (session) {
275
- this._trackTerminalsForSession(session.sessionId, existing);
299
+ this._trackTerminalsForSession(session.sessionId, existing, {
300
+ sessionId: session.sessionId,
301
+ key,
302
+ agentHostAddress
303
+ });
276
304
  }
277
305
  if (focus) {
278
306
  await this._terminalService.focusActiveInstance();
279
307
  }
280
308
  return existing;
281
309
  }
310
+ async _filterTerminalsForScope(instances, key, agentHostAddress) {
311
+ const result = [];
312
+ for (const instance of instances) {
313
+ if (await this._terminalMatchesScope(instance, key, agentHostAddress)) {
314
+ result.push(instance);
315
+ }
316
+ }
317
+ return result;
318
+ }
282
319
  _isTerminalOperationCancelled(
283
320
  session,
284
321
  generation = this._getTerminalOperationGeneration(session.sessionId)
@@ -319,31 +356,43 @@ let SessionsTerminalContribution = class SessionsTerminalContribution extends Di
319
356
  if (!provider || !isAgentHostProvider(provider)) {
320
357
  return undefined;
321
358
  }
322
- return provider.remoteAddress ?? "__local__";
359
+ return provider.remoteAddress ?? LOCAL_AGENT_HOST_ADDRESS;
323
360
  }
324
- async _onActiveSessionChanged(session) {
361
+ async _onActiveSessionChanged(session, info = getActiveSessionTerminalInfo(session)) {
325
362
  if (!session) {
326
363
  return;
327
364
  }
365
+ if (!info && session.activeChat.get().workspace.get()?.isVirtualWorkspace === false) {
366
+ this._logService.trace(
367
+ `[SessionsTerminal] Waiting for a filesystem working directory for ${session.sessionId}`
368
+ );
369
+ return;
370
+ }
328
371
  this._beginTerminalOperation(session.sessionId);
329
372
  try {
330
373
  const generation = this._getTerminalOperationGeneration(session.sessionId);
331
- const info = getSessionTerminalInfo(session);
332
374
  if (info?.cwd && !info.agentHostCwd && info.cwd.scheme === Schemas.file && !(await this._fileService.exists(info.cwd))) {
333
375
  return;
334
376
  }
335
377
  const targetPath = info?.cwd ?? (await this._pathService.userHome());
336
378
  const targetKey = targetPath.fsPath.toLowerCase();
337
- if (this._activeKey === targetKey && this._activeSessionId === session.sessionId) {
379
+ const targetAgentHostAddress = this._getSessionAgentHostAddress(session);
380
+ if (this._activeKey === targetKey && this._activeAgentHostAddress === targetAgentHostAddress && this._activeSessionId === session.sessionId) {
338
381
  return;
339
382
  }
340
383
  this._activeKey = targetKey;
384
+ this._activeAgentHostAddress = targetAgentHostAddress;
341
385
  this._activeSessionId = session.sessionId;
342
- const instances = await this._ensureTerminal(targetPath, false, session, generation);
343
- if (this._activeKey !== targetKey || this._activeSessionId !== session.sessionId) {
386
+ const instances = await this._ensureTerminal(targetPath, false, session, generation, true);
387
+ if (this._activeKey !== targetKey || this._activeAgentHostAddress !== targetAgentHostAddress || this._activeSessionId !== session.sessionId) {
344
388
  return;
345
389
  }
346
- await this._updateTerminalVisibility(session, targetKey, instances.map(instance => instance.instanceId));
390
+ await this._updateTerminalVisibility(
391
+ session,
392
+ targetKey,
393
+ targetAgentHostAddress,
394
+ instances.map(instance => instance.instanceId)
395
+ );
347
396
  } finally {
348
397
  this._endTerminalOperation(session.sessionId);
349
398
  }
@@ -366,7 +415,7 @@ let SessionsTerminalContribution = class SessionsTerminalContribution extends Di
366
415
  }
367
416
  return result;
368
417
  }
369
- _trackTerminalsForSession(sessionId, instances) {
418
+ _trackTerminalsForSession(sessionId, instances, scope) {
370
419
  if (instances.length === 0) {
371
420
  return;
372
421
  }
@@ -377,6 +426,9 @@ let SessionsTerminalContribution = class SessionsTerminalContribution extends Di
377
426
  }
378
427
  for (const instance of instances) {
379
428
  terminalIds.add(instance.instanceId);
429
+ if (scope) {
430
+ this._trackedTerminalScopes.set(instance.instanceId, scope);
431
+ }
380
432
  }
381
433
  }
382
434
  _beginTerminalOperation(sessionId) {
@@ -420,6 +472,7 @@ let SessionsTerminalContribution = class SessionsTerminalContribution extends Di
420
472
  const terminals = this._getTrackedTerminalsForSession(sessionId);
421
473
  for (const terminal of terminals) {
422
474
  this._standaloneTerminalIds.add(terminal.instanceId);
475
+ this._trackedTerminalScopes.delete(terminal.instanceId);
423
476
  }
424
477
  if (terminals.length > 0) {
425
478
  this._logService.trace(
@@ -470,6 +523,7 @@ let SessionsTerminalContribution = class SessionsTerminalContribution extends Di
470
523
  const instance = this._terminalService.getInstanceFromId(instanceId);
471
524
  if (!instance || instance.isDisposed) {
472
525
  terminalIds.delete(instanceId);
526
+ this._trackedTerminalScopes.delete(instanceId);
473
527
  if (terminalIds.size === 0) {
474
528
  this._sessionTerminals.delete(sessionId);
475
529
  }
@@ -483,6 +537,7 @@ let SessionsTerminalContribution = class SessionsTerminalContribution extends Di
483
537
  _removeTerminalFromTrackedSessions(instanceId) {
484
538
  for (const [sessionId, terminalIds] of this._sessionTerminals) {
485
539
  terminalIds.delete(instanceId);
540
+ this._trackedTerminalScopes.delete(instanceId);
486
541
  if (terminalIds.size === 0) {
487
542
  this._sessionTerminals.delete(sessionId);
488
543
  }
@@ -498,7 +553,31 @@ let SessionsTerminalContribution = class SessionsTerminalContribution extends Di
498
553
  }
499
554
  return currentInstance;
500
555
  }
501
- async _updateTerminalVisibility(activeSession, activeKey, forceForegroundTerminalIds) {
556
+ async _terminalMatchesScope(instance, key, agentHostAddress) {
557
+ const trackedScope = this._trackedTerminalScopes.get(instance.instanceId);
558
+ if (trackedScope) {
559
+ return trackedScope.key === key && trackedScope.agentHostAddress === agentHostAddress;
560
+ }
561
+ const instanceAgentHostAddress = this._agentHostTerminalService.getAgentHostAddress(instance);
562
+ if (instanceAgentHostAddress !== undefined) {
563
+ if (instanceAgentHostAddress !== agentHostAddress) {
564
+ return false;
565
+ }
566
+ } else if (instance.shellLaunchConfig.customPtyImplementation || (agentHostAddress !== undefined && agentHostAddress !== LOCAL_AGENT_HOST_ADDRESS)) {
567
+ return false;
568
+ }
569
+ try {
570
+ return (await instance.getInitialCwd()).toLowerCase() === key;
571
+ } catch {
572
+ return false;
573
+ }
574
+ }
575
+ async _updateTerminalVisibility(
576
+ activeSession,
577
+ activeKey,
578
+ activeAgentHostAddress,
579
+ forceForegroundTerminalIds
580
+ ) {
502
581
  const toShow = [];
503
582
  const toHide = [];
504
583
  const trackedTerminalIds = ( new Set(
@@ -508,21 +587,16 @@ let SessionsTerminalContribution = class SessionsTerminalContribution extends Di
508
587
  if (instance.shellLaunchConfig.hideFromUser || ( this._standaloneTerminalIds.has(instance.instanceId))) {
509
588
  continue;
510
589
  }
511
- let cwd;
512
590
  const currentInstance = this._getAvailableTerminal(instance, "update terminal visibility");
513
591
  if (!currentInstance) {
514
592
  continue;
515
593
  }
516
594
  const isForeground = this._terminalService.foregroundInstances.includes(currentInstance);
517
- const isForceVisible = forceForegroundTerminalIds.includes(currentInstance.instanceId);
518
- let belongsToActiveSession = ( trackedTerminalIds.has(currentInstance.instanceId));
595
+ const matchesActiveScope = await this._terminalMatchesScope(currentInstance, activeKey, activeAgentHostAddress);
596
+ const isForceVisible = forceForegroundTerminalIds.includes(currentInstance.instanceId) && matchesActiveScope;
597
+ let belongsToActiveSession = ( trackedTerminalIds.has(currentInstance.instanceId)) && matchesActiveScope;
519
598
  if (!belongsToActiveSession && !this._isTerminalTracked(currentInstance.instanceId)) {
520
- try {
521
- cwd = (await currentInstance.getInitialCwd()).toLowerCase();
522
- } catch {
523
- continue;
524
- }
525
- belongsToActiveSession = cwd === activeKey;
599
+ belongsToActiveSession = matchesActiveScope;
526
600
  }
527
601
  if ((belongsToActiveSession || isForceVisible) && !isForeground) {
528
602
  toShow.push(currentInstance);
@@ -552,6 +626,9 @@ let SessionsTerminalContribution = class SessionsTerminalContribution extends Di
552
626
  if (( this._standaloneTerminalIds.has(instance.instanceId))) {
553
627
  continue;
554
628
  }
629
+ if (!(await this._terminalMatchesScope(instance, activeKey, activeAgentHostAddress))) {
630
+ continue;
631
+ }
555
632
  const cmdDetection = instance.capabilities.get(TerminalCapability.CommandDetection);
556
633
  const lastCmd = cmdDetection?.commands.at(-1);
557
634
  if (lastCmd && lastCmd.timestamp > mostRecentTimestamp) {
@@ -641,6 +718,7 @@ let SessionsTerminalContribution = class SessionsTerminalContribution extends Di
641
718
  return;
642
719
  }
643
720
  this._activeKey = undefined;
721
+ this._activeAgentHostAddress = undefined;
644
722
  this._activeSessionId = undefined;
645
723
  await this._onActiveSessionChanged(activeSession);
646
724
  }
@@ -713,7 +791,7 @@ class DumpTerminalTrackingAction extends Action2 {
713
791
  constructor() {
714
792
  super({
715
793
  id: "agentSession.dumpTerminalTracking",
716
- title: ( localize2(5022, "Dump Terminal Tracking")),
794
+ title: ( localize2(6312, "Dump Terminal Tracking")),
717
795
  f1: true
718
796
  });
719
797
  }
@@ -727,7 +805,7 @@ class ShowAllTerminalsAction extends Action2 {
727
805
  constructor() {
728
806
  super({
729
807
  id: "agentSession.showAllTerminals",
730
- title: ( localize2(5023, "Show All Terminals")),
808
+ title: ( localize2(6313, "Show All Terminals")),
731
809
  f1: true
732
810
  });
733
811
  }
@@ -6,6 +6,7 @@ import { IWorkspaceEditingService } from "@codingame/monaco-vscode-api/vscode/vs
6
6
  import { IWorkspaceTrustManagementService } from "@codingame/monaco-vscode-api/vscode/vs/platform/workspace/common/workspaceTrust.service";
7
7
  import { IUriIdentityService } from "@codingame/monaco-vscode-api/vscode/vs/platform/uriIdentity/common/uriIdentity.service";
8
8
  import { IWorkspaceFolderLabelService } from "@codingame/monaco-vscode-api/vscode/vs/workbench/services/workspaces/common/workspaceFolderLabelService.service";
9
+ import { IHistoryService } from "@codingame/monaco-vscode-api/vscode/vs/workbench/services/history/common/history.service";
9
10
  export declare class WorkspaceFolderManagementContribution extends Disposable implements IWorkbenchContribution {
10
11
  private readonly sessionsService;
11
12
  private readonly uriIdentityService;
@@ -13,11 +14,12 @@ export declare class WorkspaceFolderManagementContribution extends Disposable im
13
14
  private readonly workspaceEditingService;
14
15
  private readonly workspaceTrustManagementService;
15
16
  private readonly workspaceFolderLabelService;
17
+ private readonly historyService;
16
18
  static readonly ID = "workbench.contrib.workspaceFolderManagement";
17
19
  private queue;
18
- constructor(sessionsService: ISessionsService, uriIdentityService: IUriIdentityService, workspaceContextService: IWorkspaceContextService, workspaceEditingService: IWorkspaceEditingService, workspaceTrustManagementService: IWorkspaceTrustManagementService, workspaceFolderLabelService: IWorkspaceFolderLabelService);
19
- private updateWorkspaceFoldersForSession;
20
- private getActiveSessionFolderData;
20
+ constructor(sessionsService: ISessionsService, uriIdentityService: IUriIdentityService, workspaceContextService: IWorkspaceContextService, workspaceEditingService: IWorkspaceEditingService, workspaceTrustManagementService: IWorkspaceTrustManagementService, workspaceFolderLabelService: IWorkspaceFolderLabelService, historyService: IHistoryService);
21
+ private updateWorkspaceFolders;
22
+ private getWorkspaceFolderData;
21
23
  /**
22
24
  * Whether `uri` may be mounted as the workspace folder. A session that
23
25
  * requires workspace trust may only mount a trusted folder; anything else is