@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
@@ -8,8 +8,8 @@ import { Emitter } from '@codingame/monaco-vscode-api/vscode/vs/base/common/even
8
8
  import { KeyMod, KeyCode } from '@codingame/monaco-vscode-api/vscode/vs/base/common/keyCodes';
9
9
  import '@codingame/monaco-vscode-api/vscode/vs/base/common/observableInternal/index';
10
10
  import { isEqual } from '@codingame/monaco-vscode-api/vscode/vs/base/common/resources';
11
- import { Disposable } from '@codingame/monaco-vscode-api/vscode/vs/base/common/lifecycle';
12
- import { ResourceMap } from '@codingame/monaco-vscode-api/vscode/vs/base/common/map';
11
+ import { Disposable, toDisposable } from '@codingame/monaco-vscode-api/vscode/vs/base/common/lifecycle';
12
+ import { ResourceMap, ResourceSet } from '@codingame/monaco-vscode-api/vscode/vs/base/common/map';
13
13
  import { URI } from '@codingame/monaco-vscode-api/vscode/vs/base/common/uri';
14
14
  import { localize, localize2 } from '@codingame/monaco-vscode-api/vscode/vs/nls';
15
15
  import { Categories } from '@codingame/monaco-vscode-api/vscode/vs/platform/action/common/actionCommonCategories';
@@ -20,6 +20,7 @@ import { IContextKeyService } from '@codingame/monaco-vscode-api/vscode/vs/platf
20
20
  import { IInstantiationService } from '@codingame/monaco-vscode-api/vscode/vs/platform/instantiation/common/instantiation';
