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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (323) hide show
  1. package/common.js +2 -0
  2. package/index.js +9 -10
  3. package/package.json +10 -10
  4. package/session.js +45 -42
  5. package/vscode/src/vs/platform/agentHost/common/sessionComparisonPrompts.d.ts +1 -0
  6. package/vscode/src/vs/platform/agentHost/common/sessionComparisonPrompts.js +12 -0
  7. package/vscode/src/vs/sessions/browser/{singlePaneWorkbench.d.ts → desktopWorkbench.d.ts} +6 -5
  8. package/vscode/src/vs/sessions/browser/{singlePaneWorkbench.js → desktopWorkbench.js} +23 -25
  9. package/vscode/src/vs/sessions/browser/dockedAuxiliaryBarController.d.ts +5 -2
  10. package/vscode/src/vs/sessions/browser/dockedAuxiliaryBarController.js +41 -3
  11. package/vscode/src/vs/sessions/browser/layoutActions.js +25 -41
  12. package/vscode/src/vs/sessions/browser/mobileWorkbench.d.ts +4 -0
  13. package/vscode/src/vs/sessions/browser/mobileWorkbench.js +10 -0
  14. package/vscode/src/vs/sessions/browser/parts/chatCompositeBar.d.ts +10 -5
  15. package/vscode/src/vs/sessions/browser/parts/chatCompositeBar.js +138 -34
  16. package/vscode/src/vs/sessions/browser/parts/chatGroupDropTarget.d.ts +2 -0
  17. package/vscode/src/vs/sessions/browser/parts/chatGroupDropTarget.js +13 -5
  18. package/vscode/src/vs/sessions/browser/parts/chatGroupView.d.ts +27 -5
  19. package/vscode/src/vs/sessions/browser/parts/chatGroupView.js +129 -28
  20. package/vscode/src/vs/sessions/browser/parts/chatGroupsView.d.ts +22 -7
  21. package/vscode/src/vs/sessions/browser/parts/chatGroupsView.js +260 -21
  22. package/vscode/src/vs/sessions/browser/parts/chatHeader.d.ts +25 -0
  23. package/vscode/src/vs/sessions/browser/parts/chatHeader.js +42 -0
  24. package/vscode/src/vs/sessions/browser/parts/customViewGridPart.js +9 -1
  25. package/vscode/src/vs/sessions/browser/parts/customViewNode.js +1 -1
  26. package/vscode/src/vs/sessions/browser/parts/{singlePaneAuxiliaryBarPart.d.ts → desktopAuxiliaryBarPart.d.ts} +4 -4
  27. package/vscode/src/vs/sessions/browser/parts/desktopAuxiliaryBarPart.js +26 -0
  28. package/vscode/src/vs/sessions/browser/parts/{singlePaneEditorPart.d.ts → desktopEditorPart.d.ts} +8 -6
  29. package/vscode/src/vs/sessions/browser/parts/{singlePaneEditorPart.js → desktopEditorPart.js} +25 -5
  30. package/vscode/src/vs/sessions/browser/parts/editorPart.js +16 -4
  31. package/vscode/src/vs/sessions/browser/parts/editorParts.d.ts +1 -1
  32. package/vscode/src/vs/sessions/browser/parts/editorParts.js +7 -6
  33. package/vscode/src/vs/sessions/browser/parts/gridGap.d.ts +14 -0
  34. package/vscode/src/vs/sessions/browser/parts/gridGap.js +69 -0
  35. package/vscode/src/vs/sessions/browser/parts/media/chatCompositeBar.css +132 -4
  36. package/vscode/src/vs/sessions/browser/parts/media/chatGroupsView.css +10 -0
  37. package/vscode/src/vs/sessions/browser/parts/media/editorPart.css +46 -2
  38. package/vscode/src/vs/sessions/browser/parts/media/sessionReadOnlyBanner.css +3 -3
  39. package/vscode/src/vs/sessions/browser/parts/media/sessionView.css +45 -48
  40. package/vscode/src/vs/sessions/browser/parts/media/sessionsPart.css +15 -0
  41. package/vscode/src/vs/sessions/browser/parts/menubar.contribution.js +8 -8
  42. package/vscode/src/vs/sessions/browser/parts/mobile/mobileSessionsPart.js +1 -1
  43. package/vscode/src/vs/sessions/browser/parts/remoteHostUnavailableEmptyState.d.ts +9 -1
  44. package/vscode/src/vs/sessions/browser/parts/remoteHostUnavailableEmptyState.js +21 -3
  45. package/vscode/src/vs/sessions/browser/parts/sessionBarStyles.js +1 -1
  46. package/vscode/src/vs/sessions/browser/parts/sessionDropTarget.d.ts +4 -3
  47. package/vscode/src/vs/sessions/browser/parts/sessionDropTarget.js +29 -15
  48. package/vscode/src/vs/sessions/browser/parts/sessionGridLayout.d.ts +67 -0
  49. package/vscode/src/vs/sessions/browser/parts/sessionGridLayout.js +598 -0
  50. package/vscode/src/vs/sessions/browser/parts/sessionHeader.d.ts +11 -84
  51. package/vscode/src/vs/sessions/browser/parts/sessionHeader.js +37 -317
  52. package/vscode/src/vs/sessions/browser/parts/sessionHeaderBar.d.ts +103 -0
  53. package/vscode/src/vs/sessions/browser/parts/sessionHeaderBar.js +391 -0
  54. package/vscode/src/vs/sessions/browser/parts/sessionReadOnlyBanner.d.ts +6 -4
  55. package/vscode/src/vs/sessions/browser/parts/sessionReadOnlyBanner.js +58 -28
  56. package/vscode/src/vs/sessions/browser/parts/sessionRemoteConnection.d.ts +4 -0
  57. package/vscode/src/vs/sessions/browser/parts/sessionRemoteConnection.js +66 -23
  58. package/vscode/src/vs/sessions/browser/parts/sessionView.d.ts +24 -5
  59. package/vscode/src/vs/sessions/browser/parts/sessionView.js +143 -33
  60. package/vscode/src/vs/sessions/browser/parts/sessionsPart.d.ts +25 -19
  61. package/vscode/src/vs/sessions/browser/parts/sessionsPart.js +157 -58
  62. package/vscode/src/vs/sessions/browser/parts/sessionsParts.d.ts +12 -3
  63. package/vscode/src/vs/sessions/browser/parts/sessionsParts.js +17 -2
  64. package/vscode/src/vs/sessions/browser/sessionWorkspace.d.ts +6 -3
  65. package/vscode/src/vs/sessions/browser/sessionWorkspace.js +2 -2
  66. package/vscode/src/vs/sessions/browser/sessionsSetUpService.js +66 -20
  67. package/vscode/src/vs/sessions/browser/sessionsSignInDialog.d.ts +1 -0
  68. package/vscode/src/vs/sessions/browser/sessionsSignInDialog.js +5 -4
  69. package/vscode/src/vs/sessions/browser/workbenchFactory.d.ts +12 -0
  70. package/vscode/src/vs/sessions/browser/workbenchFactory.js +17 -0
  71. package/vscode/src/vs/sessions/contrib/accountMenu/browser/account.contribution.d.ts +85 -1
  72. package/vscode/src/vs/sessions/contrib/accountMenu/browser/account.contribution.js +118 -100
  73. package/vscode/src/vs/sessions/contrib/accountMenu/browser/chatPetAchievementBadges.d.ts +3 -2
  74. package/vscode/src/vs/sessions/contrib/accountMenu/browser/chatPetAchievementBadges.js +39 -34
  75. package/vscode/src/vs/sessions/contrib/accountMenu/browser/media/accountTitleBarWidget.css +6 -0
  76. package/vscode/src/vs/sessions/contrib/agentFeedback/browser/nullAgentFeedbackService.contribution.d.ts +3 -0
  77. package/vscode/src/vs/sessions/contrib/agentFeedback/browser/nullAgentFeedbackService.contribution.js +6 -0
  78. package/vscode/src/vs/sessions/contrib/aiCustomizationTreeView/browser/aiCustomizationTreeView.contribution.js +18 -18
  79. package/vscode/src/vs/sessions/contrib/aiCustomizationTreeView/browser/aiCustomizationTreeViewViews.js +12 -12
  80. package/vscode/src/vs/sessions/contrib/applyCommitsToParentRepo/browser/applyChangesToParentRepo.js +7 -7
  81. package/vscode/src/vs/sessions/contrib/aquarium/browser/aquarium.contribution.js +12 -12
  82. package/vscode/src/vs/sessions/contrib/aquarium/browser/aquariumOverlay.js +10 -10
  83. package/vscode/src/vs/sessions/contrib/automations/browser/automationDialog.d.ts +78 -8
  84. package/vscode/src/vs/sessions/contrib/automations/browser/automationDialog.js +1166 -202
  85. package/vscode/src/vs/sessions/contrib/automations/browser/automationDialogService.d.ts +11 -1
  86. package/vscode/src/vs/sessions/contrib/automations/browser/automationDialogService.js +190 -69
  87. package/vscode/src/vs/sessions/contrib/automations/browser/automationRunner.d.ts +11 -9
  88. package/vscode/src/vs/sessions/contrib/automations/browser/automationRunner.js +122 -233
  89. package/vscode/src/vs/sessions/contrib/automations/browser/automationTelemetry.d.ts +22 -0
  90. package/vscode/src/vs/sessions/contrib/automations/browser/automationTelemetry.js +62 -0
  91. package/vscode/src/vs/sessions/contrib/automations/browser/automationTools.d.ts +7 -2
  92. package/vscode/src/vs/sessions/contrib/automations/browser/automationTools.js +172 -84
  93. package/vscode/src/vs/sessions/contrib/automations/browser/automations.contribution.js +17 -7
  94. package/vscode/src/vs/sessions/contrib/automations/browser/media/automationDialog.css +242 -60
  95. package/vscode/src/vs/sessions/contrib/automations/browser/providerAutomationService.d.ts +24 -36
  96. package/vscode/src/vs/sessions/contrib/automations/browser/providerAutomationService.js +104 -420
  97. package/vscode/src/vs/sessions/contrib/changes/browser/changes.contribution.js +15 -14
  98. package/vscode/src/vs/sessions/contrib/changes/browser/changesActions.d.ts +13 -3
  99. package/vscode/src/vs/sessions/contrib/changes/browser/changesActions.js +66 -43
  100. package/vscode/src/vs/sessions/contrib/changes/browser/changesMultiDiffSourceResolver.js +2 -7
  101. package/vscode/src/vs/sessions/contrib/changes/browser/changesViewActions.js +54 -59
  102. package/vscode/src/vs/sessions/contrib/changes/browser/changesetReviewActions.js +7 -7
  103. package/vscode/src/vs/sessions/contrib/changes/browser/media/changesActions.css +6 -0
  104. package/vscode/src/vs/sessions/contrib/changes/browser/sessionSyncChanges.js +25 -21
  105. package/vscode/src/vs/sessions/contrib/changes/browser/sessionsChangesAccessibilityHelp.js +21 -27
  106. package/vscode/src/vs/sessions/contrib/chat/browser/sessionChatInputToolbarDebug.js +17 -17
  107. package/vscode/src/vs/sessions/contrib/chat/browser/sessionTaskRunner.d.ts +5 -5
  108. package/vscode/src/vs/sessions/contrib/chat/browser/sessionTaskRunner.js +2 -2
  109. package/vscode/src/vs/sessions/contrib/chatDebug/browser/chatDebug.contribution.js +2 -2
  110. package/vscode/src/vs/sessions/contrib/codeReview/browser/codeReview.contributions.js +9 -16
  111. package/vscode/src/vs/sessions/contrib/customViewTest/browser/customViewTest.contribution.js +7 -7
  112. package/vscode/src/vs/sessions/contrib/editor/browser/addTabActions.js +10 -10
  113. package/vscode/src/vs/sessions/contrib/editor/browser/editor.contribution.d.ts +13 -1
  114. package/vscode/src/vs/sessions/contrib/editor/browser/editor.contribution.js +104 -117
  115. package/vscode/src/vs/sessions/contrib/editor/browser/emptyFileEditor.contribution.js +8 -7
  116. package/vscode/src/vs/sessions/contrib/editor/browser/emptyFileEditor.js +5 -5
  117. package/vscode/src/vs/sessions/contrib/editor/browser/emptyFileEditorInput.js +1 -1
  118. package/vscode/src/vs/sessions/contrib/editor/browser/media/editorBreadcrumbs.css +0 -1
  119. package/vscode/src/vs/sessions/contrib/editor/browser/media/editorHeader.css +1 -1
  120. package/vscode/src/vs/sessions/contrib/files/browser/files.contribution.d.ts +7 -0
  121. package/vscode/src/vs/sessions/contrib/files/browser/files.contribution.js +77 -13
  122. package/vscode/src/vs/sessions/contrib/files/browser/filesView.d.ts +2 -1
  123. package/vscode/src/vs/sessions/contrib/files/browser/filesView.js +14 -4
  124. package/vscode/src/vs/sessions/contrib/layout/browser/baseSessionLayoutController.d.ts +45 -10
  125. package/vscode/src/vs/sessions/contrib/layout/browser/baseSessionLayoutController.js +527 -77
  126. package/vscode/src/vs/sessions/contrib/layout/browser/chatLayoutOwnerKeys.d.ts +18 -0
  127. package/vscode/src/vs/sessions/contrib/layout/browser/chatLayoutOwnerKeys.js +95 -0
  128. package/vscode/src/vs/sessions/contrib/layout/browser/{singlePane/singlePaneDetailPanelCoordinator.d.ts → desktop/desktopDetailPanelCoordinator.d.ts} +5 -4
  129. package/vscode/src/vs/sessions/contrib/layout/browser/{singlePane/singlePaneDetailPanelCoordinator.js → desktop/desktopDetailPanelCoordinator.js} +10 -7
  130. package/vscode/src/vs/sessions/contrib/layout/browser/{singlePane/singlePaneDockedTabsCoordinator.d.ts → desktop/desktopDockedTabsCoordinator.d.ts} +15 -12
  131. package/vscode/src/vs/sessions/contrib/layout/browser/{singlePane/singlePaneDockedTabsCoordinator.js → desktop/desktopDockedTabsCoordinator.js} +91 -44
  132. package/vscode/src/vs/sessions/contrib/layout/browser/{singlePane/singlePaneDraftSessionStrategy.d.ts → desktop/desktopDraftSessionStrategy.d.ts} +10 -5
  133. package/vscode/src/vs/sessions/contrib/layout/browser/{singlePane/singlePaneDraftSessionStrategy.js → desktop/desktopDraftSessionStrategy.js} +95 -22
  134. package/vscode/src/vs/sessions/contrib/layout/browser/{singlePane/singlePaneExistingSessionStrategy.d.ts → desktop/desktopExistingSessionStrategy.d.ts} +13 -11
  135. package/vscode/src/vs/sessions/contrib/layout/browser/{singlePane/singlePaneExistingSessionStrategy.js → desktop/desktopExistingSessionStrategy.js} +137 -57
  136. package/vscode/src/vs/sessions/contrib/layout/browser/{singlePane/singlePaneLayoutStrategy.d.ts → desktop/desktopLayoutStrategy.d.ts} +22 -13
  137. package/vscode/src/vs/sessions/contrib/layout/browser/{singlePane/singlePaneLayoutStrategy.js → desktop/desktopLayoutStrategy.js} +2 -2
  138. package/vscode/src/vs/sessions/contrib/layout/browser/desktop/desktopOwnerCompositionStore.d.ts +22 -0
  139. package/vscode/src/vs/sessions/contrib/layout/browser/desktop/desktopOwnerCompositionStore.js +136 -0
  140. package/vscode/src/vs/sessions/contrib/layout/browser/{singlePane/singlePaneSharedHelpers.d.ts → desktop/desktopSharedHelpers.d.ts} +9 -2
  141. package/vscode/src/vs/sessions/contrib/layout/browser/desktop/desktopSharedHelpers.js +56 -0
  142. package/vscode/src/vs/sessions/contrib/layout/browser/{singlePane/singlePaneVisibilityProfileStore.d.ts → desktop/desktopVisibilityProfileStore.d.ts} +3 -2
  143. package/vscode/src/vs/sessions/contrib/layout/browser/{singlePane/singlePaneVisibilityProfileStore.js → desktop/desktopVisibilityProfileStore.js} +10 -9
  144. package/vscode/src/vs/sessions/contrib/layout/browser/desktopLayoutController.d.ts +71 -0
  145. package/vscode/src/vs/sessions/contrib/layout/browser/desktopLayoutController.js +201 -0
  146. package/vscode/src/vs/sessions/contrib/layout/browser/sessions.layout.contribution.d.ts +8 -1
  147. package/vscode/src/vs/sessions/contrib/layout/browser/sessions.layout.contribution.js +35 -35
  148. package/vscode/src/vs/sessions/contrib/layout/common/sessionEditorWorkingSet.d.ts +39 -0
  149. package/vscode/src/vs/sessions/contrib/layout/common/sessionEditorWorkingSet.js +73 -0
  150. package/vscode/src/vs/sessions/contrib/onboardingTours/browser/newSessionTourContribution.d.ts +42 -1
  151. package/vscode/src/vs/sessions/contrib/onboardingTours/browser/newSessionTourContribution.js +14 -10
  152. package/vscode/src/vs/sessions/contrib/onboardingTours/browser/newSessionViewTourContribution.js +3 -4
  153. package/vscode/src/vs/sessions/contrib/onboardingTours/browser/newSessionViewTourTrigger.d.ts +2 -2
  154. package/vscode/src/vs/sessions/contrib/onboardingTours/browser/newSessionViewTourTrigger.js +13 -9
  155. package/vscode/src/vs/sessions/contrib/onboardingTours/browser/newSessionViewV2TourContribution.js +20 -5
  156. package/vscode/src/vs/sessions/contrib/onboardingTours/browser/newSessionViewV2TourVariation.d.ts +8 -0
  157. package/vscode/src/vs/sessions/contrib/onboardingTours/browser/newSessionViewV2TourVariation.js +19 -0
  158. package/vscode/src/vs/sessions/contrib/onboardingTours/browser/newSessionViewV3Prompt.js +21 -20
  159. package/vscode/src/vs/sessions/contrib/onboardingTours/browser/tours/newSessionTour.js +10 -5
  160. package/vscode/src/vs/sessions/contrib/onboardingTours/browser/tours/newSessionViewTour.js +12 -8
  161. package/vscode/src/vs/sessions/contrib/onboardingTours/browser/tours/newSessionViewTourShared.d.ts +3 -1
  162. package/vscode/src/vs/sessions/contrib/onboardingTours/browser/tours/newSessionViewTourShared.js +12 -7
  163. package/vscode/src/vs/sessions/contrib/onboardingTours/browser/tours/newSessionViewV2Tour.d.ts +9 -1
  164. package/vscode/src/vs/sessions/contrib/onboardingTours/browser/tours/newSessionViewV2Tour.js +46 -19
  165. package/vscode/src/vs/sessions/contrib/onboardingTours/browser/tours/newSessionViewV3Tour.js +2 -0
  166. package/vscode/src/vs/sessions/contrib/policyBlocked/browser/media/sessionsPolicyBlocked.css +33 -0
  167. package/vscode/src/vs/sessions/contrib/policyBlocked/browser/policyBlocked.contribution.d.ts +4 -2
  168. package/vscode/src/vs/sessions/contrib/policyBlocked/browser/policyBlocked.contribution.js +29 -8
  169. package/vscode/src/vs/sessions/contrib/policyBlocked/browser/sessionsPolicyBlocked.d.ts +15 -2
  170. package/vscode/src/vs/sessions/contrib/policyBlocked/browser/sessionsPolicyBlocked.js +169 -32
  171. package/vscode/src/vs/sessions/contrib/providers/agentHost/browser/agentHostForkActions.js +30 -8
  172. package/vscode/src/vs/sessions/contrib/providers/agentHost/browser/agentHostSessionBranchActions.js +8 -34
  173. package/vscode/src/vs/sessions/contrib/providers/agentHost/browser/agentMergeActions.js +63 -49
  174. package/vscode/src/vs/sessions/contrib/providers/agentHost/browser/exportDebugLogsAction.js +1 -1
  175. package/vscode/src/vs/sessions/contrib/providers/agentHost/browser/mobile/mobileChatInputConfigPicker.js +31 -17
  176. package/vscode/src/vs/sessions/contrib/providers/remoteAgentHost/browser/connectionDiagnostics.contribution.d.ts +32 -0
  177. package/vscode/src/vs/sessions/contrib/providers/remoteAgentHost/browser/connectionDiagnostics.contribution.js +250 -0
  178. package/vscode/src/vs/sessions/contrib/providers/remoteAgentHost/browser/connectionDiagnosticsLogs.d.ts +6 -0
  179. package/vscode/src/vs/sessions/contrib/providers/remoteAgentHost/browser/connectionDiagnosticsLogs.js +52 -0
  180. package/vscode/src/vs/sessions/contrib/providers/remoteAgentHost/browser/connectionDiagnosticsReport.d.ts +51 -0
  181. package/vscode/src/vs/sessions/contrib/providers/remoteAgentHost/browser/connectionDiagnosticsReport.js +439 -0
  182. package/vscode/src/vs/sessions/contrib/providers/remoteAgentHost/browser/connectionDiagnosticsService.d.ts +45 -0
  183. package/vscode/src/vs/sessions/contrib/providers/remoteAgentHost/browser/connectionDiagnosticsService.js +595 -0
  184. package/vscode/src/vs/sessions/contrib/providers/remoteAgentHost/browser/devContainerAgentHostService.d.ts +20 -3
  185. package/vscode/src/vs/sessions/contrib/providers/remoteAgentHost/browser/devContainerAgentHostService.js +360 -46
  186. package/vscode/src/vs/sessions/contrib/providers/remoteAgentHost/browser/devContainerSource.d.ts +9 -0
  187. package/vscode/src/vs/sessions/contrib/providers/remoteAgentHost/browser/devContainerSource.js +59 -0
  188. package/vscode/src/vs/sessions/contrib/providers/remoteAgentHost/browser/media/connectionDiagnostics.css +201 -0
  189. package/vscode/src/vs/sessions/contrib/remoteSessions/browser/getRemoteSessionTool.d.ts +10 -0
  190. package/vscode/src/vs/sessions/contrib/remoteSessions/browser/getRemoteSessionTool.js +70 -0
  191. package/vscode/src/vs/sessions/contrib/remoteSessions/browser/remoteSessionChatService.d.ts +20 -0
  192. package/vscode/src/vs/sessions/contrib/remoteSessions/browser/remoteSessionChatService.js +104 -0
  193. package/vscode/src/vs/sessions/contrib/remoteSessions/browser/remoteSessionInspector.d.ts +15 -0
  194. package/vscode/src/vs/sessions/contrib/remoteSessions/browser/remoteSessionInspector.js +152 -0
  195. package/vscode/src/vs/sessions/contrib/remoteSessions/browser/remoteSessionMessageRouter.d.ts +49 -0
  196. package/vscode/src/vs/sessions/contrib/remoteSessions/browser/remoteSessionMessageRouter.js +340 -0
  197. package/vscode/src/vs/sessions/contrib/remoteSessions/browser/remoteSessionService.d.ts +41 -0
  198. package/vscode/src/vs/sessions/contrib/remoteSessions/browser/remoteSessionService.js +400 -0
  199. package/vscode/src/vs/sessions/contrib/remoteSessions/browser/remoteSessionSource.d.ts +28 -0
  200. package/vscode/src/vs/sessions/contrib/remoteSessions/browser/remoteSessionSource.js +178 -0
  201. package/vscode/src/vs/sessions/contrib/remoteSessions/browser/remoteSessionTools.d.ts +17 -0
  202. package/vscode/src/vs/sessions/contrib/remoteSessions/browser/remoteSessionTools.js +206 -0
  203. package/vscode/src/vs/sessions/contrib/remoteSessions/browser/remoteSessions.contribution.d.ts +1 -0
  204. package/vscode/src/vs/sessions/contrib/remoteSessions/browser/remoteSessions.contribution.js +58 -0
  205. package/vscode/src/vs/sessions/contrib/remoteSessions/browser/sendRemoteMessageTool.d.ts +10 -0
  206. package/vscode/src/vs/sessions/contrib/remoteSessions/browser/sendRemoteMessageTool.js +90 -0
  207. package/vscode/src/vs/sessions/contrib/remoteSessions/common/remoteSessionInspection.d.ts +38 -0
  208. package/vscode/src/vs/sessions/contrib/remoteSessions/common/remoteSessionInspection.js +58 -0
  209. package/vscode/src/vs/sessions/contrib/search/browser/search.contribution.js +4 -5
  210. package/vscode/src/vs/sessions/contrib/search/browser/searchEditorEmptyState.contribution.js +1 -1
  211. package/vscode/src/vs/sessions/contrib/sessionComparison/browser/sessionComparison.contribution.d.ts +1 -0
  212. package/vscode/src/vs/sessions/contrib/sessionComparison/browser/sessionComparison.contribution.js +33 -0
  213. package/vscode/src/vs/sessions/contrib/sessionComparison/browser/sessionComparisonGridController.d.ts +30 -0
  214. package/vscode/src/vs/sessions/contrib/sessionComparison/browser/sessionComparisonGridController.js +190 -0
  215. package/vscode/src/vs/sessions/contrib/sessionComparison/browser/sessionComparisonTool.d.ts +31 -0
  216. package/vscode/src/vs/sessions/contrib/sessionComparison/browser/sessionComparisonTool.js +559 -0
  217. package/vscode/src/vs/sessions/contrib/sessionComparison/browser/sessionComparisonViewService.d.ts +12 -0
  218. package/vscode/src/vs/sessions/contrib/sessionComparison/browser/sessionComparisonViewService.js +38 -0
  219. package/vscode/src/vs/sessions/contrib/sessions/browser/blockedSessionsIndicatorModel.d.ts +13 -4
  220. package/vscode/src/vs/sessions/contrib/sessions/browser/blockedSessionsIndicatorModel.js +155 -22
  221. package/vscode/src/vs/sessions/contrib/sessions/browser/blockedSessionsList.js +9 -5
  222. package/vscode/src/vs/sessions/contrib/sessions/browser/media/automationsCards.css +90 -25
  223. package/vscode/src/vs/sessions/contrib/sessions/browser/media/sessionsTitleBarWidget.css +21 -4
  224. package/vscode/src/vs/sessions/contrib/sessions/browser/sessionDetailsAction.d.ts +2 -1
  225. package/vscode/src/vs/sessions/contrib/sessions/browser/sessionDetailsAction.js +11 -7
  226. package/vscode/src/vs/sessions/contrib/sessions/browser/sessions.contribution.d.ts +116 -1
  227. package/vscode/src/vs/sessions/contrib/sessions/browser/sessions.contribution.js +126 -30
  228. package/vscode/src/vs/sessions/contrib/sessions/browser/sessionsAccountTelemetry.d.ts +26 -0
  229. package/vscode/src/vs/sessions/contrib/sessions/browser/sessionsAccountTelemetry.js +160 -0
  230. package/vscode/src/vs/sessions/contrib/sessions/browser/sessionsActions.d.ts +14 -6
  231. package/vscode/src/vs/sessions/contrib/sessions/browser/sessionsActions.js +555 -151
  232. package/vscode/src/vs/sessions/contrib/sessions/browser/sessionsLifecycleTracker.d.ts +192 -0
  233. package/vscode/src/vs/sessions/contrib/sessions/browser/sessionsLifecycleTracker.js +510 -0
  234. package/vscode/src/vs/sessions/contrib/sessions/browser/sessionsTelemetry.contribution.d.ts +6 -7
  235. package/vscode/src/vs/sessions/contrib/sessions/browser/sessionsTelemetry.contribution.js +64 -57
  236. package/vscode/src/vs/sessions/contrib/sessions/browser/sessionsTitleBarWidget.d.ts +5 -3
  237. package/vscode/src/vs/sessions/contrib/sessions/browser/sessionsTitleBarWidget.js +83 -51
  238. package/vscode/src/vs/sessions/contrib/sessions/browser/sessionsWindowNotifier.d.ts +5 -1
  239. package/vscode/src/vs/sessions/contrib/sessions/browser/sessionsWindowNotifier.js +33 -12
  240. package/vscode/src/vs/sessions/contrib/sessions/browser/views/automationCataloguePresentation.d.ts +3 -0
  241. package/vscode/src/vs/sessions/contrib/sessions/browser/views/automationCataloguePresentation.js +53 -0
  242. package/vscode/src/vs/sessions/contrib/sessions/browser/views/automationTemplates.js +10 -10
  243. package/vscode/src/vs/sessions/contrib/sessions/browser/views/automationsAccessibility.d.ts +2 -2
  244. package/vscode/src/vs/sessions/contrib/sessions/browser/views/automationsAccessibility.js +103 -55
  245. package/vscode/src/vs/sessions/contrib/sessions/browser/views/automationsView.d.ts +7 -1
  246. package/vscode/src/vs/sessions/contrib/sessions/browser/views/automationsView.js +679 -325
  247. package/vscode/src/vs/sessions/contrib/sessions/browser/views/sessionsViewActions.d.ts +27 -1
  248. package/vscode/src/vs/sessions/contrib/sessions/browser/views/sessionsViewActions.js +508 -163
  249. package/vscode/src/vs/sessions/contrib/terminal/browser/agentHostSessionTaskRunner.d.ts +20 -2
  250. package/vscode/src/vs/sessions/contrib/terminal/browser/agentHostSessionTaskRunner.js +100 -17
  251. package/vscode/src/vs/sessions/contrib/terminal/browser/sessionsTerminalContribution.d.ts +5 -1
  252. package/vscode/src/vs/sessions/contrib/terminal/browser/sessionsTerminalContribution.js +108 -30
  253. package/vscode/src/vs/sessions/contrib/workspace/browser/workspaceFolderManagement.d.ts +5 -3
  254. package/vscode/src/vs/sessions/contrib/workspace/browser/workspaceFolderManagement.js +47 -35
  255. package/vscode/src/vs/sessions/services/agentHostFilter/browser/agentHostFilterService.d.ts +9 -4
  256. package/vscode/src/vs/sessions/services/agentHostFilter/browser/agentHostFilterService.js +75 -25
  257. package/vscode/src/vs/sessions/services/customView/browser/customViewService.d.ts +11 -4
  258. package/vscode/src/vs/sessions/services/customView/browser/customViewService.js +17 -9
  259. package/vscode/src/vs/sessions/services/sessions/browser/closedItemHistory.d.ts +5 -0
  260. package/vscode/src/vs/sessions/services/sessions/browser/closedItemHistory.js +20 -2
  261. package/vscode/src/vs/sessions/services/sessions/browser/sessionComparisonService.d.ts +75 -0
  262. package/vscode/src/vs/sessions/services/sessions/browser/sessionComparisonService.js +1135 -0
  263. package/vscode/src/vs/sessions/services/sessions/browser/sessionGridState.d.ts +17 -0
  264. package/vscode/src/vs/sessions/services/sessions/browser/sessionGridState.js +99 -0
  265. package/vscode/src/vs/sessions/services/sessions/browser/sessionGroupsService.d.ts +4 -0
  266. package/vscode/src/vs/sessions/services/sessions/browser/sessionGroupsService.js +88 -23
  267. package/vscode/src/vs/sessions/services/sessions/browser/sessionNavigation.d.ts +19 -26
  268. package/vscode/src/vs/sessions/services/sessions/browser/sessionNavigation.js +115 -74
  269. package/vscode/src/vs/sessions/services/sessions/browser/sessionsListModelService.js +1 -1
  270. package/vscode/src/vs/sessions/services/sessions/browser/sessionsManagementService.d.ts +22 -7
  271. package/vscode/src/vs/sessions/services/sessions/browser/sessionsManagementService.js +278 -60
  272. package/vscode/src/vs/sessions/services/sessions/browser/sessionsRecencyHistory.d.ts +17 -20
  273. package/vscode/src/vs/sessions/services/sessions/browser/sessionsRecencyHistory.js +33 -22
  274. package/vscode/src/vs/sessions/services/sessions/browser/sessionsService.d.ts +28 -8
  275. package/vscode/src/vs/sessions/services/sessions/browser/sessionsService.js +673 -160
  276. package/vscode/src/vs/sessions/services/sessions/browser/visibleSessions.d.ts +13 -4
  277. package/vscode/src/vs/sessions/services/sessions/browser/visibleSessions.js +105 -15
  278. package/vscode/src/vs/sessions/services/sessions/common/sessionContextKeys.js +53 -34
  279. package/vscode/src/vs/sessions/services/workspaceFolderLabel/browser/workspaceFolderLabelService.js +1 -1
  280. package/vscode/src/vs/workbench/browser/layout.js +1 -1
  281. package/vscode/src/vs/workbench/browser/workbench.d.ts +0 -2
  282. package/vscode/src/vs/workbench/browser/workbench.js +23 -20
  283. package/vscode/src/vs/workbench/contrib/chat/common/automations/schedule.d.ts +6 -0
  284. package/vscode/src/vs/workbench/contrib/chat/common/automations/schedule.js +41 -0
  285. package/vscode/src/vs/workbench/contrib/chat/common/chatUsage.d.ts +15 -0
  286. package/vscode/src/vs/workbench/contrib/chat/common/chatUsage.js +56 -0
  287. package/vscode/src/vs/platform/agentHost/common/meta/agentCheckoutOperationMeta.d.ts +0 -18
  288. package/vscode/src/vs/platform/agentHost/common/meta/agentCheckoutOperationMeta.js +0 -27
  289. package/vscode/src/vs/sessions/browser/parts/singlePaneAuxiliaryBarPart.js +0 -36
  290. package/vscode/src/vs/sessions/contrib/automations/browser/automationLeaderElection.d.ts +0 -37
  291. package/vscode/src/vs/sessions/contrib/automations/browser/automationLeaderElection.js +0 -126
  292. package/vscode/src/vs/sessions/contrib/automations/browser/automationScheduler.d.ts +0 -59
  293. package/vscode/src/vs/sessions/contrib/automations/browser/automationScheduler.js +0 -232
  294. package/vscode/src/vs/sessions/contrib/automations/browser/automationStorageService.d.ts +0 -13
  295. package/vscode/src/vs/sessions/contrib/automations/browser/automationStorageService.js +0 -22
  296. package/vscode/src/vs/sessions/contrib/blockedSessions/browser/blockedSessions.d.ts +0 -45
  297. package/vscode/src/vs/sessions/contrib/blockedSessions/browser/blockedSessions.js +0 -110
  298. package/vscode/src/vs/sessions/contrib/layout/browser/desktopSessionLayoutController.d.ts +0 -112
  299. package/vscode/src/vs/sessions/contrib/layout/browser/desktopSessionLayoutController.js +0 -444
  300. package/vscode/src/vs/sessions/contrib/layout/browser/singlePane/singlePaneSharedHelpers.js +0 -43
  301. package/vscode/src/vs/sessions/contrib/layout/browser/singlePaneLayoutController.d.ts +0 -55
  302. package/vscode/src/vs/sessions/contrib/layout/browser/singlePaneLayoutController.js +0 -91
  303. package/vscode/src/vs/sessions/contrib/providers/agentHost/browser/agentHostClaudePermissionModePicker.d.ts +0 -26
  304. package/vscode/src/vs/sessions/contrib/providers/agentHost/browser/agentHostClaudePermissionModePicker.js +0 -98
  305. package/vscode/src/vs/sessions/contrib/providers/agentHost/browser/agentHostCodexApprovalsPicker.d.ts +0 -33
  306. package/vscode/src/vs/sessions/contrib/providers/agentHost/browser/agentHostCodexApprovalsPicker.js +0 -98
  307. package/vscode/src/vs/sessions/contrib/providers/agentHost/browser/agentHostModeIcon.d.ts +0 -2
  308. package/vscode/src/vs/sessions/contrib/providers/agentHost/browser/agentHostModeIcon.js +0 -13
  309. package/vscode/src/vs/sessions/contrib/providers/agentHost/browser/agentHostModePicker.d.ts +0 -122
  310. package/vscode/src/vs/sessions/contrib/providers/agentHost/browser/agentHostModePicker.js +0 -464
  311. package/vscode/src/vs/sessions/contrib/providers/agentHost/browser/agentHostPermissionPickerActionItem.d.ts +0 -35
  312. package/vscode/src/vs/sessions/contrib/providers/agentHost/browser/agentHostPermissionPickerActionItem.js +0 -90
  313. package/vscode/src/vs/sessions/contrib/providers/agentHost/browser/agentHostPermissionPickerDelegate.d.ts +0 -84
  314. package/vscode/src/vs/sessions/contrib/providers/agentHost/browser/agentHostPermissionPickerDelegate.js +0 -328
  315. package/vscode/src/vs/sessions/contrib/providers/agentHost/browser/agentHostSessionConfigPicker.d.ts +0 -174
  316. package/vscode/src/vs/sessions/contrib/providers/agentHost/browser/agentHostSessionConfigPicker.js +0 -1390
  317. package/vscode/src/vs/sessions/contrib/providers/agentHost/browser/media/agentHostSessionConfigPicker.css +0 -44
  318. package/vscode/src/vs/sessions/contrib/providers/agentHost/browser/mobile/mobileAgentHostModePicker.d.ts +0 -30
  319. package/vscode/src/vs/sessions/contrib/providers/agentHost/browser/mobile/mobileAgentHostModePicker.js +0 -78
  320. package/vscode/src/vs/sessions/contrib/providers/agentHost/browser/mobile/mobileChatPhoneInputTarget.d.ts +0 -11
  321. package/vscode/src/vs/sessions/contrib/providers/agentHost/browser/mobile/mobileChatPhoneInputTarget.js +0 -26
  322. package/vscode/src/vs/sessions/contrib/providers/remoteAgentHost/browser/remoteAgentHostConnectionCustomization.d.ts +0 -27
  323. package/vscode/src/vs/sessions/contrib/providers/remoteAgentHost/browser/remoteAgentHostConnectionCustomization.js +0 -26
