@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,18 @@
1
+ import { URI } from "@codingame/monaco-vscode-api/vscode/vs/base/common/uri";
2
+ import { IChatLayoutOwner } from "@codingame/monaco-vscode-api/vscode/vs/sessions/common/chatLayout";
3
+ import { ISession } from "@codingame/monaco-vscode-api/vscode/vs/sessions/services/sessions/common/session";
4
+ export declare class ChatLayoutOwnerKeyRegistry {
5
+ private readonly _keysBySession;
6
+ resolveKey(owner: IChatLayoutOwner, mainChatResource: URI): URI;
7
+ registerPersistedKey(key: URI): void;
8
+ private _registerKey;
9
+ forgetChat(sessionResource: URI, chatResource: URI): URI | undefined;
10
+ forgetSession(sessionResource: URI): readonly URI[];
11
+ remapSession(replacement: {
12
+ readonly from: ISession;
13
+ readonly to: ISession;
14
+ }): readonly {
15
+ readonly oldKey: URI;
16
+ readonly newKey: URI;
17
+ }[];
18
+ }
@@ -0,0 +1,95 @@
1
+
2
+ import { ResourceMap } from '@codingame/monaco-vscode-api/vscode/vs/base/common/map';
3
+ import { isEqual } from '@codingame/monaco-vscode-api/vscode/vs/base/common/resources';
4
+ import { URI } from '@codingame/monaco-vscode-api/vscode/vs/base/common/uri';
5
+ import { getChatLayoutOwnerAfterReplacement } from '@codingame/monaco-vscode-api/vscode/vs/sessions/common/chatLayout';
6
+
7
+ const CHAT_LAYOUT_OWNER_KEY_SCHEME = "vscode-chat-layout-owner";
8
+ class ChatLayoutOwnerKeyRegistry {
9
+ constructor() {
10
+ this._keysBySession = ( new ResourceMap());
11
+ }
12
+ resolveKey(owner, mainChatResource) {
13
+ if (isEqual(owner.chatResource, mainChatResource)) {
14
+ return owner.sessionResource;
15
+ }
16
+ const bySession = this._keysBySession.get(owner.sessionResource);
17
+ const existing = bySession?.get(owner.chatResource);
18
+ if (existing) {
19
+ return existing;
20
+ }
21
+ const key = ( URI.from({
22
+ scheme: CHAT_LAYOUT_OWNER_KEY_SCHEME,
23
+ path: `/${encodeURIComponent(( owner.sessionResource.toString()))}/${encodeURIComponent(( owner.chatResource.toString()))}`
24
+ }));
25
+ this._registerKey(owner, key);
26
+ return key;
27
+ }
28
+ registerPersistedKey(key) {
29
+ if (key.scheme !== CHAT_LAYOUT_OWNER_KEY_SCHEME) {
30
+ return;
31
+ }
32
+ const segments = key.path.split("/");
33
+ if (segments.length !== 3 || !segments[1] || !segments[2]) {
34
+ throw ( new Error(`Malformed chat layout owner key: ${( key.toString())}`));
35
+ }
36
+ this._registerKey({
37
+ sessionResource: ( URI.parse(decodeURIComponent(segments[1]))),
38
+ chatResource: ( URI.parse(decodeURIComponent(segments[2])))
39
+ }, key);
40
+ }
41
+ _registerKey(owner, key) {
42
+ let bySession = this._keysBySession.get(owner.sessionResource);
43
+ if (!bySession) {
44
+ bySession = ( new ResourceMap());
45
+ this._keysBySession.set(owner.sessionResource, bySession);
46
+ }
47
+ bySession.set(owner.chatResource, key);
48
+ }
49
+ forgetChat(sessionResource, chatResource) {
50
+ const bySession = this._keysBySession.get(sessionResource);
51
+ const key = bySession?.get(chatResource);
52
+ if (!key) {
53
+ return undefined;
54
+ }
55
+ bySession.delete(chatResource);
56
+ if (bySession.size === 0) {
57
+ this._keysBySession.delete(sessionResource);
58
+ }
59
+ return key;
60
+ }
61
+ forgetSession(sessionResource) {
62
+ const bySession = this._keysBySession.get(sessionResource);
63
+ if (!bySession) {
64
+ return [];
65
+ }
66
+ const keys = [];
67
+ bySession.forEach(key => keys.push(key));
68
+ this._keysBySession.delete(sessionResource);
69
+ return keys;
70
+ }
71
+ remapSession(replacement) {
72
+ const bySession = this._keysBySession.get(replacement.from.resource);
73
+ if (!bySession) {
74
+ return [];
75
+ }
76
+ const entries = [];
77
+ bySession.forEach((key, chatResource) => entries.push([chatResource, key]));
78
+ this._keysBySession.delete(replacement.from.resource);
79
+ const result = [];
80
+ for (const [chatResource, oldKey] of entries) {
81
+ const newOwner = getChatLayoutOwnerAfterReplacement({
82
+ sessionResource: replacement.from.resource,
83
+ chatResource
84
+ }, replacement);
85
+ const newKey = this.resolveKey(newOwner, replacement.to.mainChat.get().resource);
86
+ result.push({
87
+ oldKey,
88
+ newKey
89
+ });
90
+ }
91
+ return result;
92
+ }
93
+ }
94
+
95
+ export { ChatLayoutOwnerKeyRegistry };
@@ -9,13 +9,14 @@ export declare enum DetailPanelTarget {
9
9
  Changes = 2,
10
10
  ChangesForced = 3,
11
11
  Files = 4,
12
- FilesForced = 5,
13
- Preserve = 6
12
+ FilesHidden = 5,
13
+ FilesForced = 6,
14
+ Preserve = 7
14
15
  }
