@codingame/monaco-vscode-workbench-service-override 37.6.1 → 38.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (323) hide show
  1. package/common.js +2 -0
  2. package/index.js +9 -10
  3. package/package.json +10 -10
  4. package/session.js +45 -42
  5. package/vscode/src/vs/platform/agentHost/common/sessionComparisonPrompts.d.ts +1 -0
  6. package/vscode/src/vs/platform/agentHost/common/sessionComparisonPrompts.js +12 -0
  7. package/vscode/src/vs/sessions/browser/{singlePaneWorkbench.d.ts → desktopWorkbench.d.ts} +6 -5
  8. package/vscode/src/vs/sessions/browser/{singlePaneWorkbench.js → desktopWorkbench.js} +23 -25
  9. package/vscode/src/vs/sessions/browser/dockedAuxiliaryBarController.d.ts +5 -2
  10. package/vscode/src/vs/sessions/browser/dockedAuxiliaryBarController.js +41 -3
  11. package/vscode/src/vs/sessions/browser/layoutActions.js +25 -41
  12. package/vscode/src/vs/sessions/browser/mobileWorkbench.d.ts +4 -0
  13. package/vscode/src/vs/sessions/browser/mobileWorkbench.js +10 -0
  14. package/vscode/src/vs/sessions/browser/parts/chatCompositeBar.d.ts +10 -5
  15. package/vscode/src/vs/sessions/browser/parts/chatCompositeBar.js +138 -34
  16. package/vscode/src/vs/sessions/browser/parts/chatGroupDropTarget.d.ts +2 -0
  17. package/vscode/src/vs/sessions/browser/parts/chatGroupDropTarget.js +13 -5
  18. package/vscode/src/vs/sessions/browser/parts/chatGroupView.d.ts +27 -5
  19. package/vscode/src/vs/sessions/browser/parts/chatGroupView.js +129 -28
  20. package/vscode/src/vs/sessions/browser/parts/chatGroupsView.d.ts +22 -7
  21. package/vscode/src/vs/sessions/browser/parts/chatGroupsView.js +260 -21
  22. package/vscode/src/vs/sessions/browser/parts/chatHeader.d.ts +25 -0
  23. package/vscode/src/vs/sessions/browser/parts/chatHeader.js +42 -0
  24. package/vscode/src/vs/sessions/browser/parts/customViewGridPart.js +9 -1
  25. package/vscode/src/vs/sessions/browser/parts/customViewNode.js +1 -1
  26. package/vscode/src/vs/sessions/browser/parts/{singlePaneAuxiliaryBarPart.d.ts → desktopAuxiliaryBarPart.d.ts} +4 -4
  27. package/vscode/src/vs/sessions/browser/parts/desktopAuxiliaryBarPart.js +26 -0
  28. package/vscode/src/vs/sessions/browser/parts/{singlePaneEditorPart.d.ts → desktopEditorPart.d.ts} +8 -6
  29. package/vscode/src/vs/sessions/browser/parts/{singlePaneEditorPart.js → desktopEditorPart.js} +25 -5
  30. package/vscode/src/vs/sessions/browser/parts/editorPart.js +16 -4
  31. package/vscode/src/vs/sessions/browser/parts/editorParts.d.ts +1 -1
  32. package/vscode/src/vs/sessions/browser/parts/editorParts.js +7 -6
  33. package/vscode/src/vs/sessions/browser/parts/gridGap.d.ts +14 -0
  34. package/vscode/src/vs/sessions/browser/parts/gridGap.js +69 -0
  35. package/vscode/src/vs/sessions/browser/parts/media/chatCompositeBar.css +132 -4
  36. package/vscode/src/vs/sessions/browser/parts/media/chatGroupsView.css +10 -0
  37. package/vscode/src/vs/sessions/browser/parts/media/editorPart.css +46 -2
  38. package/vscode/src/vs/sessions/browser/parts/media/sessionReadOnlyBanner.css +3 -3
  39. package/vscode/src/vs/sessions/browser/parts/media/sessionView.css +45 -48
  40. package/vscode/src/vs/sessions/browser/parts/media/sessionsPart.css +15 -0
  41. package/vscode/src/vs/sessions/browser/parts/menubar.contribution.js +8 -8
  42. package/vscode/src/vs/sessions/browser/parts/mobile/mobileSessionsPart.js +1 -1
  43. package/vscode/src/vs/sessions/browser/parts/remoteHostUnavailableEmptyState.d.ts +9 -1
  44. package/vscode/src/vs/sessions/browser/parts/remoteHostUnavailableEmptyState.js +21 -3
  45. package/vscode/src/vs/sessions/browser/parts/sessionBarStyles.js +1 -1
  46. package/vscode/src/vs/sessions/browser/parts/sessionDropTarget.d.ts +4 -3
  47. package/vscode/src/vs/sessions/browser/parts/sessionDropTarget.js +29 -15
  48. package/vscode/src/vs/sessions/browser/parts/sessionGridLayout.d.ts +67 -0
  49. package/vscode/src/vs/sessions/browser/parts/sessionGridLayout.js +598 -0
  50. package/vscode/src/vs/sessions/browser/parts/sessionHeader.d.ts +11 -84
  51. package/vscode/src/vs/sessions/browser/parts/sessionHeader.js +37 -317
  52. package/vscode/src/vs/sessions/browser/parts/sessionHeaderBar.d.ts +103 -0
  53. package/vscode/src/vs/sessions/browser/parts/sessionHeaderBar.js +391 -0
  54. package/vscode/src/vs/sessions/browser/parts/sessionReadOnlyBanner.d.ts +6 -4
  55. package/vscode/src/vs/sessions/browser/parts/sessionReadOnlyBanner.js +58 -28
  56. package/vscode/src/vs/sessions/browser/parts/sessionRemoteConnection.d.ts +4 -0
  57. package/vscode/src/vs/sessions/browser/parts/sessionRemoteConnection.js +66 -23
  58. package/vscode/src/vs/sessions/browser/parts/sessionView.d.ts +24 -5
  59. package/vscode/src/vs/sessions/browser/parts/sessionView.js +143 -33
  60. package/vscode/src/vs/sessions/browser/parts/sessionsPart.d.ts +25 -19
  61. package/vscode/src/vs/sessions/browser/parts/sessionsPart.js +157 -58
  62. package/vscode/src/vs/sessions/browser/parts/sessionsParts.d.ts +12 -3
  63. package/vscode/src/vs/sessions/browser/parts/sessionsParts.js +17 -2
  64. package/vscode/src/vs/sessions/browser/sessionWorkspace.d.ts +6 -3
  65. package/vscode/src/vs/sessions/browser/sessionWorkspace.js +2 -2
  66. package/vscode/src/vs/sessions/browser/sessionsSetUpService.js +66 -20
  67. package/vscode/src/vs/sessions/browser/sessionsSignInDialog.d.ts +1 -0
  68. package/vscode/src/vs/sessions/browser/sessionsSignInDialog.js +5 -4
  69. package/vscode/src/vs/sessions/browser/workbenchFactory.d.ts +12 -0
  70. package/vscode/src/vs/sessions/browser/workbenchFactory.js +17 -0
  71. package/vscode/src/vs/sessions/contrib/accountMenu/browser/account.contribution.d.ts +85 -1
  72. package/vscode/src/vs/sessions/contrib/accountMenu/browser/account.contribution.js +118 -100
  73. package/vscode/src/vs/sessions/contrib/accountMenu/browser/chatPetAchievementBadges.d.ts +3 -2
  74. package/vscode/src/vs/sessions/contrib/accountMenu/browser/chatPetAchievementBadges.js +39 -34
  75. package/vscode/src/vs/sessions/contrib/accountMenu/browser/media/accountTitleBarWidget.css +6 -0
  76. package/vscode/src/vs/sessions/contrib/agentFeedback/browser/nullAgentFeedbackService.contribution.d.ts +3 -0
  77. package/vscode/src/vs/sessions/contrib/agentFeedback/browser/nullAgentFeedbackService.contribution.js +6 -0
  78. package/vscode/src/vs/sessions/contrib/aiCustomizationTreeView/browser/aiCustomizationTreeView.contribution.js +18 -18
  79. package/vscode/src/vs/sessions/contrib/aiCustomizationTreeView/browser/aiCustomizationTreeViewViews.js +12 -12
  80. package/vscode/src/vs/sessions/contrib/applyCommitsToParentRepo/browser/applyChangesToParentRepo.js +7 -7
  81. package/vscode/src/vs/sessions/contrib/aquarium/browser/aquarium.contribution.js +12 -12
  82. package/vscode/src/vs/sessions/contrib/aquarium/browser/aquariumOverlay.js +10 -10
  83. package/vscode/src/vs/sessions/contrib/automations/browser/automationDialog.d.ts +78 -8
  84. package/vscode/src/vs/sessions/contrib/automations/browser/automationDialog.js +1166 -202
  85. package/vscode/src/vs/sessions/contrib/automations/browser/automationDialogService.d.ts +11 -1
  86. package/vscode/src/vs/sessions/contrib/automations/browser/automationDialogService.js +190 -69
  87. package/vscode/src/vs/sessions/contrib/automations/browser/automationRunner.d.ts +11 -9
  88. package/vscode/src/vs/sessions/contrib/automations/browser/automationRunner.js +122 -233
  89. package/vscode/src/vs/sessions/contrib/automations/browser/automationTelemetry.d.ts +22 -0
  90. package/vscode/src/vs/sessions/contrib/automations/browser/automationTelemetry.js +62 -0
  91. package/vscode/src/vs/sessions/contrib/automations/browser/automationTools.d.ts +7 -2
  92. package/vscode/src/vs/sessions/contrib/automations/browser/automationTools.js +172 -84
  93. package/vscode/src/vs/sessions/contrib/automations/browser/automations.contribution.js +17 -7
  94. package/vscode/src/vs/sessions/contrib/automations/browser/media/automationDialog.css +242 -60
  95. package/vscode/src/vs/sessions/contrib/automations/browser/providerAutomationService.d.ts +24 -36
  96. package/vscode/src/vs/sessions/contrib/automations/browser/providerAutomationService.js +104 -420
  97. package/vscode/src/vs/sessions/contrib/changes/browser/changes.contribution.js +15 -14
  98. package/vscode/src/vs/sessions/contrib/changes/browser/changesActions.d.ts +13 -3
  99. package/vscode/src/vs/sessions/contrib/changes/browser/changesActions.js +66 -43
  100. package/vscode/src/vs/sessions/contrib/changes/browser/changesMultiDiffSourceResolver.js +2 -7
  101. package/vscode/src/vs/sessions/contrib/changes/browser/changesViewActions.js +54 -59
  102. package/vscode/src/vs/sessions/contrib/changes/browser/changesetReviewActions.js +7 -7
  103. package/vscode/src/vs/sessions/contrib/changes/browser/media/changesActions.css +6 -0
  104. package/vscode/src/vs/sessions/contrib/changes/browser/sessionSyncChanges.js +25 -21
  105. package/vscode/src/vs/sessions/contrib/changes/browser/sessionsChangesAccessibilityHelp.js +21 -27
  106. package/vscode/src/vs/sessions/contrib/chat/browser/sessionChatInputToolbarDebug.js +17 -17
  107. package/vscode/src/vs/sessions/contrib/chat/browser/sessionTaskRunner.d.ts +5 -5
  108. package/vscode/src/vs/sessions/contrib/chat/browser/sessionTaskRunner.js +2 -2
  109. package/vscode/src/vs/sessions/contrib/chatDebug/browser/chatDebug.contribution.js +2 -2
  110. package/vscode/src/vs/sessions/contrib/codeReview/browser/codeReview.contributions.js +9 -16
  111. package/vscode/src/vs/sessions/contrib/customViewTest/browser/customViewTest.contribution.js +7 -7
  112. package/vscode/src/vs/sessions/contrib/editor/browser/addTabActions.js +10 -10
  113. package/vscode/src/vs/sessions/contrib/editor/browser/editor.contribution.d.ts +13 -1
  114. package/vscode/src/vs/sessions/contrib/editor/browser/editor.contribution.js +104 -117
  115. package/vscode/src/vs/sessions/contrib/editor/browser/emptyFileEditor.contribution.js +8 -7
  116. package/vscode/src/vs/sessions/contrib/editor/browser/emptyFileEditor.js +5 -5
  117. package/vscode/src/vs/sessions/contrib/editor/browser/emptyFileEditorInput.js +1 -1
  118. package/vscode/src/vs/sessions/contrib/editor/browser/media/editorBreadcrumbs.css +0 -1
  119. package/vscode/src/vs/sessions/contrib/editor/browser/media/editorHeader.css +1 -1
  120. package/vscode/src/vs/sessions/contrib/files/browser/files.contribution.d.ts +7 -0
  121. package/vscode/src/vs/sessions/contrib/files/browser/files.contribution.js +77 -13
  122. package/vscode/src/vs/sessions/contrib/files/browser/filesView.d.ts +2 -1
  123. package/vscode/src/vs/sessions/contrib/files/browser/filesView.js +14 -4
  124. package/vscode/src/vs/sessions/contrib/layout/browser/baseSessionLayoutController.d.ts +45 -10
  125. package/vscode/src/vs/sessions/contrib/layout/browser/baseSessionLayoutController.js +527 -77
  126. package/vscode/src/vs/sessions/contrib/layout/browser/chatLayoutOwnerKeys.d.ts +18 -0
  127. package/vscode/src/vs/sessions/contrib/layout/browser/chatLayoutOwnerKeys.js +95 -0
  128. package/vscode/src/vs/sessions/contrib/layout/browser/{singlePane/singlePaneDetailPanelCoordinator.d.ts → desktop/desktopDetailPanelCoordinator.d.ts} +5 -4
  129. package/vscode/src/vs/sessions/contrib/layout/browser/{singlePane/singlePaneDetailPanelCoordinator.js → desktop/desktopDetailPanelCoordinator.js} +10 -7
  130. package/vscode/src/vs/sessions/contrib/layout/browser/{singlePane/singlePaneDockedTabsCoordinator.d.ts → desktop/desktopDockedTabsCoordinator.d.ts} +15 -12
  131. package/vscode/src/vs/sessions/contrib/layout/browser/{singlePane/singlePaneDockedTabsCoordinator.js → desktop/desktopDockedTabsCoordinator.js} +91 -44
  132. package/vscode/src/vs/sessions/contrib/layout/browser/{singlePane/singlePaneDraftSessionStrategy.d.ts → desktop/desktopDraftSessionStrategy.d.ts} +10 -5
  133. package/vscode/src/vs/sessions/contrib/layout/browser/{singlePane/singlePaneDraftSessionStrategy.js → desktop/desktopDraftSessionStrategy.js} +95 -22
  134. package/vscode/src/vs/sessions/contrib/layout/browser/{singlePane/singlePaneExistingSessionStrategy.d.ts → desktop/desktopExistingSessionStrategy.d.ts} +13 -11
  135. package/vscode/src/vs/sessions/contrib/layout/browser/{singlePane/singlePaneExistingSessionStrategy.js → desktop/desktopExistingSessionStrategy.js} +137 -57
  136. package/vscode/src/vs/sessions/contrib/layout/browser/{singlePane/singlePaneLayoutStrategy.d.ts → desktop/desktopLayoutStrategy.d.ts} +22 -13
  137. package/vscode/src/vs/sessions/contrib/layout/browser/{singlePane/singlePaneLayoutStrategy.js → desktop/desktopLayoutStrategy.js} +2 -2
  138. package/vscode/src/vs/sessions/contrib/layout/browser/desktop/desktopOwnerCompositionStore.d.ts +22 -0
  139. package/vscode/src/vs/sessions/contrib/layout/browser/desktop/desktopOwnerCompositionStore.js +136 -0
  140. package/vscode/src/vs/sessions/contrib/layout/browser/{singlePane/singlePaneSharedHelpers.d.ts → desktop/desktopSharedHelpers.d.ts} +9 -2
  141. package/vscode/src/vs/sessions/contrib/layout/browser/desktop/desktopSharedHelpers.js +56 -0
  142. package/vscode/src/vs/sessions/contrib/layout/browser/{singlePane/singlePaneVisibilityProfileStore.d.ts → desktop/desktopVisibilityProfileStore.d.ts} +3 -2
  143. package/vscode/src/vs/sessions/contrib/layout/browser/{singlePane/singlePaneVisibilityProfileStore.js → desktop/desktopVisibilityProfileStore.js} +10 -9
  144. package/vscode/src/vs/sessions/contrib/layout/browser/desktopLayoutController.d.ts +71 -0
  145. package/vscode/src/vs/sessions/contrib/layout/browser/desktopLayoutController.js +201 -0
  146. package/vscode/src/vs/sessions/contrib/layout/browser/sessions.layout.contribution.d.ts +8 -1
  147. package/vscode/src/vs/sessions/contrib/layout/browser/sessions.layout.contribution.js +35 -35
  148. package/vscode/src/vs/sessions/contrib/layout/common/sessionEditorWorkingSet.d.ts +39 -0
  149. package/vscode/src/vs/sessions/contrib/layout/common/sessionEditorWorkingSet.js +73 -0
  150. package/vscode/src/vs/sessions/contrib/onboardingTours/browser/newSessionTourContribution.d.ts +42 -1
  151. package/vscode/src/vs/sessions/contrib/onboardingTours/browser/newSessionTourContribution.js +14 -10
  152. package/vscode/src/vs/sessions/contrib/onboardingTours/browser/newSessionViewTourContribution.js +3 -4
  153. package/vscode/src/vs/sessions/contrib/onboardingTours/browser/newSessionViewTourTrigger.d.ts +2 -2
  154. package/vscode/src/vs/sessions/contrib/onboardingTours/browser/newSessionViewTourTrigger.js +13 -9
  155. package/vscode/src/vs/sessions/contrib/onboardingTours/browser/newSessionViewV2TourContribution.js +20 -5
  156. package/vscode/src/vs/sessions/contrib/onboardingTours/browser/newSessionViewV2TourVariation.d.ts +8 -0
  157. package/vscode/src/vs/sessions/contrib/onboardingTours/browser/newSessionViewV2TourVariation.js +19 -0
  158. package/vscode/src/vs/sessions/contrib/onboardingTours/browser/newSessionViewV3Prompt.js +21 -20
  159. package/vscode/src/vs/sessions/contrib/onboardingTours/browser/tours/newSessionTour.js +10 -5
  160. package/vscode/src/vs/sessions/contrib/onboardingTours/browser/tours/newSessionViewTour.js +12 -8
  161. package/vscode/src/vs/sessions/contrib/onboardingTours/browser/tours/newSessionViewTourShared.d.ts +3 -1
  162. package/vscode/src/vs/sessions/contrib/onboardingTours/browser/tours/newSessionViewTourShared.js +12 -7
  163. package/vscode/src/vs/sessions/contrib/onboardingTours/browser/tours/newSessionViewV2Tour.d.ts +9 -1
  164. package/vscode/src/vs/sessions/contrib/onboardingTours/browser/tours/newSessionViewV2Tour.js +46 -19
  165. package/vscode/src/vs/sessions/contrib/onboardingTours/browser/tours/newSessionViewV3Tour.js +2 -0
  166. package/vscode/src/vs/sessions/contrib/policyBlocked/browser/media/sessionsPolicyBlocked.css +33 -0
  167. package/vscode/src/vs/sessions/contrib/policyBlocked/browser/policyBlocked.contribution.d.ts +4 -2
  168. package/vscode/src/vs/sessions/contrib/policyBlocked/browser/policyBlocked.contribution.js +29 -8
  169. package/vscode/src/vs/sessions/contrib/policyBlocked/browser/sessionsPolicyBlocked.d.ts +15 -2
  170. package/vscode/src/vs/sessions/contrib/policyBlocked/browser/sessionsPolicyBlocked.js +169 -32
  171. package/vscode/src/vs/sessions/contrib/providers/agentHost/browser/agentHostForkActions.js +30 -8
  172. package/vscode/src/vs/sessions/contrib/providers/agentHost/browser/agentHostSessionBranchActions.js +8 -34
  173. package/vscode/src/vs/sessions/contrib/providers/agentHost/browser/agentMergeActions.js +63 -49
  174. package/vscode/src/vs/sessions/contrib/providers/agentHost/browser/exportDebugLogsAction.js +1 -1
  175. package/vscode/src/vs/sessions/contrib/providers/agentHost/browser/mobile/mobileChatInputConfigPicker.js +31 -17
  176. package/vscode/src/vs/sessions/contrib/providers/remoteAgentHost/browser/connectionDiagnostics.contribution.d.ts +32 -0
  177. package/vscode/src/vs/sessions/contrib/providers/remoteAgentHost/browser/connectionDiagnostics.contribution.js +250 -0
  178. package/vscode/src/vs/sessions/contrib/providers/remoteAgentHost/browser/connectionDiagnosticsLogs.d.ts +6 -0
  179. package/vscode/src/vs/sessions/contrib/providers/remoteAgentHost/browser/connectionDiagnosticsLogs.js +52 -0
  180. package/vscode/src/vs/sessions/contrib/providers/remoteAgentHost/browser/connectionDiagnosticsReport.d.ts +51 -0
  181. package/vscode/src/vs/sessions/contrib/providers/remoteAgentHost/browser/connectionDiagnosticsReport.js +439 -0
  182. package/vscode/src/vs/sessions/contrib/providers/remoteAgentHost/browser/connectionDiagnosticsService.d.ts +45 -0
  183. package/vscode/src/vs/sessions/contrib/providers/remoteAgentHost/browser/connectionDiagnosticsService.js +595 -0
  184. package/vscode/src/vs/sessions/contrib/providers/remoteAgentHost/browser/devContainerAgentHostService.d.ts +20 -3
  185. package/vscode/src/vs/sessions/contrib/providers/remoteAgentHost/browser/devContainerAgentHostService.js +360 -46
  186. package/vscode/src/vs/sessions/contrib/providers/remoteAgentHost/browser/devContainerSource.d.ts +9 -0
  187. package/vscode/src/vs/sessions/contrib/providers/remoteAgentHost/browser/devContainerSource.js +59 -0
  188. package/vscode/src/vs/sessions/contrib/providers/remoteAgentHost/browser/media/connectionDiagnostics.css +201 -0
  189. package/vscode/src/vs/sessions/contrib/remoteSessions/browser/getRemoteSessionTool.d.ts +10 -0
  190. package/vscode/src/vs/sessions/contrib/remoteSessions/browser/getRemoteSessionTool.js +70 -0
  191. package/vscode/src/vs/sessions/contrib/remoteSessions/browser/remoteSessionChatService.d.ts +20 -0
  192. package/vscode/src/vs/sessions/contrib/remoteSessions/browser/remoteSessionChatService.js +104 -0
  193. package/vscode/src/vs/sessions/contrib/remoteSessions/browser/remoteSessionInspector.d.ts +15 -0
  194. package/vscode/src/vs/sessions/contrib/remoteSessions/browser/remoteSessionInspector.js +152 -0
  195. package/vscode/src/vs/sessions/contrib/remoteSessions/browser/remoteSessionMessageRouter.d.ts +49 -0
  196. package/vscode/src/vs/sessions/contrib/remoteSessions/browser/remoteSessionMessageRouter.js +340 -0
  197. package/vscode/src/vs/sessions/contrib/remoteSessions/browser/remoteSessionService.d.ts +41 -0
  198. package/vscode/src/vs/sessions/contrib/remoteSessions/browser/remoteSessionService.js +400 -0
  199. package/vscode/src/vs/sessions/contrib/remoteSessions/browser/remoteSessionSource.d.ts +28 -0
  200. package/vscode/src/vs/sessions/contrib/remoteSessions/browser/remoteSessionSource.js +178 -0
  201. package/vscode/src/vs/sessions/contrib/remoteSessions/browser/remoteSessionTools.d.ts +17 -0
  202. package/vscode/src/vs/sessions/contrib/remoteSessions/browser/remoteSessionTools.js +206 -0
  203. package/vscode/src/vs/sessions/contrib/remoteSessions/browser/remoteSessions.contribution.d.ts +1 -0
  204. package/vscode/src/vs/sessions/contrib/remoteSessions/browser/remoteSessions.contribution.js +58 -0
  205. package/vscode/src/vs/sessions/contrib/remoteSessions/browser/sendRemoteMessageTool.d.ts +10 -0
  206. package/vscode/src/vs/sessions/contrib/remoteSessions/browser/sendRemoteMessageTool.js +90 -0
  207. package/vscode/src/vs/sessions/contrib/remoteSessions/common/remoteSessionInspection.d.ts +38 -0
  208. package/vscode/src/vs/sessions/contrib/remoteSessions/common/remoteSessionInspection.js +58 -0
  209. package/vscode/src/vs/sessions/contrib/search/browser/search.contribution.js +4 -5
  210. package/vscode/src/vs/sessions/contrib/search/browser/searchEditorEmptyState.contribution.js +1 -1
  211. package/vscode/src/vs/sessions/contrib/sessionComparison/browser/sessionComparison.contribution.d.ts +1 -0
  212. package/vscode/src/vs/sessions/contrib/sessionComparison/browser/sessionComparison.contribution.js +33 -0
  213. package/vscode/src/vs/sessions/contrib/sessionComparison/browser/sessionComparisonGridController.d.ts +30 -0
  214. package/vscode/src/vs/sessions/contrib/sessionComparison/browser/sessionComparisonGridController.js +190 -0
  215. package/vscode/src/vs/sessions/contrib/sessionComparison/browser/sessionComparisonTool.d.ts +31 -0
  216. package/vscode/src/vs/sessions/contrib/sessionComparison/browser/sessionComparisonTool.js +559 -0
  217. package/vscode/src/vs/sessions/contrib/sessionComparison/browser/sessionComparisonViewService.d.ts +12 -0
  218. package/vscode/src/vs/sessions/contrib/sessionComparison/browser/sessionComparisonViewService.js +38 -0
  219. package/vscode/src/vs/sessions/contrib/sessions/browser/blockedSessionsIndicatorModel.d.ts +13 -4
  220. package/vscode/src/vs/sessions/contrib/sessions/browser/blockedSessionsIndicatorModel.js +155 -22
  221. package/vscode/src/vs/sessions/contrib/sessions/browser/blockedSessionsList.js +9 -5
  222. package/vscode/src/vs/sessions/contrib/sessions/browser/media/automationsCards.css +90 -25
  223. package/vscode/src/vs/sessions/contrib/sessions/browser/media/sessionsTitleBarWidget.css +21 -4
  224. package/vscode/src/vs/sessions/contrib/sessions/browser/sessionDetailsAction.d.ts +2 -1
  225. package/vscode/src/vs/sessions/contrib/sessions/browser/sessionDetailsAction.js +11 -7
  226. package/vscode/src/vs/sessions/contrib/sessions/browser/sessions.contribution.d.ts +116 -1
  227. package/vscode/src/vs/sessions/contrib/sessions/browser/sessions.contribution.js +126 -30
  228. package/vscode/src/vs/sessions/contrib/sessions/browser/sessionsAccountTelemetry.d.ts +26 -0
  229. package/vscode/src/vs/sessions/contrib/sessions/browser/sessionsAccountTelemetry.js +160 -0
  230. package/vscode/src/vs/sessions/contrib/sessions/browser/sessionsActions.d.ts +14 -6
  231. package/vscode/src/vs/sessions/contrib/sessions/browser/sessionsActions.js +555 -151
  232. package/vscode/src/vs/sessions/contrib/sessions/browser/sessionsLifecycleTracker.d.ts +192 -0
  233. package/vscode/src/vs/sessions/contrib/sessions/browser/sessionsLifecycleTracker.js +510 -0
  234. package/vscode/src/vs/sessions/contrib/sessions/browser/sessionsTelemetry.contribution.d.ts +6 -7
  235. package/vscode/src/vs/sessions/contrib/sessions/browser/sessionsTelemetry.contribution.js +64 -57
  236. package/vscode/src/vs/sessions/contrib/sessions/browser/sessionsTitleBarWidget.d.ts +5 -3
  237. package/vscode/src/vs/sessions/contrib/sessions/browser/sessionsTitleBarWidget.js +83 -51
  238. package/vscode/src/vs/sessions/contrib/sessions/browser/sessionsWindowNotifier.d.ts +5 -1
  239. package/vscode/src/vs/sessions/contrib/sessions/browser/sessionsWindowNotifier.js +33 -12
  240. package/vscode/src/vs/sessions/contrib/sessions/browser/views/automationCataloguePresentation.d.ts +3 -0
  241. package/vscode/src/vs/sessions/contrib/sessions/browser/views/automationCataloguePresentation.js +53 -0
  242. package/vscode/src/vs/sessions/contrib/sessions/browser/views/automationTemplates.js +10 -10
  243. package/vscode/src/vs/sessions/contrib/sessions/browser/views/automationsAccessibility.d.ts +2 -2
  244. package/vscode/src/vs/sessions/contrib/sessions/browser/views/automationsAccessibility.js +103 -55
  245. package/vscode/src/vs/sessions/contrib/sessions/browser/views/automationsView.d.ts +7 -1
  246. package/vscode/src/vs/sessions/contrib/sessions/browser/views/automationsView.js +679 -325
  247. package/vscode/src/vs/sessions/contrib/sessions/browser/views/sessionsViewActions.d.ts +27 -1
  248. package/vscode/src/vs/sessions/contrib/sessions/browser/views/sessionsViewActions.js +508 -163
  249. package/vscode/src/vs/sessions/contrib/terminal/browser/agentHostSessionTaskRunner.d.ts +20 -2
  250. package/vscode/src/vs/sessions/contrib/terminal/browser/agentHostSessionTaskRunner.js +100 -17
  251. package/vscode/src/vs/sessions/contrib/terminal/browser/sessionsTerminalContribution.d.ts +5 -1
  252. package/vscode/src/vs/sessions/contrib/terminal/browser/sessionsTerminalContribution.js +108 -30
  253. package/vscode/src/vs/sessions/contrib/workspace/browser/workspaceFolderManagement.d.ts +5 -3
  254. package/vscode/src/vs/sessions/contrib/workspace/browser/workspaceFolderManagement.js +47 -35
  255. package/vscode/src/vs/sessions/services/agentHostFilter/browser/agentHostFilterService.d.ts +9 -4
  256. package/vscode/src/vs/sessions/services/agentHostFilter/browser/agentHostFilterService.js +75 -25
  257. package/vscode/src/vs/sessions/services/customView/browser/customViewService.d.ts +11 -4
  258. package/vscode/src/vs/sessions/services/customView/browser/customViewService.js +17 -9
  259. package/vscode/src/vs/sessions/services/sessions/browser/closedItemHistory.d.ts +5 -0
  260. package/vscode/src/vs/sessions/services/sessions/browser/closedItemHistory.js +20 -2
  261. package/vscode/src/vs/sessions/services/sessions/browser/sessionComparisonService.d.ts +75 -0
  262. package/vscode/src/vs/sessions/services/sessions/browser/sessionComparisonService.js +1135 -0
  263. package/vscode/src/vs/sessions/services/sessions/browser/sessionGridState.d.ts +17 -0
  264. package/vscode/src/vs/sessions/services/sessions/browser/sessionGridState.js +99 -0
  265. package/vscode/src/vs/sessions/services/sessions/browser/sessionGroupsService.d.ts +4 -0
  266. package/vscode/src/vs/sessions/services/sessions/browser/sessionGroupsService.js +88 -23
  267. package/vscode/src/vs/sessions/services/sessions/browser/sessionNavigation.d.ts +19 -26
  268. package/vscode/src/vs/sessions/services/sessions/browser/sessionNavigation.js +115 -74
  269. package/vscode/src/vs/sessions/services/sessions/browser/sessionsListModelService.js +1 -1
  270. package/vscode/src/vs/sessions/services/sessions/browser/sessionsManagementService.d.ts +22 -7
  271. package/vscode/src/vs/sessions/services/sessions/browser/sessionsManagementService.js +278 -60
  272. package/vscode/src/vs/sessions/services/sessions/browser/sessionsRecencyHistory.d.ts +17 -20
  273. package/vscode/src/vs/sessions/services/sessions/browser/sessionsRecencyHistory.js +33 -22
  274. package/vscode/src/vs/sessions/services/sessions/browser/sessionsService.d.ts +28 -8
  275. package/vscode/src/vs/sessions/services/sessions/browser/sessionsService.js +673 -160
  276. package/vscode/src/vs/sessions/services/sessions/browser/visibleSessions.d.ts +13 -4
  277. package/vscode/src/vs/sessions/services/sessions/browser/visibleSessions.js +105 -15
  278. package/vscode/src/vs/sessions/services/sessions/common/sessionContextKeys.js +53 -34
  279. package/vscode/src/vs/sessions/services/workspaceFolderLabel/browser/workspaceFolderLabelService.js +1 -1
  280. package/vscode/src/vs/workbench/browser/layout.js +1 -1
  281. package/vscode/src/vs/workbench/browser/workbench.d.ts +0 -2
  282. package/vscode/src/vs/workbench/browser/workbench.js +23 -20
  283. package/vscode/src/vs/workbench/contrib/chat/common/automations/schedule.d.ts +6 -0
  284. package/vscode/src/vs/workbench/contrib/chat/common/automations/schedule.js +41 -0
  285. package/vscode/src/vs/workbench/contrib/chat/common/chatUsage.d.ts +15 -0
  286. package/vscode/src/vs/workbench/contrib/chat/common/chatUsage.js +56 -0
  287. package/vscode/src/vs/platform/agentHost/common/meta/agentCheckoutOperationMeta.d.ts +0 -18
  288. package/vscode/src/vs/platform/agentHost/common/meta/agentCheckoutOperationMeta.js +0 -27
  289. package/vscode/src/vs/sessions/browser/parts/singlePaneAuxiliaryBarPart.js +0 -36
  290. package/vscode/src/vs/sessions/contrib/automations/browser/automationLeaderElection.d.ts +0 -37
  291. package/vscode/src/vs/sessions/contrib/automations/browser/automationLeaderElection.js +0 -126
  292. package/vscode/src/vs/sessions/contrib/automations/browser/automationScheduler.d.ts +0 -59
  293. package/vscode/src/vs/sessions/contrib/automations/browser/automationScheduler.js +0 -232
  294. package/vscode/src/vs/sessions/contrib/automations/browser/automationStorageService.d.ts +0 -13
  295. package/vscode/src/vs/sessions/contrib/automations/browser/automationStorageService.js +0 -22
  296. package/vscode/src/vs/sessions/contrib/blockedSessions/browser/blockedSessions.d.ts +0 -45
  297. package/vscode/src/vs/sessions/contrib/blockedSessions/browser/blockedSessions.js +0 -110
  298. package/vscode/src/vs/sessions/contrib/layout/browser/desktopSessionLayoutController.d.ts +0 -112
  299. package/vscode/src/vs/sessions/contrib/layout/browser/desktopSessionLayoutController.js +0 -444
  300. package/vscode/src/vs/sessions/contrib/layout/browser/singlePane/singlePaneSharedHelpers.js +0 -43
  301. package/vscode/src/vs/sessions/contrib/layout/browser/singlePaneLayoutController.d.ts +0 -55
  302. package/vscode/src/vs/sessions/contrib/layout/browser/singlePaneLayoutController.js +0 -91
  303. package/vscode/src/vs/sessions/contrib/providers/agentHost/browser/agentHostClaudePermissionModePicker.d.ts +0 -26
  304. package/vscode/src/vs/sessions/contrib/providers/agentHost/browser/agentHostClaudePermissionModePicker.js +0 -98
  305. package/vscode/src/vs/sessions/contrib/providers/agentHost/browser/agentHostCodexApprovalsPicker.d.ts +0 -33
  306. package/vscode/src/vs/sessions/contrib/providers/agentHost/browser/agentHostCodexApprovalsPicker.js +0 -98
  307. package/vscode/src/vs/sessions/contrib/providers/agentHost/browser/agentHostModeIcon.d.ts +0 -2
  308. package/vscode/src/vs/sessions/contrib/providers/agentHost/browser/agentHostModeIcon.js +0 -13
  309. package/vscode/src/vs/sessions/contrib/providers/agentHost/browser/agentHostModePicker.d.ts +0 -122
  310. package/vscode/src/vs/sessions/contrib/providers/agentHost/browser/agentHostModePicker.js +0 -464
  311. package/vscode/src/vs/sessions/contrib/providers/agentHost/browser/agentHostPermissionPickerActionItem.d.ts +0 -35
  312. package/vscode/src/vs/sessions/contrib/providers/agentHost/browser/agentHostPermissionPickerActionItem.js +0 -90
  313. package/vscode/src/vs/sessions/contrib/providers/agentHost/browser/agentHostPermissionPickerDelegate.d.ts +0 -84
  314. package/vscode/src/vs/sessions/contrib/providers/agentHost/browser/agentHostPermissionPickerDelegate.js +0 -328
  315. package/vscode/src/vs/sessions/contrib/providers/agentHost/browser/agentHostSessionConfigPicker.d.ts +0 -174
  316. package/vscode/src/vs/sessions/contrib/providers/agentHost/browser/agentHostSessionConfigPicker.js +0 -1390
  317. package/vscode/src/vs/sessions/contrib/providers/agentHost/browser/media/agentHostSessionConfigPicker.css +0 -44
  318. package/vscode/src/vs/sessions/contrib/providers/agentHost/browser/mobile/mobileAgentHostModePicker.d.ts +0 -30
  319. package/vscode/src/vs/sessions/contrib/providers/agentHost/browser/mobile/mobileAgentHostModePicker.js +0 -78
  320. package/vscode/src/vs/sessions/contrib/providers/agentHost/browser/mobile/mobileChatPhoneInputTarget.d.ts +0 -11
  321. package/vscode/src/vs/sessions/contrib/providers/agentHost/browser/mobile/mobileChatPhoneInputTarget.js +0 -26
  322. package/vscode/src/vs/sessions/contrib/providers/remoteAgentHost/browser/remoteAgentHostConnectionCustomization.d.ts +0 -27
  323. package/vscode/src/vs/sessions/contrib/providers/remoteAgentHost/browser/remoteAgentHostConnectionCustomization.js +0 -26