@@ -1,16 +1,20 @@
1
1
 
2
2
  import { registerCss } from '@codingame/monaco-vscode-api/css';
3
3
  import { __decorate, __param } from '@codingame/monaco-vscode-api/external/tslib/tslib.es6';
4
+ import { raceCancellationError } from '@codingame/monaco-vscode-api/vscode/vs/base/common/async';
5
+ import { CancellationTokenSource } from '@codingame/monaco-vscode-api/vscode/vs/base/common/cancellation';
4
6
  import { Codicon } from '@codingame/monaco-vscode-api/vscode/vs/base/common/codicons';
5
7
  import { fromNow } from '@codingame/monaco-vscode-api/vscode/vs/base/common/date';
6
- import { onUnexpectedError } from '@codingame/monaco-vscode-api/vscode/vs/base/common/errors';
8
+ import { onUnexpectedError, isCancellationError } from '@codingame/monaco-vscode-api/vscode/vs/base/common/errors';
7
9
  import { KeyMod, KeyCode, KeyChord } from '@codingame/monaco-vscode-api/vscode/vs/base/common/keyCodes';
8
- import { DisposableStore, toDisposable, Disposable } from '@codingame/monaco-vscode-api/vscode/vs/base/common/lifecycle';
10
+ import { DisposableStore, toDisposable, Disposable, MutableDisposable } from '@codingame/monaco-vscode-api/vscode/vs/base/common/lifecycle';
9
11
  import '@codingame/monaco-vscode-api/vscode/vs/base/common/observableInternal/index';