15
16
  /**
16
- * Shared mechanics for selecting the single-pane detail content.
17
+ * Shared mechanics for selecting the desktop detail content.
17
18
  */
18
- export declare class SinglePaneDetailPanelCoordinator extends Disposable {
19
+ export declare class DesktopDetailPanelCoordinator extends Disposable {
19
20
  private readonly _layoutService;
20
21
  private readonly _viewsService;
21
22
  private readonly _hasDockedDetailsContext;
@@ -21,10 +21,11 @@ var DetailPanelTarget;
21
21
  DetailPanelTarget[DetailPanelTarget["Changes"] = 2] = "Changes";
22
22
  DetailPanelTarget[DetailPanelTarget["ChangesForced"] = 3] = "ChangesForced";
23
23
  DetailPanelTarget[DetailPanelTarget["Files"] = 4] = "Files";
24
- DetailPanelTarget[DetailPanelTarget["FilesForced"] = 5] = "FilesForced";
25
- DetailPanelTarget[DetailPanelTarget["Preserve"] = 6] = "Preserve";
24
+ DetailPanelTarget[DetailPanelTarget["FilesHidden"] = 5] = "FilesHidden";
25
+ DetailPanelTarget[DetailPanelTarget["FilesForced"] = 6] = "FilesForced";
26
+ DetailPanelTarget[DetailPanelTarget["Preserve"] = 7] = "Preserve";
26
27
  })(DetailPanelTarget || (DetailPanelTarget = {}));
27
- let SinglePaneDetailPanelCoordinator = class SinglePaneDetailPanelCoordinator extends Disposable {
28
+ let DesktopDetailPanelCoordinator = class DesktopDetailPanelCoordinator extends Disposable {
28
29
  constructor(_layoutService, _viewsService, sessionsService, contextKeyService) {
29
30
  super();
30
31
  this._layoutService = _layoutService;
@@ -40,7 +41,8 @@ let SinglePaneDetailPanelCoordinator = class SinglePaneDetailPanelCoordinator ex
40
41
  }));
41
42
  this._register(autorun(reader => {
42
43
  const activeSession = sessionsService.activeSession.read(reader);
43
- if (!activeSession || (!(activeSession.isQuickChat?.read(reader) ?? false) && !activeSession.workspace.read(reader))) {
44
+ const activeChat = activeSession?.activeChat.read(reader);
45
+ if (!activeSession || (!(activeSession.isQuickChat?.read(reader) ?? false) && !activeChat?.workspace.read(reader))) {
44
46
  this.sync(DetailPanelTarget.Preserve);
45
47
  }
46
48
  }));
@@ -48,7 +50,7 @@ let SinglePaneDetailPanelCoordinator = class SinglePaneDetailPanelCoordinator ex
48
50
  sync(target) {
49
51
  this._target = target;
50
52
  this._hasDockedDetailsContext.set(
51
- target === DetailPanelTarget.Changes || target === DetailPanelTarget.ChangesForced || target === DetailPanelTarget.Files || target === DetailPanelTarget.FilesForced
53
+ target === DetailPanelTarget.Changes || target === DetailPanelTarget.ChangesForced || target === DetailPanelTarget.Files || target === DetailPanelTarget.FilesHidden || target === DetailPanelTarget.FilesForced
52
54
  );
53
55
  this._queueTarget(target);
54
56
  }
@@ -66,6 +68,7 @@ let SinglePaneDetailPanelCoordinator = class SinglePaneDetailPanelCoordinator ex
66
68
  await this._viewsService.openViewContainer(CHANGES_VIEW_CONTAINER_ID, false);
67
69
  return;
68
70
  case DetailPanelTarget.Files:
71
+ case DetailPanelTarget.FilesHidden:
69
72
  case DetailPanelTarget.FilesForced:
70
73
  await this._viewsService.openViewContainer(SESSIONS_FILES_CONTAINER_ID, false);
71
74
  return;
@@ -76,6 +79,6 @@ let SinglePaneDetailPanelCoordinator = class SinglePaneDetailPanelCoordinator ex
76
79
  }
77
80
  }
78
81
  };
79
- SinglePaneDetailPanelCoordinator = ( __decorate([( __param(0, IAgentWorkbenchLayoutService)), ( __param(1, IViewsService)), ( __param(2, ISessionsService)), ( __param(3, IContextKeyService))], SinglePaneDetailPanelCoordinator));
82
+ DesktopDetailPanelCoordinator = ( __decorate([( __param(0, IAgentWorkbenchLayoutService)), ( __param(1, IViewsService)), ( __param(2, ISessionsService)), ( __param(3, IContextKeyService))], DesktopDetailPanelCoordinator));
80
83
 
81
- export { DetailPanelTarget, SinglePaneDetailPanelCoordinator };
84
+ export { DesktopDetailPanelCoordinator, DetailPanelTarget };
@@ -3,6 +3,7 @@ import { IReader } from "@codingame/monaco-vscode-api/vscode/vs/base/common/obse
3
3
  import { URI } from "@codingame/monaco-vscode-api/vscode/vs/base/common/uri";
