@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
@@ -16,21 +16,21 @@ import { IEditorGroupsService } from '@codingame/monaco-vscode-api/vscode/vs/wor
16
16
  import { IEditorService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/services/editor/common/editorService.service';
17
17
  import { Parts } from '@codingame/monaco-vscode-api/vscode/vs/workbench/services/layout/browser/layoutService';
18
18
  import { IAgentWorkbenchLayoutService } from '@codingame/monaco-vscode-api/vscode/vs/sessions/browser/workbench.service';
19
- import { SinglePaneLayoutEnabledContext, HasDockedDetailsContext } from '@codingame/monaco-vscode-api/vscode/vs/sessions/common/contextkeys';
19
+ import { DesktopLayoutContext, HasDockedDetailsContext } from '@codingame/monaco-vscode-api/vscode/vs/sessions/common/contextkeys';
20
20
  import { ISessionsService } from '@codingame/monaco-vscode-api/vscode/vs/sessions/services/sessions/browser/sessionsService.service';
21
21
  import '@codingame/monaco-vscode-api/vscode/vs/sessions/contrib/changes/browser/sessionChangesService';
22
22
  import { EmptyFileEditorInput } from '../../../editor/browser/emptyFileEditorInput.js';
23
- import { DetailPanelTarget } from './singlePaneDetailPanelCoordinator.js';
24
- import { isMainPartEmpty, isEditorWithoutDockedDetails, isChangesEditorInput, isFileEditorInput } from './singlePaneSharedHelpers.js';
25
- import { SinglePaneLayoutStrategy } from './singlePaneLayoutStrategy.js';
26
- import { SessionVisibilityProfile } from './singlePaneVisibilityProfileStore.js';
23
+ import { DetailPanelTarget } from './desktopDetailPanelCoordinator.js';
24
+ import { isMainPartEmpty, isEditorWithoutDockedDetails, isChangesEditorInput, getFilesDetailsState, FilesDetailsState } from './desktopSharedHelpers.js';
25
+ import { DesktopLayoutStrategy } from './desktopLayoutStrategy.js';
26
+ import { SessionVisibilityProfile } from './desktopVisibilityProfileStore.js';
27
27
  import { autorun } from '@codingame/monaco-vscode-api/vscode/vs/base/common/observableInternal/reactions/autorun';
28
28
  import { observableFromEvent } from '@codingame/monaco-vscode-api/vscode/vs/base/common/observableInternal/observables/observableFromEvent';
29
29
  import { ISessionChangesService } from '@codingame/monaco-vscode-api/vscode/vs/sessions/contrib/changes/common/sessionChangesService.service';
30
30
 
31
31
  const TOGGLE_DETAILS_COMMAND_ID = "workbench.action.agentSessions.toggleDetails";
32
- const singlePaneHeaderToggleDetailsOrder = 10;
33
- let SinglePaneExistingSessionStrategy = class SinglePaneExistingSessionStrategy extends SinglePaneLayoutStrategy {
32
+ const desktopHeaderToggleDetailsOrder = 10;
33
+ let DesktopExistingSessionStrategy = class DesktopExistingSessionStrategy extends DesktopLayoutStrategy {
34
34
  constructor(
35
35
  ctx,
36
36
  _visibilityStore,
@@ -81,7 +81,7 @@ let SinglePaneExistingSessionStrategy = class SinglePaneExistingSessionStrategy
81
81
  get managedTabs() {
82
82
  if (!this._managedTabs) {
83
83
  throw ( new Error(
84
- "SinglePaneExistingSessionStrategy: managed tabs accessed before registerManagedTabs()"
84
+ "DesktopExistingSessionStrategy: managed tabs accessed before registerManagedTabs()"
85
85
  ));
86
86
  }
87
87
  return this._managedTabs;
@@ -92,46 +92,58 @@ let SinglePaneExistingSessionStrategy = class SinglePaneExistingSessionStrategy
92
92
  let previousQuickChatResource;
93
93
  let previousIsCreated;
94
94
  let previousSession;
95
+ let previousOwnerKey;
96
+ let wasSuspended = false;
95
97
  let togglingSidePane = false;
96
98
  this._register(autorun(reader => {
97
99
  const multipleSessionsVisible = this._ctx.multipleSessionsVisibleObs.read(reader);
98
100
  const activeSession = this._sessionsService.activeSession.read(reader);
101
+ activeSession?.activeChat.read(reader);
99
102
  const isQuickChat = activeSession?.isQuickChat?.read(reader) ?? false;
103
+ if (this._ctx.chatLayoutSuspended(reader)) {
104
+ wasSuspended = true;
105
+ return;
106
+ }
107
+ const resuming = wasSuspended;
108
+ wasSuspended = false;
100
109
  const wasQuickChatActive = previousQuickChatResource !== undefined;
101
110
  const isWorkspaceConversion = !isQuickChat && !!activeSession && isEqual(previousQuickChatResource, activeSession.resource);
102
111
  previousQuickChatResource = isQuickChat ? activeSession?.resource : undefined;
103
- if (isWorkspaceConversion) {
112
+ if (isWorkspaceConversion && !this._ctx.sharedChatLayout) {
104
113
  this._captureExistingProfile();
105
114
  }
115
+ const ownerKey = this._ctx.chatLayoutActive(reader) && activeSession ? this._ctx.ownerKeyFor(activeSession, reader) : undefined;
106
116
  if (multipleSessionsVisible) {
107
- const workspace = activeSession?.workspace.read(reader);
117
+ const activeChat = activeSession?.activeChat.read(reader);
118
+ const workspace = activeChat?.workspace.read(reader);
108
119
  const isCreated = activeSession?.isCreated.read(reader);
109
- if (!isWorkspaceConversion && activeSession && !isQuickChat && workspace && isCreated === true) {
110
- this._ctx.withSessionLayoutRestore(
111
- () => this._reveal(this._visibilityStore.get(SessionVisibilityProfile.Existing))
112
- );
120
+ if ((!isWorkspaceConversion || this._ctx.sharedChatLayout) && activeSession && !isQuickChat && workspace && isCreated === true) {
121
+ const resolved = this._resolveComposition(activeSession, ownerKey);
122
+ this._ctx.withSessionLayoutRestore(() => this._apply(resolved, !ownerKey));
113
123
  }
114
124
  wasExistingActive = false;
125
+ previousOwnerKey = ownerKey;
115
126
  return;
116
127
  }
117
128
  if (!activeSession) {
129
+ previousOwnerKey = ownerKey;
118
130
  return;
119
131
  }
120
132
  if (isQuickChat) {
121
133
  wasExistingActive = false;
134
+ previousOwnerKey = ownerKey;
122
135
  return;
123
136
  }
124
137
  const isCreated = activeSession.isCreated.read(reader);
125
138
  const sessionChanged = previousSession !== undefined && !isEqual(previousSession.resource, activeSession.resource);
139
+ const ownerChanged = !sessionChanged && ownerKey !== undefined && (resuming || !isEqual(previousOwnerKey, ownerKey));
126
140
  const isSubmit = !wasQuickChatActive && previousIsCreated === false && isCreated && (previousSession === activeSession || previousSession?.isCreated.read(undefined) === true);
127
- if (isSubmit) {
141
+ if (isSubmit && !this._ctx.sharedChatLayout) {
128
142
  this._captureExistingProfile();
129
143
  }
130
144
  if (isCreated) {
131
- if (!isSubmit && !isWorkspaceConversion && (!initialized || !wasExistingActive || wasQuickChatActive || sessionChanged)) {
132
- this._ctx.withSessionLayoutRestore(
133
- () => this._apply(this._visibilityStore.get(SessionVisibilityProfile.Existing))
134
- );
145
+ if ((this._ctx.sharedChatLayout && (isSubmit || isWorkspaceConversion)) || (!isSubmit && !isWorkspaceConversion && (!initialized || !wasExistingActive || wasQuickChatActive || sessionChanged || ownerChanged))) {
146
+ this._ctx.withSessionLayoutRestore(() => this._apply(this._resolveComposition(activeSession, ownerKey)));
135
147
  }
136
148
  wasExistingActive = true;
137
149
  } else {
@@ -139,6 +151,7 @@ let SinglePaneExistingSessionStrategy = class SinglePaneExistingSessionStrategy
139
151
  }
140
152
  previousIsCreated = isCreated;
141
153
  previousSession = activeSession;
154
+ previousOwnerKey = ownerKey;
142
155
  initialized = true;
143
156
  }));
144
157
  this._register(this._layoutService.onDidChangePartVisibility(e => {
@@ -152,39 +165,111 @@ let SinglePaneExistingSessionStrategy = class SinglePaneExistingSessionStrategy
152
165
  }));
153
166
  this._register(this._layoutService.onWillToggleSidePane(() => {
154
167
  togglingSidePane = true;
168
+ this._capturePreHideComposition();
155
169
  }));
156
- this._register(this._layoutService.onDidToggleSidePane(() => {
170
+ this._register(this._layoutService.onDidToggleSidePane(e => {
157
171
  try {
172
+ this._correctToggleReopen(e);
158
173
  this._captureExistingProfileIfApplicable();
159
174
  } finally {
160
175
  togglingSidePane = false;
161
176
  }
162
177
  }));
163
178
  }
179
+ _capturePreHideComposition() {
180
+ if (!this._ctx.chatLayoutActive() || this._ctx.chatLayoutSuspended() || !this._layoutService.isSidePaneVisible()) {
181
+ return;
182
+ }
183
+ const ownerKey = this._activeOwnerKey();
184
+ if (!ownerKey) {
185
+ return;
186
+ }
187
+ this._ctx.compositionStore.setPreHide(ownerKey, this._layoutService.captureSidePaneComposition());
188
+ }
189
+ _correctToggleReopen(e) {
190
+ const wasFullyHidden = !e.before.editor && !e.before.auxiliaryBar;
191
+ const nowVisible = e.after.editor || e.after.auxiliaryBar;
192
+ if (!wasFullyHidden || !nowVisible || !this._ctx.chatLayoutActive() || this._ctx.chatLayoutSuspended()) {
193
+ return;
194
+ }
195
+ const ownerKey = this._activeOwnerKey();
196
+ if (!ownerKey) {
197
+ return;
198
+ }
199
+ const preHide = this._ctx.compositionStore.getPreHide(ownerKey);
200
+ if (preHide && (preHide.editor !== e.after.editor || preHide.auxiliaryBar !== e.after.auxiliaryBar)) {
201
+ this._layoutService.restoreSidePaneComposition(preHide);
202
+ }
203
+ }
204
+ _activeOwnerKey() {
205
+ const activeSession = this._sessionsService.activeSession.get();
206
+ return activeSession && !activeSession.isQuickChat?.get() ? this._ctx.compositionKeyFor(activeSession) : undefined;
207
+ }
208
+ _resolveComposition(activeSession, ownerKey) {
209
+ if (!ownerKey) {
210
+ return this._visibilityStore.get(SessionVisibilityProfile.Existing);
211
+ }
212
+ const compositionKey = this._ctx.compositionKeyFor(activeSession);
213
+ const stored = compositionKey && this._ctx.compositionStore.get(compositionKey);
214
+ if (stored) {
215
+ return {
216
+ editorVisible: stored.editor,
217
+ auxiliaryBarVisible: stored.auxiliaryBar
218
+ };
219
+ }
220
+ const state = this._visibilityStore.get(SessionVisibilityProfile.Existing);
221
+ if (compositionKey) {
222
+ this._ctx.compositionStore.set(compositionKey, {
223
+ editor: state.editorVisible,
224
+ auxiliaryBar: state.auxiliaryBarVisible
225
+ });
226
+ }
227
+ return state;
228
+ }
164
229
  _captureExistingProfileIfApplicable() {
165
- if (this._ctx.isRestoringSessionLayout || this._ctx.multipleSessionsVisibleObs.get()) {
230
+ if (this._ctx.isRestoringSessionLayout || this._ctx.chatLayoutSuspended()) {
166
231
  return;
167
232
  }
168
233
  const activeSession = this._sessionsService.activeSession.get();
169
- if (!activeSession || activeSession.isQuickChat?.get() || !activeSession.isCreated.get() || this._layoutService.isEditorMaximized() || this._layoutService.isVisible(Parts.CUSTOM_VIEW_GRID_PART)) {
234
+ if (this._ctx.multipleSessionsVisibleObs.get()) {
235
+ const ownerKey = activeSession && this._ctx.chatLayoutActive() ? this._ctx.ownerKeyFor(activeSession) : undefined;
236
+ if (!ownerKey) {
237
+ return;
238
+ }
239
+ }
240
+ if (!activeSession || activeSession.isQuickChat?.get() || !activeSession.isCreated.get() || (this._ctx.sharedChatLayout && !activeSession.activeChat.get().workspace.get()) || this._layoutService.isEditorMaximized() || this._layoutService.isVisible(Parts.CUSTOM_VIEW_GRID_PART)) {
170
241
  return;
171
242
  }
172
243
  this._captureExistingProfile();
173
244
  }
174
245
  _captureExistingProfile() {
246
+ if (this._ctx.chatLayoutSuspended()) {
247
+ return;
248
+ }
175
249
  const state = {
176
250
  editorVisible: this._layoutService.isVisible(Parts.EDITOR_PART, mainWindow),
177
251
  auxiliaryBarVisible: this._layoutService.isVisible(Parts.AUXILIARYBAR_PART)
178
252
  };
253
+ if (this._ctx.chatLayoutActive()) {
254
+ const activeSession = this._sessionsService.activeSession.get();
255
+ const ownerKey = activeSession && this._ctx.compositionKeyFor(activeSession);
256
+ if (ownerKey) {
257
+ this._ctx.compositionStore.set(ownerKey, {
258
+ editor: state.editorVisible,
259
+ auxiliaryBar: state.auxiliaryBarVisible
260
+ });
261
+ }
262
+ return;
263
+ }
179
264
  this._visibilityStore.set(SessionVisibilityProfile.Existing, state);
180
265
  }
181
- _apply(state) {
266
+ _apply(state, revealOnly = false) {
182
267
  const suppression = this._layoutService.suppressEditorPartAutoVisibility();
183
268
  try {
184
- if (!state.editorVisible && this._layoutService.isVisible(Parts.EDITOR_PART, mainWindow)) {
269
+ if (!revealOnly && !state.editorVisible && this._layoutService.isVisible(Parts.EDITOR_PART, mainWindow)) {
185
270
  this._layoutService.setPartHidden(true, Parts.EDITOR_PART);
186
271
  }
187
- if (!state.auxiliaryBarVisible && this._layoutService.isVisible(Parts.AUXILIARYBAR_PART)) {
272
+ if (!revealOnly && !state.auxiliaryBarVisible && this._layoutService.isVisible(Parts.AUXILIARYBAR_PART)) {
188
273
  this._layoutService.setPartHidden(true, Parts.AUXILIARYBAR_PART);
189
274
  }
190
275
  if (state.auxiliaryBarVisible && !this._layoutService.isVisible(Parts.AUXILIARYBAR_PART)) {
@@ -197,19 +282,6 @@ let SinglePaneExistingSessionStrategy = class SinglePaneExistingSessionStrategy
197
282
  suppression.dispose();
198
283
  }
199
284
  }
200
- _reveal(state) {
201
- const suppression = this._layoutService.suppressEditorPartAutoVisibility();
202
- try {
203
- if (state.auxiliaryBarVisible && !this._layoutService.isVisible(Parts.AUXILIARYBAR_PART)) {
204
- this._layoutService.setPartHidden(false, Parts.AUXILIARYBAR_PART);
205
- }
206
- if (state.editorVisible && !this._layoutService.isVisible(Parts.EDITOR_PART, mainWindow)) {
207
- this._layoutService.setPartHidden(false, Parts.EDITOR_PART);
208
- }
209
- } finally {
210
- suppression.dispose();
211
- }
212
- }
213
285
  _registerDetailPanel() {
214
286
  const activeEditorObs = observableFromEvent(
215
287
  this,
@@ -241,13 +313,17 @@ let SinglePaneExistingSessionStrategy = class SinglePaneExistingSessionStrategy
241
313
  let previousEditorSessionKey;
242
314
  let previousQuickChatResource;
243
315
  const sync = reader => {
316
+ if (this._ctx.chatLayoutSuspended(reader)) {
317
+ return;
318
+ }
244
319
  const activeSession = this._sessionsService.activeSession.read(reader);
245
320
  const isQuickChat = activeSession?.isQuickChat?.read(reader) ?? false;
246
321
  const isWorkspaceConversion = !isQuickChat && !!activeSession && isEqual(previousQuickChatResource, activeSession.resource);
247
322
  if (!isWorkspaceConversion) {
248
323
  previousQuickChatResource = isQuickChat ? activeSession?.resource : undefined;
249
324
  }
250
- if (!activeSession || isQuickChat || !activeSession.workspace.read(reader) || !activeSession.isCreated.read(reader)) {
325
+ const workspace = activeSession?.activeChat.read(reader).workspace.read(reader);
326
+ if (!activeSession || isQuickChat || !workspace || !activeSession.isCreated.read(reader)) {
251
327
  wasExistingActive = false;
252
328
  previousActiveEditor = undefined;
253
329
  previousEditorPartVisible = false;
@@ -255,7 +331,7 @@ let SinglePaneExistingSessionStrategy = class SinglePaneExistingSessionStrategy
255
331
  return;
256
332
  }
257
333
  previousQuickChatResource = undefined;
258
- const sessionKey = ( activeSession.resource.toString());
334
+ const sessionKey = this._ctx.ownerKeyFor(activeSession, reader)?.toString();
259
335
  const sessionChanged = activeSessionKey !== undefined && activeSessionKey !== sessionKey;
260
336
  if (!wasExistingActive || sessionChanged) {
261
337
  activeSessionKey = sessionKey;
@@ -287,7 +363,7 @@ let SinglePaneExistingSessionStrategy = class SinglePaneExistingSessionStrategy
287
363
  previousActiveEditor = activeEditor;
288
364
  previousEditorPartVisible = editorPartVisible;
289
365
  previousEditorSessionKey = sessionKey;
290
- const target = this._computeTarget(activeEditor, mainPartEmpty, editorMaximized, editorPartVisible);
366
+ const target = this._computeTarget(activeEditor, mainPartEmpty, editorMaximized, editorPartVisible, workspace);
291
367
  const revealOnly = this._ctx.multipleSessionsVisibleObs.read(reader);
292
368
  if (!isWorkspaceConversion) {
293
369
  this._syncDetailVisibility(target, revealOnly, emptyFilesShown);
@@ -297,7 +373,7 @@ let SinglePaneExistingSessionStrategy = class SinglePaneExistingSessionStrategy
297
373
  this._register(autorun(sync));
298
374
  this._register(this._ctx.onDidEndSessionLayoutRestore(() => {
299
375
  const activeSession = this._sessionsService.activeSession.get();
300
- if (!activeSession || ( activeSession.resource.toString()) !== pendingSessionKey) {
376
+ if (pendingSessionKey && (!activeSession || this._ctx.ownerKeyFor(activeSession)?.toString() !== pendingSessionKey)) {
301
377
  return;
302
378
  }
303
379
  pendingSessionKey = undefined;
@@ -322,10 +398,11 @@ let SinglePaneExistingSessionStrategy = class SinglePaneExistingSessionStrategy
322
398
  if (this._ctx.isRestoringSessionLayout || target === DetailPanelTarget.Preserve) {
323
399
  return;
324
400
  }
325
- if (target === DetailPanelTarget.Hidden || target === DetailPanelTarget.EditorHidden) {
326
- if ((target === DetailPanelTarget.EditorHidden || !revealOnly) && detailVisible) {
401
+ if (target === DetailPanelTarget.Hidden || target === DetailPanelTarget.EditorHidden || target === DetailPanelTarget.FilesHidden) {
402
+ const hiddenByEditor = target === DetailPanelTarget.EditorHidden || target === DetailPanelTarget.FilesHidden;
403
+ if ((hiddenByEditor || !revealOnly) && detailVisible) {
327
404
  this._detailHiddenTransiently = true;
328
- this._detailHiddenByEditor = target === DetailPanelTarget.EditorHidden;
405
+ this._detailHiddenByEditor = hiddenByEditor;
329
406
  this._setDetailHiddenTransiently(true);
330
407
  }
331
408
  return;
@@ -345,7 +422,7 @@ let SinglePaneExistingSessionStrategy = class SinglePaneExistingSessionStrategy
345
422
  this._changingDetailTransiently = false;
346
423
  }
347
424
  }
348
- _computeTarget(activeEditor, mainPartEmpty, editorMaximized, editorPartVisible) {
425
+ _computeTarget(activeEditor, mainPartEmpty, editorMaximized, editorPartVisible, workspace) {
349
426
  if (mainPartEmpty) {
350
427
  return this._ctx.isRestoringSessionLayout ? DetailPanelTarget.Preserve : DetailPanelTarget.Hidden;
351
428
  }
@@ -361,10 +438,13 @@ let SinglePaneExistingSessionStrategy = class SinglePaneExistingSessionStrategy
361
438
  if (isChangesEditorInput(activeEditor, this._sessionChangesService)) {
362
439
  return DetailPanelTarget.ChangesForced;
363
440
  }
364
- if (isFileEditorInput(activeEditor)) {
441
+ switch (getFilesDetailsState(activeEditor, workspace)) {
442
+ case FilesDetailsState.Active:
365
443
  return DetailPanelTarget.FilesForced;
444
+ case FilesDetailsState.Available:
445
+ return editorPartVisible ? DetailPanelTarget.FilesHidden : DetailPanelTarget.Changes;
366
446
  }
367
- return DetailPanelTarget.Preserve;
447
+ return editorPartVisible ? DetailPanelTarget.EditorHidden : DetailPanelTarget.Changes;
368
448
  }
369
449
  _registerManagedTabsSupplement() {
370
450
  let previousSessionKey;
@@ -375,7 +455,7 @@ let SinglePaneExistingSessionStrategy = class SinglePaneExistingSessionStrategy
375
455
  const session = this._sessionsService.activeSession.read(reader);
376
456
  const isQuickChat = session?.isQuickChat?.read(reader) ?? false;
377
457
  const isCreated = session && !isQuickChat ? session.isCreated.read(reader) : false;
378
- const sessionKey = session?.resource.toString();
458
+ const sessionKey = session && this._ctx.ownerKeyFor(session, reader)?.toString();
379
459
  const isSubmit = !isQuickChat && previousIsCreated === false && isCreated && (previousSession === session || previousSession?.isCreated.read(undefined) === true);
380
460
  if (isSubmit) {
381
461
  changesActivationPendingForSession = sessionKey;
@@ -384,14 +464,14 @@ let SinglePaneExistingSessionStrategy = class SinglePaneExistingSessionStrategy
384
464
  }
385
465
  if (session && !isQuickChat && isCreated) {
386
466
  const target = this.managedTabs.readTarget(reader);
387
- const hasChanges = (session.changes.read(reader).length ?? 0) > 0;
467
+ const hasChanges = session.activeChat.read(reader).changes.read(reader).length > 0;
388
468
  const ensureChangesActive = changesActivationPendingForSession === sessionKey && hasChanges;
389
469
  if (ensureChangesActive) {
390
470
  changesActivationPendingForSession = undefined;
391
471
  }
392
472
  if (isSubmit || ensureChangesActive) {
393
473
  this.managedTabs.queueReconcile(target, {
394
- openDefaultsIfEmpty: isSubmit,
474
+ openDefaultsIfEmpty: isSubmit && this._layoutService.isSidePaneVisible(),
395
475
  ensureChangesActive
396
476
  });
397
477
  }
@@ -407,20 +487,20 @@ let SinglePaneExistingSessionStrategy = class SinglePaneExistingSessionStrategy
407
487
  constructor() {
408
488
  super({
409
489
  id: TOGGLE_DETAILS_COMMAND_ID,
410
- title: ( localize2(4122, "Toggle Details")),
490
+ title: ( localize2(4754, "Toggle Details")),
411
491
  icon: Codicon.listSelection,
412
492
  f1: false,
413
493
  toggled: AuxiliaryBarVisibleContext,
414
494
  keybinding: {
415
495
  weight: KeybindingWeight.SessionsContrib,
416
496
  primary: KeyMod.CtrlCmd | KeyMod.Alt | KeyCode.KeyL,
417
- when: ( ContextKeyExpr.and(IsSessionsWindowContext, ( IsAuxiliaryWindowContext.toNegated()), SinglePaneLayoutEnabledContext))
497
+ when: ( ContextKeyExpr.and(IsSessionsWindowContext, ( IsAuxiliaryWindowContext.toNegated()), DesktopLayoutContext))
418
498
  },
419
499
  menu: {
420
500
  id: MenuId.EditorTitleLayout,
421
501
  group: "navigation",
422
- order: singlePaneHeaderToggleDetailsOrder,
423
- when: ( ContextKeyExpr.and(IsSessionsWindowContext, ( IsAuxiliaryWindowContext.toNegated()), IsTopRightEditorGroupContext, SinglePaneLayoutEnabledContext, MainEditorAreaVisibleContext, HasDockedDetailsContext))
502
+ order: desktopHeaderToggleDetailsOrder,
503
+ when: ( ContextKeyExpr.and(IsSessionsWindowContext, ( IsAuxiliaryWindowContext.toNegated()), IsTopRightEditorGroupContext, DesktopLayoutContext, MainEditorAreaVisibleContext, HasDockedDetailsContext))
424
504
  }
425
505
  });
426
506
  }
@@ -430,6 +510,6 @@ let SinglePaneExistingSessionStrategy = class SinglePaneExistingSessionStrategy
430
510
  });
431
511
  }
432
512
  };
433
- SinglePaneExistingSessionStrategy = ( __decorate([( __param(3, IAgentWorkbenchLayoutService)), ( __param(4, ISessionsService)), ( __param(5, IEditorService)), ( __param(6, IEditorGroupsService)), ( __param(7, ISessionChangesService))], SinglePaneExistingSessionStrategy));
513
+ DesktopExistingSessionStrategy = ( __decorate([( __param(3, IAgentWorkbenchLayoutService)), ( __param(4, ISessionsService)), ( __param(5, IEditorService)), ( __param(6, IEditorGroupsService)), ( __param(7, ISessionChangesService))], DesktopExistingSessionStrategy));
434
514
 
435
- export { SinglePaneExistingSessionStrategy, TOGGLE_DETAILS_COMMAND_ID };
515
+ export { DesktopExistingSessionStrategy, TOGGLE_DETAILS_COMMAND_ID };
@@ -1,13 +1,15 @@
1
1
  import { Event } from "@codingame/monaco-vscode-api/vscode/vs/base/common/event";
2
2
  import { Disposable } from "@codingame/monaco-vscode-api/vscode/vs/base/common/lifecycle";
3
- import { IObservable } from "@codingame/monaco-vscode-api/vscode/vs/base/common/observable";
3
+ import { IObservable, IReader } from "@codingame/monaco-vscode-api/vscode/vs/base/common/observable";
4
4
  import { URI } from "@codingame/monaco-vscode-api/vscode/vs/base/common/uri";
5
+ import { IActiveSession } from "@codingame/monaco-vscode-api/vscode/vs/sessions/services/sessions/common/sessionsManagement";
6
+ import { DesktopOwnerCompositionStore } from "./desktopOwnerCompositionStore.js";
5
7
  /**
6
- * Shared controller state that single-pane layout strategies read/coordinate
7
- * through. Implemented by the single-pane layout controller; the concrete
8
+ * Shared controller state that desktop layout strategies read/coordinate
9
+ * through. Implemented by the desktop layout controller; the concrete
8
10
  * services each strategy needs are injected into the strategy directly via DI.
9
11
  */
10
- export interface ISinglePaneLayoutContext {
12
+ export interface IDesktopLayoutContext {
11
13
  /** `> 0` while a session-switch layout restore is in progress. */
12
14
  readonly isRestoringSessionLayout: boolean;
13
15
  /** Runs `work` while a session-switch layout restore is held. */
@@ -19,28 +21,35 @@ export interface ISinglePaneLayoutContext {
19
21
  readonly multipleSessionsVisibleObs: IObservable<boolean>;
20
22
  readonly activeSessionResourceObs: IObservable<URI | undefined>;
21
23
  hasSavedWorkingSet(sessionResource: URI): boolean;
24
+ completeChangesEditorTransition(): void;
25
+ chatLayoutActive(reader?: IReader): boolean;
26
+ chatLayoutSuspended(reader?: IReader): boolean;
27
+ readonly sharedChatLayout: boolean;
28
+ ownerKeyFor(session: IActiveSession, reader?: IReader): URI | undefined;
29
+ compositionKeyFor(session: IActiveSession, reader?: IReader): URI | undefined;
30
+ readonly compositionStore: DesktopOwnerCompositionStore;
22
31
  }
23
32
  /**
24
- * Base class for a single-pane layout behaviour, owning its own disposables.
33
+ * Base class for a desktop layout behaviour, owning its own disposables.
25
34
  *
26
35
  * Exactly two concrete strategies extend this — one per session lifecycle stage:
27
- * {@link import('./singlePaneDraftSessionStrategy.js').SinglePaneDraftSessionStrategy} (workspace-backed
28
- * and workspace-less drafts) and {@link import('./singlePaneExistingSessionStrategy.js').SinglePaneExistingSessionStrategy}
36
+ * {@link import('./desktopDraftSessionStrategy.js').DesktopDraftSessionStrategy} (workspace-backed
37
+ * and workspace-less drafts) and {@link import('./desktopExistingSessionStrategy.js').DesktopExistingSessionStrategy}
29
38
  * (a created, workspace-backed session). Each owns the full vertical slice of behaviour for its stage:
30
39
  * side-pane visibility, the detail-panel (Changes/Files) mapping, and — for the two workspace
31
40
  * stages — the managed docked tabs and detail-only editor-area collapse.
32
41
  *
33
42
  * Shared mechanics (the managed-tabs reconcile pipeline + editor-area collapse and the Existing
34
43
  * Editor-visibility-profile storage) live in non-strategy coordinator classes in this
35
- * folder — see `singlePaneDockedTabsCoordinator.ts`, `singlePaneDetailPanelCoordinator.ts`, and
36
- * `singlePaneVisibilityProfileStore.ts`. The shared detail coordinator owns only content selection
44
+ * folder — see `desktopDockedTabsCoordinator.ts`, `desktopDetailPanelCoordinator.ts`, and
45
+ * `desktopVisibilityProfileStore.ts`. The shared detail coordinator owns only content selection
37
46
  * and context publication; each lifecycle strategy owns Auxiliary Bar visibility. The shared mechanics are owned by
38
- * {@link import('./singlePaneExistingSessionStrategy.js').SinglePaneExistingSessionStrategy}
47
+ * {@link import('./desktopExistingSessionStrategy.js').DesktopExistingSessionStrategy}
39
48
  * (the docked-tabs coordinator, since its reconcile pipeline is shared across the New→Existing
40
49
  * submit transition) or by the controller (the visibility-profile store, since it backs one
41
50
  * combined storage blob for both workspace stages).
42
51
  */
43
- export declare abstract class SinglePaneLayoutStrategy extends Disposable {
44
- protected readonly _ctx: ISinglePaneLayoutContext;
45
- constructor(_ctx: ISinglePaneLayoutContext);
52
+ export declare abstract class DesktopLayoutStrategy extends Disposable {
53
+ protected readonly _ctx: IDesktopLayoutContext;
54
+ constructor(_ctx: IDesktopLayoutContext);
46
55
  }
@@ -1,11 +1,11 @@
1
1
 
2
2
  import { Disposable } from '@codingame/monaco-vscode-api/vscode/vs/base/common/lifecycle';
3
3
 
4
- class SinglePaneLayoutStrategy extends Disposable {
4
+ class DesktopLayoutStrategy extends Disposable {
5
5
  constructor(_ctx) {
6
6
  super();
7
7
  this._ctx = _ctx;
8
8
  }
9
9
  }
10
10
 
11
- export { SinglePaneLayoutStrategy };
11
+ export { DesktopLayoutStrategy };
@@ -0,0 +1,22 @@
1
+ import { URI } from "@codingame/monaco-vscode-api/vscode/vs/base/common/uri";
2
+ import { ILogService } from "@codingame/monaco-vscode-api/vscode/vs/platform/log/common/log.service";
3
+ import { IStorageService } from "@codingame/monaco-vscode-api/vscode/vs/platform/storage/common/storage.service";
4
+ import { ISidePaneState } from "@codingame/monaco-vscode-api/vscode/vs/sessions/browser/workbench";
5
+ export declare class DesktopOwnerCompositionStore {
6
+ private readonly _storageService;
7
+ private readonly _logService;
8
+ private readonly _byOwner;
9
+ private readonly _preHideByOwner;
10
+ constructor(shared: boolean, _storageService: IStorageService, _logService: ILogService);
11
+ private readonly _compositionStorageKey;
12
+ private readonly _preHideStorageKey;
13
+ get ownerKeys(): Iterable<URI>;
14
+ get(ownerKey: URI): ISidePaneState | undefined;
15
+ set(ownerKey: URI, state: ISidePaneState): void;
16
+ getPreHide(ownerKey: URI): ISidePaneState | undefined;
17
+ setPreHide(ownerKey: URI, state: ISidePaneState): void;
18
+ forget(keys: readonly URI[]): void;
19
+ remap(oldKey: URI, newKey: URI): void;
20
+ private _load;
21
+ private _save;
22
+ }
@@ -0,0 +1,136 @@
1
+
2
+ import { __decorate, __param } from '@codingame/monaco-vscode-api/external/tslib/tslib.es6';
3
+ import { ResourceMap, ResourceSet } from '@codingame/monaco-vscode-api/vscode/vs/base/common/map';
4
+ import { isEqual } from '@codingame/monaco-vscode-api/vscode/vs/base/common/resources';
5
+ import { URI } from '@codingame/monaco-vscode-api/vscode/vs/base/common/uri';
6
+ import { ILogService } from '@codingame/monaco-vscode-api/vscode/vs/platform/log/common/log.service';
7
+ import { StorageScope, StorageTarget } from '@codingame/monaco-vscode-api/vscode/vs/platform/storage/common/storage';
8
+ import { IStorageService } from '@codingame/monaco-vscode-api/vscode/vs/platform/storage/common/storage.service';
9
+
10
+ const DESKTOP_OWNER_COMPOSITION_STATE_KEY = "sessions.chatLayout.sidePaneComposition";
11
+ const DESKTOP_OWNER_PRE_HIDE_COMPOSITION_STATE_KEY = "sessions.chatLayout.sidePanePreHideComposition";
12
+ const DESKTOP_OWNER_COMPOSITION_SCHEMA_VERSION = 1;
13
+ function isValidDesktopOwnerCompositionEntry(value) {
14
+ if (!Array.isArray(value) || value.length !== 2) {
15
+ return false;
16
+ }
17
+ const [ownerKeyRaw, state] = value;
18
+ if (typeof ownerKeyRaw !== "string") {
19
+ return false;
20
+ }
21
+ if (typeof state !== "object" || state === null) {
22
+ return false;
23
+ }
24
+ const sidePaneState = state;
25
+ return typeof sidePaneState.editor === "boolean" && typeof sidePaneState.auxiliaryBar === "boolean";
26
+ }
27
+ let DesktopOwnerCompositionStore = class DesktopOwnerCompositionStore {
28
+ constructor(shared, _storageService, _logService) {
29
+ this._storageService = _storageService;
30
+ this._logService = _logService;
31
+ this._byOwner = ( new ResourceMap());
32
+ this._preHideByOwner = ( new ResourceMap());
33
+ this._compositionStorageKey = shared ? "sessions.sharedChatLayout.sidePaneComposition" : DESKTOP_OWNER_COMPOSITION_STATE_KEY;
34
+ this._preHideStorageKey = shared ? "sessions.sharedChatLayout.sidePanePreHideComposition" : DESKTOP_OWNER_PRE_HIDE_COMPOSITION_STATE_KEY;
35
+ this._load(this._compositionStorageKey, this._byOwner);
36
+ this._load(this._preHideStorageKey, this._preHideByOwner);
37
+ }
38
+ get ownerKeys() {
39
+ return ( new ResourceSet([...( this._byOwner.keys()), ...( this._preHideByOwner.keys())]));
40
+ }
41
+ get(ownerKey) {
42
+ return this._byOwner.get(ownerKey);
43
+ }
44
+ set(ownerKey, state) {
45
+ this._byOwner.set(ownerKey, state);
46
+ this._save(this._compositionStorageKey, this._byOwner);
47
+ }
48
+ getPreHide(ownerKey) {
49
+ return this._preHideByOwner.get(ownerKey);
50
+ }
51
+ setPreHide(ownerKey, state) {
52
+ this._preHideByOwner.set(ownerKey, state);
53
+ this._save(this._preHideStorageKey, this._preHideByOwner);
54
+ }
55
+ forget(keys) {
56
+ let changed = false;
57
+ for (const key of keys) {
58
+ changed = this._byOwner.delete(key) || changed;
59
+ }
60
+ if (changed) {
61
+ this._save(this._compositionStorageKey, this._byOwner);
62
+ }
63
+ let preHideChanged = false;
64
+ for (const key of keys) {
65
+ preHideChanged = this._preHideByOwner.delete(key) || preHideChanged;
66
+ }
67
+ if (preHideChanged) {
68
+ this._save(this._preHideStorageKey, this._preHideByOwner);
69
+ }
70
+ }
71
+ remap(oldKey, newKey) {
72
+ if (isEqual(oldKey, newKey)) {
73
+ return;
74
+ }
75
+ const state = this._byOwner.get(oldKey);
76
+ if (state) {
77
+ this._byOwner.set(newKey, state);
78
+ this._byOwner.delete(oldKey);
79
+ this._save(this._compositionStorageKey, this._byOwner);
80
+ }
81
+ const preHideState = this._preHideByOwner.get(oldKey);
82
+ if (preHideState) {
83
+ this._preHideByOwner.set(newKey, preHideState);
84
+ this._preHideByOwner.delete(oldKey);
85
+ this._save(this._preHideStorageKey, this._preHideByOwner);
86
+ }
87
+ }
88
+ _load(storageKey, target) {
89
+ const raw = this._storageService.get(storageKey, StorageScope.WORKSPACE);
90
+ if (!raw) {
91
+ return;
92
+ }
93
+ try {
94
+ const parsed = JSON.parse(raw);
95
+ if (parsed.version !== DESKTOP_OWNER_COMPOSITION_SCHEMA_VERSION || !Array.isArray(parsed.entries)) {
96
+ throw ( new Error(
97
+ `Unsupported ${storageKey} schema: expected version ${DESKTOP_OWNER_COMPOSITION_SCHEMA_VERSION}, got version ${String(parsed.version)}`
98
+ ));
99
+ }
100
+ const staged = ( new ResourceMap());
101
+ parsed.entries.forEach((entry, index) => {
102
+ if (!isValidDesktopOwnerCompositionEntry(entry)) {
103
+ throw ( new Error(`Malformed ${storageKey} entry at index ${index}`));
104
+ }
105
+ const [ownerKeyRaw, state] = entry;
106
+ staged.set(( URI.parse(ownerKeyRaw)), {
107
+ editor: state.editor,
108
+ auxiliaryBar: state.auxiliaryBar
109
+ });
110
+ });
111
+ staged.forEach((state, ownerKey) => target.set(ownerKey, state));
112
+ } catch (error) {
113
+ this._logService.error(error);
114
+ this._storageService.remove(storageKey, StorageScope.WORKSPACE);
115
+ }
116
+ }
117
+ _save(storageKey, source) {
118
+ const entries = [];
119
+ for (const [ownerKey, state] of source) {
120
+ entries.push([( ownerKey.toString()), state]);
121
+ }
122
+ const schema = {
123
+ version: DESKTOP_OWNER_COMPOSITION_SCHEMA_VERSION,
124
+ entries
125
+ };
126
+ this._storageService.store(
127
+ storageKey,
128
+ JSON.stringify(schema),
129
+ StorageScope.WORKSPACE,
130
+ StorageTarget.MACHINE
131
+ );
132
+ }
133
+ };
134
+ DesktopOwnerCompositionStore = ( __decorate([( __param(1, IStorageService)), ( __param(2, ILogService))], DesktopOwnerCompositionStore));
135
+
136
+ export { DesktopOwnerCompositionStore };