21
21
  import { ILifecycleService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/services/lifecycle/common/lifecycle.service';
22
22
  import { KeybindingWeight } from '@codingame/monaco-vscode-api/vscode/vs/platform/keybinding/common/keybindingsRegistry';
23
+ import { ILogService } from '@codingame/monaco-vscode-api/vscode/vs/platform/log/common/log.service';
23
24
  import { observableConfigValue } from '@codingame/monaco-vscode-api/vscode/vs/platform/observable/common/platformObservableUtils';
24
25
  import { StorageScope, StorageTarget } from '@codingame/monaco-vscode-api/vscode/vs/platform/storage/common/storage';
25
26
  import { IStorageService } from '@codingame/monaco-vscode-api/vscode/vs/platform/storage/common/storage.service';
@@ -37,49 +38,59 @@ import { IPaneCompositePartService } from '@codingame/monaco-vscode-api/vscode/v
37
38
  import { IViewsService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/services/views/common/viewsService.service';
38
39
  import { IAgentWorkbenchLayoutService } from '@codingame/monaco-vscode-api/vscode/vs/sessions/browser/workbench.service';
39
40
  import { Menus } from '@codingame/monaco-vscode-api/vscode/vs/sessions/browser/menus';
40
- import { SessionsWelcomeVisibleContext, IsQuickChatSessionContext, SinglePaneLayoutEnabledContext, CustomViewVisibleContext } from '@codingame/monaco-vscode-api/vscode/vs/sessions/common/contextkeys';
41
+ import { SessionsWelcomeVisibleContext, IsQuickChatSessionContext, DesktopLayoutContext, CustomViewVisibleContext } from '@codingame/monaco-vscode-api/vscode/vs/sessions/common/contextkeys';
41
42
  import { logSidePanelToggle } from '@codingame/monaco-vscode-api/vscode/vs/sessions/common/sessionsTelemetry';
43
+ import { ChatLayoutContext } from '@codingame/monaco-vscode-api/vscode/vs/sessions/common/chatLayout';
42
44
  import '@codingame/monaco-vscode-api/vscode/vs/sessions/contrib/changes/browser/sessionChangesService';
43
45
  import { IChangesViewService } from '@codingame/monaco-vscode-api/vscode/vs/sessions/contrib/changes/common/changesViewService.service';
44
46
  import { ISessionsManagementService } from '@codingame/monaco-vscode-api/vscode/vs/sessions/services/sessions/common/sessionsManagement.service';
45
47
  import { ISessionsService } from '@codingame/monaco-vscode-api/vscode/vs/sessions/services/sessions/browser/sessionsService.service';
46
48
  import { SessionStatus } from '@codingame/monaco-vscode-api/vscode/vs/sessions/services/sessions/common/session';
47
- import { Registry } from '@codingame/monaco-vscode-api/vscode/vs/platform/registry/common/platform';
48
- import { Extensions } from '@codingame/monaco-vscode-api/vscode/vs/platform/configuration/common/configurationRegistry';
49
+ import { ChatLayoutOwnerKeyRegistry } from './chatLayoutOwnerKeys.js';
50
+ import { ISessionEditorWorkingSetService } from '@codingame/monaco-vscode-api/vscode/vs/sessions/contrib/layout/common/sessionEditorWorkingSet.service';
51
+ import { runOnChange } from '@codingame/monaco-vscode-api/vscode/vs/base/common/observableInternal/utils/runOnChange';
49
52
  import { derivedOpts, derived } from '@codingame/monaco-vscode-api/vscode/vs/base/common/observableInternal/observables/derived';
50
53
  import { autorun } from '@codingame/monaco-vscode-api/vscode/vs/base/common/observableInternal/reactions/autorun';
51
54
  import { observableFromEvent } from '@codingame/monaco-vscode-api/vscode/vs/base/common/observableInternal/observables/observableFromEvent';
52
55
  import { derivedObservableWithCache } from '@codingame/monaco-vscode-api/vscode/vs/base/common/observableInternal/utils/utils';
53
- import { runOnChange } from '@codingame/monaco-vscode-api/vscode/vs/base/common/observableInternal/utils/runOnChange';
54
56
  import { ISessionChangesService } from '@codingame/monaco-vscode-api/vscode/vs/sessions/contrib/changes/common/sessionChangesService.service';
55
57
 
58
+ var BaseLayoutController_1;
56
59
  const secondarySidebarToggleClosedIcon = registerIcon(
57
60
  "agent-secondary-sidebar-toggle-closed",
58
61
  Codicon.layoutSidebarRightOff,
59
- ( localize(4113, "Icon for the sessions secondary sidebar when closed."))
62
+ ( localize(4748, "Icon for the sessions secondary sidebar when closed."))
60
63
  );
61
64
  const secondarySidebarToggleOpenIcon = registerIcon(
62
65
  "agent-secondary-sidebar-toggle-open",
63
66
  Codicon.layoutSidebarRight,
64
- ( localize(4114, "Icon for the sessions secondary sidebar when open."))
67
+ ( localize(4749, "Icon for the sessions secondary sidebar when open."))
65
68
  );
69
+ const SESSION_LAYOUT_STATE_SCHEMA_VERSION = 1;
70
+ function isValidEditorWorkingSet(value) {
71
+ if (typeof value !== "object" || value === null) {
72
+ return false;
73
+ }
74
+ const workingSet = value;
75
+ return typeof workingSet.id === "string" && typeof workingSet.name === "string";
76
+ }
77
+ function isValidSessionViewState(value) {
78
+ if (typeof value !== "object" || value === null) {
79
+ return false;
80
+ }
81
+ const viewState = value;
82
+ return typeof viewState.auxiliaryBarVisible === "boolean" && (viewState.auxiliaryBarActiveViewContainerId === undefined || typeof viewState.auxiliaryBarActiveViewContainerId === "string") && (viewState.auxiliaryBarHiddenByCollapse === undefined || typeof viewState.auxiliaryBarHiddenByCollapse === "boolean");
83
+ }
84
+ function isValidSessionLayoutEntry(value) {
85
+ if (typeof value !== "object" || value === null) {
86
+ return false;
87
+ }
88
+ const entry = value;
89
+ return typeof entry.sessionResource === "string" && ( URI.parse(entry.sessionResource)).scheme.length > 0 && (entry.editorWorkingSet === undefined || isValidEditorWorkingSet(entry.editorWorkingSet)) && (entry.viewState === undefined || isValidSessionViewState(entry.viewState)) && (entry.editorPartHidden === undefined || typeof entry.editorPartHidden === "boolean") && (entry.panelViewContainerId === undefined || typeof entry.panelViewContainerId === "string") && (entry.panelVisible === undefined || typeof entry.panelVisible === "boolean");
90
+ }
66
91
  const SESSION_LAYOUT_STATE_KEY = "sessions.layoutState";
67
92
  const WORKING_SETS_STORAGE_KEY = "sessions.workingSets";
68
- const EMPTY_WORKING_SET_SETTING = "sessions.layout.useEmptyWorkingSetForNewSession";
69
- ( Registry.as(Extensions.Configuration)).registerConfiguration({
70
- id: "sessions",
71
- properties: {
72
- [EMPTY_WORKING_SET_SETTING]: {
73
- type: "boolean",
74
- default: true,
75
- description: ( localize(
76
- 4115,
77
- "Use en empty working set for new session. If false, keep the current working set."
78
- ))
79
- }
80
- }
81
- });
82
- let BaseLayoutController = class BaseLayoutController extends Disposable {
93
+ let BaseLayoutController = BaseLayoutController_1 = class BaseLayoutController extends Disposable {
83
94
  get _isRestoringSessionLayout() {
84
95
  return this._restoringSessionLayoutDepth > 0;
85
96
  }
@@ -89,6 +100,9 @@ let BaseLayoutController = class BaseLayoutController extends Disposable {
89
100
  get _legacyWorkingSetsStorageKey() {
90
101
  return WORKING_SETS_STORAGE_KEY;
91
102
  }
103
+ get _legacyLayoutStateStorageKey() {
104
+ return undefined;
105
+ }
92
106
  get _isEditorPartVisibilityPerSession() {
93
107
  return true;
94
108
  }
@@ -98,6 +112,33 @@ let BaseLayoutController = class BaseLayoutController extends Disposable {
98
112
  get _isPanelVisibilityPerSession() {
99
113
  return true;
100
114
  }
115
+ get _isPanelViewPerSession() {
116
+ return !this._isPanelVisibilityPerSession;
117
+ }
118
+ get _isPanelVisibilityPersisted() {
119
+ return false;
120
+ }
121
+ get _isLayoutStateVersioned() {
122
+ return false;
123
+ }
124
+ get _chatLayoutEnabled() {
125
+ return this._layoutService.chatLayoutPresentation.enabled;
126
+ }
127
+ _chatLayoutActive(reader) {
128
+ if (!this._chatLayoutContext) {
129
+ return false;
130
+ }
131
+ return (reader ? this._chatLayoutContext.state.read(reader) : this._chatLayoutContext.state.get()).presentation.active;
132
+ }
133
+ _chatLayoutSuspended(reader) {
134
+ return this._chatLayoutEnabled && !this._chatLayoutActive(reader);
135
+ }
136
+ _panelVisibilityKeyFor(session, reader) {
137
+ return this._ownerKeyFor(session, reader);
138
+ }
139
+ _defaultPanelVisibility(_key) {
140
+ return false;
141
+ }
101
142
  constructor(
102
143
  _layoutService,
103
144
  _sessionManagementService,
@@ -114,7 +155,9 @@ let BaseLayoutController = class BaseLayoutController extends Disposable {
114
155
  _viewDescriptorService,
115
156
  _contextKeyService,
116
157
  _instantiationService,
117
- _lifecycleService
158
+ _lifecycleService,
159
+ _logService,
160
+ _editorWorkingSetService
118
161
  ) {
119
162
  super();
120
163
  this._layoutService = _layoutService;
@@ -133,18 +176,43 @@ let BaseLayoutController = class BaseLayoutController extends Disposable {
133
176
  this._contextKeyService = _contextKeyService;
134
177
  this._instantiationService = _instantiationService;
135
178
  this._lifecycleService = _lifecycleService;
179
+ this._logService = _logService;
180
+ this._editorWorkingSetService = _editorWorkingSetService;
136
181
  this._panelVisibilityBySession = ( new ResourceMap());
137
182
  this._panelViewBySession = ( new ResourceMap());
138
183
  this._viewStateBySession = ( new ResourceMap());
139
184
  this._workingSets = ( new ResourceMap());
185
+ this._legacyReferencedWorkingSetIds = ( new Set());
140
186
  this._editorPartHiddenBySession = ( new ResourceMap());
141
187
  this._workingSetSequencer = ( new Sequencer());
188
+ this._chatLayoutOwnerKeys = ( new ChatLayoutOwnerKeyRegistry());
189
+ this._replacedSessionResources = ( new ResourceSet());
142
190
  this._restoringSessionLayoutDepth = 0;
143
191
  this._onDidEndSessionLayoutRestore = this._register(( new Emitter()));
144
192
  this.onDidEndSessionLayoutRestore = this._onDidEndSessionLayoutRestore.event;
145
193
  this._togglingSidePane = false;
194
+ this._chatLayoutContext = this._chatLayoutEnabled ? this._register(( new ChatLayoutContext(
195
+ this._layoutService.chatLayoutPresentation,
196
+ this._sessionsService.activeSession
197
+ ))) : undefined;
146
198
  this._loadState();
147
199
  this._register(this._storageService.onWillSaveState(() => this._saveState()));
200
+ if (this._chatLayoutContext) {
201
+ this._register(runOnChange(this._chatLayoutContext.state, (current, previous) => {
202
+ const session = this._sessionsService.activeSession.get();
203
+ if (previous.presentation.active && current.presentation.active && previous.owner && current.owner && session && isEqual(previous.owner.sessionResource, current.owner.sessionResource) && !isEqual(previous.owner.chatResource, current.owner.chatResource) && session.status.read(undefined) !== SessionStatus.Untitled && !this._isRestoringSessionLayout) {
204
+ this._onActiveSessionSwitched(session, session);
205
+ const key = this._ownerKeyForChat(
206
+ previous.owner.sessionResource,
207
+ previous.owner.chatResource,
208
+ session.mainChat.get().resource
209
+ );
210
+ if (key) {
211
+ this._saveWorkingSet(key);
212
+ }
213
+ }
214
+ }));
215
+ }
148
216
  this.activeSessionResourceObs = derivedOpts({
149
217
  equalsFn: isEqual
150
218
  }, reader => {
@@ -156,18 +224,22 @@ let BaseLayoutController = class BaseLayoutController extends Disposable {
156
224
  });
157
225
  this._register(autorun(reader => {
158
226
  const visibleSessions = this._sessionsService.visibleSessions.read(reader);
159
- if (visibleSessions.length <= 1) {
227
+ if (visibleSessions.length <= 1 || this._chatLayoutActive(reader)) {
160
228
  return;
161
229
  }
162
230
  for (const session of visibleSessions) {
163
231
  if (!session) {
164
232
  continue;
165
233
  }
234
+ const ownerKey = this._ownerKeyFor(session);
235
+ if (!ownerKey) {
236
+ continue;
237
+ }
166
238
  if (this._isViewStatePerSession) {
167
- this._viewStateBySession.delete(session.resource);
239
+ this._viewStateBySession.delete(ownerKey);
168
240
  }
169
241
  if (this._isPanelVisibilityPerSession) {
170
- this._panelVisibilityBySession.delete(session.resource);
242
+ this._panelVisibilityBySession.delete(ownerKey);
171
243
  }
172
244
  }
173
245
  }));
@@ -175,54 +247,76 @@ let BaseLayoutController = class BaseLayoutController extends Disposable {
175
247
  if (!this._isPanelVisibilityPerSession) {
176
248
  return;
177
249
  }
178
- const activeSessionResource = this.activeSessionResourceObs.read(reader);
179
- if (this.multipleSessionsVisibleObs.read(reader)) {
250
+ const activeSession = this._sessionsService.activeSession.read(reader);
251
+ if (this._chatLayoutEnabled) {
252
+ activeSession?.activeChat.read(reader);
253
+ }
254
+ const chatLayoutActive = this._chatLayoutActive(reader);
255
+ if (this.multipleSessionsVisibleObs.read(reader) && !chatLayoutActive) {
180
256
  return;
181
257
  }
182
- this._syncPanelVisibility(activeSessionResource);
258
+ if (activeSession && this._chatLayoutSuspended(reader)) {
259
+ return;
260
+ }
261
+ this._syncPanelVisibility(
262
+ activeSession ? this._panelVisibilityKeyFor(activeSession, reader) : undefined
263
+ );
183
264
  }));
184
265
  this._register(this._layoutService.onDidChangePartVisibility(e => {
185
266
  if (!this._isPanelVisibilityPerSession || e.partId !== Parts.PANEL_PART) {
186
267
  return;
187
268
  }
188
- if (this.multipleSessionsVisibleObs.get() || this._isCustomViewVisible()) {
269
+ if ((this.multipleSessionsVisibleObs.get() && !this._chatLayoutActive()) || this._isCustomViewVisible()) {
189
270
  return;
190
271
  }
191
272
  const activeSession = this._sessionsService.activeSession.get();
192
- if (activeSession) {
193
- this._panelVisibilityBySession.set(activeSession.resource, e.visible);
273
+ const ownerKey = activeSession && this._panelVisibilityKeyFor(activeSession);
274
+ if (ownerKey) {
275
+ this._panelVisibilityBySession.set(ownerKey, e.visible);
194
276
  }
195
277
  }));
196
278
  this._register(this._paneCompositePartService.onDidPaneCompositeOpen(e => {
197
- if (this._isPanelVisibilityPerSession || e.viewContainerLocation !== ViewContainerLocation.Panel) {
279
+ if (!this._isPanelViewPerSession || e.viewContainerLocation !== ViewContainerLocation.Panel) {
198
280
  return;
199
281
  }
200
- if (this.multipleSessionsVisibleObs.get() || this._isCustomViewVisible()) {
282
+ if ((this.multipleSessionsVisibleObs.get() && !this._chatLayoutActive()) || this._isCustomViewVisible()) {
201
283
  return;
202
284
  }
203
285
  const activeSession = this._sessionsService.activeSession.get();
204
- if (activeSession) {
205
- this._panelViewBySession.set(activeSession.resource, e.composite.getId());
286
+ const ownerKey = activeSession && this._ownerKeyFor(activeSession);
287
+ if (ownerKey) {
288
+ this._panelViewBySession.set(ownerKey, e.composite.getId());
206
289
  }
207
290
  }));
208
291
  this._register(autorun(reader => {
209
- if (this._isPanelVisibilityPerSession) {
292
+ if (!this._isPanelViewPerSession) {
210
293
  return;
211
294
  }
212
- const activeSessionResource = this.activeSessionResourceObs.read(reader);
213
- if (this.multipleSessionsVisibleObs.read(reader)) {
295
+ const activeSession = this._sessionsService.activeSession.read(reader);
296
+ if (this._chatLayoutEnabled) {
297
+ activeSession?.activeChat.read(reader);
298
+ }
299
+ const chatLayoutActive = this._chatLayoutActive(reader);
300
+ if (this.multipleSessionsVisibleObs.read(reader) && !chatLayoutActive) {
214
301
  return;
215
302
  }
216
- this._syncPanelView(activeSessionResource);
303
+ if (activeSession && this._chatLayoutSuspended(reader)) {
304
+ return;
305
+ }
306
+ this._syncPanelView(activeSession ? this._ownerKeyFor(activeSession, reader) : undefined);
217
307
  }));
218
308
  this._register(this._layoutService.onDidChangePartVisibility(e => {
219
- if (this._isPanelVisibilityPerSession || e.partId !== Parts.PANEL_PART || !e.visible) {
309
+ if (!this._isPanelViewPerSession || e.partId !== Parts.PANEL_PART || !e.visible) {
220
310
  return;
221
311
  }
222
- if (this.multipleSessionsVisibleObs.get() || this._isCustomViewVisible()) {
312
+ if ((this.multipleSessionsVisibleObs.get() && !this._chatLayoutActive()) || this._isCustomViewVisible()) {
313
+ return;
314
+ }
315
+ const activeSession = this._sessionsService.activeSession.get();
316
+ if (activeSession && this._chatLayoutSuspended()) {
223
317
  return;
224
318
  }
225
- this._syncPanelView(this._sessionsService.activeSession.get()?.resource);
319
+ this._syncPanelView(activeSession ? this._ownerKeyFor(activeSession) : undefined);
226
320
  }));
227
321
  this._register(this._layoutService.onDidChangePartVisibility(e => {
228
322
  if (!this._isEditorPartVisibilityPerSession || e.partId !== Parts.EDITOR_PART || this._isRestoringSessionLayout) {
@@ -232,8 +326,9 @@ let BaseLayoutController = class BaseLayoutController extends Disposable {
232
326
  return;
233
327
  }
234
328
  const activeSession = this._sessionsService.activeSession.get();
235
- if (activeSession) {
236
- this._editorPartHiddenBySession.set(activeSession.resource, !e.visible);
329
+ const ownerKey = activeSession && this._ownerKeyFor(activeSession);
330
+ if (ownerKey) {
331
+ this._editorPartHiddenBySession.set(ownerKey, !e.visible);
237
332
  }
238
333
  }));
239
334
  this._useModalConfigObs = observableConfigValue("workbench.editor.useModal", "all", this._configurationService);
@@ -241,31 +336,117 @@ let BaseLayoutController = class BaseLayoutController extends Disposable {
241
336
  this._workspaceContextService.onDidChangeWorkspaceFolders,
242
337
  () => this._workspaceContextService.getWorkspace().folders
243
338
  );
339
+ const activeEditorWorkingSetTarget = derivedObservableWithCache(this, (reader, lastValue) => {
340
+ if (this._chatLayoutSuspended(reader)) {
341
+ return lastValue ?? {
342
+ session: undefined,
343
+ key: undefined,
344
+ owner: undefined
345
+ };
346
+ }
347
+ const session = this._sessionsService.activeSession.read(reader);
348
+ const chat = session?.activeChat.read(reader);
349
+ const key = session && chat ? this._ownerKeyForChat(
350
+ session.resource,
351
+ chat.resource,
352
+ session.mainChat.read(reader).resource,
353
+ reader
354
+ ) : undefined;
355
+ if (isEqual(key, lastValue?.key)) {
356
+ return lastValue ?? {
357
+ session,
358
+ key,
359
+ owner: this._editorWorkingSetOwnerFor(session, reader)
360
+ };
361
+ }
362
+ return {
363
+ session,
364
+ key,
365
+ owner: this._editorWorkingSetOwnerFor(session, reader)
366
+ };
367
+ });
244
368
  const activeSessionForWorkingSet = derivedObservableWithCache(this, (reader, lastValue) => {
245
369
  const workspaceFolders = workspaceFoldersObs.read(reader);
246
- const activeSession = this._sessionsService.activeSession.read(reader);
247
- const activeSessionWorkspaceUri = activeSession?.workspace.read(reader)?.folders[0]?.workingDirectory;
370
+ const target = activeEditorWorkingSetTarget.read(reader);
371
+ const activeSession = target.session;
372
+ const activeChat = activeSession?.activeChat.read(reader);
373
+ const activeSessionWorkspaceUri = activeChat?.workspace.read(reader)?.folders[0]?.workingDirectory;
248
374
  if (activeSessionWorkspaceUri && !( workspaceFolders.some(folder => isEqual(folder.uri, activeSessionWorkspaceUri)))) {
249
- return lastValue;
375
+ return lastValue ?? {
376
+ session: undefined,
377
+ key: undefined,
378
+ owner: undefined
379
+ };
250
380
  }
251
- if (isEqual(activeSession?.resource, lastValue?.resource)) {
252
- return lastValue;
381
+ if (isEqual(target.key, lastValue?.key)) {
382
+ return lastValue ?? target;
253
383
  }
254
- return activeSession;
384
+ return target;
255
385
  });
386
+ let currentWorkingSetTarget = activeSessionForWorkingSet.get();
387
+ this._settledEditorWorkingSetKey = activeEditorWorkingSetTarget.get().key;
388
+ this._editorWorkingSetService.setCurrentOwner(activeEditorWorkingSetTarget.get().owner);
256
389
  this._register(
257
390
  runOnChange(this._sessionsService.activeSession, (session, previousSession) => {
258
- if (previousSession && !isEqual(previousSession.resource, session?.resource) && previousSession.status.read(undefined) !== SessionStatus.Untitled && !this._isRestoringSessionLayout) {
259
- this._saveWorkingSet(previousSession.resource);
391
+ if (previousSession && !isEqual(previousSession.resource, session?.resource)) {
392
+ this._onActiveSessionSwitched(previousSession, session);
393
+ const wasReplaced = this._replacedSessionResources.delete(previousSession.resource);
394
+ if (previousSession.status.read(undefined) !== SessionStatus.Untitled && !this._isRestoringSessionLayout && !wasReplaced) {
395
+ const ownerKey = this._ownerKeyFor(previousSession);
396
+ if (ownerKey) {
397
+ this._saveWorkingSet(ownerKey);
398
+ }
399
+ }
260
400
  }
261
401
  })
262
402
  );
263
- this._register(runOnChange(activeSessionForWorkingSet, (session, previousSession) => {
264
- if (previousSession || (session && ( this._workingSets.has(session.resource)))) {
265
- this._withSessionLayoutRestore(() => this._applyWorkingSet(session?.resource, {
266
- isInitialRestore: !previousSession
267
- }));
403
+ this._register(runOnChange(activeEditorWorkingSetTarget, (current, previous) => {
404
+ const shouldApply = !!previous.session || (!!current.key && ( this._workingSets.has(current.key)));
405
+ if (!shouldApply) {
406
+ const previousPending = this._pendingEditorWorkingSetRestore;
407
+ this._pendingEditorWorkingSetRestore = undefined;
408
+ previousPending?.restore.dispose();
409
+ this._editorWorkingSetService.setCurrentOwner(current.owner);
410
+ this._settledEditorWorkingSetKey = current.key;
411
+ return;
412
+ }
413
+ const pending = {
414
+ key: current.key,
415
+ owner: current.owner,
416
+ isInitialRestore: !previous.session,
417
+ restore: this._editorWorkingSetService.beginRestore(current.owner)
418
+ };
419
+ const previousPending = this._pendingEditorWorkingSetRestore;
420
+ this._pendingEditorWorkingSetRestore = pending;
421
+ previousPending?.restore.dispose();
422
+ if (previous.session && isEqual(current.key, currentWorkingSetTarget.key)) {
423
+ const immediate = this._takePendingEditorWorkingSetRestore(current.key);
424
+ if (immediate) {
425
+ if (isEqual(current.key, this._settledEditorWorkingSetKey)) {
426
+ this._applyPendingEditorWorkingSetRestore(immediate);
427
+ } else {
428
+ immediate.restore.dispose();
429
+ this._editorWorkingSetService.setCurrentOwner(current.owner);
430
+ this._settledEditorWorkingSetKey = current.key;
431
+ }
432
+ }
433
+ }
434
+ }));
435
+ this._register(
436
+ toDisposable(() => this._pendingEditorWorkingSetRestore?.restore.dispose())
437
+ );
438
+ this._register(runOnChange(activeSessionForWorkingSet, (current, previous) => {
439
+ currentWorkingSetTarget = current;
440
+ const pending = this._takePendingEditorWorkingSetRestore(current.key);
441
+ if (!pending && !(current.key && ( this._workingSets.has(current.key)))) {
442
+ return;
268
443
  }
444
+ this._applyPendingEditorWorkingSetRestore(pending ?? {
445
+ key: current.key,
446
+ owner: current.owner,
447
+ isInitialRestore: !previous.session,
448
+ restore: this._editorWorkingSetService.beginRestore(current.owner)
449
+ });
269
450
  }));
270
451
  this._register(this._sessionManagementService.onDidChangeSessions(e => {
271
452
  const archivedSessions = e.changed.filter(session => session.isArchived.read(undefined));
@@ -274,6 +455,11 @@ let BaseLayoutController = class BaseLayoutController extends Disposable {
274
455
  this._viewStateBySession.delete(session.resource);
275
456
  this._editorPartHiddenBySession.delete(session.resource);
276
457
  this._panelViewBySession.delete(session.resource);
458
+ this._panelVisibilityBySession.delete(session.resource);
459
+ this._onOwnerKeysForgotten([session.resource]);
460
+ if (this._chatLayoutEnabled) {
461
+ this._forgetPeerChatState(this._chatLayoutOwnerKeys.forgetSession(session.resource));
462
+ }
277
463
  }
278
464
  }));
279
465
  this._register(this._sessionManagementService.onDidReplaceSession((
@@ -282,6 +468,31 @@ let BaseLayoutController = class BaseLayoutController extends Disposable {
282
468
  to
283
469
  }
284
470
  ) => this._onSessionReplaced(from, to)));
471
+ this._register(this._sessionManagementService.onDidDeleteChat((
472
+ {
473
+ sessionResource,
474
+ chatResource,
475
+ session
476
+ }
477
+ ) => {
478
+ if (!this._chatLayoutEnabled) {
479
+ return;
480
+ }
481
+ const key = isEqual(chatResource, session.mainChat.get().resource) ? sessionResource : this._chatLayoutOwnerKeys.forgetChat(sessionResource, chatResource);
482
+ if (key) {
483
+ this._forgetPeerChatState([key]);
484
+ }
485
+ }));
486
+ this._register(this._sessionManagementService.onDidReplaceNewDraftSession((
487
+ {
488
+ from
489
+ }
490
+ ) => {
491
+ if (!this._chatLayoutEnabled) {
492
+ return;
493
+ }
494
+ this._forgetPeerChatState(this._chatLayoutOwnerKeys.forgetSession(from.resource));
495
+ }));
285
496
  this._register(this._layoutService.onWillToggleSidePane(() => {
286
497
  this._togglingSidePane = true;
287
498
  }));
@@ -299,20 +510,77 @@ let BaseLayoutController = class BaseLayoutController extends Disposable {
299
510
  this._togglingSidePane = false;
300
511
  }
301
512
  }));
302
- this._register(this._registerSidePaneToggleAction());
513
+ this._register(BaseLayoutController_1.registerSidePaneToggleAction());
303
514
  this._registerViewStateManagement();
304
515
  this._registerAuxiliaryControllers();
305
516
  }
517
+ _ownerKeyForChat(sessionResource, chatResource, mainChatResource, reader) {
518
+ if (!this._chatLayoutEnabled) {
519
+ return sessionResource;
520
+ }
521
+ if (!this._chatLayoutActive(reader)) {
522
+ return undefined;
523
+ }
524
+ return this._chatLayoutOwnerKeys.resolveKey({
525
+ sessionResource,
526
+ chatResource
527
+ }, mainChatResource);
528
+ }
529
+ _ownerKeyFor(session, reader) {
530
+ const activeChat = reader ? session.activeChat.read(reader) : session.activeChat.get();
531
+ const mainChat = reader ? session.mainChat.read(reader) : session.mainChat.get();
532
+ return this._ownerKeyForChat(session.resource, activeChat.resource, mainChat.resource, reader);
533
+ }
534
+ _editorWorkingSetOwnerFor(session, reader) {
535
+ return session && {
536
+ sessionResource: session.resource,
537
+ chatResource: this._chatLayoutActive(reader) ? session.activeChat.read(reader).resource : undefined
538
+ };
539
+ }
540
+ _takePendingEditorWorkingSetRestore(key) {
541
+ const pending = this._pendingEditorWorkingSetRestore;
542
+ if (!pending || !isEqual(pending.key, key)) {
543
+ return undefined;
544
+ }
545
+ this._pendingEditorWorkingSetRestore = undefined;
546
+ return pending;
547
+ }
548
+ _applyPendingEditorWorkingSetRestore(pending) {
549
+ this._withSessionLayoutRestore(async () => {
550
+ try {
551
+ await this._applyWorkingSet(pending.key, pending.owner, {
552
+ isInitialRestore: pending.isInitialRestore
553
+ });
554
+ } finally {
555
+ pending.restore.dispose();
556
+ if (!this._editorWorkingSetService.restoreState.get().restoring) {
557
+ this._settledEditorWorkingSetKey = pending.key;
558
+ }
559
+ }
560
+ });
561
+ }
562
+ _registerPersistedOwnerKeys(keys) {
563
+ if (!this._chatLayoutEnabled) {
564
+ return;
565
+ }
566
+ for (const key of keys) {
567
+ try {
568
+ this._chatLayoutOwnerKeys.registerPersistedKey(key);
569
+ } catch (error) {
570
+ this._logService.error(error);
571
+ }
572
+ }
573
+ }
306
574
  _registerAuxiliaryControllers() {}
307
575
  _isCustomViewVisible() {
308
576
  return this._layoutService.isVisible(Parts.CUSTOM_VIEW_GRID_PART);
309
577
  }
310
- _registerSidePaneToggleAction() {
578
+ static registerSidePaneToggleAction() {
311
579
  return registerAction2(class extends Action2 {
312
580
  constructor() {
313
581
  super({
314
582
  id: "workbench.action.agentToggleSidePanel",
315
- title: ( localize2(4116, "Toggle Side Panel")),
583
+ title: ( localize2(4750, "Toggle Side Panel")),
316
584
  icon: secondarySidebarToggleClosedIcon,
317
585
  toggled: {
318
586
  condition: ( ContextKeyExpr.or(AuxiliaryBarVisibleContext, MainEditorAreaVisibleContext)),
@@ -320,13 +588,13 @@ let BaseLayoutController = class BaseLayoutController extends Disposable {
320
588
  },
321
589
  metadata: {
322
590
  description: ( localize(
323
- 4117,
591
+ 4751,
324
592
  "Open/Show and Close/Hide the Side Panel (editor area and auxiliary bar)"
325
593
  ))
326
594
  },
327
595
  category: Categories.View,
328
596
  f1: true,
329
- precondition: ( ContextKeyExpr.and(( ContextKeyExpr.or(( IsQuickChatSessionContext.negate()), SinglePaneLayoutEnabledContext)), ( CustomViewVisibleContext.negate()))),
597
+ precondition: ( ContextKeyExpr.and(( ContextKeyExpr.or(( IsQuickChatSessionContext.negate()), DesktopLayoutContext)), ( CustomViewVisibleContext.negate()))),
330
598
  keybinding: {
331
599
  weight: KeybindingWeight.SessionsContrib,
332
600
  primary: KeyMod.CtrlCmd | KeyMod.Alt | KeyCode.KeyB
@@ -342,7 +610,7 @@ let BaseLayoutController = class BaseLayoutController extends Disposable {
342
610
  run(accessor) {
343
611
  const nowVisible = accessor.get(IAgentWorkbenchLayoutService).toggleSidePane();
344
612
  logSidePanelToggle(accessor.get(ITelemetryService), nowVisible);
345
- alert(nowVisible ? ( localize(4118, "Side Panel shown")) : ( localize(4119, "Side Panel hidden")));
613
+ alert(nowVisible ? ( localize(4752, "Side Panel shown")) : ( localize(4753, "Side Panel hidden")));
346
614
  }
347
615
  });
348
616
  }
@@ -350,13 +618,16 @@ let BaseLayoutController = class BaseLayoutController extends Disposable {
350
618
  _onSessionReplaced(from, to) {
351
619
  const activeSession = this._sessionsService.activeSession.get();
352
620
  const replacedSessionIsActive = isEqual(activeSession?.resource, from.resource) || isEqual(activeSession?.resource, to.resource);
621
+ if (!isEqual(from.resource, to.resource)) {
622
+ this._replacedSessionResources.add(from.resource);
623
+ }
353
624
  if (this._isEditorPartVisibilityPerSession) {
354
625
  const editorPartHidden = this._editorPartHiddenBySession.get(from.resource) ?? (replacedSessionIsActive ? !this._layoutService.isVisible(Parts.EDITOR_PART, mainWindow) : undefined);
355
626
  if (editorPartHidden !== undefined) {
356
627
  this._editorPartHiddenBySession.set(to.resource, editorPartHidden);
357
628
  }
358
629
  }
359
- if (!this._isPanelVisibilityPerSession) {
630
+ if (this._isPanelViewPerSession) {
360
631
  const panelView = this._panelViewBySession.get(from.resource);
361
632
  if (panelView !== undefined) {
362
633
  this._panelViewBySession.set(to.resource, panelView);
@@ -365,12 +636,77 @@ let BaseLayoutController = class BaseLayoutController extends Disposable {
365
636
  this._syncPanelView(to.resource);
366
637
  }
367
638
  }
639
+ if (this._isPanelVisibilityPerSession) {
640
+ const panelVisible = this._panelVisibilityBySession.get(from.resource);
641
+ if (panelVisible !== undefined) {
642
+ this._panelVisibilityBySession.set(to.resource, panelVisible);
643
+ }
644
+ }
645
+ if (this._chatLayoutEnabled) {
646
+ this._remapOwnerKeyState(from.resource, to.resource);
647
+ for (const {
648
+ oldKey,
649
+ newKey
650
+ } of this._chatLayoutOwnerKeys.remapSession({
651
+ from,
652
+ to
653
+ })) {
654
+ this._remapOwnerKeyState(oldKey, newKey);
655
+ }
656
+ }
657
+ }
658
+ _remapOwnerKeyState(oldKey, newKey) {
659
+ if (isEqual(oldKey, newKey)) {
660
+ return;
661
+ }
662
+ const workingSet = this._workingSets.get(oldKey);
663
+ if (workingSet) {
664
+ const previousAtNewKey = this._workingSets.get(newKey);
665
+ this._workingSets.set(newKey, workingSet);
666
+ this._workingSets.delete(oldKey);
667
+ if (previousAtNewKey && previousAtNewKey.id !== workingSet.id) {
668
+ this._releaseWorkingSetReference(previousAtNewKey);
669
+ }
670
+ }
671
+ const viewState = this._viewStateBySession.get(oldKey);
672
+ if (viewState) {
673
+ this._viewStateBySession.set(newKey, viewState);
674
+ this._viewStateBySession.delete(oldKey);
675
+ }
676
+ const editorPartHidden = this._editorPartHiddenBySession.get(oldKey);
677
+ if (editorPartHidden !== undefined) {
678
+ this._editorPartHiddenBySession.set(newKey, editorPartHidden);
679
+ this._editorPartHiddenBySession.delete(oldKey);
680
+ }
681
+ const panelView = this._panelViewBySession.get(oldKey);
682
+ if (panelView !== undefined) {
683
+ this._panelViewBySession.set(newKey, panelView);
684
+ this._panelViewBySession.delete(oldKey);
685
+ }
686
+ const panelVisible = this._panelVisibilityBySession.get(oldKey);
687
+ if (panelVisible !== undefined) {
688
+ this._panelVisibilityBySession.set(newKey, panelVisible);
689
+ this._panelVisibilityBySession.delete(oldKey);
690
+ }
691
+ this._onOwnerKeyRemapped(oldKey, newKey);
692
+ }
693
+ _forgetPeerChatState(keys) {
694
+ for (const key of keys) {
695
+ this._deleteWorkingSet(key);
696
+ this._viewStateBySession.delete(key);
697
+ this._editorPartHiddenBySession.delete(key);
698
+ this._panelViewBySession.delete(key);
699
+ this._panelVisibilityBySession.delete(key);
700
+ }
701
+ this._onOwnerKeysForgotten(keys);
368
702
  }
369
703
  _hasActiveAuxViewContainers() {
370
704
  return ( this._viewDescriptorService.getViewContainersByLocation(ViewContainerLocation.AuxiliaryBar).some(container => this._viewsService.isViewContainerActive(container.id)));
371
705
  }
372
706
  _onSidePaneToggled(_collapsed, _previousAuxiliaryBarVisible, _auxiliaryBarVisible) {}
373
707
  _captureActiveSessionViewState(_sessionResource) {}
708
+ _onOwnerKeyRemapped(_oldKey, _newKey) {}
709
+ _onOwnerKeysForgotten(_keys) {}
374
710
  _withSessionLayoutRestore(work) {
375
711
  this._restoringSessionLayoutDepth++;
376
712
  const suppression = this._suppressEditorVisibilityDuringRestore();
@@ -409,36 +745,92 @@ let BaseLayoutController = class BaseLayoutController extends Disposable {
409
745
  return false;
410
746
  }
411
747
  _onWillApplyWorkingSet(_workingSet) {}
748
+ _onActiveSessionSwitched(_previousSession, _session) {}
412
749
  _revealEditorPartForWorkingSet() {
413
750
  this._layoutService.setPartHidden(false, Parts.EDITOR_PART);
414
751
  }
415
752
  _hideEditorPartForWorkingSet() {
416
753
  this._layoutService.setPartHidden(true, Parts.EDITOR_PART);
417
754
  }
755
+ _applySessionLayoutEntries(entries) {
756
+ this._registerPersistedOwnerKeys(entries.map(entry => ( URI.parse(entry.sessionResource))));
757
+ for (const entry of entries) {
758
+ const resource = ( URI.parse(entry.sessionResource));
759
+ if (entry.editorWorkingSet) {
760
+ this._workingSets.set(resource, entry.editorWorkingSet);
761
+ }
762
+ if (this._isEditorPartVisibilityPerSession && entry.editorPartHidden !== undefined) {
763
+ this._editorPartHiddenBySession.set(resource, entry.editorPartHidden);
764
+ }
765
+ if (this._isViewStatePerSession && entry.viewState) {
766
+ this._viewStateBySession.set(resource, entry.viewState);
767
+ }
768
+ if (this._isPanelViewPerSession && entry.panelViewContainerId) {
769
+ this._panelViewBySession.set(resource, entry.panelViewContainerId);
770
+ }
771
+ if (this._isPanelVisibilityPersisted && typeof entry.panelVisible === "boolean") {
772
+ this._panelVisibilityBySession.set(resource, entry.panelVisible);
773
+ }
774
+ }
775
+ }
776
+ _parseVersionedSessionLayoutEntries(raw, storageKey) {
777
+ const parsed = JSON.parse(raw);
778
+ if (parsed.version !== SESSION_LAYOUT_STATE_SCHEMA_VERSION || !Array.isArray(parsed.entries)) {
779
+ throw ( new Error(
780
+ `Unsupported ${storageKey} schema: expected version ${SESSION_LAYOUT_STATE_SCHEMA_VERSION}, got version ${String(parsed.version)}`
781
+ ));
782
+ }
783
+ const invalidIndex = parsed.entries.findIndex(entry => !isValidSessionLayoutEntry(entry));
784
+ if (invalidIndex !== -1) {
785
+ throw ( new Error(`Malformed ${storageKey} entry at index ${invalidIndex}`));
786
+ }
787
+ return parsed.entries;
788
+ }
789
+ _collectLegacyReferencedWorkingSetIds() {
790
+ const legacyPresentationKey = this._legacyLayoutStateStorageKey;
791
+ if (!legacyPresentationKey) {
792
+ return;
793
+ }
794
+ const legacyPresentationRaw = this._storageService.get(legacyPresentationKey, StorageScope.WORKSPACE);
795
+ if (!legacyPresentationRaw) {
796
+ return;
797
+ }
798
+ try {
799
+ const legacyEntries = JSON.parse(legacyPresentationRaw);
800
+ for (const entry of legacyEntries) {
801
+ if (entry.editorWorkingSet) {
802
+ this._legacyReferencedWorkingSetIds.add(entry.editorWorkingSet.id);
803
+ }
804
+ }
805
+ } catch (error) {
806
+ this._logService.error(error);
807
+ }
808
+ }
418
809
  _loadState() {
810
+ this._collectLegacyReferencedWorkingSetIds();
419
811
  const raw = this._storageService.get(this._layoutStateStorageKey, StorageScope.WORKSPACE);
420
812
  if (raw) {
421
813
  try {
422
- for (const entry of JSON.parse(raw)) {
423
- const resource = ( URI.parse(entry.sessionResource));
424
- if (entry.editorWorkingSet) {
425
- this._workingSets.set(resource, entry.editorWorkingSet);
426
- }
427
- if (this._isEditorPartVisibilityPerSession && entry.editorPartHidden !== undefined) {
428
- this._editorPartHiddenBySession.set(resource, entry.editorPartHidden);
429
- }
430
- if (this._isViewStatePerSession && entry.viewState) {
431
- this._viewStateBySession.set(resource, entry.viewState);
432
- }
433
- if (!this._isPanelVisibilityPerSession && entry.panelViewContainerId) {
434
- this._panelViewBySession.set(resource, entry.panelViewContainerId);
435
- }
436
- }
814
+ const entries = this._isLayoutStateVersioned ? this._parseVersionedSessionLayoutEntries(raw, this._layoutStateStorageKey) : JSON.parse(raw);
815
+ this._applySessionLayoutEntries(entries);
437
816
  return;
438
- } catch {
817
+ } catch (error) {
818
+ if (this._isLayoutStateVersioned) {
819
+ this._logService.error(error);
820
+ }
439
821
  this._storageService.remove(this._layoutStateStorageKey, StorageScope.WORKSPACE);
440
822
  }
441
823
  }
824
+ const legacyPresentationKey = this._legacyLayoutStateStorageKey;
825
+ if (legacyPresentationKey) {
826
+ const legacyPresentationRaw = this._storageService.get(legacyPresentationKey, StorageScope.WORKSPACE);
827
+ if (legacyPresentationRaw) {
828
+ try {
829
+ this._applySessionLayoutEntries(JSON.parse(legacyPresentationRaw));
830
+ return;
831
+ } catch {}
832
+ }
833
+ }
442
834
  const legacyKey = this._legacyWorkingSetsStorageKey;
443
835
  if (!legacyKey) {
444
836
  return;
@@ -465,11 +857,12 @@ let BaseLayoutController = class BaseLayoutController extends Disposable {
465
857
  _saveState() {
466
858
  const activeSession = this._sessionsService.activeSession.get();
467
859
  const multipleVisible = this._sessionsService.visibleSessions.get().length > 1;
468
- if (activeSession && !multipleVisible && activeSession.status.read(undefined) !== SessionStatus.Untitled) {
469
- this._captureActiveSessionViewState(activeSession.resource);
860
+ const ownerKey = activeSession && this._ownerKeyFor(activeSession);
861
+ if (activeSession && ownerKey && !multipleVisible && activeSession.status.read(undefined) !== SessionStatus.Untitled) {
862
+ this._captureActiveSessionViewState(ownerKey);
470
863
  }
471
- if (activeSession && activeSession.status.read(undefined) !== SessionStatus.Untitled) {
472
- this._saveWorkingSet(activeSession.resource);
864
+ if (activeSession && ownerKey && activeSession.status.read(undefined) !== SessionStatus.Untitled) {
865
+ this._saveWorkingSet(ownerKey);
473
866
  }
474
867
  const allResources = ( new ResourceMap());
475
868
  this._workingSets.forEach((_, r) => allResources.set(r, true));
@@ -479,9 +872,12 @@ let BaseLayoutController = class BaseLayoutController extends Disposable {
479
872
  if (this._isEditorPartVisibilityPerSession) {
480
873
  this._editorPartHiddenBySession.forEach((_, r) => allResources.set(r, true));
481
874
  }
482
- if (!this._isPanelVisibilityPerSession) {
875
+ if (this._isPanelViewPerSession) {
483
876
  this._panelViewBySession.forEach((_, r) => allResources.set(r, true));
484
877
  }
878
+ if (this._isPanelVisibilityPersisted) {
879
+ this._panelVisibilityBySession.forEach((_, r) => allResources.set(r, true));
880
+ }
485
881
  if (allResources.size === 0) {
486
882
  this._storageService.remove(this._layoutStateStorageKey, StorageScope.WORKSPACE);
487
883
  return;
@@ -493,12 +889,17 @@ let BaseLayoutController = class BaseLayoutController extends Disposable {
493
889
  editorWorkingSet: this._workingSets.get(resource),
494
890
  viewState: this._isViewStatePerSession ? this._viewStateBySession.get(resource) : undefined,
495
891
  editorPartHidden: this._isEditorPartVisibilityPerSession ? this._editorPartHiddenBySession.get(resource) : undefined,
496
- panelViewContainerId: !this._isPanelVisibilityPerSession ? this._panelViewBySession.get(resource) : undefined
892
+ panelViewContainerId: this._isPanelViewPerSession ? this._panelViewBySession.get(resource) : undefined,
893
+ panelVisible: this._isPanelVisibilityPersisted ? this._panelVisibilityBySession.get(resource) : undefined
497
894
  });
498
895
  });
896
+ const payload = this._isLayoutStateVersioned ? {
897
+ version: SESSION_LAYOUT_STATE_SCHEMA_VERSION,
898
+ entries
899
+ } : entries;
499
900
  this._storageService.store(
500
901
  this._layoutStateStorageKey,
501
- JSON.stringify(entries),
902
+ JSON.stringify(payload),
502
903
  StorageScope.WORKSPACE,
503
904
  StorageTarget.MACHINE
504
905
  );
@@ -509,7 +910,10 @@ let BaseLayoutController = class BaseLayoutController extends Disposable {
509
910
  return;
510
911
  }
511
912
  const wasVisible = this._panelVisibilityBySession.get(sessionResource);
512
- this._layoutService.setPartHidden(wasVisible !== true, Parts.PANEL_PART);
913
+ this._layoutService.setPartHidden(
914
+ !(wasVisible ?? this._defaultPanelVisibility(sessionResource)),
915
+ Parts.PANEL_PART
916
+ );
513
917
  }
514
918
  _syncPanelView(sessionResource) {
515
919
  if (!sessionResource || !this._layoutService.isVisible(Parts.PANEL_PART)) {
@@ -521,14 +925,16 @@ let BaseLayoutController = class BaseLayoutController extends Disposable {
521
925
  }
522
926
  this._paneCompositePartService.openPaneComposite(viewContainerId, ViewContainerLocation.Panel);
523
927
  }
524
- async _applyWorkingSet(sessionResource, options) {
928
+ async _applyWorkingSet(sessionResource, owner, options) {
525
929
  const preserveFocus = true;
526
930
  const workingSet = sessionResource ? (this._workingSets.get(sessionResource) ?? "empty") : "empty";
527
- if (workingSet === "empty" && !this._configurationService.getValue(EMPTY_WORKING_SET_SETTING)) {
528
- return;
529
- }
530
931
  this._onWillApplyWorkingSet(workingSet);
932
+ const chatLayoutSnapshot = this._chatLayoutContext?.state.get();
933
+ const isStaleChatOwner = () => !!chatLayoutSnapshot?.owner && !this._chatLayoutContext.isCurrent(chatLayoutSnapshot);
531
934
  return this._workingSetSequencer.queue(async () => {
935
+ if (isStaleChatOwner() || !this._editorWorkingSetService.beginApply(owner)) {
936
+ return;
937
+ }
532
938
  if (this._sessionsService.visibleSessions.get().length > 1) {
533
939
  const suppression = this._layoutService.suppressEditorPartAutoVisibility();
534
940
  try {
@@ -548,6 +954,9 @@ let BaseLayoutController = class BaseLayoutController extends Disposable {
548
954
  await this._editorGroupsService.applyWorkingSet(workingSet, {
549
955
  preserveFocus
550
956
  });
957
+ if (isStaleChatOwner()) {
958
+ return;
959
+ }
551
960
  if (this._shouldRevealEditorPartForEmptyWorkingSet(revealEditorPart) && !this._layoutService.isVisible(Parts.EDITOR_PART, mainWindow)) {
552
961
  this._revealEditorPartForWorkingSet();
553
962
  } else if (hideEditorPart && this._layoutService.isVisible(Parts.EDITOR_PART, mainWindow)) {
@@ -564,6 +973,9 @@ let BaseLayoutController = class BaseLayoutController extends Disposable {
564
973
  } finally {
565
974
  suppression.dispose();
566
975
  }
976
+ if (isStaleChatOwner()) {
977
+ return;
978
+ }
567
979
  if (this._shouldHideEditorPartOnApply(editorPartHidden) && this._layoutService.isVisible(Parts.EDITOR_PART, mainWindow)) {
568
980
  this._hideEditorPartForWorkingSet();
569
981
  }
@@ -577,6 +989,9 @@ let BaseLayoutController = class BaseLayoutController extends Disposable {
577
989
  const result = await this._editorGroupsService.applyWorkingSet(workingSet, {
578
990
  preserveFocus
579
991
  });
992
+ if (isStaleChatOwner()) {
993
+ return;
994
+ }
580
995
  if (revealEditorPart && result && !this._layoutService.isVisible(Parts.EDITOR_PART, mainWindow)) {
581
996
  this._revealEditorPartForWorkingSet();
582
997
  } else if (hideEditorPart && this._layoutService.isVisible(Parts.EDITOR_PART, mainWindow)) {
@@ -597,10 +1012,26 @@ let BaseLayoutController = class BaseLayoutController extends Disposable {
597
1012
  if (!existingWorkingSet) {
598
1013
  return;
599
1014
  }
600
- this._editorGroupsService.deleteWorkingSet(existingWorkingSet);
601
1015
  this._workingSets.delete(sessionResource);
1016
+ this._releaseWorkingSetReference(existingWorkingSet);
1017
+ }
1018
+ _isWorkingSetStillReferenced(workingSet) {
1019
+ if (( this._legacyReferencedWorkingSetIds.has(workingSet.id))) {
1020
+ return true;
1021
+ }
1022
+ for (const tracked of ( this._workingSets.values())) {
1023
+ if (tracked.id === workingSet.id) {
1024
+ return true;
1025
+ }
1026
+ }
1027
+ return false;
1028
+ }
1029
+ _releaseWorkingSetReference(workingSet) {
1030
+ if (!this._isWorkingSetStillReferenced(workingSet)) {
1031
+ this._editorGroupsService.deleteWorkingSet(workingSet);
1032
+ }
602
1033
  }
603
1034
  };
604
- BaseLayoutController = ( __decorate([( __param(0, IAgentWorkbenchLayoutService)), ( __param(1, ISessionsManagementService)), ( __param(2, ISessionsService)), ( __param(3, IViewsService)), ( __param(4, IPaneCompositePartService)), ( __param(5, IStorageService)), ( __param(6, IConfigurationService)), ( __param(7, IEditorService)), ( __param(8, IEditorGroupsService)), ( __param(9, IWorkspaceContextService)), ( __param(10, ISessionChangesService)), ( __param(11, IChangesViewService)), ( __param(12, IViewDescriptorService)), ( __param(13, IContextKeyService)), ( __param(14, IInstantiationService)), ( __param(15, ILifecycleService))], BaseLayoutController));
1035
+ BaseLayoutController = BaseLayoutController_1 = ( __decorate([( __param(0, IAgentWorkbenchLayoutService)), ( __param(1, ISessionsManagementService)), ( __param(2, ISessionsService)), ( __param(3, IViewsService)), ( __param(4, IPaneCompositePartService)), ( __param(5, IStorageService)), ( __param(6, IConfigurationService)), ( __param(7, IEditorService)), ( __param(8, IEditorGroupsService)), ( __param(9, IWorkspaceContextService)), ( __param(10, ISessionChangesService)), ( __param(11, IChangesViewService)), ( __param(12, IViewDescriptorService)), ( __param(13, IContextKeyService)), ( __param(14, IInstantiationService)), ( __param(15, ILifecycleService)), ( __param(16, ILogService)), ( __param(17, ISessionEditorWorkingSetService))], BaseLayoutController));
605
1036
 
606
1037
  export { BaseLayoutController };