4
4
  import { IContextKeyService } from "@codingame/monaco-vscode-api/vscode/vs/platform/contextkey/common/contextkey.service";
5
5
  import { IInstantiationService } from "@codingame/monaco-vscode-api/vscode/vs/platform/instantiation/common/instantiation";
6
+ import { ISessionEditorWorkingSetService } from "@codingame/monaco-vscode-api/vscode/vs/sessions/contrib/layout/common/sessionEditorWorkingSet.service";
6
7
  import { EditorInput } from "@codingame/monaco-vscode-api/vscode/vs/workbench/common/editor/editorInput";
7
8
  import { IEditorGroupsService } from "@codingame/monaco-vscode-api/vscode/vs/workbench/services/editor/common/editorGroupsService.service";
8
9
  import { IEditorService } from "@codingame/monaco-vscode-api/vscode/vs/workbench/services/editor/common/editorService.service";
@@ -11,7 +12,7 @@ import { ISessionsService } from "@codingame/monaco-vscode-api/vscode/vs/session
11
12
  import { ISessionChangesService } from "@codingame/monaco-vscode-api/vscode/vs/sessions/contrib/changes/browser/sessionChangesService";
12
13
  import { IChangesViewService } from "@codingame/monaco-vscode-api/vscode/vs/sessions/contrib/changes/common/changesViewService.service";
13
14
  import { ISessionWorkspace } from "@codingame/monaco-vscode-api/vscode/vs/sessions/services/sessions/common/session";
14
- import { ISinglePaneLayoutContext } from "./singlePaneLayoutStrategy.js";
15
+ import { IDesktopLayoutContext } from "./desktopLayoutStrategy.js";
15
16
  /**
16
17
  * What the active session wants from its managed docked tabs.
17
18
  * - `changesSessionResource`: set for any workspace session (the Changes multi-diff tab). `undefined` otherwise.
@@ -32,9 +33,7 @@ export interface IManagedTabsTarget {
32
33
  export interface IReconcileTrigger {
33
34
  /** Open the default docked tabs *if the group is empty* — a session switch, a side-pane reveal, or a settled layout restore. */
34
35
  readonly openDefaultsIfEmpty?: boolean;
35
- /** Ensure the Changes tab, inactive, when a new-session view becomes eligible or finishes restoring. */
36
- readonly ensureChanges?: boolean;
37
- /** Ensure the Changes tab, opened **active**, even in a non-empty group — new-session submit (so the detail panel maps to Changes rather than the still-present Files placeholder). */
36
+ /** Activate an existing Changes tab after new-session submit so the detail panel maps to Changes rather than Files. */
38
37
  readonly ensureChangesActive?: boolean;
39
38
  /** A saved working set finished restoring for the active session. */
40
39
  readonly workingSetRestored?: boolean;
