@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
@@ -1,19 +1,24 @@
1
1
 
2
2
  import { __decorate, __param } from '@codingame/monaco-vscode-api/external/tslib/tslib.es6';
3
3
  import { Codicon } from '@codingame/monaco-vscode-api/vscode/vs/base/common/codicons';
4
+ import { status } from '@codingame/monaco-vscode-api/vscode/vs/base/browser/ui/aria/aria';
4
5
  import { toErrorMessage } from '@codingame/monaco-vscode-api/vscode/vs/base/common/errorMessage';
5
- import { KeyMod, KeyCode, KeyChord } from '@codingame/monaco-vscode-api/vscode/vs/base/common/keyCodes';
6
+ import { KeyCode, KeyMod, KeyChord } from '@codingame/monaco-vscode-api/vscode/vs/base/common/keyCodes';
6
7
  import { Disposable, DisposableStore } from '@codingame/monaco-vscode-api/vscode/vs/base/common/lifecycle';
8
+ import { isEqual } from '@codingame/monaco-vscode-api/vscode/vs/base/common/resources';
7
9
  import { isWeb, isMobile } from '@codingame/monaco-vscode-api/vscode/vs/base/common/platform';
8
- import { localize2, localize } from '@codingame/monaco-vscode-api/vscode/vs/nls';
9
- import { Categories } from '@codingame/monaco-vscode-api/vscode/vs/platform/action/common/actionCommonCategories';
10
+ import { hasKey } from '@codingame/monaco-vscode-api/vscode/vs/base/common/types';
11
+ import { localize, localize2 } from '@codingame/monaco-vscode-api/vscode/vs/nls';
12
+ import { IAccessibilityService } from '@codingame/monaco-vscode-api/vscode/vs/platform/accessibility/common/accessibility.service';
13
+ import { AccessibilitySignal } from '@codingame/monaco-vscode-api/vscode/vs/platform/accessibilitySignal/browser/accessibilitySignalService';
14
+ import { IAccessibilitySignalService } from '@codingame/monaco-vscode-api/vscode/vs/platform/accessibilitySignal/browser/accessibilitySignalService.service';
10
15
  import { registerAction2, Action2, MenuRegistry, MenuId } from '@codingame/monaco-vscode-api/vscode/vs/platform/actions/common/actions';
11
16
  import { CommandsRegistry } from '@codingame/monaco-vscode-api/vscode/vs/platform/commands/common/commands';
12
17
  import { ICommandService } from '@codingame/monaco-vscode-api/vscode/vs/platform/commands/common/commands.service';
18
+ import { ConfigurationTarget } from '@codingame/monaco-vscode-api/vscode/vs/platform/configuration/common/configuration';
13
19
  import { IConfigurationService } from '@codingame/monaco-vscode-api/vscode/vs/platform/configuration/common/configuration.service';
14
20
  import { ContextKeyExpr } from '@codingame/monaco-vscode-api/vscode/vs/platform/contextkey/common/contextkey';
15
21
  import { IContextKeyService } from '@codingame/monaco-vscode-api/vscode/vs/platform/contextkey/common/contextkey.service';
16
- import { IsDevelopmentContext } from '@codingame/monaco-vscode-api/vscode/vs/platform/contextkey/common/contextkeys';
17
22
  import { IDialogService } from '@codingame/monaco-vscode-api/vscode/vs/platform/dialogs/common/dialogs.service';
18
23
  import { IQuickInputService } from '@codingame/monaco-vscode-api/vscode/vs/platform/quickinput/common/quickInput.service';
19
24
  import { StorageScope, StorageTarget } from '@codingame/monaco-vscode-api/vscode/vs/platform/storage/common/storage';