10
12
  import { Event, Emitter } from '@codingame/monaco-vscode-api/vscode/vs/base/common/event';
11
13
  import { ThemeIcon } from '@codingame/monaco-vscode-api/vscode/vs/base/common/themables';
14
+ import { hasKey } from '@codingame/monaco-vscode-api/vscode/vs/base/common/types';
15
+ import { EditorContextKeys } from '@codingame/monaco-vscode-api/vscode/vs/editor/common/editorContextKeys';
12
16
  import { localize2, localize } from '@codingame/monaco-vscode-api/vscode/vs/nls';
13
- import { registerAction2, Action2, MenuId, MenuItemAction, MenuRegistry } from '@codingame/monaco-vscode-api/vscode/vs/platform/actions/common/actions';
17
+ import { registerAction2, Action2, MenuRegistry, MenuId, MenuItemAction } from '@codingame/monaco-vscode-api/vscode/vs/platform/actions/common/actions';
14
18
  import { IActionViewItemService } from '@codingame/monaco-vscode-api/vscode/vs/platform/actions/browser/actionViewItemService.service';
15
19
  import { ICommandService } from '@codingame/monaco-vscode-api/vscode/vs/platform/commands/common/commands.service';
16
20
  import { isConfigured } from '@codingame/monaco-vscode-api/vscode/vs/platform/configuration/common/configuration';