@@ -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,33 +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';
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';
47
52
  import { derivedOpts, derived } from '@codingame/monaco-vscode-api/vscode/vs/base/common/observableInternal/observables/derived';
48
53
  import { autorun } from '@codingame/monaco-vscode-api/vscode/vs/base/common/observableInternal/reactions/autorun';
49
54
  import { observableFromEvent } from '@codingame/monaco-vscode-api/vscode/vs/base/common/observableInternal/observables/observableFromEvent';
50
55
  import { derivedObservableWithCache } from '@codingame/monaco-vscode-api/vscode/vs/base/common/observableInternal/utils/utils';
51
- import { runOnChange } from '@codingame/monaco-vscode-api/vscode/vs/base/common/observableInternal/utils/runOnChange';
52
56
  import { ISessionChangesService } from '@codingame/monaco-vscode-api/vscode/vs/sessions/contrib/changes/common/sessionChangesService.service';
53
57
 
58
+ var BaseLayoutController_1;
54
59
  const secondarySidebarToggleClosedIcon = registerIcon(
55
60
  "agent-secondary-sidebar-toggle-closed",
56
61
  Codicon.layoutSidebarRightOff,
57
- ( localize(4113, "Icon for the sessions secondary sidebar when closed."))
62
+ ( localize(4748, "Icon for the sessions secondary sidebar when closed."))
58
63
  );