@@ -24,16 +29,18 @@ import { IViewsService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/
24
29
  import { CLOSE_MOBILE_SIDEBAR_DRAWER_COMMAND_ID } from '@codingame/monaco-vscode-api/vscode/vs/sessions/browser/workbench';
25
30
  import { EditorsVisibleContext, IsSessionsWindowContext, EditorAreaFocusContext, FocusedViewContext } from '@codingame/monaco-vscode-api/vscode/vs/workbench/common/contextkeys';
26
31
  import { SessionsCategories } from '@codingame/monaco-vscode-api/vscode/vs/sessions/common/categories';
27
- import { ARCHIVE_SESSION_COMMAND_ID, UNARCHIVE_SESSION_COMMAND_ID, RENAME_SESSION_COMMAND_ID, MARK_SESSION_READ_COMMAND_ID, MARK_SESSION_UNREAD_COMMAND_ID } from '@codingame/monaco-vscode-api/vscode/vs/sessions/common/sessionCommands';
28
- import { IsNewChatSessionContext, SessionIsArchivedContext, SessionIsCreatedContext, SessionSupportsRenameContext, SessionSupportsDeleteContext, SessionIsReadContext } from '@codingame/monaco-vscode-api/vscode/vs/sessions/common/contextkeys';
29
- import { SessionsSorting, SessionsGrouping, SessionSectionToolbarMenuId, SessionSectionHasNonCloudRepositoryContext, SessionSectionTypeContext, NEW_SESSION_FOR_WORKSPACE_ACTION_ID, SessionGroupHasVisibleSessionsContext, SessionGroupToolbarMenuId, SessionGroupIsEmptyContext, SessionItemToolbarMenuId, SessionItemContextMenuId, IsSessionPinnedContext } from '@codingame/monaco-vscode-api/vscode/vs/sessions/contrib/sessions/browser/views/sessionsList';
30
- import { SessionStatus } from '@codingame/monaco-vscode-api/vscode/vs/sessions/services/sessions/common/session';
32
+ import { SESSIONS_LIST_GROUP_EXTERNAL_SESSIONS_SETTING } from '@codingame/monaco-vscode-api/vscode/vs/sessions/common/sessionConfig';
33
+ import { ARCHIVE_SESSION_COMMAND_ID, UNARCHIVE_SESSION_COMMAND_ID, ARCHIVE_CHAT_COMMAND_ID, UNARCHIVE_CHAT_COMMAND_ID, RENAME_SESSION_COMMAND_ID, MARK_SESSION_READ_COMMAND_ID, MARK_SESSION_UNREAD_COMMAND_ID } from '@codingame/monaco-vscode-api/vscode/vs/sessions/common/sessionCommands';
34
+ import { IsNewChatSessionContext, IsPhoneLayoutContext, SessionsListPromoteNewChatActionContext, SessionIsArchivedContext, SessionIsCreatedContext, SessionHeaderTargetsChatContext, SessionActiveChatCanArchiveContext, SessionActiveChatIsUntitledContext, SessionSupportsRenameContext, SessionItemIsMultiSelectionContext, SessionSupportsDeleteContext, SessionIsReadContext } from '@codingame/monaco-vscode-api/vscode/vs/sessions/common/contextkeys';
35
+ import { SessionsGrouping, SessionSectionToolbarMenuId, SessionSectionTypeContext, SessionsSorting, SessionSectionHasNonCloudRepositoryContext, NEW_SESSION_FOR_WORKSPACE_ACTION_ID, SessionGroupHasVisibleSessionsContext, SessionGroupToolbarMenuId, SessionGroupIsEmptyContext, SessionGroupIsComparisonContext, SessionItemContextMenuId, IsSessionPinnedContext, SessionItemCanImportContext, SessionChatItemCanArchiveContext, SessionChatItemIsArchivedContext, SessionChatItemIsUntitledContext } from '@codingame/monaco-vscode-api/vscode/vs/sessions/contrib/sessions/browser/views/sessionsList';
36
+ import { getChatCapabilities, SessionStatus } from '@codingame/monaco-vscode-api/vscode/vs/sessions/services/sessions/common/session';
31
37
  import { ISessionGroupsService } from '@codingame/monaco-vscode-api/vscode/vs/sessions/services/sessions/browser/sessionGroupsService.service';
32
- import { SessionsViewId, SessionsViewFilterSubMenu, SessionsViewFilterOptionsSubMenu, SessionsViewSortingContext, SessionsViewGroupingContext, IsWorkspaceGroupCappedContext } from '@codingame/monaco-vscode-api/vscode/vs/sessions/contrib/sessions/browser/views/sessionsView';
38
+ import { ISessionComparisonService } from '@codingame/monaco-vscode-api/vscode/vs/sessions/services/sessions/common/sessionComparison.service';
39
+ import { SessionsViewId, SessionsViewGroupingContext, SessionsViewSortingContext, SessionsViewCompactContext, IsWorkspaceGroupCappedContext } from '@codingame/monaco-vscode-api/vscode/vs/sessions/contrib/sessions/browser/views/sessionsView';
33
40
  import { Menus } from '@codingame/monaco-vscode-api/vscode/vs/sessions/browser/menus';
34
41
  import { ISessionsManagementService } from '@codingame/monaco-vscode-api/vscode/vs/sessions/services/sessions/common/sessionsManagement.service';
35
42
  import { ChatContextKeys } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/actions/chatContextKeys';
36
- import { ChatSessionArchiveActionWording, getChatSessionArchiveActionPresentation, ChatSessionArchiveActionWordingSettingId, getChatSessionArchiveActionWording } from '@codingame/monaco-vscode-api/vscode/vs/platform/chat/common/sessionArchiveActions';
43
+ import { ChatSessionArchiveActionWording, getChatSessionArchiveActionPresentation, SESSIONS_MARK_AS_DONE_CONFETTI_SETTING, ChatSessionArchiveActionWordingSettingId, getChatSessionArchiveActionWording } from '@codingame/monaco-vscode-api/vscode/vs/platform/chat/common/sessionArchiveActions';
37
44
  import { AGENT_HOST_ENABLED_CONTEXT_KEY } from '@codingame/monaco-vscode-api/vscode/vs/platform/agentHost/common/agentHostEnablementService';
38
45
  import { ISessionsPartService } from '@codingame/monaco-vscode-api/vscode/vs/sessions/services/sessions/browser/sessionsPartService.service';
39
46
  import { ISessionsService } from '@codingame/monaco-vscode-api/vscode/vs/sessions/services/sessions/browser/sessionsService.service';
@@ -41,18 +48,82 @@ import { registerWorkbenchContribution2, WorkbenchPhase } from '@codingame/monac
41
48
  import { registerExternalSessionsFilterMenu } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/browser/agentSessions/externalSessionsFilterMenu';
42
49
  import { ICustomViewService } from '@codingame/monaco-vscode-api/vscode/vs/sessions/services/customView/browser/customViewService.service';
43
50
  import { IAutomationService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/automations/automationService.service';
44
- import { ChatAutomationsEnabledContext } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/automations/automationsEnabled';
45
51
  import { AUTOMATIONS_CUSTOM_VIEW_ID } from '@codingame/monaco-vscode-api/vscode/vs/sessions/contrib/sessions/browser/automationsConstants';
46
52
  import { UNIFIED_WORKSPACE_PICKER_SETTING } from '@codingame/monaco-vscode-api/vscode/vs/sessions/contrib/chat/common/constants';
47
53
  import { INewSessionComposerService } from '@codingame/monaco-vscode-api/vscode/vs/sessions/contrib/chat/browser/newSessionComposerService.service';
48
54
  import { WorkspaceSelectionOrigin } from '@codingame/monaco-vscode-api/vscode/vs/sessions/common/workspaceSelection';
55
+ import { AccessibleViewType } from '@codingame/monaco-vscode-api/vscode/vs/platform/accessibility/browser/accessibleView';
56
+ import { AccessibleViewRegistry } from '@codingame/monaco-vscode-api/vscode/vs/platform/accessibility/browser/accessibleViewRegistry';
57
+ import { SessionsListNotificationFocused } from '@codingame/monaco-vscode-api/vscode/vs/sessions/contrib/sessions/browser/views/sessionsListNotification';
49
58
 
59
+ AccessibleViewRegistry.register({
60
+ name: "sessions-list-notification",
61
+ type: AccessibleViewType.Help,
62
+ priority: 110,
63
+ when: SessionsListNotificationFocused,
64
+ getProvider: accessor => accessor.get(IViewsService).getViewWithId(SessionsViewId)?.archiveNotification?.getAccessibilityHelp()
65
+ });
66
+ async function archiveSessionsWithUndo(
67
+ sessions,
68
+ wording,
69
+ sessionsManagementService,
70
+ groupsService,
71
+ viewsService,
72
+ comparisonService
73
+ ) {
74
+ const archived = [];
75
+ const candidates = sessions.filter(session => !session.isArchived.get()).map(session => ({
76
+ session,
77
+ groupId: groupsService.getGroupOfSession(session.sessionId)
78
+ }));
79
+ const comparisonGroups = ( new Map(
80
+ comparisonService.comparisons.get().filter(comparison => comparison.archivedAt === undefined && ( candidates.some(entry => entry.groupId === comparison.groupId))).map(comparison => [comparison.groupId, comparison.id])
81
+ ));
82
+ try {
83
+ for (const entry of candidates) {
84
+ await sessionsManagementService.archiveSession(entry.session);
85
+ archived.push(entry);
86
+ }
87
+ } finally {
88
+ if (archived.length > 0) {
89
+ const removedComparisonGroups = ( new Map(
90
+ [...comparisonGroups].filter(([groupId]) => !groupsService.getGroup(groupId))
91
+ ));
92
+ const restoredGroupIds = ( new Map());
93
+ const message = wording === ChatSessionArchiveActionWording.MarkAsDone ? ( localize(6237, "{0} marked done", archived.length)) : ( localize(6238, "{0} archived", archived.length));
94
+ viewsService.getViewWithId(SessionsViewId)?.archiveNotification?.show(message, async () => {
95
+ for (const [groupId, comparisonId] of removedComparisonGroups) {
96
+ const restoredGroupId = restoredGroupIds.get(groupId);
97
+ if (!restoredGroupId || !groupsService.getGroup(restoredGroupId)) {
98
+ restoredGroupIds.set(groupId, comparisonService.restoreComparison(comparisonId));
99
+ }
100
+ }
101
+ while (archived.length > 0) {
102
+ const {
103
+ session,
104
+ groupId
105
+ } = archived[0];
106
+ const current = sessionsManagementService.getSession(session.resource);
107
+ if (current?.isArchived.get()) {
108
+ await sessionsManagementService.unarchiveSession(current);
109
+ const restoredGroupId = groupId ? restoredGroupIds.get(groupId) ?? groupId : undefined;
110
+ if (restoredGroupId && groupsService.getGroup(restoredGroupId) && !groupsService.getGroupOfSession(current.sessionId)) {
111
+ groupsService.addToGroup(current.sessionId, restoredGroupId);
112
+ }
113
+ }
114
+ archived.shift();
115
+ }
116
+ status(( localize(6239, "Sessions restored.")));
117
+ });
118
+ }
119
+ }
120
+ }
50
121
  const CLOSE_SESSION_COMMAND_ID = "sessionsViewPane.closeSession";
51
122
  registerAction2(class CloseSessionAction extends Action2 {
52
123
  constructor() {
53
124
  super({
54
125
  id: CLOSE_SESSION_COMMAND_ID,
55
- title: ( localize2(4966, "Close Session")),
126
+ title: ( localize2(6240, "Close Session")),
56
127
  f1: true,
57
128
  precondition: ( ContextKeyExpr.and(( IsNewChatSessionContext.negate()), ( EditorsVisibleContext.negate()))),
58
129
  category: SessionsCategories.Sessions
@@ -64,16 +135,6 @@ registerAction2(class CloseSessionAction extends Action2 {
64
135
  sessionsService.openNewSession();
65
136
  }
66
137
  });
67
- KeybindingsRegistry.registerKeybindingRule({
68
- id: CLOSE_SESSION_COMMAND_ID,
69
- weight: KeybindingWeight.SessionsContrib,
70
- when: ( ContextKeyExpr.and(( IsNewChatSessionContext.negate()), ( EditorsVisibleContext.negate()))),
71
- primary: KeyMod.CtrlCmd | KeyCode.KeyW,
72
- win: {
73
- primary: KeyMod.CtrlCmd | KeyCode.F4,
74
- secondary: [KeyMod.CtrlCmd | KeyCode.KeyW]
75
- }
76
- });
77
138
  const OPEN_SESSION_AT_INDEX_COMMAND_ID = "sessionsViewPane.openSessionAtIndex";
78
139
  function digitToKeyCode(digit) {
79
140
  switch (digit) {
@@ -170,9 +231,9 @@ registerAction2(class NavigatePreviousSessionAction extends Action2 {
170
231
  super({
171
232
  id: "sessionsViewPane.navigatePreviousSession",
172
233
  title: {
173
- value: ( localize(4967, "Go to Previous Session")),
234
+ value: ( localize(6241, "Go to Previous Session")),
174
235
  original: "Go to Previous Session",
175
- mnemonicTitle: ( localize(4968, "&&Previous Session"))
236
+ mnemonicTitle: ( localize(6242, "&&Previous Session"))
176
237
  },
177
238
  f1: true,
178
239
  category: SessionsCategories.Sessions,
@@ -202,9 +263,9 @@ registerAction2(class NavigateNextSessionAction extends Action2 {
202
263
  super({
203
264
  id: "sessionsViewPane.navigateNextSession",
204
265
  title: {
205
- value: ( localize(4969, "Go to Next Session")),
266
+ value: ( localize(6243, "Go to Next Session")),
206
267
  original: "Go to Next Session",
207
- mnemonicTitle: ( localize(4970, "&&Next Session"))
268
+ mnemonicTitle: ( localize(6244, "&&Next Session"))
208
269
  },
209
270
  f1: true,
210
271
  category: SessionsCategories.Sessions,
@@ -230,41 +291,100 @@ registerAction2(class NavigateNextSessionAction extends Action2 {
230
291
  }
231
292
  });
232
293
  MenuRegistry.appendMenuItem(Menus.SidebarSessionsHeader, {
233
- submenu: SessionsViewFilterSubMenu,
234
- title: ( localize2(4971, "Filter Sessions")),
235
- icon: Codicon.settings,
294
+ submenu: Menus.SessionsViewFilter,
295
+ title: ( localize2(6245, "Filter Sessions")),
296
+ icon: Codicon.filter,
236
297
  group: "navigation",
237
298
  order: 10
238
299
  });
239
300
  MenuRegistry.appendMenuItem(Menus.SidebarSessionsHeader, {
240
301
  command: {
241
302
  id: "sessionsViewPane.find",
242
- title: ( localize2(4972, "Find Session")),
303
+ title: ( localize2(6246, "Find Session")),
243
304
  icon: Codicon.search
244
305
  },
245
306
  group: "navigation",
246
307
  order: 20
247
308
  });
248
- MenuRegistry.appendMenuItem(SessionsViewFilterSubMenu, {
249
- submenu: SessionsViewFilterOptionsSubMenu,
250
- title: ( localize2(4973, "Filter")),
251
- group: "0_filter",
309
+ MenuRegistry.appendMenuItem(Menus.SessionsViewFilter, {
310
+ submenu: Menus.SessionsViewOrdering,
311
+ title: ( localize2(6247, "Ordering")),
312
+ group: "1_presentation",
252
313
  order: 0
253
314
  });
315
+ MenuRegistry.appendMenuItem(Menus.SessionsViewFilter, {
316
+ submenu: Menus.SessionsViewGrouping,
317
+ title: ( localize2(6248, "Grouping")),
318
+ group: "1_presentation",
319
+ order: 1
320
+ });
321
+ MenuRegistry.appendMenuItem(Menus.SessionsViewFilter, {
322
+ submenu: Menus.SessionsViewShow,
323
+ title: ( localize2(6249, "Show")),
324
+ when: ( SessionsViewGroupingContext.isEqualTo(SessionsGrouping.Workspace)),
325
+ group: "1_presentation",
326
+ order: 2
327
+ });
328
+ for (const [index, item] of [{
329
+ submenu: Menus.SessionsViewSource,
330
+ title: ( localize2(6250, "Created In"))
331
+ }, {
332
+ submenu: Menus.SessionsViewHarness,
333
+ title: ( localize2(6251, "Harness"))
334
+ }].entries()) {
335
+ MenuRegistry.appendMenuItem(Menus.SessionsViewFilter, {
336
+ ...item,
337
+ group: "2_filters",
338
+ order: index + 1
339
+ });
340
+ }
254
341
  registerExternalSessionsFilterMenu(
255
- SessionsViewFilterOptionsSubMenu,
342
+ Menus.SessionsViewFilter,
256
343
  Menus.SessionsViewExternalFilter,
257
- "2_external"
344
+ "3_visibility",
345
+ false,
346
+ ( localize2(6252, "Created Externally"))
258
347
  );
348
+ registerAction2(class ToggleExternalSessionsSectionAction extends Action2 {
349
+ constructor() {
350
+ super({
351
+ id: "sessionsViewPane.toggleExternalSessionsSection",
352
+ title: ( localize2(6253, "Show in External Section")),
353
+ toggled: ( ContextKeyExpr.equals(`config.${SESSIONS_LIST_GROUP_EXTERNAL_SESSIONS_SETTING}`, true)),
354
+ menu: {
355
+ id: Menus.SessionsViewExternalFilter,
356
+ group: "2_grouping",
357
+ order: 0,
358
+ when: ChatContextKeys.enabled
359
+ }
360
+ });
361
+ }
362
+ async run(accessor) {
363
+ const configurationService = accessor.get(IConfigurationService);
364
+ await configurationService.updateValue(
365
+ SESSIONS_LIST_GROUP_EXTERNAL_SESSIONS_SETTING,
366
+ !configurationService.getValue(SESSIONS_LIST_GROUP_EXTERNAL_SESSIONS_SETTING),
367
+ ConfigurationTarget.USER
368
+ );
369
+ }
370
+ });
371
+ MenuRegistry.appendMenuItem(SessionSectionToolbarMenuId, {
372
+ submenu: Menus.SessionsViewExternalFilter,
373
+ title: ( localize2(6254, "Configure External Sessions")),
374
+ icon: Codicon.filter,
375
+ group: "navigation",
376
+ order: 0,
377
+ when: ( ContextKeyExpr.equals(SessionSectionTypeContext.key, "external"))
378
+ });
259
379
  registerAction2(class SortByCreatedAction extends Action2 {
260
380
  constructor() {
261
381
  super({
262
382
  id: "sessionsViewPane.sortByCreated",
263
- title: ( localize2(4974, "Sort by Created")),
383
+ title: ( localize2(6255, "Created")),
264
384
  category: SessionsCategories.Sessions,
265
385
  toggled: ( ContextKeyExpr.equals(SessionsViewSortingContext.key, SessionsSorting.Created)),
266
386
  menu: [{
267
- id: SessionsViewFilterSubMenu,
387
+ id: Menus.SessionsViewOrdering,
268
388
  group: "1_sort",
269
389
  order: 0
270
390
  }]
@@ -280,11 +400,11 @@ registerAction2(class SortByUpdatedAction extends Action2 {
280
400
  constructor() {
281
401
  super({
282
402
  id: "sessionsViewPane.sortByUpdated",
283
- title: ( localize2(4975, "Sort by Updated")),
403
+ title: ( localize2(6256, "Updated")),
284
404
  category: SessionsCategories.Sessions,
285
405
  toggled: ( ContextKeyExpr.equals(SessionsViewSortingContext.key, SessionsSorting.Updated)),
286
406
  menu: [{
287
- id: SessionsViewFilterSubMenu,
407
+ id: Menus.SessionsViewOrdering,
288
408
  group: "1_sort",
289
409
  order: 1
290
410
  }]
@@ -300,13 +420,13 @@ registerAction2(class GroupByWorkspaceAction extends Action2 {
300
420
  constructor() {
301
421
  super({
302
422
  id: "sessionsViewPane.groupByWorkspace",
303
- title: ( localize2(4976, "Group by Workspace")),
423
+ title: ( localize2(6257, "Workspace")),
304
424
  category: SessionsCategories.Sessions,
305
425
  toggled: ( ContextKeyExpr.equals(SessionsViewGroupingContext.key, SessionsGrouping.Workspace)),
306
426
  menu: [{
307
- id: SessionsViewFilterSubMenu,
308
- group: "2_group",
309
- order: 0
427
+ id: Menus.SessionsViewGrouping,
428
+ group: "1_group",
429
+ order: 1
310
430
  }]
311
431
  });
312
432
  }
@@ -320,13 +440,13 @@ registerAction2(class GroupByTimeAction extends Action2 {
320
440
  constructor() {
321
441
  super({
322
442
  id: "sessionsViewPane.groupByTime",
323
- title: ( localize2(4977, "Group by Time")),
443
+ title: ( localize2(6258, "Time")),
324
444
  category: SessionsCategories.Sessions,
325
445
  toggled: ( ContextKeyExpr.equals(SessionsViewGroupingContext.key, SessionsGrouping.Date)),
326
446
  menu: [{
327
- id: SessionsViewFilterSubMenu,
328
- group: "2_group",
329
- order: 1
447
+ id: Menus.SessionsViewGrouping,
448
+ group: "1_group",
449
+ order: 0
330
450
  }]
331
451
  });
332
452
  }
@@ -336,16 +456,37 @@ registerAction2(class GroupByTimeAction extends Action2 {
336
456
  view?.setGrouping(SessionsGrouping.Date);
337
457
  }
338
458
  });
459
+ registerAction2(class ToggleCompactSessionsViewAction extends Action2 {
460
+ constructor() {
461
+ super({
462
+ id: "sessionsViewPane.toggleCompact",
463
+ title: ( localize2(6259, "Compact View")),
464
+ category: SessionsCategories.Sessions,
465
+ toggled: SessionsViewCompactContext,
466
+ menu: [{
467
+ id: Menus.SidebarSessionsHeader,
468
+ group: "view",
469
+ order: 0,
470
+ when: ( ContextKeyExpr.and(ChatContextKeys.enabled, ( IsPhoneLayoutContext.negate())))
471
+ }]
472
+ });
473
+ }
474
+ run(accessor) {
475
+ const viewsService = accessor.get(IViewsService);
476
+ const view = viewsService.getViewWithId(SessionsViewId);
477
+ view?.toggleCompact();
478
+ }
479
+ });
339
480
  registerAction2(class ShowRecentWorkspaceSessionsAction extends Action2 {
340
481
  constructor() {
341
482
  super({
342
483
  id: "sessionsViewPane.showRecentSessions",
343
- title: ( localize2(4978, "Show Recent Sessions")),
484
+ title: ( localize2(6260, "Recent")),
344
485
  category: SessionsCategories.Sessions,
345
486
  toggled: IsWorkspaceGroupCappedContext,
346
487
  menu: [{
347
- id: SessionsViewFilterSubMenu,
348
- group: "3_cap",
488
+ id: Menus.SessionsViewShow,
489
+ group: "1_show",
349
490
  order: 0,
350
491
  when: ( ContextKeyExpr.equals(SessionsViewGroupingContext.key, SessionsGrouping.Workspace))
351
492
  }]
@@ -362,12 +503,12 @@ registerAction2(class ShowAllWorkspaceSessionsAction extends Action2 {
362
503
  constructor() {
363
504
  super({
364
505
  id: "sessionsViewPane.showAllSessions",
365
- title: ( localize2(4979, "Show All Sessions")),
506
+ title: ( localize2(6261, "All")),
366
507
  category: SessionsCategories.Sessions,
367
508
  toggled: ( IsWorkspaceGroupCappedContext.negate()),
368
509
  menu: [{
369
- id: SessionsViewFilterSubMenu,
370
- group: "3_cap",
510
+ id: Menus.SessionsViewShow,
511
+ group: "1_show",
371
512
  order: 1,
372
513
  when: ( ContextKeyExpr.equals(SessionsViewGroupingContext.key, SessionsGrouping.Workspace))
373
514
  }]
@@ -384,12 +525,13 @@ registerAction2(class CollapseAllGroupsAction extends Action2 {
384
525
  constructor() {
385
526
  super({
386
527
  id: "sessionsViewPane.collapseAllGroups",
387
- title: ( localize2(4980, "Collapse All Groups")),
528
+ title: ( localize2(6262, "Collapse All Groups")),
388
529
  category: SessionsCategories.Sessions,
389
530
  menu: [{
390
- id: SessionsViewFilterSubMenu,
391
- group: "4_collapse",
392
- order: 0
531
+ id: Menus.SidebarSessionsHeader,
532
+ group: "view",
533
+ order: 1,
534
+ when: ChatContextKeys.enabled
393
535
  }]
394
536
  });
395
537
  }
@@ -403,7 +545,7 @@ registerAction2(class RefreshSessionsAction extends Action2 {
403
545
  constructor() {
404
546
  super({
405
547
  id: "sessionsViewPane.refresh",
406
- title: ( localize2(4981, "Refresh Sessions")),
548
+ title: ( localize2(6263, "Refresh Sessions")),
407
549
  icon: Codicon.refresh,
408
550
  f1: true,
409
551
  category: SessionsCategories.Sessions
@@ -419,7 +561,7 @@ registerAction2(class FindSessionAction extends Action2 {
419
561
  constructor() {
420
562
  super({
421
563
  id: "sessionsViewPane.find",
422
- title: ( localize2(4972, "Find Session")),
564
+ title: ( localize2(6246, "Find Session")),
423
565
  icon: Codicon.search,
424
566
  category: SessionsCategories.Sessions
425
567
  });
@@ -434,7 +576,7 @@ registerAction2(class NewSessionForWorkspaceAction extends Action2 {
434
576
  constructor() {
435
577
  super({
436
578
  id: NEW_SESSION_FOR_WORKSPACE_ACTION_ID,
437
- title: ( localize2(4982, "New Session")),
579
+ title: ( localize2(6264, "New Session")),
438
580
  icon: Codicon.plus,
439
581
  menu: [{
440
582
  id: SessionSectionToolbarMenuId,
@@ -485,7 +627,7 @@ registerAction2(class NewQuickChatAction extends Action2 {
485
627
  constructor() {
486
628
  super({
487
629
  id: NEW_QUICK_CHAT_COMMAND_ID,
488
- title: ( localize2(4983, "New Quick Chat")),
630
+ title: ( localize2(6265, "New Quick Chat")),
489
631
  icon: Codicon.add,
490
632
  category: SessionsCategories.Sessions,
491
633
  f1: true,
@@ -529,36 +671,36 @@ const ConfirmArchiveStorageKey = "sessions.confirmArchive";
529
671
  function getArchiveSectionConfirmationMessage(context, wording) {
530
672
  if (context.id === "pinned") {
531
673
  if (context.sessions.length === 1) {
532
- return wording === ChatSessionArchiveActionWording.MarkAsDone ? ( localize(4984, "Are you sure you want to mark 1 pinned session as done?")) : ( localize(4985, "Are you sure you want to archive 1 pinned session?"));
674
+ return wording === ChatSessionArchiveActionWording.MarkAsDone ? ( localize(6266, "Are you sure you want to mark 1 pinned session as done?")) : ( localize(6267, "Are you sure you want to archive 1 pinned session?"));
533
675
  }
534
676
  return wording === ChatSessionArchiveActionWording.MarkAsDone ? ( localize(
535
- 4986,
677
+ 6268,
536
678
  "Are you sure you want to mark {0} pinned sessions as done?",
537
679
  context.sessions.length
538
680
  )) : ( localize(
539
- 4987,
681
+ 6269,
540
682
  "Are you sure you want to archive {0} pinned sessions?",
541
683
  context.sessions.length
542
684
  ));
543
685
  }
544
686
  if (context.sessions.length === 1) {
545
687
  return wording === ChatSessionArchiveActionWording.MarkAsDone ? ( localize(
546
- 4988,
688
+ 6270,
547
689
  "Are you sure you want to mark 1 session from '{0}' as done?",
548
690
  context.label
549
691
  )) : ( localize(
550
- 4989,
692
+ 6271,
551
693
  "Are you sure you want to archive 1 session from '{0}'?",
552
694
  context.label
553
695
  ));
554
696
  }
555
697
  return wording === ChatSessionArchiveActionWording.MarkAsDone ? ( localize(
556
- 4990,
698
+ 6272,
557
699
  "Are you sure you want to mark {0} sessions from '{1}' as done?",
558
700
  context.sessions.length,
559
701
  context.label
560
702
  )) : ( localize(
561
- 4991,
703
+ 6273,
562
704
  "Are you sure you want to archive {0} sessions from '{1}'?",
563
705
  context.sessions.length,
564
706
  context.label
@@ -584,17 +726,20 @@ class BaseArchiveSectionAction extends Action2 {
584
726
  if (!context || !context.sessions || context.sessions.length === 0) {
585
727
  return;
586
728
  }
587
- const sessionsManagementService = accessor.get(ISessionsManagementService);
588
729
  const dialogService = accessor.get(IDialogService);
589
730
  const storageService = accessor.get(IStorageService);
731
+ const sessionsManagementService = accessor.get(ISessionsManagementService);
732
+ const groupsService = accessor.get(ISessionGroupsService);
733
+ const viewsService = accessor.get(IViewsService);
734
+ const comparisonService = accessor.get(ISessionComparisonService);
590
735
  const skipConfirmation = storageService.getBoolean(ConfirmArchiveStorageKey, StorageScope.PROFILE, false);
591
736
  if (!skipConfirmation) {
592
737
  const confirmed = await dialogService.confirm({
593
738
  message: getArchiveSectionConfirmationMessage(context, this.wording),
594
- detail: this.wording === ChatSessionArchiveActionWording.MarkAsDone ? ( localize(4992, "You can restore sessions later if needed from the sessions view.")) : ( localize(4993, "You can unarchive sessions later if needed from the sessions view.")),
739
+ detail: this.wording === ChatSessionArchiveActionWording.MarkAsDone ? ( localize(6274, "You can restore sessions later if needed from the sessions view.")) : ( localize(6275, "You can unarchive sessions later if needed from the sessions view.")),
595
740
  primaryButton: getChatSessionArchiveActionPresentation(this.wording).archiveAll.title.value,
596
741
  checkbox: {
597
- label: ( localize(4994, "Do not ask me again"))
742
+ label: ( localize(6276, "Do not ask me again"))
598
743
  }
599
744
  });
600
745
  if (!confirmed.confirmed) {
@@ -604,9 +749,14 @@ class BaseArchiveSectionAction extends Action2 {
604
749
  storageService.store(ConfirmArchiveStorageKey, true, StorageScope.PROFILE, StorageTarget.USER);
605
750
  }
606
751
  }
607
- for (const session of context.sessions) {
608
- await sessionsManagementService.archiveSession(session);
609
- }
752
+ await archiveSessionsWithUndo(
753
+ context.sessions,
754
+ this.wording,
755
+ sessionsManagementService,
756
+ groupsService,
757
+ viewsService,
758
+ comparisonService
759
+ );
610
760
  }
611
761
  }
612
762
  class ArchiveSectionAction extends BaseArchiveSectionAction {
@@ -622,22 +772,22 @@ class MarkSectionSessionsDoneAction extends BaseArchiveSectionAction {
622
772
  function getArchiveGroupConfirmationMessage(context, wording) {
623
773
  if (context.sessions.length === 1) {
624
774
  return wording === ChatSessionArchiveActionWording.MarkAsDone ? ( localize(
625
- 4995,
775
+ 6277,
626
776
  "Are you sure you want to mark 1 session from '{0}' as done?",
627
777
  context.group.name
628
778
  )) : ( localize(
629
- 4996,
779
+ 6278,
630
780
  "Are you sure you want to archive 1 session from '{0}'?",
631
781
  context.group.name
632
782
  ));
633
783
  }
634
784
  return wording === ChatSessionArchiveActionWording.MarkAsDone ? ( localize(
635
- 4997,
785
+ 6279,
636
786
  "Are you sure you want to mark {0} sessions from '{1}' as done?",
637
787
  context.sessions.length,
638
788
  context.group.name
639
789
  )) : ( localize(
640
- 4998,
790
+ 6280,
641
791
  "Are you sure you want to archive {0} sessions from '{1}'?",
642
792
  context.sessions.length,
643
793
  context.group.name
@@ -660,20 +810,23 @@ class BaseArchiveSessionsInGroupAction extends Action2 {
660
810
  this.wording = wording;
661
811
  }
662
812
  async run(accessor, context) {
663
- if (!context || !context.sessions || context.sessions.length === 0) {
813
+ if (!context || context.comparison?.launching || !context.sessions || context.sessions.length === 0) {
664
814
  return;
665
815
  }
666
- const sessionsManagementService = accessor.get(ISessionsManagementService);
667
816
  const dialogService = accessor.get(IDialogService);
668
817
  const storageService = accessor.get(IStorageService);
818
+ const sessionsManagementService = accessor.get(ISessionsManagementService);
819
+ const groupsService = accessor.get(ISessionGroupsService);
820
+ const viewsService = accessor.get(IViewsService);
821
+ const comparisonService = accessor.get(ISessionComparisonService);
669
822
  const skipConfirmation = storageService.getBoolean(ConfirmArchiveStorageKey, StorageScope.PROFILE, false);
670
823
  if (!skipConfirmation) {
671
824
  const confirmed = await dialogService.confirm({
672
825
  message: getArchiveGroupConfirmationMessage(context, this.wording),
673
- detail: this.wording === ChatSessionArchiveActionWording.MarkAsDone ? ( localize(4999, "You can restore sessions later if needed from the sessions view.")) : ( localize(5000, "You can unarchive sessions later if needed from the sessions view.")),
826
+ detail: this.wording === ChatSessionArchiveActionWording.MarkAsDone ? ( localize(6281, "You can restore sessions later if needed from the sessions view.")) : ( localize(6282, "You can unarchive sessions later if needed from the sessions view.")),
674
827
  primaryButton: getChatSessionArchiveActionPresentation(this.wording).archiveAll.title.value,
675
828
  checkbox: {
676
- label: ( localize(4994, "Do not ask me again"))
829
+ label: ( localize(6276, "Do not ask me again"))
677
830
  }
678
831
  });
679
832
  if (!confirmed.confirmed) {
@@ -683,9 +836,14 @@ class BaseArchiveSessionsInGroupAction extends Action2 {
683
836
  storageService.store(ConfirmArchiveStorageKey, true, StorageScope.PROFILE, StorageTarget.USER);
684
837
  }
685
838
  }
686
- for (const session of context.sessions) {
687
- await sessionsManagementService.archiveSession(session);
688
- }
839
+ await archiveSessionsWithUndo(
840
+ context.sessions,
841
+ this.wording,
842
+ sessionsManagementService,
843
+ groupsService,
844
+ viewsService,
845
+ comparisonService
846
+ );
689
847
  }
690
848
  }
691
849
  class ArchiveSessionsInGroupAction extends BaseArchiveSessionsInGroupAction {
@@ -702,18 +860,18 @@ registerAction2(class DeleteEmptySessionGroupAction extends Action2 {
702
860
  constructor() {
703
861
  super({
704
862
  id: "sessionsView.deleteEmptyGroup",
705
- title: ( localize2(5001, "Delete Group")),
863
+ title: ( localize2(6283, "Delete Group")),
706
864
  icon: Codicon.trash,
707
865
  menu: [{
708
866
  id: SessionGroupToolbarMenuId,
709
867
  group: "navigation",
710
868
  order: 2,
711
- when: SessionGroupIsEmptyContext
869
+ when: ( ContextKeyExpr.and(SessionGroupIsEmptyContext, ( SessionGroupIsComparisonContext.negate())))
712
870
  }]
713
871
  });
714
872
  }
715
873
  run(accessor, context) {
716
- if (!context) {
874
+ if (!context || context.comparison) {
717
875
  return;
718
876
  }
719
877
  const sessionGroupsService = accessor.get(ISessionGroupsService);
@@ -726,17 +884,18 @@ registerAction2(class NewSessionInGroupAction extends Action2 {
726
884
  constructor() {
727
885
  super({
728
886
  id: "sessionsView.newSessionInGroup",
729
- title: ( localize2(5002, "New Session")),
887
+ title: ( localize2(6284, "New Session")),
730
888
  icon: Codicon.plus,
731
889
  menu: [{
732
890
  id: SessionGroupToolbarMenuId,
733
891
  group: "navigation",
734
- order: 1
892
+ order: 1,
893
+ when: ( SessionGroupIsComparisonContext.negate())
735
894
  }]
736
895
  });
737
896
  }
738
897
  run(accessor, context) {
739
- if (!context) {
898
+ if (!context || context.comparison) {
740
899
  return;
741
900
  }
742
901
  const sessionsService = accessor.get(ISessionsService);
@@ -756,13 +915,13 @@ registerAction2(class PinSessionAction extends Action2 {
756
915
  constructor() {
757
916
  super({
758
917
  id: "sessionsViewPane.pinSession",
759
- title: ( localize2(5003, "Pin")),
918
+ title: ( localize2(6285, "Pin")),
760
919
  icon: Codicon.pin,
761
920
  menu: [{
762
- id: SessionItemToolbarMenuId,
921
+ id: Menus.SessionItemToolbar,
763
922
  group: "navigation",
764
- order: 2,
765
- when: ( ContextKeyExpr.and(( ContextKeyExpr.equals(IsSessionPinnedContext.key, false)), ( ContextKeyExpr.equals(SessionIsArchivedContext.key, false))))
923
+ order: 1,
924
+ when: ( ContextKeyExpr.and(( SessionsListPromoteNewChatActionContext.negate()), ( ContextKeyExpr.equals(IsSessionPinnedContext.key, false)), ( ContextKeyExpr.equals(SessionIsArchivedContext.key, false))))
766
925
  }, {
767
926
  id: SessionItemContextMenuId,
768
927
  group: "0_pin",
@@ -787,13 +946,13 @@ registerAction2(class UnpinSessionAction extends Action2 {
787
946
  constructor() {
788
947
  super({
789
948
  id: "sessionsViewPane.unpinSession",
790
- title: ( localize2(5004, "Unpin")),
949
+ title: ( localize2(6286, "Unpin")),
791
950
  icon: Codicon.pinned,
792
951
  menu: [{
793
- id: SessionItemToolbarMenuId,
952
+ id: Menus.SessionItemToolbar,
794
953
  group: "navigation",
795
- order: 2,
796
- when: ( ContextKeyExpr.and(( ContextKeyExpr.equals(IsSessionPinnedContext.key, true)), ( ContextKeyExpr.equals(SessionIsArchivedContext.key, false))))
954
+ order: 1,
955
+ when: ( ContextKeyExpr.and(( SessionsListPromoteNewChatActionContext.negate()), ( ContextKeyExpr.equals(IsSessionPinnedContext.key, true)), ( ContextKeyExpr.equals(SessionIsArchivedContext.key, false))))
797
956
  }, {
798
957
  id: SessionItemContextMenuId,
799
958
  group: "0_pin",
@@ -837,6 +996,34 @@ KeybindingsRegistry.registerKeybindingRule({
837
996
  primary: KeyMod.CtrlCmd | KeyCode.Backspace
838
997
  }
839
998
  });
999
+ registerAction2(class ImportSessionAction extends Action2 {
1000
+ constructor() {
1001
+ super({
1002
+ id: "sessionsViewPane.importSession",
1003
+ title: ( localize2(6287, "Import")),
1004
+ icon: Codicon.chatImport,
1005
+ precondition: ChatContextKeys.enabled,
1006
+ menu: [Menus.SessionItemToolbar, SessionItemContextMenuId].map(id => ({
1007
+ id,
1008
+ group: id === Menus.SessionItemToolbar ? "navigation" : "1_edit",
1009
+ order: 1.5,
1010
+ when: ( ContextKeyExpr.and(ChatContextKeys.enabled, SessionItemCanImportContext, ( SessionIsArchivedContext.negate())))
1011
+ }))
1012
+ });
1013
+ }
1014
+ async run(accessor, context) {
1015
+ const sessions = getSessionActionTargets(accessor, context).filter(
1016
+ session => session.isExternal?.get() === true && session.capabilities.get().supportsImport && !session.isArchived.get()
1017
+ );
1018
+ const sessionsManagementService = accessor.get(ISessionsManagementService);
1019
+ for (const session of sessions) {
1020
+ await sessionsManagementService.importSession(session);
1021
+ }
1022
+ if (sessions.length > 0) {
1023
+ status(sessions.length === 1 ? ( localize(6288, "Imported {0}.", sessions[0].title.get())) : ( localize(6289, "Imported {0} sessions.", sessions.length)));
1024
+ }
1025
+ }
1026
+ });
840
1027
  class BaseArchiveSessionAction extends Action2 {
841
1028
  constructor(wording) {
842
1029
  const action = getChatSessionArchiveActionPresentation(wording).archive;
@@ -845,9 +1032,9 @@ class BaseArchiveSessionAction extends Action2 {
845
1032
  title: action.title,
846
1033
  icon: action.icon,
847
1034
  menu: [{
848
- id: SessionItemToolbarMenuId,
1035
+ id: Menus.SessionItemToolbar,
849
1036
  group: "navigation",
850
- order: 1,
1037
+ order: 2,
851
1038
  when: ( ContextKeyExpr.equals(SessionIsArchivedContext.key, false))
852
1039
  }, {
853
1040
  id: Menus.AutomationsHistoryItem,
@@ -863,7 +1050,7 @@ class BaseArchiveSessionAction extends Action2 {
863
1050
  id: Menus.SessionBarToolbar,
864
1051
  group: "secondary/1_session",
865
1052
  order: 30,
866
- when: ( ContextKeyExpr.and(SessionIsCreatedContext, ( ContextKeyExpr.equals(SessionIsArchivedContext.key, false))))
1053
+ when: ( ContextKeyExpr.and(SessionIsCreatedContext, ( ContextKeyExpr.equals(SessionIsArchivedContext.key, false)), ( SessionHeaderTargetsChatContext.negate())))
867
1054
  }]
868
1055
  });
869
1056
  }
@@ -871,9 +1058,15 @@ class BaseArchiveSessionAction extends Action2 {
871
1058
  const targets = context ? (Array.isArray(context) ? context : [context]) : getFocusedSessionListTargets(accessor) ?? [];
872
1059
  const sessions = targets.filter(session => !session.isArchived.get());
873
1060
  const sessionsManagementService = accessor.get(ISessionsManagementService);
1061
+ const configurationService = accessor.get(IConfigurationService);
1062
+ const accessibilityService = accessor.get(IAccessibilityService);
1063
+ const accessibilitySignalService = accessor.get(IAccessibilitySignalService);
874
1064
  for (const session of sessions) {
875
1065
  await sessionsManagementService.archiveSession(session);
876
1066
  }
1067
+ if (sessions.length > 0 && configurationService.getValue(SESSIONS_MARK_AS_DONE_CONFETTI_SETTING) && !accessibilityService.isMotionReduced()) {
1068
+ void accessibilitySignalService.playSignal(AccessibilitySignal.confetti);
1069
+ }
877
1070
  }
878
1071
  }
879
1072
  class ArchiveSessionAction extends BaseArchiveSessionAction {
@@ -894,7 +1087,7 @@ class BaseUnarchiveSessionAction extends Action2 {
894
1087
  title: action.title,
895
1088
  icon: action.icon,
896
1089
  menu: [{
897
- id: SessionItemToolbarMenuId,
1090
+ id: Menus.SessionItemToolbar,
898
1091
  group: "navigation",
899
1092
  order: 1,
900
1093
  when: ( ContextKeyExpr.equals(SessionIsArchivedContext.key, true))
@@ -937,12 +1130,125 @@ class RestoreArchivedSessionAction extends BaseUnarchiveSessionAction {
937
1130
  super(ChatSessionArchiveActionWording.MarkAsDone);
938
1131
  }
939
1132
  }
1133
+ class BaseArchiveChatAction extends Action2 {
1134
+ constructor(wording) {
1135
+ const action = getChatSessionArchiveActionPresentation(wording).archive;
1136
+ const when = ( ContextKeyExpr.and(ChatContextKeys.enabled, SessionChatItemCanArchiveContext, ( SessionChatItemIsArchivedContext.negate())));
1137
+ super({
1138
+ id: ARCHIVE_CHAT_COMMAND_ID,
1139
+ title: action.title,
1140
+ icon: action.icon,
1141
+ menu: [{
1142
+ id: Menus.SessionChatItemContext,
1143
+ group: "1_chat",
1144
+ order: 3,
1145
+ when
1146
+ }, {
1147
+ id: Menus.SessionChatItemToolbar,
1148
+ group: "navigation",
1149
+ order: 1,
1150
+ when: ( ContextKeyExpr.and(when, ( SessionChatItemIsUntitledContext.negate())))
1151
+ }, {
1152
+ id: Menus.SessionBarToolbar,
1153
+ group: "secondary/1_session",
1154
+ order: 30,
1155
+ when: ( ContextKeyExpr.and(
1156
+ SessionHeaderTargetsChatContext,
1157
+ SessionActiveChatCanArchiveContext,
1158
+ ( SessionActiveChatIsUntitledContext.negate())
1159
+ ))
1160
+ }]
1161
+ });
1162
+ }
1163
+ async run(accessor, context, chat) {
1164
+ let target;
1165
+ if (context && chat && hasKey(context, {
1166
+ sessionId: true
1167
+ })) {
1168
+ target = {
1169
+ session: context,
1170
+ chat
1171
+ };
1172
+ } else if (context && hasKey(context, {
1173
+ session: true,
1174
+ chat: true
1175
+ })) {
1176
+ target = context;
1177
+ }
1178
+ if (!target || target.chat.isArchived.get() || !getChatCapabilities(target.chat, target.session, undefined).canArchive) {
1179
+ return;
1180
+ }
1181
+ const sessionsService = accessor.get(ISessionsService);
1182
+ const sessionsManagementService = accessor.get(ISessionsManagementService);
1183
+ await sessionsManagementService.archiveChat(target.session, target.chat);
1184
+ const activeSession = sessionsService.activeSession.get();
1185
+ if (activeSession?.sessionId === target.session.sessionId) {
1186
+ const openChat = activeSession.openChats.get().find(chat => isEqual(chat.resource, target.chat.resource));
1187
+ if (openChat) {
1188
+ await sessionsService.closeChat(activeSession, openChat);
1189
+ }
1190
+ }
1191
+ }
1192
+ }
1193
+ class ArchiveChatAction extends BaseArchiveChatAction {
1194
+ constructor() {
1195
+ super(ChatSessionArchiveActionWording.Archive);
1196
+ }
1197
+ }
1198
+ class MarkChatAsDoneAction extends BaseArchiveChatAction {
1199
+ constructor() {
1200
+ super(ChatSessionArchiveActionWording.MarkAsDone);
1201
+ }
1202
+ }
1203
+ class BaseUnarchiveChatAction extends Action2 {
1204
+ constructor(wording) {
1205
+ const action = getChatSessionArchiveActionPresentation(wording).unarchive;
1206
+ const when = ( ContextKeyExpr.and(
1207
+ ChatContextKeys.enabled,
1208
+ SessionChatItemCanArchiveContext,
1209
+ SessionChatItemIsArchivedContext
1210
+ ));
1211
+ super({
1212
+ id: UNARCHIVE_CHAT_COMMAND_ID,
1213
+ title: action.title,
1214
+ icon: action.icon,
1215
+ menu: [{
1216
+ id: Menus.SessionChatItemContext,
1217
+ group: "1_chat",
1218
+ order: 3,
1219
+ when
1220
+ }, {
1221
+ id: Menus.SessionChatItemToolbar,
1222
+ group: "navigation",
1223
+ order: 1,
1224
+ when: ( ContextKeyExpr.and(when, ( SessionChatItemIsUntitledContext.negate())))
1225
+ }]
1226
+ });
1227
+ }
1228
+ async run(accessor, context) {
1229
+ if (!context || !context.chat.isArchived.get() || !getChatCapabilities(context.chat, context.session, undefined).canArchive) {
1230
+ return;
1231
+ }
1232
+ await accessor.get(ISessionsManagementService).unarchiveChat(context.session, context.chat);
1233
+ }
1234
+ }
1235
+ class UnarchiveChatAction extends BaseUnarchiveChatAction {
1236
+ constructor() {
1237
+ super(ChatSessionArchiveActionWording.Archive);
1238
+ }
1239
+ }
1240
+ class RestoreArchivedChatAction extends BaseUnarchiveChatAction {
1241
+ constructor() {
1242
+ super(ChatSessionArchiveActionWording.MarkAsDone);
1243
+ }
1244
+ }
940
1245
  registerAction2(class RenameSessionAction extends Action2 {
941
1246
  constructor() {
942
1247
  super({
943
1248
  id: RENAME_SESSION_COMMAND_ID,
944
- title: ( localize2(5005, "Rename...")),
1249
+ title: ( localize2(6290, "Rename...")),
945
1250
  icon: Codicon.edit,
1251
+ precondition: ( SessionItemIsMultiSelectionContext.negate()),
946
1252
  keybinding: {
947
1253
  primary: KeyCode.F2,
948
1254
  weight: KeybindingWeight.SessionsContrib,
@@ -957,18 +1263,25 @@ registerAction2(class RenameSessionAction extends Action2 {
957
1263
  });
958
1264
  }
959
1265
  async run(accessor, context) {
1266
+ const focusedSessions = context ? undefined : getFocusedSessionListTargets(accessor);
960
1267
  const session = getSessionActionTargets(accessor, context)[0];
961
1268
  if (!session || !session.capabilities.get().supportsRename) {
962
1269
  return;
963
1270
  }
1271
+ if (focusedSessions?.includes(session)) {
1272
+ const view = accessor.get(IViewsService).getViewWithId(SessionsViewId);
1273
+ if (view?.sessionsControl?.beginRenameSession(session)) {
1274
+ return;
1275
+ }
1276
+ }
964
1277
  const quickInputService = accessor.get(IQuickInputService);
965
1278
  const sessionsManagementService = accessor.get(ISessionsManagementService);
966
1279
  const newTitle = await quickInputService.input({
967
1280
  value: session.title.get(),
968
- prompt: ( localize(5006, "New agent session title")),
1281
+ prompt: ( localize(6291, "New agent session title")),
969
1282
  validateInput: async value => {
970
1283
  if (!value.trim()) {
971
- return localize(5007, "Title cannot be empty");
1284
+ return localize(6292, "Title cannot be empty");
972
1285
  }
973
1286
  return undefined;
974
1287
  }
@@ -985,7 +1298,7 @@ registerAction2(class DeleteSessionAction extends Action2 {
985
1298
  constructor() {
986
1299
  super({
987
1300
  id: "sessionsViewPane.deleteSession",
988
- title: ( localize2(5008, "Delete...")),
1301
+ title: ( localize2(6293, "Delete...")),
989
1302
  menu: [{
990
1303
  id: SessionItemContextMenuId,
991
1304
  group: "1_edit",
@@ -1005,9 +1318,9 @@ registerAction2(class DeleteSessionAction extends Action2 {
1005
1318
  const dialogService = accessor.get(IDialogService);
1006
1319
  const sessionsManagementService = accessor.get(ISessionsManagementService);
1007
1320
  const confirmed = await dialogService.confirm({
1008
- message: sessions.length === 1 ? ( localize(5009, "Are you sure you want to delete this session?")) : ( localize(5010, "Are you sure you want to delete {0} sessions?", sessions.length)),
1009
- detail: ( localize(5011, "This action cannot be undone.")),
1010
- primaryButton: ( localize(5012, "Delete"))
1321
+ message: sessions.length === 1 ? ( localize(6294, "Are you sure you want to delete this session?")) : ( localize(6295, "Are you sure you want to delete {0} sessions?", sessions.length)),
1322
+ detail: ( localize(6296, "This action cannot be undone.")),
1323
+ primaryButton: ( localize(6297, "Delete"))
1011
1324
  });
1012
1325
  if (!confirmed.confirmed) {
1013
1326
  return;
@@ -1015,7 +1328,7 @@ registerAction2(class DeleteSessionAction extends Action2 {
1015
1328
  try {
1016
1329
  await sessionsManagementService.deleteSessions(sessions);
1017
1330
  } catch (err) {
1018
- dialogService.error(sessions.length === 1 ? ( localize(5013, "Failed to delete the session: {0}", toErrorMessage(err))) : ( localize(5014, "Failed to delete the sessions: {0}", toErrorMessage(err))));
1331
+ dialogService.error(sessions.length === 1 ? ( localize(6298, "Failed to delete the session: {0}", toErrorMessage(err))) : ( localize(6299, "Failed to delete the sessions: {0}", toErrorMessage(err))));
1019
1332
  }
1020
1333
  }
1021
1334
  });
@@ -1023,11 +1336,11 @@ registerAction2(class MarkSessionReadAction extends Action2 {
1023
1336
  constructor() {
1024
1337
  super({
1025
1338
  id: MARK_SESSION_READ_COMMAND_ID,
1026
- title: ( localize2(5015, "Mark as Read")),
1339
+ title: ( localize2(6300, "Mark as Read")),
1027
1340
  menu: [{
1028
1341
  id: SessionItemContextMenuId,
1029
- group: "0_read",
1030
- order: 0,
1342
+ group: "1_edit",
1343
+ order: 1.5,
1031
1344
  when: ( ContextKeyExpr.and(( SessionIsReadContext.negate()), ( SessionIsArchivedContext.negate())))
1032
1345
  }, {
1033
1346
  id: Menus.SessionHeaderContext,
@@ -1043,18 +1356,20 @@ registerAction2(class MarkSessionReadAction extends Action2 {
1043
1356
  }
1044
1357
  const sessions = Array.isArray(context) ? context : [context];
1045
1358
  const sessionsManagementService = accessor.get(ISessionsManagementService);
1046
- sessionsManagementService.markAllRead(sessions);
1359
+ for (const session of sessions) {
1360
+ sessionsManagementService.markRead(session);
1361
+ }
1047
1362
  }
1048
1363
  });
1049
1364
  registerAction2(class MarkSessionUnreadAction extends Action2 {
1050
1365
  constructor() {
1051
1366
  super({
1052
1367
  id: MARK_SESSION_UNREAD_COMMAND_ID,
1053
- title: ( localize2(5016, "Mark as Unread")),
1368
+ title: ( localize2(6301, "Mark as Unread")),
1054
1369
  menu: [{
1055
1370
  id: SessionItemContextMenuId,
1056
- group: "0_read",
1057
- order: 0,
1371
+ group: "1_edit",
1372
+ order: 1.5,
1058
1373
  when: ( ContextKeyExpr.and(SessionIsReadContext, ( SessionIsArchivedContext.negate())))
1059
1374
  }, {
1060
1375
  id: Menus.SessionHeaderContext,
@@ -1079,11 +1394,11 @@ registerAction2(class OpenSessionToTheSideAction extends Action2 {
1079
1394
  constructor() {
1080
1395
  super({
1081
1396
  id: "sessionsViewPane.openToTheSide",
1082
- title: ( localize2(5017, "Open to the Side")),
1397
+ title: ( localize2(6302, "Open to the Side")),
1083
1398
  menu: [{
1084
1399
  id: SessionItemContextMenuId,
1085
- group: "navigation",
1086
- order: -1,
1400
+ group: "0_pin",
1401
+ order: 1,
1087
1402
  when: IsSessionsWindowContext
1088
1403
  }]
1089
1404
  });
@@ -1094,35 +1409,80 @@ registerAction2(class OpenSessionToTheSideAction extends Action2 {
1094
1409
  }
1095
1410
  const sessions = Array.isArray(context) ? context : [context];
1096
1411
  const sessionsService = accessor.get(ISessionsService);
1097
- const sessionsPartService = accessor.get(ISessionsPartService);
1098
- for (let i = 0; i < sessions.length - 1; i++) {
1099
- const session = sessions[i];
1100
- const visible = sessionsService.visibleSessions.get();
1101
- const lastVisible = visible[visible.length - 1];
1102
- if (lastVisible && lastVisible.sessionId !== session.sessionId) {
1103
- sessionsService.insertAt(session, lastVisible.sessionId, "right");
1104
- }
1105
- }
1106
- const lastRequested = sessions[sessions.length - 1];
1107
- await sessionsService.openSessionToSide(lastRequested, {
1108
- source: "sessionsList"
1109
- });
1110
- const visibleAfterOpen = sessionsService.visibleSessions.get();
1111
- const opened = visibleAfterOpen.find(s => s?.sessionId === lastRequested.sessionId);
1112
- if (opened) {
1113
- sessionsPartService.focusSession(opened);
1412
+ if (sessions.length === 1) {
1413
+ await sessionsService.openSessionToSide(sessions[0], {
1414
+ source: "sessionsList",
1415
+ forceMainChat: true
1416
+ });
1417
+ } else {
1418
+ const reference = sessionsService.visibleSessions.get().at(-1);
1419
+ await sessionsService.openSessionsAt(sessions, reference?.sessionId, "right", {
1420
+ source: "sessionsList",
1421
+ activate: "last",
1422
+ forceMainChat: true
1423
+ });
1114
1424
  }
1115
1425
  }
1116
1426
  });
1427
+ const openInGridWhen = ( ContextKeyExpr.and(IsSessionsWindowContext, ChatContextKeys.enabled, ( IsPhoneLayoutContext.negate())));
1428
+ MenuRegistry.appendMenuItem(SessionItemContextMenuId, {
1429
+ submenu: Menus.SessionGridOpen,
1430
+ title: ( localize(6303, "Open in Grid")),
1431
+ group: "0_pin",
1432
+ order: 2,
1433
+ when: openInGridWhen
1434
+ });
1435
+ for (const item of [{
1436
+ direction: "left",
1437
+ title: ( localize2(6304, "Left of Active Session"))
1438
+ }, {
1439
+ direction: "right",
1440
+ title: ( localize2(6305, "Right of Active Session"))
1441
+ }, {
1442
+ direction: "up",
1443
+ title: ( localize2(6306, "Above Active Session"))
1444
+ }, {
1445
+ direction: "down",
1446
+ title: ( localize2(6307, "Below Active Session"))
1447
+ }]) {
1448
+ registerAction2(class extends Action2 {
1449
+ constructor() {
1450
+ super({
1451
+ id: `sessionsViewPane.openInGrid.${item.direction}`,
1452
+ title: item.title,
1453
+ precondition: openInGridWhen,
1454
+ menu: {
1455
+ id: Menus.SessionGridOpen
1456
+ }
1457
+ });
1458
+ }
1459
+ async run(accessor, context) {
1460
+ if (!context) {
1461
+ return;
1462
+ }
1463
+ const service = accessor.get(ISessionsService);
1464
+ await service.openSessionsAt(
1465
+ Array.isArray(context) ? context : [context],
1466
+ service.activeSession.get()?.sessionId,
1467
+ item.direction,
1468
+ {
1469
+ source: "sessionsList",
1470
+ activate: "last"
1471
+ }
1472
+ );
1473
+ }
1474
+ });
1475
+ }
1117
1476
  registerAction2(class MarkAllSessionsReadAction extends Action2 {
1118
1477
  constructor() {
1119
1478
  super({
1120
1479
  id: "sessionsViewPane.markAllRead",
1121
- title: ( localize2(5018, "Mark All as Read")),
1480
+ title: ( localize2(6308, "Mark All as Read")),
1122
1481
  menu: [{
1123
1482
  id: SessionItemContextMenuId,
1124
1483
  group: "0_read",
1125
- order: 1
1484
+ order: 1,
1485
+ when: ( ContextKeyExpr.equals(SessionsViewGroupingContext.key, SessionsGrouping.Date))
1126
1486
  }]
1127
1487
  });
1128
1488
  }
@@ -1172,13 +1532,17 @@ function getSessionsArchiveActionConstructors(wording) {
1172
1532
  MarkSectionSessionsDoneAction,
1173
1533
  MarkAllSessionsInGroupAsDoneAction,
1174
1534
  MarkSessionAsDoneAction,
1535
+ MarkChatAsDoneAction,
1175
1536
  RestoreArchivedSessionAction,
1537
+ RestoreArchivedChatAction,
1176
1538
  RestoreActiveSessionAction
1177
1539
  ] : [
1178
1540
  ArchiveSectionAction,
1179
1541
  ArchiveSessionsInGroupAction,
1180
1542
  ArchiveSessionAction,
1543
+ ArchiveChatAction,
1181
1544
  UnarchiveSessionAction,
1545
+ UnarchiveChatAction,
1182
1546
  UnarchiveActiveSessionAction
1183
1547
  ];
1184
1548
  }
@@ -1215,7 +1579,7 @@ registerAction2(class ManageAutomationsAction extends Action2 {
1215
1579
  constructor() {
1216
1580
  super({
1217
1581
  id: "sessionsView.manageAutomations",
1218
- title: ( localize2(5019, "Manage Automations")),
1582
+ title: ( localize2(6309, "Manage Automations")),
1219
1583
  menu: []
1220
1584
  });
1221
1585
  }
@@ -1223,31 +1587,12 @@ registerAction2(class ManageAutomationsAction extends Action2 {
1223
1587
  accessor.get(ICustomViewService).showCustomView(AUTOMATIONS_CUSTOM_VIEW_ID);
1224
1588
  }
1225
1589
  });
1226
- registerAction2(class ResetAutomationsNewBadgeAction extends Action2 {
1227
- constructor() {
1228
- super({
1229
- id: "sessions.developer.resetAutomationsNewBadge",
1230
- title: ( localize2(5020, "Reset Automations New Badge")),
1231
- category: Categories.Developer,
1232
- f1: true,
1233
- precondition: ( ContextKeyExpr.and(
1234
- IsDevelopmentContext,
1235
- IsSessionsWindowContext,
1236
- ChatAutomationsEnabledContext
1237
- ))
1238
- });
1239
- }
1240
- async run(accessor) {
1241
- const view = await accessor.get(IViewsService).openView(SessionsViewId, false);
1242
- await view?.sessionsControl?.resetAutomationsNewBadge();
1243
- }
1244
- });
1245
1590
  const MARK_ALL_AUTOMATION_RUNS_READ_COMMAND_ID = "sessionsView.markAllAutomationRunsRead";
1246
1591
  registerAction2(class MarkAllAutomationRunsReadAction extends Action2 {
1247
1592
  constructor() {
1248
1593
  super({
1249
1594
  id: MARK_ALL_AUTOMATION_RUNS_READ_COMMAND_ID,
1250
- title: ( localize2(5021, "Mark All as Read"))
1595
+ title: ( localize2(6310, "Mark All as Read"))
1251
1596
  });
1252
1597
  }
1253
1598
  async run(accessor) {
@@ -1267,4 +1612,4 @@ registerAction2(class MarkAllAutomationRunsReadAction extends Action2 {
1267
1612
  }
1268
1613
  });
1269
1614
 
1270
- export { ArchiveSessionAction };
1615
+ export { ArchiveChatAction, ArchiveSessionAction, SessionsArchiveActionsContribution, getSessionsArchiveActionConstructors };