@@ -43,15 +42,15 @@ export interface IReconcileTrigger {
43
42
  * Owns the two managed docked tabs (the pinned Changes multi-diff tab and the empty Files
44
43
  * placeholder tab for workspace sessions) and the detail-only editor-area collapse. Shared
45
44
  * (not a strategy) because both belong to one reconcile pipeline that must stay single-instance
46
- * across the New→Existing submit transition — see `SinglePaneLayoutStrategy`'s doc comment.
47
- * Owned and disposed by {@link import('./singlePaneExistingSessionStrategy.js').SinglePaneExistingSessionStrategy}.
48
- * `SinglePaneDraftSessionStrategy` supplies workspace-draft supplementary reconcile intents via
45
+ * across the New→Existing submit transition — see `DesktopLayoutStrategy`'s doc comment.
46
+ * Owned and disposed by {@link import('./desktopExistingSessionStrategy.js').DesktopExistingSessionStrategy}.
47
+ * `DesktopDraftSessionStrategy` supplies workspace-draft supplementary reconcile intents via
49
48
  * {@link queueReconcile}; workspace-less drafts never want managed tabs, so the ambient
50
49
  * session-change trigger below reconciles them away on its own.
51
50
  *
52
- * See `SINGLE_PANE_SCENARIOS.md` for the full reconcile rules.
51
+ * See `DESKTOP.md` for the full reconcile rules.
53
52
  */
54
- export declare class SinglePaneDockedTabsCoordinator extends Disposable {
53
+ export declare class DesktopDockedTabsCoordinator extends Disposable {
55
54
  private readonly _ctx;
56
55
  private readonly _layoutService;
57
56
  private readonly _sessionsService;
@@ -60,8 +59,9 @@ export declare class SinglePaneDockedTabsCoordinator extends Disposable {
60
59
  private readonly _sessionChangesService;
61
60
  private readonly _changesViewService;
62
61
  private readonly _instantiationService;
62
+ private readonly _editorWorkingSetService;
63
63
  /** Non-docked editors closed (as reopenable inputs + tab index) while the editor area is hidden. */
64
- private _collapsedEditors;
64
+ private readonly _collapsedEditorsByOwner;
65
65
  private readonly _sequencer;
66
66
  private _generation;
67
67
  private _lastSyncedSessionKey;
@@ -75,9 +75,10 @@ export declare class SinglePaneDockedTabsCoordinator extends Disposable {
75
75
  private readonly _filesTabAvailableContext;
76
76
  /** Last observed editor-area visibility, to act only on transitions. */
77
77
  private _editorAreaVisible;
78
- constructor(_ctx: ISinglePaneLayoutContext, _layoutService: IAgentWorkbenchLayoutService, _sessionsService: ISessionsService, _editorService: IEditorService, _editorGroupsService: IEditorGroupsService, _sessionChangesService: ISessionChangesService, _changesViewService: IChangesViewService, contextKeyService: IContextKeyService, _instantiationService: IInstantiationService);
78
+ constructor(_ctx: IDesktopLayoutContext, _layoutService: IAgentWorkbenchLayoutService, _sessionsService: ISessionsService, _editorService: IEditorService, _editorGroupsService: IEditorGroupsService, _sessionChangesService: ISessionChangesService, _changesViewService: IChangesViewService, contextKeyService: IContextKeyService, _instantiationService: IInstantiationService, _editorWorkingSetService: ISessionEditorWorkingSetService);
79
79
  /** The resource this managed Changes editor input shows, if it is one. */
80
80
  getChangesEditorResource(editor: EditorInput): URI | undefined;
81
+ private _ownerKeyString;
81
82
  prepareWorkingSetRestore(hasSavedWorkingSet: boolean): void;
82
83
  /** Reads the current managed-tabs target for the active session (or for `reader`'s transaction, if given). */
83
84
  readTarget(reader: IReader | undefined): IManagedTabsTarget;
@@ -85,11 +86,13 @@ export declare class SinglePaneDockedTabsCoordinator extends Disposable {
85
86
  queueReconcile(target: IManagedTabsTarget, trigger: IReconcileTrigger): void;
86
87
  private _readTarget;
87
88
  dispose(): void;
89
+ remapOwnerKey(oldKey: URI, newKey: URI): void;
90
+ forgetOwnerKeys(keys: readonly URI[]): void;
88
91
  /** Queues coordinator-owned work, dropping tasks and failures that outlive disposal. */
89
92
  private _queue;
90
93
  private _reconcile;
91
94
  private _reconcileCore;
92
- /** On a session change, drop editors captured while the previous session's editor area was hidden so they are not reopened here. */
95
+ /** Legacy session switches discard collapsed inputs; chat-owned inputs survive until their owner is removed. */
93
96
  private _resetCollapsedEditorsOnSessionChange;
94
97
  /** Opens the Changes editor pinned first (active on submit). Returns `false` if the reconcile is cancelled mid-open. */
95
98
  private _openChangesTab;
@@ -11,12 +11,13 @@ import { isEqual } from '@codingame/monaco-vscode-api/vscode/vs/base/common/reso
11
11
  import { EditorActivation } from '@codingame/monaco-vscode-api/vscode/vs/platform/editor/common/editor';
12
12
  import { IContextKeyService } from '@codingame/monaco-vscode-api/vscode/vs/platform/contextkey/common/contextkey.service';
13
13
  import { IInstantiationService } from '@codingame/monaco-vscode-api/vscode/vs/platform/instantiation/common/instantiation';
14
+ import { ISessionEditorWorkingSetService } from '@codingame/monaco-vscode-api/vscode/vs/sessions/contrib/layout/common/sessionEditorWorkingSet.service';
14
15
  import { EditorResourceAccessor, SideBySideEditor } from '@codingame/monaco-vscode-api/vscode/vs/workbench/common/editor';
15
16
  import { IEditorGroupsService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/services/editor/common/editorGroupsService.service';
16
17
  import { IEditorService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/services/editor/common/editorService.service';
17
18
  import { Parts } from '@codingame/monaco-vscode-api/vscode/vs/workbench/services/layout/browser/layoutService';
18
19
  import { IAgentWorkbenchLayoutService } from '@codingame/monaco-vscode-api/vscode/vs/sessions/browser/workbench.service';
19
- import { SinglePaneChangesTabMissingContext, SinglePaneFilesTabMissingContext, SinglePaneChangesTabAvailableContext, SinglePaneFilesTabAvailableContext } from '@codingame/monaco-vscode-api/vscode/vs/sessions/common/contextkeys';
20
+ import { DesktopChangesTabMissingContext, DesktopFilesTabMissingContext, DesktopChangesTabAvailableContext, DesktopFilesTabAvailableContext } from '@codingame/monaco-vscode-api/vscode/vs/sessions/common/contextkeys';
20
21
  import { DockedEditorInput } from '@codingame/monaco-vscode-api/vscode/vs/sessions/common/dockedEditorInput';
21
22
  import { ISessionsService } from '@codingame/monaco-vscode-api/vscode/vs/sessions/services/sessions/browser/sessionsService.service';
22
23
  import { SessionChangesEditorInput } from '@codingame/monaco-vscode-api/vscode/vs/sessions/contrib/changes/browser/sessionChangesEditorInput';
@@ -25,6 +26,7 @@ import { IChangesViewService } from '@codingame/monaco-vscode-api/vscode/vs/sess
25
26
  import { EmptyFileEditorInput } from '../../../editor/browser/emptyFileEditorInput.js';
26
27
  import { autorun } from '@codingame/monaco-vscode-api/vscode/vs/base/common/observableInternal/reactions/autorun';
27
28
  import { observableSignalFromEvent } from '@codingame/monaco-vscode-api/vscode/vs/base/common/observableInternal/observables/observableSignalFromEvent';
29
+ import { observableFromEvent } from '@codingame/monaco-vscode-api/vscode/vs/base/common/observableInternal/observables/observableFromEvent';
28
30
  import { ISessionChangesService } from '@codingame/monaco-vscode-api/vscode/vs/sessions/contrib/changes/common/sessionChangesService.service';
29
31
 
30
32
  const CHANGES_TAB_OPTIONS = {
@@ -51,12 +53,11 @@ const FILES_TAB_OPTIONS = {
51
53
  function mergeTriggers(a, b) {
52
54
  return {
53
55
  openDefaultsIfEmpty: a.openDefaultsIfEmpty || b.openDefaultsIfEmpty,
54
- ensureChanges: a.ensureChanges || b.ensureChanges,
55
56
  ensureChangesActive: a.ensureChangesActive || b.ensureChangesActive,
56
57
  workingSetRestored: a.workingSetRestored || b.workingSetRestored
57
58
  };
58
59
  }
59
- let SinglePaneDockedTabsCoordinator = class SinglePaneDockedTabsCoordinator extends Disposable {
60
+ let DesktopDockedTabsCoordinator = class DesktopDockedTabsCoordinator extends Disposable {
60
61
  constructor(
61
62
  _ctx,
62
63
  _layoutService,
@@ -66,7 +67,8 @@ let SinglePaneDockedTabsCoordinator = class SinglePaneDockedTabsCoordinator exte
66
67
  _sessionChangesService,
67
68
  _changesViewService,
68
69
  contextKeyService,
69
- _instantiationService
70
+ _instantiationService,
71
+ _editorWorkingSetService
70
72
  ) {
71
73
  super();
72
74
  this._ctx = _ctx;
@@ -77,25 +79,23 @@ let SinglePaneDockedTabsCoordinator = class SinglePaneDockedTabsCoordinator exte
77
79
  this._sessionChangesService = _sessionChangesService;
78
80
  this._changesViewService = _changesViewService;
79
81
  this._instantiationService = _instantiationService;
82
+ this._editorWorkingSetService = _editorWorkingSetService;
83
+ this._collapsedEditorsByOwner = ( new Map());
80
84
  this._sequencer = ( new Sequencer());
81
85
  this._generation = 0;
82
86
  this._filesTabDismissed = false;
83
87
  this._changingFilesInternally = false;
84
- this._changesTabMissingContext = SinglePaneChangesTabMissingContext.bindTo(contextKeyService);
85
- this._filesTabMissingContext = SinglePaneFilesTabMissingContext.bindTo(contextKeyService);
86
- this._changesTabAvailableContext = SinglePaneChangesTabAvailableContext.bindTo(contextKeyService);
87
- this._filesTabAvailableContext = SinglePaneFilesTabAvailableContext.bindTo(contextKeyService);
88
- let previousChangesSessionResource;
88
+ this._changesTabMissingContext = DesktopChangesTabMissingContext.bindTo(contextKeyService);
89
+ this._filesTabMissingContext = DesktopFilesTabMissingContext.bindTo(contextKeyService);
90
+ this._changesTabAvailableContext = DesktopChangesTabAvailableContext.bindTo(contextKeyService);
91
+ this._filesTabAvailableContext = DesktopFilesTabAvailableContext.bindTo(contextKeyService);
89
92
  this._register(autorun(reader => {
90
93
  const target = this._readTarget(reader);
91
- const ensureChanges = !!target.changesSessionResource && (!previousChangesSessionResource || !isEqual(previousChangesSessionResource, target.changesSessionResource));
92
- previousChangesSessionResource = target.changesSessionResource;
93
94
  if (!target.wantsChangesTab) {
94
95
  this._filesTabDismissed = false;
95
96
  }
96
97
  this.queueReconcile(target, {
97
- openDefaultsIfEmpty: true,
98
- ensureChanges
98
+ openDefaultsIfEmpty: this._layoutService.isSidePaneVisible()
99
99
  });
100
100
  }));
101
101
  this._register(this._layoutService.onDidRevealSidePane(() => {
@@ -104,22 +104,26 @@ let SinglePaneDockedTabsCoordinator = class SinglePaneDockedTabsCoordinator exte
104
104
  });
105
105
  }));
106
106
  const partVisibilityChangedSignal = observableSignalFromEvent(this, this._layoutService.onDidChangePartVisibility);
107
- const editorsChangedSignal = observableSignalFromEvent(this, Event.any(
107
+ const mainEditorsChanged = Event.filter(
108
+ this._editorService.onDidEditorsChange,
109
+ e => !!this._editorGroupsService.mainPart.getGroup(e.groupId)
110
+ );
111
+ const editorsChangedSignal = observableSignalFromEvent(this, mainEditorsChanged);
112
+ const activeMainGroup = observableFromEvent(
113
+ this,
108
114
  this._editorService.onDidActiveEditorChange,
109
- this._editorService.onDidEditorsChange
110
- ));
115
+ () => this._editorGroupsService.mainPart.activeGroup
116
+ );
111
117
  this._register(autorun(reader => {
112
118
  partVisibilityChangedSignal.read(reader);
113
119
  editorsChangedSignal.read(reader);
120
+ activeMainGroup.read(reader);
114
121
  this.queueReconcile(this._readTarget(undefined), {});
115
122
  }));
116
123
  this._register(this._ctx.onDidEndSessionLayoutRestore(() => {
117
- const session = this._sessionsService.activeSession.get();
118
124
  const target = this._readTarget(undefined);
119
- const ensureChanges = target.wantsChangesTab && session?.isCreated.get() === false;
120
125
  this.queueReconcile(target, {
121
- openDefaultsIfEmpty: true,
122
- ensureChanges,
126
+ openDefaultsIfEmpty: this._layoutService.isSidePaneVisible(),
123
127
  workingSetRestored: true
124
128
  });
125
129
  }));
@@ -157,20 +161,24 @@ let SinglePaneDockedTabsCoordinator = class SinglePaneDockedTabsCoordinator exte
157
161
  return;
158
162
  }
159
163
  if (visible) {
160
- this._queue(() => this._restoreCollapsedTabs());
164
+ const ownerKey = this._ownerKeyString();
165
+ this._queue(() => this._restoreCollapsedTabs(ownerKey));
161
166
  return;
162
167
  }
163
168
  if (this._ctx.togglingSidePane) {
164
169
  return;
165
170
  }
166
- if (this._layoutService.isVisible(Parts.AUXILIARYBAR_PART)) {
167
- this._queue(() => this._collapseNonManagedTabs());
171
+ this._queueCollapseIfDetailsOnly();
172
+ }));
173
+ this._register(this._ctx.onDidEndSessionLayoutRestore(() => {
174
+ if (this._ctx.chatLayoutActive() && this._layoutService.isVisible(Parts.EDITOR_PART, mainWindow)) {
175
+ const ownerKey = this._ownerKeyString();
176
+ this._queue(() => this._restoreCollapsedTabs(ownerKey));
177
+ } else {
178
+ this._queueCollapseIfDetailsOnly();
168
179
  }
169
180
  }));
170
- this._register(
171
- this._ctx.onDidEndSessionLayoutRestore(() => this._queueCollapseIfDetailsOnly())
172
- );
173
- this._register(this._editorService.onDidEditorsChange(() => {
181
+ this._register(mainEditorsChanged(() => {
174
182
  if (!this._ctx.isRestoringSessionLayout) {
175
183
  this._queueCollapseIfDetailsOnly();
176
184
  }
@@ -180,15 +188,23 @@ let SinglePaneDockedTabsCoordinator = class SinglePaneDockedTabsCoordinator exte
180
188
  const resource = editor.resource;
181
189
  return resource && this._sessionChangesService.getSessionResource(resource) ? resource : undefined;
182
190
  }
191
+ _ownerKeyString() {
192
+ const session = this._sessionsService.activeSession.get();
193
+ if (!session) {
194
+ return undefined;
195
+ }
196
+ const ownerKey = this._ctx.chatLayoutActive() ? this._ctx.ownerKeyFor(session) : undefined;
197
+ return ( (ownerKey ?? session.resource).toString());
198
+ }
183
199
  prepareWorkingSetRestore(hasSavedWorkingSet) {
184
- const sessionKey = this._sessionsService.activeSession.get()?.resource.toString();
200
+ const sessionKey = this._ownerKeyString();
185
201
  this._preserveMissingFilesForSessionKey = hasSavedWorkingSet && this._filesTabDismissed ? sessionKey : undefined;
186
202
  }
187
203
  readTarget(reader) {
188
204
  return this._readTarget(reader);
189
205
  }
190
206
  queueReconcile(target, trigger) {
191
- const sessionKey = this._sessionsService.activeSession.get()?.resource.toString();
207
+ const sessionKey = this._ownerKeyString();
192
208
  const mergedTrigger = this._pending && this._pending.sessionKey === sessionKey ? mergeTriggers(this._pending.trigger, trigger) : trigger;
193
209
  this._pending = {
194
210
  sessionKey,
@@ -221,8 +237,24 @@ let SinglePaneDockedTabsCoordinator = class SinglePaneDockedTabsCoordinator exte
221
237
  dispose() {
222
238
  this._generation++;
223
239
  this._pending = undefined;
240
+ this._collapsedEditorsByOwner.clear();
224
241
  super.dispose();
225
242
  }
243
+ remapOwnerKey(oldKey, newKey) {
244
+ if (isEqual(oldKey, newKey)) {
245
+ return;
246
+ }
247
+ const captured = this._collapsedEditorsByOwner.get(( oldKey.toString()));
248
+ if (captured) {
249
+ this._collapsedEditorsByOwner.set(( newKey.toString()), captured);
250
+ this._collapsedEditorsByOwner.delete(( oldKey.toString()));
251
+ }
252
+ }
253
+ forgetOwnerKeys(keys) {
254
+ for (const key of keys) {
255
+ this._collapsedEditorsByOwner.delete(( key.toString()));
256
+ }
257
+ }
226
258
  _queue(task) {
227
259
  void this._sequencer.queue(() => this._store.isDisposed ? Promise.resolve() : task()).catch(error => {
228
260
  if (!this._store.isDisposed) {
@@ -246,6 +278,9 @@ let SinglePaneDockedTabsCoordinator = class SinglePaneDockedTabsCoordinator exte
246
278
  trigger: mergeTriggers(successor.trigger, pending.trigger)
247
279
  };
248
280
  }
281
+ if (generation === this._generation && !this._ctx.isRestoringSessionLayout) {
282
+ this._ctx.completeChangesEditorTransition();
283
+ }
249
284
  }
250
285
  }
251
286
  async _reconcileCore(target, trigger, generation) {
@@ -262,7 +297,7 @@ let SinglePaneDockedTabsCoordinator = class SinglePaneDockedTabsCoordinator exte
262
297
  return;
263
298
  }
264
299
  this._updateFilesEditors(group, target.workspace);
265
- const sessionKey = this._sessionsService.activeSession.get()?.resource.toString();
300
+ const sessionKey = this._ownerKeyString();
266
301
  const preserveMissingFiles = !!trigger.workingSetRestored && this._preserveMissingFilesForSessionKey === sessionKey;
267
302
  if (preserveMissingFiles) {
268
303
  await this._removeFilesTab(group);
@@ -270,13 +305,13 @@ let SinglePaneDockedTabsCoordinator = class SinglePaneDockedTabsCoordinator exte
270
305
  return;
271
306
  }
272
307
  }
273
- const openIntoEmpty = !!trigger.openDefaultsIfEmpty && group.editors.length === 0;
308
+ const openIntoEmpty = !!trigger.openDefaultsIfEmpty && this._layoutService.isSidePaneVisible() && group.editors.length === 0;
274
309
  const changesPresent = !!changesResource && !!this._findChangesEditor(group, changesResource);
275
310
  const filesPresent = ( group.editors.some(editor => editor instanceof EmptyFileEditorInput));
276
311
  const activeChangesResource = this._editorService.activeEditor && this.getChangesEditorResource(this._editorService.activeEditor);
277
- const activateChanges = !!trigger.ensureChangesActive && !!changesResource && (!activeChangesResource || !isEqual(activeChangesResource, changesResource));
312
+ const activateChanges = !!trigger.ensureChangesActive && changesPresent && !!changesResource && (!activeChangesResource || !isEqual(activeChangesResource, changesResource));
278
313
  const ensureAllInputs = this._layoutService.isVisible(Parts.AUXILIARYBAR_PART) && !this._layoutService.isVisible(Parts.EDITOR_PART, mainWindow);
279
- const openChanges = target.wantsChangesTab && !!changesResource && (activateChanges || (!changesPresent && (openIntoEmpty || ensureAllInputs || trigger.ensureChanges)));
314
+ const openChanges = target.wantsChangesTab && !!changesResource && (activateChanges || (!changesPresent && (openIntoEmpty || ensureAllInputs)));
280
315
  const openFiles = target.wantsFilesTab && !filesPresent && !preserveMissingFiles && (openIntoEmpty || ensureAllInputs);
281
316
  const isCreated = this._sessionsService.activeSession.get()?.isCreated.get() ?? false;
282
317
  const openFilesFirst = openChanges && openFiles && !isCreated && group.editors.length === 0;
@@ -319,9 +354,11 @@ let SinglePaneDockedTabsCoordinator = class SinglePaneDockedTabsCoordinator exte
319
354
  }
320
355
  }
321
356
  _resetCollapsedEditorsOnSessionChange() {
322
- const sessionKey = this._sessionsService.activeSession.get()?.resource.toString();
357
+ const sessionKey = this._ownerKeyString();
323
358
  if (sessionKey !== this._lastSyncedSessionKey) {
324
- this._collapsedEditors = undefined;
359
+ if (!this._ctx.chatLayoutActive() && !this._ctx.chatLayoutSuspended()) {
360
+ this._collapsedEditorsByOwner.clear();
361
+ }
325
362
  this._lastSyncedSessionKey = sessionKey;
326
363
  }
327
364
  }
@@ -443,17 +480,24 @@ let SinglePaneDockedTabsCoordinator = class SinglePaneDockedTabsCoordinator exte
443
480
  }
444
481
  _queueCollapseIfDetailsOnly() {
445
482
  if (!this._layoutService.isVisible(Parts.EDITOR_PART, mainWindow) && this._layoutService.isVisible(Parts.AUXILIARYBAR_PART)) {
446
- this._queue(() => this._collapseNonManagedTabs());
483
+ const ownerKey = this._ownerKeyString();
484
+ this._queue(() => this._collapseNonManagedTabs(ownerKey));
447
485
  }
448
486
  }
449
- async _collapseNonManagedTabs() {
487
+ async _collapseNonManagedTabs(ownerKey) {
488
+ if (this._ctx.isRestoringSessionLayout || this._ctx.chatLayoutSuspended() || this._ctx.togglingSidePane || ownerKey !== this._ownerKeyString() || this._layoutService.isVisible(Parts.EDITOR_PART, mainWindow) || !this._layoutService.isVisible(Parts.AUXILIARYBAR_PART)) {
489
+ return;
490
+ }
450
491
  const group = this._editorGroupsService.mainPart.activeGroup;
451
- const captured = [...(this._collapsedEditors ?? [])];
492
+ const captured = [...(this._collapsedEditorsByOwner.get(ownerKey) ?? [])];
452
493
  const toClose = [];
453
494
  group.editors.forEach((editor, index) => {
454
495
  if (editor instanceof DockedEditorInput || this.getChangesEditorResource(editor)) {
455
496
  return;
456
497
  }
498
+ if (this._editorWorkingSetService.shouldRetainEditor(editor)) {
499
+ return;
500
+ }
457
501
  const untyped = editor.toUntyped();
458
502
  if (untyped) {
459
503
  captured.push({
@@ -466,7 +510,7 @@ let SinglePaneDockedTabsCoordinator = class SinglePaneDockedTabsCoordinator exte
466
510
  if (toClose.length === 0) {
467
511
  return;
468
512
  }
469
- this._collapsedEditors = captured;
513
+ this._collapsedEditorsByOwner.set(ownerKey, captured);
470
514
  const suppressEditorPartAutoVisibility = this._layoutService.suppressEditorPartAutoVisibility();
471
515
  try {
472
516
  await this._editorService.closeEditors(toClose.map(editor => ({
@@ -479,9 +523,12 @@ let SinglePaneDockedTabsCoordinator = class SinglePaneDockedTabsCoordinator exte
479
523
  suppressEditorPartAutoVisibility.dispose();
480
524
  }
481
525
  }
482
- async _restoreCollapsedTabs() {
483
- const captured = this._collapsedEditors;
484
- this._collapsedEditors = undefined;
526
+ async _restoreCollapsedTabs(ownerKey) {
527
+ if (this._ctx.isRestoringSessionLayout || this._ctx.chatLayoutSuspended() || ownerKey !== this._ownerKeyString() || !this._layoutService.isVisible(Parts.EDITOR_PART, mainWindow)) {
528
+ return;
529
+ }
530
+ const captured = this._collapsedEditorsByOwner.get(ownerKey);
531
+ this._collapsedEditorsByOwner.delete(ownerKey);
485
532
  if (!captured || captured.length === 0) {
486
533
  return;
487
534
  }
@@ -508,6 +555,6 @@ let SinglePaneDockedTabsCoordinator = class SinglePaneDockedTabsCoordinator exte
508
555
  }
509
556
  }
510
557
  };
511
- SinglePaneDockedTabsCoordinator = ( __decorate([( __param(1, IAgentWorkbenchLayoutService)), ( __param(2, ISessionsService)), ( __param(3, IEditorService)), ( __param(4, IEditorGroupsService)), ( __param(5, ISessionChangesService)), ( __param(6, IChangesViewService)), ( __param(7, IContextKeyService)), ( __param(8, IInstantiationService))], SinglePaneDockedTabsCoordinator));
558
+ DesktopDockedTabsCoordinator = ( __decorate([( __param(1, IAgentWorkbenchLayoutService)), ( __param(2, ISessionsService)), ( __param(3, IEditorService)), ( __param(4, IEditorGroupsService)), ( __param(5, ISessionChangesService)), ( __param(6, IChangesViewService)), ( __param(7, IContextKeyService)), ( __param(8, IInstantiationService)), ( __param(9, ISessionEditorWorkingSetService))], DesktopDockedTabsCoordinator));
512
559
 
513
- export { SinglePaneDockedTabsCoordinator };
560
+ export { DesktopDockedTabsCoordinator };
@@ -4,13 +4,13 @@ import { IEditorService } from "@codingame/monaco-vscode-api/vscode/vs/workbench
4
4
  import { IAgentWorkbenchLayoutService } from "@codingame/monaco-vscode-api/vscode/vs/sessions/browser/workbench.service";
5
5
  import { ISessionsService } from "@codingame/monaco-vscode-api/vscode/vs/sessions/services/sessions/browser/sessionsService.service";
6
6
  import { ISessionChangesService } from "@codingame/monaco-vscode-api/vscode/vs/sessions/contrib/changes/browser/sessionChangesService";
7
- import { SinglePaneDetailPanelCoordinator } from "./singlePaneDetailPanelCoordinator.js";
8
- import { ISinglePaneLayoutContext, SinglePaneLayoutStrategy } from "./singlePaneLayoutStrategy.js";
9
- import { SinglePaneVisibilityProfileStore } from "./singlePaneVisibilityProfileStore.js";
7
+ import { DesktopDetailPanelCoordinator } from "./desktopDetailPanelCoordinator.js";
8
+ import { IDesktopLayoutContext, DesktopLayoutStrategy } from "./desktopLayoutStrategy.js";
9
+ import { DesktopVisibilityProfileStore } from "./desktopVisibilityProfileStore.js";
10
10
  /**
11
11
  * Owns workspace-backed and workspace-less draft layout behavior.
12
12
  */
13
- export declare class SinglePaneDraftSessionStrategy extends SinglePaneLayoutStrategy {
13
+ export declare class DesktopDraftSessionStrategy extends DesktopLayoutStrategy {
14
14
  private readonly _detailPanel;
15
15
  private readonly _visibilityStore;
16
16
  private readonly _layoutService;
@@ -27,7 +27,12 @@ export declare class SinglePaneDraftSessionStrategy extends SinglePaneLayoutStra
27
27
  private _activeQuickChatKey;
28
28
  private _pendingEditorRestoreKey;
29
29
  private _changingVisibility;
30
- constructor(ctx: ISinglePaneLayoutContext, _detailPanel: SinglePaneDetailPanelCoordinator, _visibilityStore: SinglePaneVisibilityProfileStore, _layoutService: IAgentWorkbenchLayoutService, _sessionsService: ISessionsService, _editorService: IEditorService, _editorGroupsService: IEditorGroupsService, _sessionChangesService: ISessionChangesService, _logService: ILogService);
30
+ constructor(ctx: IDesktopLayoutContext, _detailPanel: DesktopDetailPanelCoordinator, _visibilityStore: DesktopVisibilityProfileStore, _layoutService: IAgentWorkbenchLayoutService, _sessionsService: ISessionsService, _editorService: IEditorService, _editorGroupsService: IEditorGroupsService, _sessionChangesService: ISessionChangesService, _logService: ILogService);
31
+ private _activeOwnerKey;
32
+ private _readOwnerComposition;
33
+ private _applyOwnerComposition;
34
+ private _captureOwnerCompositionIfApplicable;
35
+ private _registerOwnerComposition;
31
36
  private _registerEntryEditorHide;
32
37
  private _registerQuickChatVisibility;
33
38
  private _captureQuickChatSharedVisibility;