@@ -30,15 +34,14 @@ import { Parts } from '@codingame/monaco-vscode-api/vscode/vs/workbench/services
30
34
  import { IWorkbenchLayoutService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/services/layout/browser/layoutService.service';
31
35
  import { IViewsService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/services/views/common/viewsService.service';
32
36
  import { getQuickNavigateHandler, inQuickPickContext } from '@codingame/monaco-vscode-api/vscode/vs/workbench/browser/quickaccess';
33
- import { ChatContextKeys } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/actions/chatContextKeys';
34
37
  import { Menus } from '@codingame/monaco-vscode-api/vscode/vs/sessions/browser/menus';
35
38
  import { SessionsCategories } from '@codingame/monaco-vscode-api/vscode/vs/sessions/common/categories';
36
- import { SessionsPickerVisibleContext, SessionsWelcomeVisibleContext, CanGoBackContext, CanGoForwardContext, SessionsFocusContext, SessionFocusedChatIsRenameTargetContext, SessionIsCreatedContext, SessionSupportsMultipleChatsContext, IsQuickChatSessionContext, SessionIsArchivedContext, SessionHasMultipleOpenChatsContext, SessionActiveChatIsClosableContext, SessionActiveChatIsDeletableContext, SessionsHasClosedItemContext, SessionsEditorScopeContext, SessionChatsPickerVisibleContext, SessionHasMultipleCommittedChatsContext, SessionsTitleBarNewSessionEnabledContext, SessionIdContext, SessionHasSideChatsContext, SessionIsStickyContext, SessionProviderIdContext, SessionSupportsRenameContext, MultipleSessionsVisibleContext, SessionIsMaximizedContext } from '@codingame/monaco-vscode-api/vscode/vs/sessions/common/contextkeys';
39
+ import { SessionsPickerVisibleContext, SessionsWelcomeVisibleContext, CanGoBackContext, CanGoForwardContext, SessionsFocusContext, SessionHeaderShowsChatContext, SessionFocusedChatIsRenameTargetContext, SessionIsCreatedContext, SessionIsArchivedContext, SessionsListPromoteNewChatActionContext, SessionSupportsMultipleChatsContext, IsQuickChatSessionContext, SessionItemIsMultiSelectionContext, SessionHasMultipleOpenChatsContext, SessionActiveChatIsClosableContext, SessionHeaderTargetsChatContext, SessionActiveChatIsDeletableContext, SessionActiveChatIsUntitledContext, SessionsHasClosedItemContext, SessionsEditorScopeContext, SessionChatsPickerVisibleContext, SessionHasMultipleCommittedChatsContext, SessionsTitleBarNewSessionEnabledContext, SessionIdContext, SessionActiveChatHasSideChatsContext, SessionActiveChatResourceContext, SessionIsStickyContext, SessionHeaderActiveChatIsPinnedContext, SessionProviderIdContext, SessionSupportsRenameContext, MultipleSessionsVisibleContext, SessionToolbarShowsSessionContext, IsNewChatSessionContext, IsPhoneLayoutContext, SessionIsMaximizedContext } from '@codingame/monaco-vscode-api/vscode/vs/sessions/common/contextkeys';
37
40
  import { ANY_AGENT_HOST_PROVIDER_RE } from '@codingame/monaco-vscode-api/vscode/vs/sessions/common/agentHostSessionsProvider';
38
- import { FOCUS_ACTIVE_SESSION_COMMAND_ID, FOCUS_PREVIOUS_CHAT_GROUP_COMMAND_ID, FOCUS_NEXT_CHAT_GROUP_COMMAND_ID, SPLIT_CHAT_GROUP_RIGHT_COMMAND_ID, SPLIT_CHAT_GROUP_DOWN_COMMAND_ID, MOVE_CHAT_TO_PREVIOUS_GROUP_COMMAND_ID, MOVE_CHAT_TO_NEXT_GROUP_COMMAND_ID, RENAME_CHAT_COMMAND_ID, CLOSE_CHAT_COMMAND_ID, RENAME_SESSION_COMMAND_ID } from '@codingame/monaco-vscode-api/vscode/vs/sessions/common/sessionCommands';
41
+ import { FOCUS_ACTIVE_SESSION_COMMAND_ID, FOCUS_PREVIOUS_CHAT_GROUP_COMMAND_ID, FOCUS_NEXT_CHAT_GROUP_COMMAND_ID, SPLIT_CHAT_GROUP_RIGHT_COMMAND_ID, SPLIT_CHAT_GROUP_DOWN_COMMAND_ID, MOVE_CHAT_TO_PREVIOUS_GROUP_COMMAND_ID, MOVE_CHAT_TO_NEXT_GROUP_COMMAND_ID, RENAME_CHAT_COMMAND_ID, CLOSE_CHAT_COMMAND_ID, TOGGLE_PIN_SESSION_COMMAND_ID, TOGGLE_PIN_CHAT_COMMAND_ID, RENAME_SESSION_COMMAND_ID, CLOSE_SESSION_COMMAND_ID, ARRANGE_SESSIONS_COMMAND_ID, SESSION_GRID_FOCUS_COMMANDS } from '@codingame/monaco-vscode-api/vscode/vs/sessions/common/sessionCommands';
39
42
  import { ISessionsManagementService } from '@codingame/monaco-vscode-api/vscode/vs/sessions/services/sessions/common/sessionsManagement.service';
40
43
  import { ISessionsService } from '@codingame/monaco-vscode-api/vscode/vs/sessions/services/sessions/browser/sessionsService.service';
41
- import { getUntitledSessionTitle, getGitHubPullRequestRefs, SessionStatus, getChatCapabilities, ChatOriginKind } from '@codingame/monaco-vscode-api/vscode/vs/sessions/services/sessions/common/session';
44
+ import { getUntitledSessionTitle, getGitHubPullRequestRefs, SessionStatus, getChatCapabilities, ChatOriginKind, isSideChatOf } from '@codingame/monaco-vscode-api/vscode/vs/sessions/services/sessions/common/session';
42
45
  import { ISessionsPartService } from '@codingame/monaco-vscode-api/vscode/vs/sessions/services/sessions/browser/sessionsPartService.service';
43
46
  import { ISessionsListModelService } from '@codingame/monaco-vscode-api/vscode/vs/sessions/services/sessions/browser/sessionsListModelService.service';
44
47
  import { EventHelper, isMouseEvent, $, reset, append, ModifierKeyEmitter } from '@codingame/monaco-vscode-api/vscode/vs/base/browser/dom';
@@ -65,21 +68,25 @@ import '@codingame/monaco-vscode-api/vscode/vs/platform/theme/common/colors/sear
65
68
  import { defaultButtonStyles } from '@codingame/monaco-vscode-api/vscode/vs/platform/theme/browser/defaultStyles';
66
69
  import { markOnboardingTarget } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/onboarding/browser/spotlight/onboardingTarget';
67
70
  import { IWorkbenchAssignmentService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/services/assignment/common/assignmentService.service';
68
- import { agentsNewSessionButtonBorder, agentsNewSessionButtonHoverBackground, agentsNewSessionButtonForeground, agentsNewSessionButtonBackground } from '@codingame/monaco-vscode-api/vscode/vs/sessions/common/theme';
71
+ import { registerViewNavigationCommand } from '@codingame/monaco-vscode-api/vscode/vs/workbench/browser/actions/navigationActions';
72
+ import { agentsNewSessionButtonBorder, agentsNewSessionButtonHoverBackground, agentsNewSessionButtonForeground, agentsNewSessionButtonBackground } from '@codingame/monaco-vscode-api/vscode/vs/workbench/common/agentsColors';
69
73
  import { logSessionsInteraction } from '@codingame/monaco-vscode-api/vscode/vs/sessions/common/sessionsTelemetry';
70
74
  import { NEW_SESSION_ACTION_ID } from '@codingame/monaco-vscode-api/vscode/vs/sessions/contrib/chat/common/constants';
71
75
  import { groupSessionsForPicker } from './sessionsPicker.js';
72
- import { SESSION_CONVERSATION_SIDE_CHATS_GROUP, getSessionConversationActionId, isSessionConversationSideChat } from '@codingame/monaco-vscode-api/vscode/vs/sessions/browser/sessionConversationGroups';
73
- import { SessionsListFocusedChatItemContext, SessionChatItemCanRenameContext, SessionChatItemIsUntitledContext, SessionChatItemCanDeleteContext } from '@codingame/monaco-vscode-api/vscode/vs/sessions/contrib/sessions/browser/views/sessionsList';
76
+ import { SESSION_CONVERSATION_SIDE_CHATS_GROUP, getSessionConversationActionId } from '@codingame/monaco-vscode-api/vscode/vs/sessions/browser/sessionConversationGroups';
77
+ import { SessionChatItemCanRenameContext, SessionChatItemIsUntitledContext, SessionsListFocusedChatItemContext, SessionChatItemCanDeleteContext, SessionItemInExternalSectionContext } from '@codingame/monaco-vscode-api/vscode/vs/sessions/contrib/sessions/browser/views/sessionsList';
74
78
  import { SessionsViewId } from '@codingame/monaco-vscode-api/vscode/vs/sessions/contrib/sessions/browser/views/sessionsView';
75
79
  import * as newSessionActionViewItem from './media/newSessionActionViewItem.css';
76
80
  import { INewSessionComposerService } from '@codingame/monaco-vscode-api/vscode/vs/sessions/contrib/chat/browser/newSessionComposerService.service';
81
+ import { SESSIONS_CHAT_TABS_SETTING, SessionsChatTabsMode } from '@codingame/monaco-vscode-api/vscode/vs/sessions/common/sessionConfig';
82
+ import { Direction } from '@codingame/monaco-vscode-api/vscode/vs/base/browser/ui/grid/grid';
83
+ import { ChatContextKeys } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/actions/chatContextKeys';
77
84
  import { observableSignalFromEvent } from '@codingame/monaco-vscode-api/vscode/vs/base/common/observableInternal/observables/observableSignalFromEvent';
78
85
  import { autorun } from '@codingame/monaco-vscode-api/vscode/vs/base/common/observableInternal/reactions/autorun';
79
86
  import { getHighestPriorityPullRequestIcon } from '@codingame/monaco-vscode-api/vscode/vs/workbench/common/chatPullRequest';
80
87
  import { observableValue } from '@codingame/monaco-vscode-api/vscode/vs/base/common/observableInternal/observables/observableValue';
81
88
 
82
- var NewSessionActionViewItemContribution_1;
89
+ var NewSessionActionViewItemContribution_1, SessionListActionsExperimentContribution_1;
83
90
  registerCss(newSessionActionViewItem, 1);
84
91
  const NEW_SESSION_BUTTON_STYLE_SETTING = "sessions.newSessionButton.style";
85
92
  const NEW_SESSION_BUTTON_STYLE_TREATMENT = "agentSessionsNewSessionButtonStyle";
@@ -88,7 +95,7 @@ registerAction2(class ShowSessionsPickerAction extends Action2 {
88
95
  constructor() {
89
96
  super({
90
97
  id: SHOW_SESSIONS_PICKER_COMMAND_ID,
91
- title: ( localize2(4652, "Show Sessions Picker")),
98
+ title: ( localize2(5797, "Show Sessions Picker")),
92
99
  f1: true,
93
100
  category: SessionsCategories.Sessions,
94
101
  keybinding: {
@@ -141,7 +148,7 @@ registerAction2(class ShowSessionsPickerAction extends Action2 {
141
148
  const picker = quickInputService.createQuickPick({
142
149
  useSeparators: true
143
150
  });
144
- picker.placeholder = ( localize(4653, "Search sessions by name or folder"));
151
+ picker.placeholder = ( localize(5798, "Search sessions by name or folder"));
145
152
  picker.canAcceptInBackground = true;
146
153
  picker.matchOnDetail = true;
147
154
  const disposables = ( new DisposableStore());
@@ -159,7 +166,7 @@ registerAction2(class ShowSessionsPickerAction extends Action2 {
159
166
  const sessionGroups = groupSessionsForPicker(recent, other, reader);
160
167
  const items = [{
161
168
  id: "newSession",
162
- label: `$(add) ${( localize(4654, "New Session"))}`,
169
+ label: `$(add) ${( localize(5799, "New Session"))}`,
163
170
  session: undefined
164
171
  }];
165
172
  let firstSessionItem;
@@ -177,10 +184,10 @@ registerAction2(class ShowSessionsPickerAction extends Action2 {
177
184
  items.push(item);
178
185
  }
179
186
  };
180
- appendSessions(( localize(4655, "needs input")), sessionGroups.needsInput);
181
- appendSessions(( localize(4656, "unread")), sessionGroups.unread);
182
- appendSessions(( localize(4657, "recently opened")), sessionGroups.recent);
183
- appendSessions(( localize(4658, "other sessions")), sessionGroups.other);
187
+ appendSessions(( localize(5800, "needs attention")), sessionGroups.needsInput);
188
+ appendSessions(( localize(5801, "unread")), sessionGroups.unread);
189
+ appendSessions(( localize(5802, "recently opened")), sessionGroups.recent);
190
+ appendSessions(( localize(5803, "other sessions")), sessionGroups.other);
184
191
  const activeItemId = picker.activeItems[0]?.id;
185
192
  picker.items = items;
186
193
  const activeItem = activeItemId ? items.find(item => item.type !== "separator" && item.id === activeItemId) : firstSessionItem;
@@ -199,7 +206,11 @@ registerAction2(class ShowSessionsPickerAction extends Action2 {
199
206
  return;
200
207
  }
201
208
  if (toSide && activeSessionId !== undefined && selected.session.sessionId !== activeSessionId) {
202
- sessionsService.insertAt(selected.session, activeSessionId, "right", !inBackground);
209
+ void sessionsService.openSessionsAt([selected.session], activeSessionId, "right", {
210
+ preserveFocus: inBackground,
211
+ activate: inBackground ? false : "first",
212
+ source: "sessionsList"
213
+ }).catch(onUnexpectedError);
203
214
  } else {
204
215
  sessionsService.openSession(selected.session.resource, {
205
216
  preserveFocus: inBackground,
@@ -248,15 +259,15 @@ registerAction2(class GoBackAction extends Action2 {
248
259
  super({
249
260
  id: "sessions.goBack",
250
261
  title: {
251
- ...( localize2(4659, "Go Back")),
252
- mnemonicTitle: ( localize(4660, "&&Back"))
262
+ ...( localize2(5804, "Go Back")),
263
+ mnemonicTitle: ( localize(5805, "&&Back"))
253
264
  },
254
265
  f1: true,
255
266
  icon: Codicon.arrowLeft,
256
- tooltip: ( localize(4661, "Go Back One Session")),
267
+ tooltip: ( localize(5806, "Go Back One Session")),
257
268
  category: SessionsCategories.Sessions,
258
269
  precondition: CanGoBackContext,
259
- keybinding: {
270
+ keybinding: [{
260
271
  weight: KeybindingWeight.SessionsContrib,
261
272
  win: {
262
273
  primary: KeyMod.Alt | KeyCode.LeftArrow,
@@ -268,10 +279,20 @@ registerAction2(class GoBackAction extends Action2 {
268
279
  },
269
280
  linux: {
270
281
  primary: KeyMod.CtrlCmd | KeyMod.Alt | KeyCode.Minus,
271
- secondary: [KeyCode.BrowserBack, KeyMod.CtrlCmd | KeyMod.Shift | KeyCode.Tab]
282
+ secondary: [
283
+ KeyMod.Alt | KeyCode.LeftArrow,
284
+ KeyCode.BrowserBack,
285
+ KeyMod.CtrlCmd | KeyMod.Shift | KeyCode.Tab
286
+ ]
272
287
  },
273
288
  when: ( ContextKeyExpr.and(IsSessionsWindowContext, ( EditorAreaFocusContext.toNegated())))
274
- },
289
+ }, {
290
+ weight: KeybindingWeight.SessionsContrib,
291
+ mac: {
292
+ primary: KeyMod.Alt | KeyCode.LeftArrow
293
+ },
294
+ when: ( ContextKeyExpr.and(IsSessionsWindowContext, ( EditorAreaFocusContext.toNegated()), ( InputFocusedContext.negate()), ( EditorContextKeys.textInputFocus.negate())))
295
+ }],
275
296
  menu: [{
276
297
  id: Menus.TitleBarCenterLeft,
277
298
  group: "navigation",
@@ -293,15 +314,15 @@ registerAction2(class GoForwardAction extends Action2 {
293
314
  super({
294
315
  id: "sessions.goForward",
295
316
  title: {
296
- ...( localize2(4662, "Go Forward")),
297
- mnemonicTitle: ( localize(4663, "&&Forward"))
317
+ ...( localize2(5807, "Go Forward")),
318
+ mnemonicTitle: ( localize(5808, "&&Forward"))
298
319
  },
299
320
  f1: true,
300
321
  icon: Codicon.arrowRight,
301
- tooltip: ( localize(4664, "Go Forward One Session")),
322
+ tooltip: ( localize(5809, "Go Forward One Session")),
302
323
  category: SessionsCategories.Sessions,
303
324
  precondition: CanGoForwardContext,
304
- keybinding: {
325
+ keybinding: [{
305
326
  weight: KeybindingWeight.SessionsContrib,
306
327
  win: {
307
328
  primary: KeyMod.Alt | KeyCode.RightArrow,
@@ -313,10 +334,20 @@ registerAction2(class GoForwardAction extends Action2 {
313
334
  },
314
335
  linux: {
315
336
  primary: KeyMod.CtrlCmd | KeyMod.Shift | KeyCode.Minus,
316
- secondary: [KeyCode.BrowserForward, KeyMod.CtrlCmd | KeyCode.Tab]
337
+ secondary: [
338
+ KeyMod.Alt | KeyCode.RightArrow,
339
+ KeyCode.BrowserForward,
340
+ KeyMod.CtrlCmd | KeyCode.Tab
341
+ ]
317
342
  },
318
343
  when: ( ContextKeyExpr.and(IsSessionsWindowContext, ( EditorAreaFocusContext.toNegated())))
319
- },
344
+ }, {
345
+ weight: KeybindingWeight.SessionsContrib,
346
+ mac: {
347
+ primary: KeyMod.Alt | KeyCode.RightArrow
348
+ },
349
+ when: ( ContextKeyExpr.and(IsSessionsWindowContext, ( EditorAreaFocusContext.toNegated()), ( InputFocusedContext.negate()), ( EditorContextKeys.textInputFocus.negate())))
350
+ }],
320
351
  menu: [{
321
352
  id: Menus.TitleBarCenterLeft,
322
353
  group: "navigation",
@@ -337,7 +368,7 @@ registerAction2(class FocusActiveSessionAction extends Action2 {
337
368
  constructor() {
338
369
  super({
339
370
  id: FOCUS_ACTIVE_SESSION_COMMAND_ID,
340
- title: ( localize2(4665, "Focus Active Session")),
371
+ title: ( localize2(5810, "Focus Active Session")),
341
372
  f1: true,
342
373
  category: SessionsCategories.Sessions,
343
374
  keybinding: {
@@ -372,7 +403,7 @@ registerAction2(class FocusPreviousChatGroupAction extends Action2 {
372
403
  constructor() {
373
404
  super({
374
405
  id: FOCUS_PREVIOUS_CHAT_GROUP_COMMAND_ID,
375
- title: ( localize2(4666, "Focus Previous Chat Group")),
406
+ title: ( localize2(5811, "Focus Previous Chat Group")),
376
407
  f1: true,
377
408
  category: SessionsCategories.Sessions,
378
409
  keybinding: {
@@ -390,7 +421,7 @@ registerAction2(class FocusNextChatGroupAction extends Action2 {
390
421
  constructor() {
391
422
  super({
392
423
  id: FOCUS_NEXT_CHAT_GROUP_COMMAND_ID,
393
- title: ( localize2(4667, "Focus Next Chat Group")),
424
+ title: ( localize2(5812, "Focus Next Chat Group")),
394
425
  f1: true,
395
426
  category: SessionsCategories.Sessions,
396
427
  keybinding: {
@@ -408,7 +439,7 @@ registerAction2(class SplitChatGroupRightAction extends Action2 {
408
439
  constructor() {
409
440
  super({
410
441
  id: SPLIT_CHAT_GROUP_RIGHT_COMMAND_ID,
411
- title: ( localize2(4668, "Split Chat Group Right")),
442
+ title: ( localize2(5813, "Split Chat Group Right")),
412
443
  f1: true,
413
444
  category: SessionsCategories.Sessions
414
445
  });
@@ -421,7 +452,7 @@ registerAction2(class SplitChatGroupDownAction extends Action2 {
421
452
  constructor() {
422
453
  super({
423
454
  id: SPLIT_CHAT_GROUP_DOWN_COMMAND_ID,
424
- title: ( localize2(4669, "Split Chat Group Down")),
455
+ title: ( localize2(5814, "Split Chat Group Down")),
425
456
  f1: true,
426
457
  category: SessionsCategories.Sessions
427
458
  });
@@ -434,7 +465,7 @@ registerAction2(class MoveChatToPreviousGroupAction extends Action2 {
434
465
  constructor() {
435
466
  super({
436
467
  id: MOVE_CHAT_TO_PREVIOUS_GROUP_COMMAND_ID,
437
- title: ( localize2(4670, "Move Chat to Previous Group")),
468
+ title: ( localize2(5815, "Move Chat to Previous Group")),
438
469
  f1: true,
439
470
  category: SessionsCategories.Sessions
440
471
  });
@@ -447,7 +478,7 @@ registerAction2(class MoveChatToNextGroupAction extends Action2 {
447
478
  constructor() {
448
479
  super({
449
480
  id: MOVE_CHAT_TO_NEXT_GROUP_COMMAND_ID,
450
- title: ( localize2(4671, "Move Chat to Next Group")),
481
+ title: ( localize2(5816, "Move Chat to Next Group")),
451
482
  f1: true,
452
483
  category: SessionsCategories.Sessions
453
484
  });
@@ -463,7 +494,7 @@ for (let index = 0; index < 9; index++) {
463
494
  constructor() {
464
495
  super({
465
496
  id: `sessions.focusSessionInGrid${position}`,
466
- title: isLast ? ( localize2(4672, "Focus Last Session in Grid")) : ( localize2(4673, "Focus Session {0} in Grid", position)),
497
+ title: isLast ? ( localize2(5817, "Focus Last Session in Grid")) : ( localize2(5818, "Focus Session {0} in Grid", position)),
467
498
  f1: true,
468
499
  category: SessionsCategories.Sessions,
469
500
  keybinding: {
@@ -491,7 +522,7 @@ registerAction2(class CloseAllSessionsAction extends Action2 {
491
522
  constructor() {
492
523
  super({
493
524
  id: "sessions.closeAllSessions",
494
- title: ( localize2(4674, "Close All Sessions")),
525
+ title: ( localize2(5819, "Close All Sessions")),
495
526
  f1: true,
496
527
  category: SessionsCategories.Sessions,
497
528
  precondition: IsSessionsWindowContext,
@@ -543,11 +574,11 @@ async function renameChatWithQuickInput(accessor, context) {
543
574
  if (!initialChat || extUri.isEqual(resource, session.mainChat.get().resource) || initialChat.status.get() === SessionStatus.Untitled || !getChatCapabilities(initialChat, session, undefined).canRename) {
544
575
  return;
545
576
  }
546
- const initialTitle = initialChat.title.get().trim() || ( localize(4675, "Untitled Chat"));
577
+ const initialTitle = initialChat.title.get().trim() || ( localize(5820, "Untitled Chat"));
547
578
  const newTitle = await quickInputService.input({
548
579
  value: initialTitle,
549
- prompt: ( localize(4676, "New chat title")),
550
- validateInput: async value => value.trim() ? undefined : ( localize(4677, "Title cannot be empty"))
580
+ prompt: ( localize(5821, "New chat title")),
581
+ validateInput: async value => value.trim() ? undefined : ( localize(5822, "Title cannot be empty"))
551
582
  });
552
583
  const trimmedTitle = newTitle?.trim();
553
584
  if (!trimmedTitle || trimmedTitle === initialTitle) {
@@ -563,49 +594,74 @@ registerAction2(class RenameChatAction extends Action2 {
563
594
  constructor() {
564
595
  super({
565
596
  id: RENAME_CHAT_COMMAND_ID,
566
- title: ( localize2(4678, "Rename...")),
597
+ title: ( localize2(5823, "Rename...")),
567
598
  f1: false,
568
599
  category: SessionsCategories.Sessions,
569
600
  keybinding: {
570
601
  primary: KeyCode.F2,
571
602
  weight: CHAT_TAB_KEYBINDING_WEIGHT,
572
- when: ( ContextKeyExpr.and(IsSessionsWindowContext, ( ContextKeyExpr.or(( ContextKeyExpr.and(ChatContextKeys.inChatSession, SessionFocusedChatIsRenameTargetContext)), ( ContextKeyExpr.and(( FocusedViewContext.isEqualTo(SessionsViewId)), WorkbenchListFocusContextKey, SessionsListFocusedChatItemContext))))))
573
- }
574
- });
575
- }
576
- async run(accessor, context) {
577
- const target = getChatRenameContext(accessor, context);
578
- if (target) {
579
- await renameChatWithQuickInput(accessor, target);
580
- }
581
- }
582
- });
583
- registerAction2(class RenameSessionListChatAction extends Action2 {
584
- constructor() {
585
- super({
586
- id: "sessions.list.renameChat",
587
- title: ( localize2(4679, "Rename...")),
588
- f1: false,
589
- menu: {
603
+ when: ( ContextKeyExpr.and(IsSessionsWindowContext, ( ContextKeyExpr.or(SessionFocusedChatIsRenameTargetContext, ( ContextKeyExpr.and(( FocusedViewContext.isEqualTo(SessionsViewId)), WorkbenchListFocusContextKey, SessionsListFocusedChatItemContext))))))
604
+ },
605
+ menu: [{
590
606
  id: Menus.SessionChatItemContext,
591
607
  group: "1_chat",
592
608
  order: 1,
593
609
  when: ( ContextKeyExpr.and(SessionChatItemCanRenameContext, ( SessionChatItemIsUntitledContext.negate())))
594
- }
610
+ }, {
611
+ id: Menus.SessionHeaderContext,
612
+ group: "2_edit",
613
+ order: 1,
614
+ when: ( ContextKeyExpr.and(SessionHeaderShowsChatContext, SessionFocusedChatIsRenameTargetContext))
615
+ }, {
616
+ id: Menus.SessionBarToolbar,
617
+ group: "secondary/1_session",
618
+ order: 20,
619
+ when: ( ContextKeyExpr.and(
620
+ SessionIsCreatedContext,
621
+ SessionHeaderShowsChatContext,
622
+ SessionFocusedChatIsRenameTargetContext,
623
+ ( SessionIsArchivedContext.negate())
624
+ ))
625
+ }]
595
626
  });
596
627
  }
597
- async run(accessor, context) {
598
- if (!context) {
628
+ async run(accessor, context, chat) {
629
+ let renameContext;
630
+ if (context && hasKey(context, {
631
+ session: true
632
+ })) {
633
+ renameContext = context;
634
+ } else if (context && chat) {
635
+ renameContext = {
636
+ session: context,
637
+ chat,
638
+ inline: true
639
+ };
640
+ }
641
+ if (!renameContext) {
642
+ const sessionsList = getSessionsList(accessor);
643
+ const focusedChat = sessionsList?.getFocusedChatItem();
644
+ if (focusedChat && sessionsList?.beginRenameChat(focusedChat)) {
645
+ return;
646
+ }
647
+ }
648
+ if (renameContext?.inline && accessor.get(ISessionsPartService).getSessionView(renameContext.session.sessionId)?.startChatTitleEditing(renameContext.chat.resource)) {
599
649
  return;
600
650
  }
601
- await renameChatWithQuickInput(accessor, context);
651
+ if (!renameContext && accessor.get(ISessionsPartService).getFocusedSessionView()?.startFocusedChatTitleEditing?.()) {
652
+ return;
653
+ }
654
+ const target = getChatRenameContext(accessor, renameContext);
655
+ if (target) {
656
+ await renameChatWithQuickInput(accessor, target);
657
+ }
602
658
  }
603
659
  });
604
660
  registerAction2(class OpenSessionListChatToSideAction extends Action2 {
605
661
  constructor() {
606
662
  super({
607
663
  id: "sessions.list.openChatToSide",
608
- title: ( localize2(4680, "Open to the Side")),
664
+ title: ( localize2(5824, "Open to the Side")),
609
665
  f1: false,
610
666
  menu: {
611
667
  id: Menus.SessionChatItemContext,
@@ -629,21 +685,33 @@ registerAction2(class DeleteSessionListChatAction extends Action2 {
629
685
  constructor() {
630
686
  super({
631
687
  id: "sessions.list.deleteChat",
632
- title: ( localize2(4681, "Delete...")),
688
+ title: ( localize2(5825, "Delete...")),
689
+ icon: Codicon.trash,
633
690
  f1: false,
634
- menu: {
691
+ menu: [{
635
692
  id: Menus.SessionChatItemContext,
636
693
  group: "2_delete",
637
694
  order: 1,
638
695
  when: SessionChatItemCanDeleteContext
639
- }
696
+ }, {
697
+ id: Menus.SessionChatItemToolbar,
698
+ group: "navigation",
699
+ order: 1,
700
+ when: ( ContextKeyExpr.and(SessionChatItemCanDeleteContext, SessionChatItemIsUntitledContext))
701
+ }]
640
702
  });
641
703
  }
642
704
  async run(accessor, context) {
643
705
  if (!context || !getChatCapabilities(context.chat, context.session, undefined).canDelete) {
644
706
  return;
645
707
  }
646
- await accessor.get(ISessionsManagementService).deleteChat(context.session, context.chat.resource);
708
+ await accessor.get(ISessionsManagementService).deleteChat(
709
+ context.session,
710
+ context.chat.resource,
711
+ context.chat.status.get() === SessionStatus.Untitled ? {
712
+ skipConfirmation: true
713
+ } : undefined
714
+ );
647
715
  }
648
716
  });
649
717
  const ADD_CHAT_TO_SESSION_ACTION_ID = "sessions.chatCompositeBar.addChat";
@@ -651,33 +719,30 @@ registerAction2(class AddChatToSessionAction extends Action2 {
651
719
  constructor() {
652
720
  super({
653
721
  id: ADD_CHAT_TO_SESSION_ACTION_ID,
654
- title: ( localize2(4682, "New Chat in This Session")),
722
+ title: ( localize2(5826, "New Nested Session")),
655
723
  icon: Codicon.add,
724
+ precondition: ( SessionItemIsMultiSelectionContext.negate()),
656
725
  keybinding: {
657
726
  weight: CHAT_TAB_KEYBINDING_WEIGHT,
658
727
  when: ( ContextKeyExpr.and(IsSessionsWindowContext, ( EditorAreaFocusContext.toNegated()), SessionIsCreatedContext, SessionSupportsMultipleChatsContext, ( IsQuickChatSessionContext.negate()), ( SessionIsArchivedContext.negate()))),
659
728
  primary: KeyMod.CtrlCmd | KeyCode.KeyT
660
729
  },
661
730
  menu: [{
662
- id: Menus.SessionBarToolbar,
663
- group: "secondary/3_newChat",
664
- order: 10,
731
+ id: Menus.SessionItemToolbar,
732
+ group: "navigation",
733
+ order: 1,
665
734
  when: ( ContextKeyExpr.and(
666
- SessionIsCreatedContext,
735
+ SessionsListPromoteNewChatActionContext,
667
736
  SessionSupportsMultipleChatsContext,
668
737
  ( IsQuickChatSessionContext.negate()),
669
- ( SessionIsArchivedContext.negate())
738
+ ( SessionIsArchivedContext.negate()),
739
+ ( SessionItemInExternalSectionContext.negate())
670
740
  ))
671
741
  }, {
672
742
  id: Menus.SessionItemContextMenu,
673
743
  group: "1_newChat",
674
744
  order: 0,
675
- when: ( ContextKeyExpr.and(
676
- SessionIsCreatedContext,
677
- SessionSupportsMultipleChatsContext,
678
- ( IsQuickChatSessionContext.negate()),
679
- ( SessionIsArchivedContext.negate())
680
- ))
745
+ when: ( ContextKeyExpr.and(SessionSupportsMultipleChatsContext, ( IsQuickChatSessionContext.negate()), ( SessionIsArchivedContext.negate()), ( SessionItemInExternalSectionContext.negate())))
681
746
  }]
682
747
  });
683
748
  }
@@ -720,7 +785,7 @@ registerAction2(class NavigateNextChatAction extends Action2 {
720
785
  constructor() {
721
786
  super({
722
787
  id: "sessions.chatCompositeBar.navigateNextChat",
723
- title: ( localize2(4683, "Go to Next Chat")),
788
+ title: ( localize2(5827, "Go to Next Chat")),
724
789
  f1: true,
725
790
  category: SessionsCategories.Sessions,
726
791
  precondition: SessionHasMultipleOpenChatsContext,
@@ -739,7 +804,7 @@ registerAction2(class NavigatePreviousChatAction extends Action2 {
739
804
  constructor() {
740
805
  super({
741
806
  id: "sessions.chatCompositeBar.navigatePreviousChat",
742
- title: ( localize2(4684, "Go to Previous Chat")),
807
+ title: ( localize2(5828, "Go to Previous Chat")),
743
808
  f1: true,
744
809
  category: SessionsCategories.Sessions,
745
810
  precondition: SessionHasMultipleOpenChatsContext,
@@ -758,8 +823,8 @@ registerAction2(class CloseChatAction extends Action2 {
758
823
  constructor() {
759
824
  super({
760
825
  id: CLOSE_CHAT_COMMAND_ID,
761
- title: ( localize2(4685, "Close Chat")),
762
- icon: Codicon.close,
826
+ title: ( localize2(5829, "Close")),
827
+ icon: Codicon.closeSmall,
763
828
  f1: false,
764
829
  category: SessionsCategories.Sessions,
765
830
  keybinding: {
@@ -771,39 +836,68 @@ registerAction2(class CloseChatAction extends Action2 {
771
836
  secondary: [KeyMod.CtrlCmd | KeyCode.KeyW]
772
837
  }
773
838
  },
774
- menu: {
839
+ menu: [{
775
840
  id: Menus.SessionChatTab,
776
841
  group: "navigation",
777
842
  order: 10
778
- }
843
+ }, {
844
+ id: Menus.SessionBarToolbar,
845
+ when: ( ContextKeyExpr.and(SessionHeaderShowsChatContext, SessionActiveChatIsClosableContext)),
846
+ group: "secondary/4_pin",
847
+ order: 30
848
+ }, {
849
+ id: Menus.SessionHeaderContext,
850
+ when: ( ContextKeyExpr.and(SessionHeaderShowsChatContext, SessionActiveChatIsClosableContext)),
851
+ group: "1_view",
852
+ order: 2
853
+ }]
779
854
  });
780
855
  }
781
- async run(accessor, context) {
856
+ async run(accessor, session, chat) {
782
857
  const sessionsService = accessor.get(ISessionsService);
783
858
  const sessionsManagementService = accessor.get(ISessionsManagementService);
784
859
  const extUri = accessor.get(IUriIdentityService).extUri;
785
- const session = context?.session ?? sessionsService.activeSession.get();
860
+ session ??= sessionsService.activeSession.get();
786
861
  if (!session) {
787
862
  return;
788
863
  }
789
- const chat = context?.chat ?? session.activeChat.get();
790
- if (!chat || extUri.isEqual(chat.resource, session.mainChat.get().resource)) {
864
+ const sessionView = accessor.get(ISessionsPartService).getSessionView(session.sessionId);
865
+ chat ??= sessionView?.getActiveChat() ?? session.activeChat.get();
866
+ if (!chat) {
867
+ return;
868
+ }
869
+ if (extUri.isEqual(chat.resource, session.mainChat.get().resource)) {
870
+ await sessionView?.closeChatGroup(chat.resource);
791
871
  return;
792
872
  }
793
873
  if (chat.status.get() === SessionStatus.Untitled) {
794
- await sessionsManagementService.deleteChat(session, chat.resource, {
874
+ if (await sessionsManagementService.deleteChat(session, chat.resource, {
795
875
  skipConfirmation: true
796
- });
876
+ })) {
877
+ await sessionView?.closeChatGroup(chat.resource);
878
+ }
797
879
  } else {
880
+ await sessionView?.closeChatGroup(chat.resource);
798
881
  await sessionsService.closeChat(session, chat);
799
882
  }
800
883
  }
801
884
  });
885
+ MenuRegistry.appendMenuItem(Menus.SessionBarToolbar, {
886
+ command: {
887
+ id: CLOSE_CHAT_COMMAND_ID,
888
+ title: ( localize(5830, "Close")),
889
+ tooltip: ( localize(5831, "Close Chat Group")),
890
+ icon: Codicon.closeCompact
891
+ },
892
+ when: ( ContextKeyExpr.and(SessionHeaderShowsChatContext, SessionActiveChatIsClosableContext)),
893
+ group: "navigation",
894
+ order: 30
895
+ });
802
896
  registerAction2(class CloseAllChatsAction extends Action2 {
803
897
  constructor() {
804
898
  super({
805
899
  id: "sessions.chatCompositeBar.closeAllChats",
806
- title: ( localize2(4686, "Close All Chats")),
900
+ title: ( localize2(5832, "Close All Chats")),
807
901
  f1: true,
808
902
  category: SessionsCategories.Sessions,
809
903
  precondition: SessionHasMultipleOpenChatsContext,
@@ -842,7 +936,8 @@ registerAction2(class DeleteChatAction extends Action2 {
842
936
  constructor() {
843
937
  super({
844
938
  id: "sessions.chatCompositeBar.deleteChat",
845
- title: ( localize2(4687, "Delete Chat")),
939
+ title: ( localize2(5833, "Delete Chat")),
940
+ icon: Codicon.trash,
846
941
  f1: true,
847
942
  category: SessionsCategories.Sessions,
848
943
  keybinding: {
@@ -853,28 +948,49 @@ registerAction2(class DeleteChatAction extends Action2 {
853
948
  primary: KeyMod.CtrlCmd | KeyCode.Backspace,
854
949
  secondary: [KeyCode.Delete]
855
950
  }
856
- }
951
+ },
952
+ menu: [{
953
+ id: Menus.SessionBarToolbar,
954
+ group: "secondary/1_session",
955
+ order: 30,
956
+ when: ( ContextKeyExpr.and(
957
+ SessionHeaderTargetsChatContext,
958
+ SessionActiveChatIsDeletableContext,
959
+ SessionActiveChatIsUntitledContext
960
+ ))
961
+ }, {
962
+ id: Menus.SessionHeaderContext,
963
+ group: "2_edit",
964
+ order: 2,
965
+ when: ( ContextKeyExpr.and(
966
+ SessionHeaderTargetsChatContext,
967
+ SessionActiveChatIsDeletableContext,
968
+ SessionActiveChatIsUntitledContext
969
+ ))
970
+ }]
857
971
  });
858
972
  }
859
- async run(accessor) {
973
+ async run(accessor, session, chat) {
860
974
  const sessionsService = accessor.get(ISessionsService);
861
975
  const sessionsManagementService = accessor.get(ISessionsManagementService);
862
- const session = sessionsService.activeSession.get();
976
+ session ??= sessionsService.activeSession.get();
863
977
  if (!session) {
864
978
  return;
865
979
  }
866
- const chat = session.activeChat.get();
980
+ chat ??= session.activeChat.get();
867
981
  if (!chat || !getChatCapabilities(chat, session, undefined).canDelete) {
868
982
  return;
869
983
  }
870
- await sessionsManagementService.deleteChat(session, chat.resource);
984
+ await sessionsManagementService.deleteChat(session, chat.resource, chat.status.get() === SessionStatus.Untitled ? {
985
+ skipConfirmation: true
986
+ } : undefined);
871
987
  }
872
988
  });
873
989
  registerAction2(class ReopenLastClosedChatAction extends Action2 {
874
990
  constructor() {
875
991
  super({
876
992
  id: "sessions.chatCompositeBar.reopenLastClosedChat",
877
- title: ( localize2(4688, "Reopen Last Closed Chat")),
993
+ title: ( localize2(5834, "Reopen Last Closed Chat")),
878
994
  f1: true,
879
995
  category: SessionsCategories.Sessions,
880
996
  precondition: SessionSupportsMultipleChatsContext
@@ -899,7 +1015,7 @@ registerAction2(class ReopenLastClosedItemAction extends Action2 {
899
1015
  constructor() {
900
1016
  super({
901
1017
  id: "sessions.reopenLastClosedItem",
902
- title: ( localize2(4689, "Reopen Closed Chat or Session")),
1018
+ title: ( localize2(5835, "Reopen Closed Chat or Session")),
903
1019
  category: SessionsCategories.Sessions,
904
1020
  keybinding: {
905
1021
  weight: CHAT_TAB_KEYBINDING_WEIGHT,
@@ -933,12 +1049,17 @@ function openChatsPicker(accessor, mru) {
933
1049
  return;
934
1050
  }
935
1051
  const extUri = accessor.get(IUriIdentityService).extUri;
936
- const toItem = chat => ({
937
- label: chat.title.get()?.trim() || ( localize(4675, "Untitled Chat")),
938
- description: fromNow(chat.updatedAt.get(), true, true),
939
- iconClass: ThemeIcon.asClassName(Codicon.commentDiscussion),
940
- chat
941
- });
1052
+ const toItem = chat => {
1053
+ const updatedAt = chat.updatedAt.get();
1054
+ return {
1055
+ label: chat.title.get()?.trim() || ( localize(5820, "Untitled Chat")),
1056
+ ...(updatedAt ? {
1057
+ description: fromNow(updatedAt, true, true)
1058
+ } : {}),
1059
+ iconClass: ThemeIcon.asClassName(Codicon.commentDiscussion),
1060
+ chat
1061
+ };
1062
+ };
942
1063
  const openItems = (mru ? session.visibleChatTabs.get() : session.visibleChatTabs.get().filter(chat => chat.status.get() !== SessionStatus.Untitled)).map(toItem);
943
1064
  const closedItems = mru ? [] : session.closedChats.get().filter(
944
1065
  chat => chat.status.get() !== SessionStatus.Untitled && chat.origin?.kind !== ChatOriginKind.Tool
@@ -949,10 +1070,10 @@ function openChatsPicker(accessor, mru) {
949
1070
  }
950
1071
  const displayItems = closedItems.length === 0 ? openItems : [{
951
1072
  type: "separator",
952
- label: ( localize(4690, "Open"))
1073
+ label: ( localize(5836, "Open"))
953
1074
  }, ...openItems, {
954
1075
  type: "separator",
955
- label: ( localize(4691, "Closed"))
1076
+ label: ( localize(5837, "Closed"))
956
1077
  }, ...closedItems];
957
1078
  const activeChat = session.activeChat.get();
958
1079
  const activeIndex = Math.max(
@@ -972,7 +1093,7 @@ function openChatsPicker(accessor, mru) {
972
1093
  keybindings: keybindingService.lookupKeybindings(CHATS_PICKER_QUICK_NAVIGATE_NEXT_ID)
973
1094
  };
974
1095
  } else {
975
- picker.placeholder = ( localize(4692, "Search chats by name"));
1096
+ picker.placeholder = ( localize(5838, "Search chats by name"));
976
1097
  picker.matchOnDescription = true;
977
1098
  }
978
1099
  const pickerVisibleContext = SessionChatsPickerVisibleContext.bindTo(contextKeyService);
@@ -993,7 +1114,7 @@ registerAction2(class ShowChatsPickerAction extends Action2 {
993
1114
  constructor() {
994
1115
  super({
995
1116
  id: SHOW_CHATS_PICKER_COMMAND_ID,
996
- title: ( localize2(4693, "Go to Chat in Session")),
1117
+ title: ( localize2(5839, "Go to Chat in Session")),
997
1118
  f1: true,
998
1119
  category: SessionsCategories.Sessions,
999
1120
  precondition: SessionHasMultipleCommittedChatsContext,
@@ -1012,7 +1133,7 @@ registerAction2(class QuickSwitchNextChatAction extends Action2 {
1012
1133
  constructor() {
1013
1134
  super({
1014
1135
  id: QUICK_SWITCH_NEXT_CHAT_ID,
1015
- title: ( localize2(4694, "Quick Switch to Next Chat")),
1136
+ title: ( localize2(5840, "Quick Switch to Next Chat")),
1016
1137
  f1: false,
1017
1138
  category: SessionsCategories.Sessions,
1018
1139
  precondition: SessionHasMultipleOpenChatsContext,
@@ -1036,7 +1157,7 @@ registerAction2(class QuickSwitchPreviousChatAction extends Action2 {
1036
1157
  constructor() {
1037
1158
  super({
1038
1159
  id: QUICK_SWITCH_PREVIOUS_CHAT_ID,
1039
- title: ( localize2(4695, "Quick Switch to Previous Chat")),
1160
+ title: ( localize2(5841, "Quick Switch to Previous Chat")),
1040
1161
  f1: false,
1041
1162
  category: SessionsCategories.Sessions,
1042
1163
  precondition: SessionHasMultipleOpenChatsContext,
@@ -1112,7 +1233,12 @@ let CompactButtonActionViewItem = class CompactButtonActionViewItem extends Base
1112
1233
  this.configureButton(button);
1113
1234
  const onboardingTargetId = this.onboardingTargetId;
1114
1235
  if (onboardingTargetId) {
1115
- this._register(markOnboardingTarget(button.element, onboardingTargetId));
1236
+ this._register(markOnboardingTarget(button.element, onboardingTargetId, {
1237
+ onDidActivate: Event.map(
1238
+ Event.filter(button.onDidClick, () => this.action.enabled),
1239
+ () => undefined
1240
+ )
1241
+ }));
1116
1242
  }
1117
1243
  this._register(button.onDidClick(e => {
1118
1244
  EventHelper.stop(e, true);
@@ -1195,7 +1321,7 @@ let NewSessionActionViewItem = class NewSessionActionViewItem extends CompactBut
1195
1321
  return NEW_SESSION_ACTION_ID;
1196
1322
  }
1197
1323
  get label() {
1198
- return localize(4696, "New");
1324
+ return localize(5842, "New");
1199
1325
  }
1200
1326
  get onboardingTargetId() {
1201
1327
  return "sessions.newSession.button";
@@ -1214,10 +1340,10 @@ let NewSessionActionViewItem = class NewSessionActionViewItem extends CompactBut
1214
1340
  }));
1215
1341
  }
1216
1342
  getHoverContent(keybindingLabel) {
1217
- return keybindingLabel ? ( localize(4697, "New Session ({0})", keybindingLabel)) : ( localize(4698, "New Session"));
1343
+ return keybindingLabel ? ( localize(5843, "New Session ({0})", keybindingLabel)) : ( localize(5844, "New Session"));
1218
1344
  }
1219
1345
  getAriaLabel(keybindingAriaLabel) {
1220
- return keybindingAriaLabel ? ( localize(4699, "New Session ({0})", keybindingAriaLabel)) : ( localize(4700, "New Session"));
1346
+ return keybindingAriaLabel ? ( localize(5845, "New Session ({0})", keybindingAriaLabel)) : ( localize(5846, "New Session"));
1221
1347
  }
1222
1348
  onRun() {
1223
1349
  logSessionsInteraction(this.telemetryService, "newSession", this.telemetrySource);
@@ -1327,6 +1453,54 @@ let NewSessionActionViewItemContribution = class NewSessionActionViewItemContrib
1327
1453
  }
1328
1454
  };
1329
1455
  NewSessionActionViewItemContribution = NewSessionActionViewItemContribution_1 = ( __decorate([( __param(0, IActionViewItemService)), ( __param(1, IContextKeyService)), ( __param(2, IWorkbenchAssignmentService)), ( __param(3, IEnvironmentService)), ( __param(4, IProductService)), ( __param(5, IConfigurationService)), ( __param(6, ILogService))], NewSessionActionViewItemContribution));
1456
+ let SessionListActionsExperimentContribution = class SessionListActionsExperimentContribution extends Disposable {
1457
+ static {
1458
+ SessionListActionsExperimentContribution_1 = this;
1459
+ }
1460
+ static {
1461
+ this.ID = "workbench.contrib.sessions.sessionListActionsExperiment";
1462
+ }
1463
+ static {
1464
+ this.PROMOTE_NEW_CHAT_ACTION_TREATMENT = "sessions.promoteNewChatAction";
1465
+ }
1466
+ constructor(contextKeyService, assignmentService, logService) {
1467
+ super();
1468
+ this.assignmentService = assignmentService;
1469
+ this.logService = logService;
1470
+ this.treatmentCancellation = this._register(( new MutableDisposable()));
1471
+ this.promoteNewChatActionContext = SessionsListPromoteNewChatActionContext.bindTo(contextKeyService);
1472
+ this._register(
1473
+ this.assignmentService.onDidRefetchAssignments(() => this.updateTreatment())
1474
+ );
1475
+ this.updateTreatment();
1476
+ }
1477
+ updateTreatment() {
1478
+ const cancellation = ( new CancellationTokenSource());
1479
+ this.treatmentCancellation.value = toDisposable(() => {
1480
+ cancellation.cancel();
1481
+ cancellation.dispose();
1482
+ });
1483
+ void this.resolveTreatment(cancellation.token);
1484
+ }
1485
+ async resolveTreatment(token) {
1486
+ let enabled = false;
1487
+ try {
1488
+ enabled = (await raceCancellationError(this.assignmentService.getTreatment(
1489
+ SessionListActionsExperimentContribution_1.PROMOTE_NEW_CHAT_ACTION_TREATMENT
1490
+ ), token)) ?? false;
1491
+ } catch (error) {
1492
+ if (isCancellationError(error)) {
1493
+ return;
1494
+ }
1495
+ this.logService.warn(
1496
+ "[SessionListActionsExperimentContribution] Failed to resolve the promoted New Chat action treatment; using the default session row action.",
1497
+ error
1498
+ );
1499
+ }
1500
+ this.promoteNewChatActionContext.set(enabled);
1501
+ }
1502
+ };
1503
+ SessionListActionsExperimentContribution = SessionListActionsExperimentContribution_1 = ( __decorate([( __param(0, IContextKeyService)), ( __param(1, IWorkbenchAssignmentService)), ( __param(2, ILogService))], SessionListActionsExperimentContribution));
1330
1504
  let SessionConversationActionsContribution = class SessionConversationActionsContribution extends Disposable {
1331
1505
  static {
1332
1506
  this.ID = "workbench.contrib.sessions.conversationActions";
@@ -1348,11 +1522,11 @@ let SessionConversationActionsContribution = class SessionConversationActionsCon
1348
1522
  const that = this;
1349
1523
  const extUri = this._uriIdentityService.extUri;
1350
1524
  const scopedToSession = ( ContextKeyExpr.equals(SessionIdContext.key, session.sessionId));
1351
- const conversationsVisible = ( ContextKeyExpr.and(scopedToSession, SessionIsCreatedContext, ( SessionIsArchivedContext.negate()), SessionHasSideChatsContext));
1525
+ const conversationsVisible = ( ContextKeyExpr.and(scopedToSession, SessionIsCreatedContext, ( SessionIsArchivedContext.negate()), SessionActiveChatHasSideChatsContext));
1352
1526
  const allChats = session.chats.read(reader);
1353
- const registerOpen = (chat, order) => {
1527
+ const registerOpen = (chat, parentChat, order) => {
1354
1528
  const chatResource = chat.resource;
1355
- const title = chat.title.read(reader) || ( localize(4675, "Untitled Chat"));
1529
+ const title = chat.title.read(reader) || ( localize(5820, "Untitled Chat"));
1356
1530
  store.add(registerAction2(class extends Action2 {
1357
1531
  constructor() {
1358
1532
  super({
@@ -1362,7 +1536,7 @@ let SessionConversationActionsContribution = class SessionConversationActionsCon
1362
1536
  id: Menus.SessionConversations,
1363
1537
  group: SESSION_CONVERSATION_SIDE_CHATS_GROUP,
1364
1538
  order,
1365
- when: conversationsVisible
1539
+ when: ( ContextKeyExpr.and(conversationsVisible, ( ContextKeyExpr.equals(SessionActiveChatResourceContext.key, ( parentChat.resource.toString())))))
1366
1540
  }
1367
1541
  });
1368
1542
  }
@@ -1387,8 +1561,9 @@ let SessionConversationActionsContribution = class SessionConversationActionsCon
1387
1561
  if (chat.status.read(reader) === SessionStatus.Untitled) {
1388
1562
  return;
1389
1563
  }
1390
- if (isSessionConversationSideChat(chat)) {
1391
- registerOpen(chat, index);
1564
+ const parentChat = allChats.find(candidate => isSideChatOf(chat, candidate.resource));
1565
+ if (parentChat) {
1566
+ registerOpen(chat, parentChat, index);
1392
1567
  }
1393
1568
  });
1394
1569
  return store;
@@ -1397,33 +1572,74 @@ let SessionConversationActionsContribution = class SessionConversationActionsCon
1397
1572
  SessionConversationActionsContribution = ( __decorate([( __param(0, ISessionsService)), ( __param(1, IUriIdentityService))], SessionConversationActionsContribution));
1398
1573
  MenuRegistry.appendMenuItem(Menus.SessionBarToolbar, {
1399
1574
  submenu: Menus.SessionConversations,
1400
- title: ( localize2(4701, "Side Chats")),
1575
+ title: ( localize2(5847, "Side Chats")),
1401
1576
  icon: Codicon.commentDiscussion,
1402
1577
  group: "secondary/2_chats",
1403
1578
  order: 10,
1404
- when: ( ContextKeyExpr.and(SessionIsCreatedContext, ( SessionIsArchivedContext.negate()), SessionHasSideChatsContext))
1579
+ when: ( ContextKeyExpr.and(SessionIsCreatedContext, ( SessionIsArchivedContext.negate()), SessionActiveChatHasSideChatsContext))
1580
+ });
1581
+ MenuRegistry.appendMenuItem(Menus.SessionBarToolbar, {
1582
+ submenu: Menus.SessionChatTabs,
1583
+ title: ( localize2(5848, "Show Chat Tabs")),
1584
+ group: "secondary/3_tabs",
1585
+ order: 10,
1586
+ when: ( ContextKeyExpr.and(SessionIsCreatedContext, SessionSupportsMultipleChatsContext))
1587
+ });
1588
+ registerAction2(class ShowMultipleChatTabsAction extends Action2 {
1589
+ constructor() {
1590
+ super({
1591
+ id: "sessions.action.showMultipleChatTabs",
1592
+ title: ( localize2(5849, "Multiple")),
1593
+ toggled: ( ContextKeyExpr.equals(`config.${SESSIONS_CHAT_TABS_SETTING}`, SessionsChatTabsMode.Multiple)),
1594
+ menu: {
1595
+ id: Menus.SessionChatTabs,
1596
+ group: "1_presentation",
1597
+ order: 10
1598
+ }
1599
+ });
1600
+ }
1601
+ run(accessor) {
1602
+ return accessor.get(IConfigurationService).updateValue(SESSIONS_CHAT_TABS_SETTING, SessionsChatTabsMode.Multiple);
1603
+ }
1604
+ });
1605
+ registerAction2(class ShowSingleChatAction extends Action2 {
1606
+ constructor() {
1607
+ super({
1608
+ id: "sessions.action.showSingleChat",
1609
+ title: ( localize2(5850, "Single")),
1610
+ toggled: ( ContextKeyExpr.equals(`config.${SESSIONS_CHAT_TABS_SETTING}`, SessionsChatTabsMode.Single)),
1611
+ menu: {
1612
+ id: Menus.SessionChatTabs,
1613
+ group: "1_presentation",
1614
+ order: 20
1615
+ }
1616
+ });
1617
+ }
1618
+ run(accessor) {
1619
+ return accessor.get(IConfigurationService).updateValue(SESSIONS_CHAT_TABS_SETTING, SessionsChatTabsMode.Single);
1620
+ }
1405
1621
  });
1406
1622
  registerAction2(class TogglePinSessionAction extends Action2 {
1407
1623
  constructor() {
1408
1624
  super({
1409
- id: "sessions.chatCompositeBar.togglePin",
1410
- title: ( localize2(4702, "Pin")),
1625
+ id: TOGGLE_PIN_SESSION_COMMAND_ID,
1626
+ title: ( localize2(5851, "Pin")),
1411
1627
  icon: Codicon.pin,
1412
1628
  toggled: {
1413
1629
  condition: SessionIsStickyContext,
1414
1630
  icon: Codicon.pinned,
1415
- title: ( localize(4703, "Unpin"))
1631
+ title: ( localize(5852, "Unpin"))
1416
1632
  },
1417
1633
  menu: [{
1418
1634
  id: Menus.SessionBarToolbar,
1419
1635
  group: "navigation",
1420
1636
  order: 10,
1421
- when: ( ContextKeyExpr.and(SessionIsCreatedContext, SessionIsStickyContext, ( SessionIsArchivedContext.negate())))
1637
+ when: ( ContextKeyExpr.and(SessionIsCreatedContext, SessionIsStickyContext, ( SessionIsArchivedContext.negate()), ( SessionHeaderShowsChatContext.negate())))
1422
1638
  }, {
1423
1639
  id: Menus.SessionBarToolbar,
1424
1640
  group: "secondary/4_pin",
1425
1641
  order: 10,
1426
- when: ( ContextKeyExpr.and(SessionIsCreatedContext, ( SessionIsArchivedContext.negate())))
1642
+ when: ( ContextKeyExpr.and(SessionIsCreatedContext, ( SessionIsArchivedContext.negate()), ( SessionHeaderShowsChatContext.negate())))
1427
1643
  }]
1428
1644
  });
1429
1645
  }
@@ -1436,37 +1652,89 @@ registerAction2(class TogglePinSessionAction extends Action2 {
1436
1652
  });
1437
1653
  MenuRegistry.appendMenuItem(Menus.SessionHeaderContext, {
1438
1654
  command: {
1439
- id: "sessions.chatCompositeBar.togglePin",
1440
- title: ( localize(4704, "Pin")),
1655
+ id: TOGGLE_PIN_SESSION_COMMAND_ID,
1656
+ title: ( localize(5853, "Pin")),
1441
1657
  toggled: {
1442
1658
  condition: SessionIsStickyContext,
1443
- title: ( localize(4705, "Unpin"))
1659
+ title: ( localize(5854, "Unpin"))
1444
1660
  }
1445
1661
  },
1446
1662
  group: "1_view",
1447
1663
  order: 1,
1448
- when: SessionIsCreatedContext
1664
+ when: ( ContextKeyExpr.and(SessionIsCreatedContext, ( SessionHeaderShowsChatContext.negate())))
1665
+ });
1666
+ registerAction2(class TogglePinChatAction extends Action2 {
1667
+ constructor() {
1668
+ super({
1669
+ id: TOGGLE_PIN_CHAT_COMMAND_ID,
1670
+ title: ( localize2(5855, "Pin")),
1671
+ icon: Codicon.pin,
1672
+ toggled: {
1673
+ condition: SessionHeaderActiveChatIsPinnedContext,
1674
+ icon: Codicon.pinned,
1675
+ title: ( localize(5856, "Unpin"))
1676
+ },
1677
+ menu: [{
1678
+ id: Menus.SessionBarToolbar,
1679
+ group: "navigation",
1680
+ order: 10,
1681
+ when: ( ContextKeyExpr.and(
1682
+ SessionIsCreatedContext,
1683
+ SessionHeaderShowsChatContext,
1684
+ SessionHeaderActiveChatIsPinnedContext,
1685
+ ( SessionIsArchivedContext.negate())
1686
+ ))
1687
+ }, {
1688
+ id: Menus.SessionBarToolbar,
1689
+ group: "secondary/4_pin",
1690
+ order: 10,
1691
+ when: ( ContextKeyExpr.and(SessionIsCreatedContext, SessionHeaderShowsChatContext, ( SessionIsArchivedContext.negate())))
1692
+ }, {
1693
+ id: Menus.SessionHeaderContext,
1694
+ group: "1_view",
1695
+ order: 1,
1696
+ when: ( ContextKeyExpr.and(SessionIsCreatedContext, SessionHeaderShowsChatContext))
1697
+ }]
1698
+ });
1699
+ }
1700
+ run(accessor, session) {
1701
+ session ??= accessor.get(ISessionsService).activeSession.get();
1702
+ if (session) {
1703
+ accessor.get(ISessionsPartService).getSessionView(session.sessionId)?.toggleActiveChatPin();
1704
+ }
1705
+ }
1449
1706
  });
1450
1707
  registerAction2(class RenameSessionHeaderAction extends Action2 {
1451
1708
  constructor() {
1452
1709
  super({
1453
1710
  id: "sessions.sessionHeader.rename",
1454
- title: ( localize2(4706, "Rename...")),
1711
+ title: ( localize2(5857, "Rename...")),
1455
1712
  icon: Codicon.edit,
1713
+ keybinding: {
1714
+ primary: KeyCode.F2,
1715
+ weight: KeybindingWeight.SessionsContrib + 1,
1716
+ when: ( ContextKeyExpr.and(
1717
+ IsSessionsWindowContext,
1718
+ SessionsFocusContext,
1719
+ SessionSupportsRenameContext,
1720
+ ( SessionFocusedChatIsRenameTargetContext.negate())
1721
+ ))
1722
+ },
1456
1723
  menu: [{
1457
1724
  id: Menus.SessionHeaderContext,
1458
1725
  group: "2_edit",
1459
1726
  order: 1,
1460
- when: ( ContextKeyExpr.regex(SessionProviderIdContext.key, ANY_AGENT_HOST_PROVIDER_RE))
1727
+ when: ( ContextKeyExpr.and(( ContextKeyExpr.regex(SessionProviderIdContext.key, ANY_AGENT_HOST_PROVIDER_RE)), ( SessionHeaderShowsChatContext.negate())))
1461
1728
  }, {
1462
1729
  id: Menus.SessionBarToolbar,
1463
1730
  group: "secondary/1_session",
1464
1731
  order: 20,
1465
- when: ( ContextKeyExpr.and(SessionIsCreatedContext, SessionSupportsRenameContext, ( SessionIsArchivedContext.negate())))
1732
+ when: ( ContextKeyExpr.and(SessionIsCreatedContext, SessionSupportsRenameContext, ( SessionHeaderShowsChatContext.negate()), ( SessionIsArchivedContext.negate())))
1466
1733
  }]
1467
1734
  });
1468
1735
  }
1469
1736
  async run(accessor, session) {
1737
+ session ??= accessor.get(ISessionsService).activeSession.get();
1470
1738
  if (!session) {
1471
1739
  return;
1472
1740
  }
@@ -1479,17 +1747,32 @@ registerAction2(class RenameSessionHeaderAction extends Action2 {
1479
1747
  registerAction2(class CloseSessionAction extends Action2 {
1480
1748
  constructor() {
1481
1749
  super({
1482
- id: "sessions.chatCompositeBar.close",
1483
- title: ( localize2(4707, "Close")),
1484
- icon: Codicon.close,
1750
+ id: CLOSE_SESSION_COMMAND_ID,
1751
+ title: ( localize2(5858, "Close")),
1752
+ tooltip: ( localize2(5859, "Close Session")),
1753
+ icon: Codicon.closeCompact,
1754
+ keybinding: {
1755
+ weight: KeybindingWeight.SessionsContrib,
1756
+ when: ( ContextKeyExpr.and(( IsNewChatSessionContext.negate()), IsSessionsWindowContext, SessionsFocusContext, ( EditorAreaFocusContext.negate()))),
1757
+ primary: KeyMod.CtrlCmd | KeyCode.KeyW,
1758
+ win: {
1759
+ primary: KeyMod.CtrlCmd | KeyCode.F4,
1760
+ secondary: [KeyMod.CtrlCmd | KeyCode.KeyW]
1761
+ }
1762
+ },
1485
1763
  menu: [{
1486
1764
  id: Menus.SessionBarToolbar,
1487
- when: ( ContextKeyExpr.or(SessionIsCreatedContext, MultipleSessionsVisibleContext)),
1765
+ when: ( ContextKeyExpr.and(MultipleSessionsVisibleContext, SessionToolbarShowsSessionContext)),
1766
+ group: "navigation",
1767
+ order: 30
1768
+ }, {
1769
+ id: Menus.SessionBarToolbar,
1770
+ when: ( ContextKeyExpr.and(( ContextKeyExpr.or(SessionIsCreatedContext, MultipleSessionsVisibleContext)), ( SessionHeaderShowsChatContext.negate()))),
1488
1771
  group: "secondary/4_pin",
1489
1772
  order: 30
1490
1773
  }, {
1491
1774
  id: Menus.SessionHeaderContext,
1492
- when: ( ContextKeyExpr.or(SessionIsCreatedContext, MultipleSessionsVisibleContext)),
1775
+ when: ( ContextKeyExpr.and(( ContextKeyExpr.or(SessionIsCreatedContext, MultipleSessionsVisibleContext)), ( SessionHeaderShowsChatContext.negate()))),
1493
1776
  group: "1_view",
1494
1777
  order: 2
1495
1778
  }]
@@ -1498,39 +1781,160 @@ registerAction2(class CloseSessionAction extends Action2 {
1498
1781
  async run(accessor, session) {
1499
1782
  const sessionsService = accessor.get(ISessionsService);
1500
1783
  const sessionsPartService = accessor.get(ISessionsPartService);
1784
+ session ??= sessionsService.activeSession.get();
1785
+ const sessionView = session && sessionsPartService.getSessionView(session.sessionId);
1786
+ const activeChat = sessionView?.getActiveChat();
1787
+ if (session && sessionView && activeChat && accessor.get(IUriIdentityService).extUri.isEqual(activeChat.resource, session.mainChat.get().resource) && (await sessionView.closeChatGroup(activeChat.resource))) {
1788
+ return;
1789
+ }
1501
1790
  sessionsService.closeSession(session);
1502
1791
  sessionsPartService.focusSession(sessionsService.activeSession.get());
1503
1792
  }
1504
1793
  });
1794
+ const sessionGridWhen = ( ContextKeyExpr.and(IsSessionsWindowContext, ChatContextKeys.enabled, ( IsPhoneLayoutContext.negate()), MultipleSessionsVisibleContext));
1795
+ MenuRegistry.appendMenuItem(Menus.SessionHeaderContext, {
1796
+ submenu: Menus.SessionGridLayout,
1797
+ title: ( localize(5860, "Session Layout")),
1798
+ group: "1_view",
1799
+ order: 3,
1800
+ when: sessionGridWhen
1801
+ });
1802
+ MenuRegistry.appendMenuItem(Menus.SessionBarToolbar, {
1803
+ submenu: Menus.SessionGridLayout,
1804
+ title: ( localize(5860, "Session Layout")),
1805
+ group: "secondary/4_pin",
1806
+ order: 30,
1807
+ when: sessionGridWhen
1808
+ });
1809
+ registerAction2(class ArrangeSessionsAction extends Action2 {
1810
+ constructor() {
1811
+ super({
1812
+ id: ARRANGE_SESSIONS_COMMAND_ID,
1813
+ title: ( localize2(5861, "Arrange Sessions in a Balanced Grid")),
1814
+ category: SessionsCategories.Sessions,
1815
+ f1: true,
1816
+ precondition: sessionGridWhen,
1817
+ menu: {
1818
+ id: Menus.SessionGridLayout,
1819
+ group: "0_arrange",
1820
+ order: 0
1821
+ }
1822
+ });
1823
+ }
1824
+ run(accessor) {
1825
+ accessor.get(ISessionsService).arrangeSessions();
1826
+ }
1827
+ });
1828
+ const sessionGridActions = [{
1829
+ direction: Direction.Left,
1830
+ key: KeyCode.LeftArrow,
1831
+ focus: SESSION_GRID_FOCUS_COMMANDS.left,
1832
+ focusTitle: ( localize2(5862, "Focus Session to the Left")),
1833
+ move: "sessions.moveSessionLeft",
1834
+ moveTitle: ( localize2(5863, "Move Session Left")),
1835
+ resize: "sessions.narrowSession",
1836
+ resizeTitle: ( localize2(5864, "Decrease Session Width"))
1837
+ }, {
1838
+ direction: Direction.Right,
1839
+ key: KeyCode.RightArrow,
1840
+ focus: SESSION_GRID_FOCUS_COMMANDS.right,
1841
+ focusTitle: ( localize2(5865, "Focus Session to the Right")),
1842
+ move: "sessions.moveSessionRight",
1843
+ moveTitle: ( localize2(5866, "Move Session Right")),
1844
+ resize: "sessions.widenSession",
1845
+ resizeTitle: ( localize2(5867, "Increase Session Width"))
1846
+ }, {
1847
+ direction: Direction.Up,
1848
+ key: KeyCode.UpArrow,
1849
+ focus: SESSION_GRID_FOCUS_COMMANDS.up,
1850
+ focusTitle: ( localize2(5868, "Focus Session Above")),
1851
+ move: "sessions.moveSessionUp",
1852
+ moveTitle: ( localize2(5869, "Move Session Above")),
1853
+ resize: "sessions.shortenSession",
1854
+ resizeTitle: ( localize2(5870, "Decrease Session Height"))
1855
+ }, {
1856
+ direction: Direction.Down,
1857
+ key: KeyCode.DownArrow,
1858
+ focus: SESSION_GRID_FOCUS_COMMANDS.down,
1859
+ focusTitle: ( localize2(5871, "Focus Session Below")),
1860
+ move: "sessions.moveSessionDown",
1861
+ moveTitle: ( localize2(5872, "Move Session Below")),
1862
+ resize: "sessions.heightenSession",
1863
+ resizeTitle: ( localize2(5873, "Increase Session Height"))
1864
+ }];
1865
+ const sessionGridNavigationWhen = ( ContextKeyExpr.and(sessionGridWhen, SessionsFocusContext));
1866
+ for (const item of sessionGridActions) {
1867
+ registerViewNavigationCommand(item.direction, item.focus, sessionGridNavigationWhen);
1868
+ }
1869
+ for (const item of sessionGridActions) {
1870
+ for (const operation of ["focus", "move", "resize"]) {
1871
+ registerAction2(class extends Action2 {
1872
+ constructor() {
1873
+ super({
1874
+ id: item[operation],
1875
+ title: operation === "focus" ? item.focusTitle : operation === "move" ? item.moveTitle : item.resizeTitle,
1876
+ category: SessionsCategories.Sessions,
1877
+ f1: true,
1878
+ precondition: sessionGridWhen,
1879
+ menu: {
1880
+ id: Menus.SessionGridLayout,
1881
+ group: operation === "focus" ? "1_focus" : operation === "move" ? "2_move" : "3_size",
1882
+ order: item.direction
1883
+ },
1884
+ keybinding: operation === "focus" ? {
1885
+ primary: KeyChord(KeyMod.CtrlCmd | KeyCode.KeyK, KeyMod.CtrlCmd | item.key),
1886
+ weight: KeybindingWeight.SessionsContrib,
1887
+ when: SessionsFocusContext
1888
+ } : undefined
1889
+ });
1890
+ }
1891
+ run(accessor, session) {
1892
+ const service = accessor.get(ISessionsService);
1893
+ session ??= service.activeSession.get();
1894
+ if (operation === "focus") {
1895
+ service.focusSessionInDirection(session, item.direction);
1896
+ } else if (operation === "move") {
1897
+ service.moveSessionInDirection(session, item.direction);
1898
+ } else {
1899
+ service.resizeSession(session, item.direction);
1900
+ }
1901
+ }
1902
+ });
1903
+ }
1904
+ }
1505
1905
  registerAction2(class ToggleMaximizeSessionViewAction extends Action2 {
1506
1906
  constructor() {
1507
1907
  super({
1508
1908
  id: "sessions.chatCompositeBar.toggleMaximize",
1509
- title: ( localize2(4708, "Maximize")),
1909
+ title: ( localize2(5874, "Maximize")),
1910
+ category: SessionsCategories.Sessions,
1911
+ precondition: sessionGridWhen,
1912
+ f1: true,
1510
1913
  icon: Codicon.screenFull,
1511
1914
  toggled: {
1512
1915
  condition: SessionIsMaximizedContext,
1513
1916
  icon: Codicon.screenNormal,
1514
- title: ( localize(4709, "Restore"))
1917
+ title: ( localize(5875, "Restore"))
1515
1918
  },
1516
1919
  menu: {
1517
1920
  id: Menus.SessionBarToolbar,
1518
- when: MultipleSessionsVisibleContext,
1921
+ when: sessionGridWhen,
1519
1922
  group: "secondary/4_pin",
1520
1923
  order: 20
1521
1924
  }
1522
1925
  });
1523
1926
  }
1524
1927
  async run(accessor, session) {
1525
- accessor.get(ISessionsPartService).toggleMaximizeSession(session);
1928
+ session ??= accessor.get(ISessionsService).activeSession.get();
1526
1929
  accessor.get(ISessionsService).setActive(session);
1930
+ accessor.get(ISessionsPartService).toggleMaximizeSession(session);
1527
1931
  }
1528
1932
  });
1529
1933
  registerAction2(class CloseEditorAreaAction extends Action2 {
1530
1934
  constructor() {
1531
1935
  super({
1532
1936
  id: "sessions.closeEditorArea",
1533
- title: ( localize2(4710, "Close Editor Area")),
1937
+ title: ( localize2(5876, "Close Editor Area")),
1534
1938
  icon: Codicon.close,
1535
1939
  category: SessionsCategories.Sessions,
1536
1940
  menu: {
@@ -1547,4 +1951,4 @@ registerAction2(class CloseEditorAreaAction extends Action2 {
1547
1951
  }
1548
1952
  });
1549
1953
 
1550
- export { CompactButtonActionViewItem, NEW_SESSION_BUTTON_STYLE_SETTING, NEW_SESSION_BUTTON_STYLE_TREATMENT, NewSessionActionViewItem, NewSessionActionViewItemContribution, SHOW_CHATS_PICKER_COMMAND_ID, SHOW_SESSIONS_PICKER_COMMAND_ID, SessionConversationActionsContribution };
1954
+ export { CompactButtonActionViewItem, NEW_SESSION_BUTTON_STYLE_SETTING, NEW_SESSION_BUTTON_STYLE_TREATMENT, NewSessionActionViewItem, NewSessionActionViewItemContribution, SHOW_CHATS_PICKER_COMMAND_ID, SHOW_SESSIONS_PICKER_COMMAND_ID, SessionConversationActionsContribution, SessionListActionsExperimentContribution };