59
64
  const secondarySidebarToggleOpenIcon = registerIcon(
60
65
  "agent-secondary-sidebar-toggle-open",
61
66
  Codicon.layoutSidebarRight,
62
- ( localize(4114, "Icon for the sessions secondary sidebar when open."))
67
+ ( localize(4749, "Icon for the sessions secondary sidebar when open."))
63
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
+ }
64
91
  const SESSION_LAYOUT_STATE_KEY = "sessions.layoutState";
65
92
  const WORKING_SETS_STORAGE_KEY = "sessions.workingSets";
66
- let BaseLayoutController = class BaseLayoutController extends Disposable {
93
+ let BaseLayoutController = BaseLayoutController_1 = class BaseLayoutController extends Disposable {
67
94
  get _isRestoringSessionLayout() {
68
95
  return this._restoringSessionLayoutDepth > 0;
69
96
  }
@@ -73,6 +100,9 @@ let BaseLayoutController = class BaseLayoutController extends Disposable {
73
100
  get _legacyWorkingSetsStorageKey() {
74
101
  return WORKING_SETS_STORAGE_KEY;
75
102
  }
103
+ get _legacyLayoutStateStorageKey() {
104
+ return undefined;
105
+ }
76
106
  get _isEditorPartVisibilityPerSession() {
77
107
  return true;
78
108
  }
@@ -82,6 +112,33 @@ let BaseLayoutController = class BaseLayoutController extends Disposable {
82
112
  get _isPanelVisibilityPerSession() {
83
113
  return true;
84
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
+ }
85
142
  constructor(
86
143
  _layoutService,
87
144
  _sessionManagementService,
@@ -98,7 +155,9 @@ let BaseLayoutController = class BaseLayoutController extends Disposable {
98
155
  _viewDescriptorService,
99
156
  _contextKeyService,
100
157
  _instantiationService,
101
- _lifecycleService
158
+ _lifecycleService,
159
+ _logService,
160
+ _editorWorkingSetService
102
161
  ) {
103
162
  super();
104
163
  this._layoutService = _layoutService;
@@ -117,18 +176,43 @@ let BaseLayoutController = class BaseLayoutController extends Disposable {
117
176
  this._contextKeyService = _contextKeyService;
118
177
  this._instantiationService = _instantiationService;
119
178
  this._lifecycleService = _lifecycleService;
179
+ this._logService = _logService;
180
+ this._editorWorkingSetService = _editorWorkingSetService;
120
181
  this._panelVisibilityBySession = ( new ResourceMap());
121
182
  this._panelViewBySession = ( new ResourceMap());
122
183
  this._viewStateBySession = ( new ResourceMap());
123
184
  this._workingSets = ( new ResourceMap());
185
+ this._legacyReferencedWorkingSetIds = ( new Set());
124
186
  this._editorPartHiddenBySession = ( new ResourceMap());
125
187
  this._workingSetSequencer = ( new Sequencer());
188
+ this._chatLayoutOwnerKeys = ( new ChatLayoutOwnerKeyRegistry());
189
+ this._replacedSessionResources = ( new ResourceSet());
126
190
  this._restoringSessionLayoutDepth = 0;
127
191
  this._onDidEndSessionLayoutRestore = this._register(( new Emitter()));
128
192
  this.onDidEndSessionLayoutRestore = this._onDidEndSessionLayoutRestore.event;
129
193
  this._togglingSidePane = false;
194
+ this._chatLayoutContext = this._chatLayoutEnabled ? this._register(( new ChatLayoutContext(
195
+ this._layoutService.chatLayoutPresentation,
196
+ this._sessionsService.activeSession
197
+ ))) : undefined;
130
198
  this._loadState();
131
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
+ }
132
216
  this.activeSessionResourceObs = derivedOpts({
133
217
  equalsFn: isEqual
134
218
  }, reader => {
@@ -140,18 +224,22 @@ let BaseLayoutController = class BaseLayoutController extends Disposable {
140
224
  });
141
225
  this._register(autorun(reader => {
142
226
  const visibleSessions = this._sessionsService.visibleSessions.read(reader);
143
- if (visibleSessions.length <= 1) {
227
+ if (visibleSessions.length <= 1 || this._chatLayoutActive(reader)) {
144
228
  return;
145
229
  }
146
230
  for (const session of visibleSessions) {
147
231
  if (!session) {
148
232
  continue;
149
233
  }
234
+ const ownerKey = this._ownerKeyFor(session);
235
+ if (!ownerKey) {
236
+ continue;
237
+ }
150
238
  if (this._isViewStatePerSession) {
151
- this._viewStateBySession.delete(session.resource);
239
+ this._viewStateBySession.delete(ownerKey);
152
240
  }
153
241
  if (this._isPanelVisibilityPerSession) {
154
- this._panelVisibilityBySession.delete(session.resource);
242
+ this._panelVisibilityBySession.delete(ownerKey);
155
243
  }
156
244
  }
157
245
  }));
@@ -159,54 +247,76 @@ let BaseLayoutController = class BaseLayoutController extends Disposable {
159
247
  if (!this._isPanelVisibilityPerSession) {
160
248
  return;
161
249
  }
162
- const activeSessionResource = this.activeSessionResourceObs.read(reader);
163
- 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) {
164
256
  return;
165
257
  }
166
- this._syncPanelVisibility(activeSessionResource);
258
+ if (activeSession && this._chatLayoutSuspended(reader)) {
259
+ return;
260
+ }
261
+ this._syncPanelVisibility(
262
+ activeSession ? this._panelVisibilityKeyFor(activeSession, reader) : undefined
263
+ );
167
264
  }));
168
265
  this._register(this._layoutService.onDidChangePartVisibility(e => {
169
266
  if (!this._isPanelVisibilityPerSession || e.partId !== Parts.PANEL_PART) {
170
267
  return;
171
268
  }
172
- if (this.multipleSessionsVisibleObs.get() || this._isCustomViewVisible()) {
269
+ if ((this.multipleSessionsVisibleObs.get() && !this._chatLayoutActive()) || this._isCustomViewVisible()) {
173
270
  return;
174
271
  }
175
272
  const activeSession = this._sessionsService.activeSession.get();
176
- if (activeSession) {
177
- this._panelVisibilityBySession.set(activeSession.resource, e.visible);
273
+ const ownerKey = activeSession && this._panelVisibilityKeyFor(activeSession);
274
+ if (ownerKey) {
275
+ this._panelVisibilityBySession.set(ownerKey, e.visible);
178
276
  }
179
277
  }));
180
278
  this._register(this._paneCompositePartService.onDidPaneCompositeOpen(e => {
181
- if (this._isPanelVisibilityPerSession || e.viewContainerLocation !== ViewContainerLocation.Panel) {
279
+ if (!this._isPanelViewPerSession || e.viewContainerLocation !== ViewContainerLocation.Panel) {
182
280
  return;
183
281
  }
184
- if (this.multipleSessionsVisibleObs.get() || this._isCustomViewVisible()) {
282
+ if ((this.multipleSessionsVisibleObs.get() && !this._chatLayoutActive()) || this._isCustomViewVisible()) {
185
283
  return;
186
284
  }
187
285
  const activeSession = this._sessionsService.activeSession.get();
188
- if (activeSession) {
189
- 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());
190
289
  }
191
290
  }));
192
291
  this._register(autorun(reader => {
193
- if (this._isPanelVisibilityPerSession) {
292
+ if (!this._isPanelViewPerSession) {
194
293
  return;
195
294
  }
196
- const activeSessionResource = this.activeSessionResourceObs.read(reader);
197
- 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) {
198
301
  return;
199
302
  }
200
- this._syncPanelView(activeSessionResource);
303
+ if (activeSession && this._chatLayoutSuspended(reader)) {
304
+ return;
305
+ }
306
+ this._syncPanelView(activeSession ? this._ownerKeyFor(activeSession, reader) : undefined);
201
307
  }));
202
308
  this._register(this._layoutService.onDidChangePartVisibility(e => {
203
- if (this._isPanelVisibilityPerSession || e.partId !== Parts.PANEL_PART || !e.visible) {
309
+ if (!this._isPanelViewPerSession || e.partId !== Parts.PANEL_PART || !e.visible) {
204
310
  return;
205
311
  }
206
- if (this.multipleSessionsVisibleObs.get() || this._isCustomViewVisible()) {
312
+ if ((this.multipleSessionsVisibleObs.get() && !this._chatLayoutActive()) || this._isCustomViewVisible()) {
207
313
  return;
208
314
  }
209
- this._syncPanelView(this._sessionsService.activeSession.get()?.resource);
315
+ const activeSession = this._sessionsService.activeSession.get();
316
+ if (activeSession && this._chatLayoutSuspended()) {
317
+ return;
318
+ }
319
+ this._syncPanelView(activeSession ? this._ownerKeyFor(activeSession) : undefined);
210
320
  }));
211
321
  this._register(this._layoutService.onDidChangePartVisibility(e => {
212
322
  if (!this._isEditorPartVisibilityPerSession || e.partId !== Parts.EDITOR_PART || this._isRestoringSessionLayout) {
@@ -216,8 +326,9 @@ let BaseLayoutController = class BaseLayoutController extends Disposable {
216
326
  return;
217
327
  }
218
328
  const activeSession = this._sessionsService.activeSession.get();
219
- if (activeSession) {
220
- this._editorPartHiddenBySession.set(activeSession.resource, !e.visible);
329
+ const ownerKey = activeSession && this._ownerKeyFor(activeSession);
330
+ if (ownerKey) {
331
+ this._editorPartHiddenBySession.set(ownerKey, !e.visible);
221
332
  }
222
333
  }));
223
334
  this._useModalConfigObs = observableConfigValue("workbench.editor.useModal", "all", this._configurationService);
@@ -225,32 +336,118 @@ let BaseLayoutController = class BaseLayoutController extends Disposable {
225
336
  this._workspaceContextService.onDidChangeWorkspaceFolders,
226
337
  () => this._workspaceContextService.getWorkspace().folders
227
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
+ });
228
368
  const activeSessionForWorkingSet = derivedObservableWithCache(this, (reader, lastValue) => {
229
369
  const workspaceFolders = workspaceFoldersObs.read(reader);
230
- const activeSession = this._sessionsService.activeSession.read(reader);
231
- 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;
232
374
  if (activeSessionWorkspaceUri && !( workspaceFolders.some(folder => isEqual(folder.uri, activeSessionWorkspaceUri)))) {
233
- return lastValue;
375
+ return lastValue ?? {
376
+ session: undefined,
377
+ key: undefined,
378
+ owner: undefined
379
+ };
234
380
  }
235
- if (isEqual(activeSession?.resource, lastValue?.resource)) {
236
- return lastValue;
381
+ if (isEqual(target.key, lastValue?.key)) {
382
+ return lastValue ?? target;
237
383
  }
238
- return activeSession;
384
+ return target;
239
385
  });
386
+ let currentWorkingSetTarget = activeSessionForWorkingSet.get();
387
+ this._settledEditorWorkingSetKey = activeEditorWorkingSetTarget.get().key;
388
+ this._editorWorkingSetService.setCurrentOwner(activeEditorWorkingSetTarget.get().owner);
240
389
  this._register(
241
390
  runOnChange(this._sessionsService.activeSession, (session, previousSession) => {
242
- if (previousSession && !isEqual(previousSession.resource, session?.resource) && previousSession.status.read(undefined) !== SessionStatus.Untitled && !this._isRestoringSessionLayout) {
243
- 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
+ }
244
400
  }
245
401
  })
246
402
  );
247
- this._register(runOnChange(activeSessionForWorkingSet, (session, previousSession) => {
248
- if (previousSession || (session && ( this._workingSets.has(session.resource)))) {
249
- this._withSessionLayoutRestore(() => this._applyWorkingSet(session?.resource, {
250
- isInitialRestore: !previousSession
251
- }));
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
+ }
252
433
  }
253
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;
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
+ });
450
+ }));
254
451
  this._register(this._sessionManagementService.onDidChangeSessions(e => {
255
452
  const archivedSessions = e.changed.filter(session => session.isArchived.read(undefined));
256
453
  for (const session of [...e.removed, ...archivedSessions]) {
@@ -258,6 +455,11 @@ let BaseLayoutController = class BaseLayoutController extends Disposable {
258
455
  this._viewStateBySession.delete(session.resource);
259
456
  this._editorPartHiddenBySession.delete(session.resource);
260
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
+ }
261
463
  }
262
464
  }));
263
465
  this._register(this._sessionManagementService.onDidReplaceSession((
@@ -266,6 +468,31 @@ let BaseLayoutController = class BaseLayoutController extends Disposable {
266
468
  to
267
469
  }
268
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
+ }));
269
496
  this._register(this._layoutService.onWillToggleSidePane(() => {
270
497
  this._togglingSidePane = true;
271
498
  }));
@@ -283,20 +510,77 @@ let BaseLayoutController = class BaseLayoutController extends Disposable {
283
510
  this._togglingSidePane = false;
284
511
  }
285
512
  }));
286
- this._register(this._registerSidePaneToggleAction());
513
+ this._register(BaseLayoutController_1.registerSidePaneToggleAction());
287
514
  this._registerViewStateManagement();
288
515
  this._registerAuxiliaryControllers();
289
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
+ }
290
574
  _registerAuxiliaryControllers() {}
291
575
  _isCustomViewVisible() {
292
576
  return this._layoutService.isVisible(Parts.CUSTOM_VIEW_GRID_PART);
293
577
  }
294
- _registerSidePaneToggleAction() {
578
+ static registerSidePaneToggleAction() {
295
579
  return registerAction2(class extends Action2 {
296
580
  constructor() {
297
581
  super({
298
582
  id: "workbench.action.agentToggleSidePanel",
299
- title: ( localize2(4115, "Toggle Side Panel")),
583
+ title: ( localize2(4750, "Toggle Side Panel")),
300
584
  icon: secondarySidebarToggleClosedIcon,
301
585
  toggled: {
302
586
  condition: ( ContextKeyExpr.or(AuxiliaryBarVisibleContext, MainEditorAreaVisibleContext)),
@@ -304,13 +588,13 @@ let BaseLayoutController = class BaseLayoutController extends Disposable {
304
588
  },
305
589
  metadata: {
306
590
  description: ( localize(
307
- 4116,
591
+ 4751,
308
592
  "Open/Show and Close/Hide the Side Panel (editor area and auxiliary bar)"
309
593
  ))
310
594
  },
311
595
  category: Categories.View,
312
596
  f1: true,
313
- precondition: ( ContextKeyExpr.and(( ContextKeyExpr.or(( IsQuickChatSessionContext.negate()), SinglePaneLayoutEnabledContext)), ( CustomViewVisibleContext.negate()))),
597
+ precondition: ( ContextKeyExpr.and(( ContextKeyExpr.or(( IsQuickChatSessionContext.negate()), DesktopLayoutContext)), ( CustomViewVisibleContext.negate()))),
314
598
  keybinding: {
315
599
  weight: KeybindingWeight.SessionsContrib,
316
600
  primary: KeyMod.CtrlCmd | KeyMod.Alt | KeyCode.KeyB
@@ -326,7 +610,7 @@ let BaseLayoutController = class BaseLayoutController extends Disposable {
326
610
  run(accessor) {
327
611
  const nowVisible = accessor.get(IAgentWorkbenchLayoutService).toggleSidePane();
328
612
  logSidePanelToggle(accessor.get(ITelemetryService), nowVisible);
329
- alert(nowVisible ? ( localize(4117, "Side Panel shown")) : ( localize(4118, "Side Panel hidden")));
613
+ alert(nowVisible ? ( localize(4752, "Side Panel shown")) : ( localize(4753, "Side Panel hidden")));
330
614
  }
331
615
  });
332
616
  }
@@ -334,13 +618,16 @@ let BaseLayoutController = class BaseLayoutController extends Disposable {
334
618
  _onSessionReplaced(from, to) {
335
619
  const activeSession = this._sessionsService.activeSession.get();
336
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
+ }
337
624
  if (this._isEditorPartVisibilityPerSession) {
338
625
  const editorPartHidden = this._editorPartHiddenBySession.get(from.resource) ?? (replacedSessionIsActive ? !this._layoutService.isVisible(Parts.EDITOR_PART, mainWindow) : undefined);
339
626
  if (editorPartHidden !== undefined) {
340
627
  this._editorPartHiddenBySession.set(to.resource, editorPartHidden);
341
628
  }
342
629
  }
343
- if (!this._isPanelVisibilityPerSession) {
630
+ if (this._isPanelViewPerSession) {
344
631
  const panelView = this._panelViewBySession.get(from.resource);
345
632
  if (panelView !== undefined) {
346
633
  this._panelViewBySession.set(to.resource, panelView);
@@ -349,12 +636,77 @@ let BaseLayoutController = class BaseLayoutController extends Disposable {
349
636
  this._syncPanelView(to.resource);
350
637
  }
351
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);
352
702
  }
353
703
  _hasActiveAuxViewContainers() {
354
704
  return ( this._viewDescriptorService.getViewContainersByLocation(ViewContainerLocation.AuxiliaryBar).some(container => this._viewsService.isViewContainerActive(container.id)));
355
705
  }
356
706
  _onSidePaneToggled(_collapsed, _previousAuxiliaryBarVisible, _auxiliaryBarVisible) {}
357
707
  _captureActiveSessionViewState(_sessionResource) {}
708
+ _onOwnerKeyRemapped(_oldKey, _newKey) {}
709
+ _onOwnerKeysForgotten(_keys) {}
358
710
  _withSessionLayoutRestore(work) {
359
711
  this._restoringSessionLayoutDepth++;
360
712
  const suppression = this._suppressEditorVisibilityDuringRestore();
@@ -393,36 +745,92 @@ let BaseLayoutController = class BaseLayoutController extends Disposable {
393
745
  return false;
394
746
  }
395
747
  _onWillApplyWorkingSet(_workingSet) {}
748
+ _onActiveSessionSwitched(_previousSession, _session) {}
396
749
  _revealEditorPartForWorkingSet() {
397
750
  this._layoutService.setPartHidden(false, Parts.EDITOR_PART);
398
751
  }
399
752
  _hideEditorPartForWorkingSet() {
400
753
  this._layoutService.setPartHidden(true, Parts.EDITOR_PART);
401
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
+ }
402
809
  _loadState() {
810
+ this._collectLegacyReferencedWorkingSetIds();
403
811
  const raw = this._storageService.get(this._layoutStateStorageKey, StorageScope.WORKSPACE);
404
812
  if (raw) {
405
813
  try {
406
- for (const entry of JSON.parse(raw)) {
407
- const resource = ( URI.parse(entry.sessionResource));
408
- if (entry.editorWorkingSet) {
409
- this._workingSets.set(resource, entry.editorWorkingSet);
410
- }
411
- if (this._isEditorPartVisibilityPerSession && entry.editorPartHidden !== undefined) {
412
- this._editorPartHiddenBySession.set(resource, entry.editorPartHidden);
413
- }
414
- if (this._isViewStatePerSession && entry.viewState) {
415
- this._viewStateBySession.set(resource, entry.viewState);
416
- }
417
- if (!this._isPanelVisibilityPerSession && entry.panelViewContainerId) {
418
- this._panelViewBySession.set(resource, entry.panelViewContainerId);
419
- }
420
- }
814
+ const entries = this._isLayoutStateVersioned ? this._parseVersionedSessionLayoutEntries(raw, this._layoutStateStorageKey) : JSON.parse(raw);
815
+ this._applySessionLayoutEntries(entries);
421
816
  return;
422
- } catch {
817
+ } catch (error) {
818
+ if (this._isLayoutStateVersioned) {
819
+ this._logService.error(error);
820
+ }
423
821
  this._storageService.remove(this._layoutStateStorageKey, StorageScope.WORKSPACE);
424
822
  }
425
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
+ }
426
834
  const legacyKey = this._legacyWorkingSetsStorageKey;
427
835
  if (!legacyKey) {
428
836
  return;
@@ -449,11 +857,12 @@ let BaseLayoutController = class BaseLayoutController extends Disposable {
449
857
  _saveState() {
450
858
  const activeSession = this._sessionsService.activeSession.get();
451
859
  const multipleVisible = this._sessionsService.visibleSessions.get().length > 1;
452
- if (activeSession && !multipleVisible && activeSession.status.read(undefined) !== SessionStatus.Untitled) {
453
- 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);
454
863
  }
455
- if (activeSession && activeSession.status.read(undefined) !== SessionStatus.Untitled) {
456
- this._saveWorkingSet(activeSession.resource);
864
+ if (activeSession && ownerKey && activeSession.status.read(undefined) !== SessionStatus.Untitled) {
865
+ this._saveWorkingSet(ownerKey);
457
866
  }
458
867
  const allResources = ( new ResourceMap());
459
868
  this._workingSets.forEach((_, r) => allResources.set(r, true));
@@ -463,9 +872,12 @@ let BaseLayoutController = class BaseLayoutController extends Disposable {
463
872
  if (this._isEditorPartVisibilityPerSession) {
464
873
  this._editorPartHiddenBySession.forEach((_, r) => allResources.set(r, true));
465
874
  }
466
- if (!this._isPanelVisibilityPerSession) {
875
+ if (this._isPanelViewPerSession) {
467
876
  this._panelViewBySession.forEach((_, r) => allResources.set(r, true));
468
877
  }
878
+ if (this._isPanelVisibilityPersisted) {
879
+ this._panelVisibilityBySession.forEach((_, r) => allResources.set(r, true));
880
+ }
469
881
  if (allResources.size === 0) {
470
882
  this._storageService.remove(this._layoutStateStorageKey, StorageScope.WORKSPACE);
471
883
  return;
@@ -477,12 +889,17 @@ let BaseLayoutController = class BaseLayoutController extends Disposable {
477
889
  editorWorkingSet: this._workingSets.get(resource),
478
890
  viewState: this._isViewStatePerSession ? this._viewStateBySession.get(resource) : undefined,
479
891
  editorPartHidden: this._isEditorPartVisibilityPerSession ? this._editorPartHiddenBySession.get(resource) : undefined,
480
- 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
481
894
  });
482
895
  });
896
+ const payload = this._isLayoutStateVersioned ? {
897
+ version: SESSION_LAYOUT_STATE_SCHEMA_VERSION,
898
+ entries
899
+ } : entries;
483
900
  this._storageService.store(
484
901
  this._layoutStateStorageKey,
485
- JSON.stringify(entries),
902
+ JSON.stringify(payload),
486
903
  StorageScope.WORKSPACE,
487
904
  StorageTarget.MACHINE
488
905
  );
@@ -493,7 +910,10 @@ let BaseLayoutController = class BaseLayoutController extends Disposable {
493
910
  return;
494
911
  }
495
912
  const wasVisible = this._panelVisibilityBySession.get(sessionResource);
496
- this._layoutService.setPartHidden(wasVisible !== true, Parts.PANEL_PART);
913
+ this._layoutService.setPartHidden(
914
+ !(wasVisible ?? this._defaultPanelVisibility(sessionResource)),
915
+ Parts.PANEL_PART
916
+ );
497
917
  }
498
918
  _syncPanelView(sessionResource) {
499
919
  if (!sessionResource || !this._layoutService.isVisible(Parts.PANEL_PART)) {
@@ -505,11 +925,16 @@ let BaseLayoutController = class BaseLayoutController extends Disposable {
505
925
  }
506
926
  this._paneCompositePartService.openPaneComposite(viewContainerId, ViewContainerLocation.Panel);
507
927
  }
508
- async _applyWorkingSet(sessionResource, options) {
928
+ async _applyWorkingSet(sessionResource, owner, options) {
509
929
  const preserveFocus = true;
510
930
  const workingSet = sessionResource ? (this._workingSets.get(sessionResource) ?? "empty") : "empty";
511
931
  this._onWillApplyWorkingSet(workingSet);
932
+ const chatLayoutSnapshot = this._chatLayoutContext?.state.get();
933
+ const isStaleChatOwner = () => !!chatLayoutSnapshot?.owner && !this._chatLayoutContext.isCurrent(chatLayoutSnapshot);
512
934
  return this._workingSetSequencer.queue(async () => {
935
+ if (isStaleChatOwner() || !this._editorWorkingSetService.beginApply(owner)) {
936
+ return;
937
+ }
513
938
  if (this._sessionsService.visibleSessions.get().length > 1) {
514
939
  const suppression = this._layoutService.suppressEditorPartAutoVisibility();
515
940
  try {
@@ -529,6 +954,9 @@ let BaseLayoutController = class BaseLayoutController extends Disposable {
529
954
  await this._editorGroupsService.applyWorkingSet(workingSet, {
530
955
  preserveFocus
531
956
  });
957
+ if (isStaleChatOwner()) {
958
+ return;
959
+ }
532
960
  if (this._shouldRevealEditorPartForEmptyWorkingSet(revealEditorPart) && !this._layoutService.isVisible(Parts.EDITOR_PART, mainWindow)) {
533
961
  this._revealEditorPartForWorkingSet();
534
962
  } else if (hideEditorPart && this._layoutService.isVisible(Parts.EDITOR_PART, mainWindow)) {
@@ -545,6 +973,9 @@ let BaseLayoutController = class BaseLayoutController extends Disposable {
545
973
  } finally {
546
974
  suppression.dispose();
547
975
  }
976
+ if (isStaleChatOwner()) {
977
+ return;
978
+ }
548
979
  if (this._shouldHideEditorPartOnApply(editorPartHidden) && this._layoutService.isVisible(Parts.EDITOR_PART, mainWindow)) {
549
980
  this._hideEditorPartForWorkingSet();
550
981
  }
@@ -558,6 +989,9 @@ let BaseLayoutController = class BaseLayoutController extends Disposable {
558
989
  const result = await this._editorGroupsService.applyWorkingSet(workingSet, {
559
990
  preserveFocus
560
991
  });
992
+ if (isStaleChatOwner()) {
993
+ return;
994
+ }
561
995
  if (revealEditorPart && result && !this._layoutService.isVisible(Parts.EDITOR_PART, mainWindow)) {
562
996
  this._revealEditorPartForWorkingSet();
563
997
  } else if (hideEditorPart && this._layoutService.isVisible(Parts.EDITOR_PART, mainWindow)) {
@@ -578,10 +1012,26 @@ let BaseLayoutController = class BaseLayoutController extends Disposable {
578
1012
  if (!existingWorkingSet) {
579
1013
  return;
580
1014
  }
581
- this._editorGroupsService.deleteWorkingSet(existingWorkingSet);
582
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
+ }
583
1033
  }
584
1034
  };
585
- 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));
586
1036
 
587
1037
  export { BaseLayoutController };