@codingame/monaco-vscode-workbench-service-override 37.2.0 → 37.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (325) hide show
  1. package/common.d.ts +3 -0
  2. package/common.js +29 -0
  3. package/index.d.ts +1 -1
  4. package/index.js +25 -32
  5. package/package.json +18 -8
  6. package/session.d.ts +4 -0
  7. package/session.js +260 -0
  8. package/vscode/src/vs/platform/agentHost/browser/remoteAgentHostLocationPreferenceService.d.ts +24 -0
  9. package/vscode/src/vs/platform/agentHost/browser/remoteAgentHostLocationPreferenceService.js +71 -0
  10. package/vscode/src/vs/platform/agentHost/common/remoteAgentHostLocationPreference.d.ts +7 -0
  11. package/vscode/src/vs/platform/agentHost/common/remoteAgentHostLocationPreference.js +7 -0
  12. package/vscode/src/vs/sessions/browser/dockedAuxiliaryBarController.d.ts +50 -0
  13. package/vscode/src/vs/sessions/browser/dockedAuxiliaryBarController.js +120 -0
  14. package/vscode/src/vs/sessions/browser/media/sessions-logo-dark.svg +6 -0
  15. package/vscode/src/vs/sessions/browser/media/sessions-logo-light.svg +6 -0
  16. package/vscode/src/vs/sessions/browser/media/sessionsSetUp.css +72 -0
  17. package/vscode/src/vs/sessions/browser/parts/chatCompositeBar.d.ts +116 -0
  18. package/vscode/src/vs/sessions/browser/parts/chatCompositeBar.js +566 -0
  19. package/vscode/src/vs/sessions/browser/parts/chatGroupDropTarget.d.ts +43 -0
  20. package/vscode/src/vs/sessions/browser/parts/chatGroupDropTarget.js +308 -0
  21. package/vscode/src/vs/sessions/browser/parts/chatGroupView.d.ts +108 -0
  22. package/vscode/src/vs/sessions/browser/parts/chatGroupView.js +324 -0
  23. package/vscode/src/vs/sessions/browser/parts/chatGroupsView.d.ts +136 -0
  24. package/vscode/src/vs/sessions/browser/parts/chatGroupsView.js +771 -0
  25. package/vscode/src/vs/sessions/browser/parts/customViewGridPart.d.ts +43 -0
  26. package/vscode/src/vs/sessions/browser/parts/customViewGridPart.js +113 -0
  27. package/vscode/src/vs/sessions/browser/parts/customViewGridParts.d.ts +17 -0
  28. package/vscode/src/vs/sessions/browser/parts/customViewGridParts.js +31 -0
  29. package/vscode/src/vs/sessions/browser/parts/customViewNode.d.ts +24 -0
  30. package/vscode/src/vs/sessions/browser/parts/customViewNode.js +131 -0
  31. package/vscode/src/vs/sessions/browser/parts/editorPart.d.ts +11 -0
  32. package/vscode/src/vs/sessions/browser/parts/editorPart.js +36 -0
  33. package/vscode/src/vs/sessions/browser/parts/editorParts.d.ts +12 -0
  34. package/vscode/src/vs/sessions/browser/parts/editorParts.js +45 -0
  35. package/vscode/src/vs/sessions/browser/parts/media/chatCompositeBar.css +559 -0
  36. package/vscode/src/vs/sessions/browser/parts/media/chatGroupDropTarget.css +27 -0
  37. package/vscode/src/vs/sessions/browser/parts/media/chatGroupsView.css +60 -0
  38. package/vscode/src/vs/sessions/browser/parts/media/customViewGridPart.css +108 -0
  39. package/vscode/src/vs/sessions/browser/parts/media/editorPart.css +210 -0
  40. package/vscode/src/vs/sessions/browser/parts/media/remoteHostUnavailableEmptyState.css +81 -0
  41. package/vscode/src/vs/sessions/browser/parts/media/sessionDropTarget.css +31 -0
  42. package/vscode/src/vs/sessions/browser/parts/media/sessionReadOnlyBanner.css +87 -0
  43. package/vscode/src/vs/sessions/browser/parts/media/sessionView.css +107 -0
  44. package/vscode/src/vs/sessions/browser/parts/media/sessionsPart.css +134 -0
  45. package/vscode/src/vs/sessions/browser/parts/menubar.contribution.d.ts +1 -0
  46. package/vscode/src/vs/sessions/browser/parts/menubar.contribution.js +79 -0
  47. package/vscode/src/vs/sessions/browser/parts/mobile/mobileCustomViewGridPart.d.ts +13 -0
  48. package/vscode/src/vs/sessions/browser/parts/mobile/mobileCustomViewGridPart.js +33 -0
  49. package/vscode/src/vs/sessions/browser/parts/mobile/mobileSessionsPart.d.ts +14 -0
  50. package/vscode/src/vs/sessions/browser/parts/mobile/mobileSessionsPart.js +34 -0
  51. package/vscode/src/vs/sessions/browser/parts/remoteHostUnavailableEmptyState.d.ts +39 -0
  52. package/vscode/src/vs/sessions/browser/parts/remoteHostUnavailableEmptyState.js +136 -0
  53. package/vscode/src/vs/sessions/browser/parts/sessionBarStyles.d.ts +9 -0
  54. package/vscode/src/vs/sessions/browser/parts/sessionBarStyles.js +62 -0
  55. package/vscode/src/vs/sessions/browser/parts/sessionDropTarget.d.ts +39 -0
  56. package/vscode/src/vs/sessions/browser/parts/sessionDropTarget.js +261 -0
  57. package/vscode/src/vs/sessions/browser/parts/sessionHeader.d.ts +97 -0
  58. package/vscode/src/vs/sessions/browser/parts/sessionHeader.js +345 -0
  59. package/vscode/src/vs/sessions/browser/parts/sessionReadOnlyBanner.d.ts +43 -0
  60. package/vscode/src/vs/sessions/browser/parts/sessionReadOnlyBanner.js +69 -0
  61. package/vscode/src/vs/sessions/browser/parts/sessionRemoteConnection.d.ts +79 -0
  62. package/vscode/src/vs/sessions/browser/parts/sessionRemoteConnection.js +363 -0
  63. package/vscode/src/vs/sessions/browser/parts/sessionView.d.ts +125 -0
  64. package/vscode/src/vs/sessions/browser/parts/sessionView.js +300 -0
  65. package/vscode/src/vs/sessions/browser/parts/sessionsPart.d.ts +124 -0
  66. package/vscode/src/vs/sessions/browser/parts/sessionsPart.js +336 -0
  67. package/vscode/src/vs/sessions/browser/parts/sessionsParts.d.ts +33 -0
  68. package/vscode/src/vs/sessions/browser/parts/sessionsParts.js +62 -0
  69. package/vscode/src/vs/sessions/browser/parts/singlePaneAuxiliaryBarPart.d.ts +13 -0
  70. package/vscode/src/vs/sessions/browser/parts/singlePaneAuxiliaryBarPart.js +36 -0
  71. package/vscode/src/vs/sessions/browser/parts/singlePaneEditorPart.d.ts +65 -0
  72. package/vscode/src/vs/sessions/browser/parts/singlePaneEditorPart.js +178 -0
  73. package/vscode/src/vs/sessions/browser/sessionWorkspace.d.ts +12 -0
  74. package/vscode/src/vs/sessions/browser/sessionWorkspace.js +19 -0
  75. package/vscode/src/vs/sessions/browser/sessionsSetUpService.d.ts +24 -0
  76. package/vscode/src/vs/sessions/browser/sessionsSetUpService.js +598 -0
  77. package/vscode/src/vs/sessions/browser/sessionsSignInDialog.d.ts +25 -0
  78. package/vscode/src/vs/sessions/browser/sessionsSignInDialog.js +91 -0
  79. package/vscode/src/vs/sessions/common/welcome.d.ts +1 -0
  80. package/vscode/src/vs/sessions/common/welcome.js +5 -0
  81. package/vscode/src/vs/sessions/contrib/accountMenu/browser/account.contribution.d.ts +11 -0
  82. package/vscode/src/vs/sessions/contrib/accountMenu/browser/account.contribution.js +1052 -0
  83. package/vscode/src/vs/sessions/contrib/accountMenu/browser/chatPetAchievementBadges.d.ts +23 -0
  84. package/vscode/src/vs/sessions/contrib/accountMenu/browser/chatPetAchievementBadges.js +168 -0
  85. package/vscode/src/vs/sessions/contrib/accountMenu/browser/media/accountTitleBarWidget.css +646 -0
  86. package/vscode/src/vs/sessions/contrib/accountMenu/browser/media/accountWidget.css +231 -0
  87. package/vscode/src/vs/sessions/contrib/accountMenu/browser/media/chatPetAchievementBadges.css +120 -0
  88. package/vscode/src/vs/sessions/contrib/agentFeedback/browser/nullAgentFeedbackService.contribution.d.ts +53 -0
  89. package/vscode/src/vs/sessions/contrib/agentFeedback/browser/nullAgentFeedbackService.contribution.js +99 -0
  90. package/vscode/src/vs/sessions/contrib/aiCustomizationTreeView/browser/aiCustomizationTreeView.contribution.d.ts +1 -0
  91. package/vscode/src/vs/sessions/contrib/aiCustomizationTreeView/browser/aiCustomizationTreeView.contribution.js +270 -0
  92. package/vscode/src/vs/sessions/contrib/aiCustomizationTreeView/browser/aiCustomizationTreeViewViews.d.ts +62 -0
  93. package/vscode/src/vs/sessions/contrib/aiCustomizationTreeView/browser/aiCustomizationTreeViewViews.js +606 -0
  94. package/vscode/src/vs/sessions/contrib/aiCustomizationTreeView/browser/media/aiCustomizationTreeView.css +116 -0
  95. package/vscode/src/vs/sessions/contrib/aquarium/browser/aquarium.contribution.d.ts +1 -0
  96. package/vscode/src/vs/sessions/contrib/aquarium/browser/aquarium.contribution.js +97 -0
  97. package/vscode/src/vs/sessions/contrib/aquarium/browser/aquariumOverlay.d.ts +72 -0
  98. package/vscode/src/vs/sessions/contrib/aquarium/browser/aquariumOverlay.js +776 -0
  99. package/vscode/src/vs/sessions/contrib/aquarium/browser/fish.d.ts +68 -0
  100. package/vscode/src/vs/sessions/contrib/aquarium/browser/fish.js +153 -0
  101. package/vscode/src/vs/sessions/contrib/aquarium/browser/fishFeedingStreak.d.ts +58 -0
  102. package/vscode/src/vs/sessions/contrib/aquarium/browser/fishFeedingStreak.js +172 -0
  103. package/vscode/src/vs/sessions/contrib/aquarium/browser/media/aquarium.css +316 -0
  104. package/vscode/src/vs/sessions/contrib/aquarium/browser/vscodeLogoPath.d.ts +1 -0
  105. package/vscode/src/vs/sessions/contrib/aquarium/browser/vscodeLogoPath.js +5 -0
  106. package/vscode/src/vs/sessions/contrib/automations/browser/automationDialog.d.ts +173 -0
  107. package/vscode/src/vs/sessions/contrib/automations/browser/automationDialog.js +1589 -0
  108. package/vscode/src/vs/sessions/contrib/automations/browser/automationDialogService.d.ts +32 -0
  109. package/vscode/src/vs/sessions/contrib/automations/browser/automationDialogService.js +396 -0
  110. package/vscode/src/vs/sessions/contrib/automations/browser/automationInputCompletions.d.ts +33 -0
  111. package/vscode/src/vs/sessions/contrib/automations/browser/automationInputCompletions.js +216 -0
  112. package/vscode/src/vs/sessions/contrib/automations/browser/automationLeaderElection.d.ts +37 -0
  113. package/vscode/src/vs/sessions/contrib/automations/browser/automationLeaderElection.js +126 -0
  114. package/vscode/src/vs/sessions/contrib/automations/browser/automationRunner.d.ts +21 -0
  115. package/vscode/src/vs/sessions/contrib/automations/browser/automationRunner.js +294 -0
  116. package/vscode/src/vs/sessions/contrib/automations/browser/automationScheduler.d.ts +59 -0
  117. package/vscode/src/vs/sessions/contrib/automations/browser/automationScheduler.js +232 -0
  118. package/vscode/src/vs/sessions/contrib/automations/browser/automationStorageService.d.ts +13 -0
  119. package/vscode/src/vs/sessions/contrib/automations/browser/automationStorageService.js +22 -0
  120. package/vscode/src/vs/sessions/contrib/automations/browser/automationTools.d.ts +60 -0
  121. package/vscode/src/vs/sessions/contrib/automations/browser/automationTools.js +1256 -0
  122. package/vscode/src/vs/sessions/contrib/automations/browser/automations.contribution.d.ts +1 -0
  123. package/vscode/src/vs/sessions/contrib/automations/browser/automations.contribution.js +88 -0
  124. package/vscode/src/vs/sessions/contrib/automations/browser/media/automationDialog.css +746 -0
  125. package/vscode/src/vs/sessions/contrib/automations/browser/providerAutomationService.d.ts +62 -0
  126. package/vscode/src/vs/sessions/contrib/automations/browser/providerAutomationService.js +493 -0
  127. package/vscode/src/vs/sessions/contrib/automations/common/isolationGroupModel.d.ts +38 -0
  128. package/vscode/src/vs/sessions/contrib/automations/common/isolationGroupModel.js +123 -0
  129. package/vscode/src/vs/sessions/contrib/blockedSessions/browser/blockedSessions.d.ts +45 -0
  130. package/vscode/src/vs/sessions/contrib/blockedSessions/browser/blockedSessions.js +110 -0
  131. package/vscode/src/vs/sessions/contrib/browserView/browser/sessionBrowserView.contribution.d.ts +1 -0
  132. package/vscode/src/vs/sessions/contrib/browserView/browser/sessionBrowserView.contribution.js +5 -0
  133. package/vscode/src/vs/sessions/contrib/browserView/browser/sessionBrowserView.d.ts +31 -0
  134. package/vscode/src/vs/sessions/contrib/browserView/browser/sessionBrowserView.js +137 -0
  135. package/vscode/src/vs/sessions/contrib/changes/browser/changes.contribution.d.ts +1 -0
  136. package/vscode/src/vs/sessions/contrib/changes/browser/changes.contribution.js +130 -0
  137. package/vscode/src/vs/sessions/contrib/changes/browser/changesActions.d.ts +8 -0
  138. package/vscode/src/vs/sessions/contrib/changes/browser/changesActions.js +385 -0
  139. package/vscode/src/vs/sessions/contrib/changes/browser/changesMultiDiffSourceResolver.d.ts +28 -0
  140. package/vscode/src/vs/sessions/contrib/changes/browser/changesMultiDiffSourceResolver.js +76 -0
  141. package/vscode/src/vs/sessions/contrib/changes/browser/changesViewActions.d.ts +1 -0
  142. package/vscode/src/vs/sessions/contrib/changes/browser/changesViewActions.js +509 -0
  143. package/vscode/src/vs/sessions/contrib/changes/browser/changesetReviewActions.d.ts +6 -0
  144. package/vscode/src/vs/sessions/contrib/changes/browser/changesetReviewActions.js +58 -0
  145. package/vscode/src/vs/sessions/contrib/changes/browser/media/changesActions.css +11 -0
  146. package/vscode/src/vs/sessions/contrib/changes/browser/sessionSyncChanges.d.ts +24 -0
  147. package/vscode/src/vs/sessions/contrib/changes/browser/sessionSyncChanges.js +188 -0
  148. package/vscode/src/vs/sessions/contrib/changes/browser/sessionsChangesAccessibilityHelp.d.ts +15 -0
  149. package/vscode/src/vs/sessions/contrib/changes/browser/sessionsChangesAccessibilityHelp.js +100 -0
  150. package/vscode/src/vs/sessions/contrib/chat/browser/chatViewStateService.d.ts +9 -0
  151. package/vscode/src/vs/sessions/contrib/chat/browser/chatViewStateService.js +18 -0
  152. package/vscode/src/vs/sessions/contrib/chat/browser/media/sessionChatInputToolbarDebug.css +59 -0
  153. package/vscode/src/vs/sessions/contrib/chat/browser/sessionChatInputToolbarDebug.d.ts +47 -0
  154. package/vscode/src/vs/sessions/contrib/chat/browser/sessionChatInputToolbarDebug.js +306 -0
  155. package/vscode/src/vs/sessions/contrib/chat/browser/sessionTaskRunner.d.ts +41 -0
  156. package/vscode/src/vs/sessions/contrib/chat/browser/sessionTaskRunner.js +31 -0
  157. package/vscode/src/vs/sessions/contrib/chatDebug/browser/chatDebug.contribution.d.ts +1 -0
  158. package/vscode/src/vs/sessions/contrib/chatDebug/browser/chatDebug.contribution.js +84 -0
  159. package/vscode/src/vs/sessions/contrib/customViewTest/browser/customViewTest.contribution.d.ts +1 -0
  160. package/vscode/src/vs/sessions/contrib/customViewTest/browser/customViewTest.contribution.js +111 -0
  161. package/vscode/src/vs/sessions/contrib/customViewTest/browser/media/customViewTest.css +9 -0
  162. package/vscode/src/vs/sessions/contrib/editor/browser/addTabActions.d.ts +21 -0
  163. package/vscode/src/vs/sessions/contrib/editor/browser/addTabActions.js +170 -0
  164. package/vscode/src/vs/sessions/contrib/editor/browser/editor.contribution.d.ts +14 -0
  165. package/vscode/src/vs/sessions/contrib/editor/browser/editor.contribution.js +425 -0
  166. package/vscode/src/vs/sessions/contrib/editor/browser/emptyFileEditor.contribution.d.ts +1 -0
  167. package/vscode/src/vs/sessions/contrib/editor/browser/emptyFileEditor.contribution.js +35 -0
  168. package/vscode/src/vs/sessions/contrib/editor/browser/emptyFileEditor.d.ts +18 -0
  169. package/vscode/src/vs/sessions/contrib/editor/browser/emptyFileEditor.js +85 -0
  170. package/vscode/src/vs/sessions/contrib/editor/browser/emptyFileEditorInput.d.ts +31 -0
  171. package/vscode/src/vs/sessions/contrib/editor/browser/emptyFileEditorInput.js +125 -0
  172. package/vscode/src/vs/sessions/contrib/editor/browser/media/editorBreadcrumbs.css +66 -0
  173. package/vscode/src/vs/sessions/contrib/editor/browser/media/editorHeader.css +113 -0
  174. package/vscode/src/vs/sessions/contrib/editor/browser/media/emptyFileEditor.css +30 -0
  175. package/vscode/src/vs/sessions/contrib/fileTreeView/browser/fileTreeView.contribution.d.ts +1 -0
  176. package/vscode/src/vs/sessions/contrib/fileTreeView/browser/fileTreeView.contribution.js +25 -0
  177. package/vscode/src/vs/sessions/contrib/fileTreeView/browser/githubFileSystemProvider.d.ts +66 -0
  178. package/vscode/src/vs/sessions/contrib/fileTreeView/browser/githubFileSystemProvider.js +274 -0
  179. package/vscode/src/vs/sessions/contrib/files/browser/files.contribution.d.ts +6 -0
  180. package/vscode/src/vs/sessions/contrib/files/browser/files.contribution.js +100 -0
  181. package/vscode/src/vs/sessions/contrib/files/browser/filesView.d.ts +21 -0
  182. package/vscode/src/vs/sessions/contrib/files/browser/filesView.js +76 -0
  183. package/vscode/src/vs/sessions/contrib/files/browser/media/filesView.css +29 -0
  184. package/vscode/src/vs/sessions/contrib/layout/browser/baseSessionLayoutController.d.ts +211 -0
  185. package/vscode/src/vs/sessions/contrib/layout/browser/baseSessionLayoutController.js +587 -0
  186. package/vscode/src/vs/sessions/contrib/layout/browser/desktopSessionLayoutController.d.ts +112 -0
  187. package/vscode/src/vs/sessions/contrib/layout/browser/desktopSessionLayoutController.js +444 -0
  188. package/vscode/src/vs/sessions/contrib/layout/browser/mobileSessionLayoutController.d.ts +13 -0
  189. package/vscode/src/vs/sessions/contrib/layout/browser/mobileSessionLayoutController.js +8 -0
  190. package/vscode/src/vs/sessions/contrib/layout/browser/sessions.layout.contribution.d.ts +1 -0
  191. package/vscode/src/vs/sessions/contrib/layout/browser/sessions.layout.contribution.js +68 -0
  192. package/vscode/src/vs/sessions/contrib/layout/browser/singlePane/singlePaneDetailPanelCoordinator.d.ts +32 -0
  193. package/vscode/src/vs/sessions/contrib/layout/browser/singlePane/singlePaneDetailPanelCoordinator.js +81 -0
  194. package/vscode/src/vs/sessions/contrib/layout/browser/singlePane/singlePaneDockedTabsCoordinator.d.ts +111 -0
  195. package/vscode/src/vs/sessions/contrib/layout/browser/singlePane/singlePaneDockedTabsCoordinator.js +513 -0
  196. package/vscode/src/vs/sessions/contrib/layout/browser/singlePane/singlePaneDraftSessionStrategy.d.ts +44 -0
  197. package/vscode/src/vs/sessions/contrib/layout/browser/singlePane/singlePaneDraftSessionStrategy.js +423 -0
  198. package/vscode/src/vs/sessions/contrib/layout/browser/singlePane/singlePaneExistingSessionStrategy.d.ts +62 -0
  199. package/vscode/src/vs/sessions/contrib/layout/browser/singlePane/singlePaneExistingSessionStrategy.js +435 -0
  200. package/vscode/src/vs/sessions/contrib/layout/browser/singlePane/singlePaneLayoutStrategy.d.ts +46 -0
  201. package/vscode/src/vs/sessions/contrib/layout/browser/singlePane/singlePaneLayoutStrategy.js +11 -0
  202. package/vscode/src/vs/sessions/contrib/layout/browser/singlePane/singlePaneSharedHelpers.d.ts +11 -0
  203. package/vscode/src/vs/sessions/contrib/layout/browser/singlePane/singlePaneSharedHelpers.js +43 -0
  204. package/vscode/src/vs/sessions/contrib/layout/browser/singlePane/singlePaneVisibilityProfileStore.d.ts +21 -0
  205. package/vscode/src/vs/sessions/contrib/layout/browser/singlePane/singlePaneVisibilityProfileStore.js +77 -0
  206. package/vscode/src/vs/sessions/contrib/layout/browser/singlePaneLayoutController.d.ts +55 -0
  207. package/vscode/src/vs/sessions/contrib/layout/browser/singlePaneLayoutController.js +91 -0
  208. package/vscode/src/vs/sessions/contrib/onboardingTours/browser/agentHostReadinessContext.d.ts +11 -0
  209. package/vscode/src/vs/sessions/contrib/onboardingTours/browser/agentHostReadinessContext.js +39 -0
  210. package/vscode/src/vs/sessions/contrib/onboardingTours/browser/newSessionTourContribution.d.ts +1 -0
  211. package/vscode/src/vs/sessions/contrib/onboardingTours/browser/newSessionTourContribution.js +109 -0
  212. package/vscode/src/vs/sessions/contrib/onboardingTours/browser/newSessionViewTourContribution.d.ts +1 -0
  213. package/vscode/src/vs/sessions/contrib/onboardingTours/browser/newSessionViewTourContribution.js +123 -0
  214. package/vscode/src/vs/sessions/contrib/onboardingTours/browser/newSessionViewTourTrigger.d.ts +24 -0
  215. package/vscode/src/vs/sessions/contrib/onboardingTours/browser/newSessionViewTourTrigger.js +67 -0
  216. package/vscode/src/vs/sessions/contrib/onboardingTours/browser/newSessionViewV2TourContribution.d.ts +1 -0
  217. package/vscode/src/vs/sessions/contrib/onboardingTours/browser/newSessionViewV2TourContribution.js +47 -0
  218. package/vscode/src/vs/sessions/contrib/onboardingTours/browser/newSessionViewV3Prompt.d.ts +79 -0
  219. package/vscode/src/vs/sessions/contrib/onboardingTours/browser/newSessionViewV3Prompt.js +1277 -0
  220. package/vscode/src/vs/sessions/contrib/onboardingTours/browser/newSessionViewV3TourContribution.d.ts +1 -0
  221. package/vscode/src/vs/sessions/contrib/onboardingTours/browser/newSessionViewV3TourContribution.js +75 -0
  222. package/vscode/src/vs/sessions/contrib/onboardingTours/browser/tours/newSessionTour.d.ts +34 -0
  223. package/vscode/src/vs/sessions/contrib/onboardingTours/browser/tours/newSessionTour.js +53 -0
  224. package/vscode/src/vs/sessions/contrib/onboardingTours/browser/tours/newSessionViewTour.d.ts +40 -0
  225. package/vscode/src/vs/sessions/contrib/onboardingTours/browser/tours/newSessionViewTour.js +69 -0
  226. package/vscode/src/vs/sessions/contrib/onboardingTours/browser/tours/newSessionViewTourShared.d.ts +4 -0
  227. package/vscode/src/vs/sessions/contrib/onboardingTours/browser/tours/newSessionViewTourShared.js +38 -0
  228. package/vscode/src/vs/sessions/contrib/onboardingTours/browser/tours/newSessionViewV2Tour.d.ts +6 -0
  229. package/vscode/src/vs/sessions/contrib/onboardingTours/browser/tours/newSessionViewV2Tour.js +63 -0
  230. package/vscode/src/vs/sessions/contrib/onboardingTours/browser/tours/newSessionViewV3Tour.d.ts +15 -0
  231. package/vscode/src/vs/sessions/contrib/onboardingTours/browser/tours/newSessionViewV3Tour.js +49 -0
  232. package/vscode/src/vs/sessions/contrib/policyBlocked/browser/media/sessionsPolicyBlocked.css +125 -0
  233. package/vscode/src/vs/sessions/contrib/policyBlocked/browser/policyBlocked.contribution.d.ts +20 -0
  234. package/vscode/src/vs/sessions/contrib/policyBlocked/browser/policyBlocked.contribution.js +98 -0
  235. package/vscode/src/vs/sessions/contrib/policyBlocked/browser/sessionsPolicyBlocked.d.ts +39 -0
  236. package/vscode/src/vs/sessions/contrib/policyBlocked/browser/sessionsPolicyBlocked.js +218 -0
  237. package/vscode/src/vs/sessions/contrib/providers/remoteAgentHost/browser/devContainerAgentHostService.d.ts +53 -0
  238. package/vscode/src/vs/sessions/contrib/providers/remoteAgentHost/browser/devContainerAgentHostService.js +496 -0
  239. package/vscode/src/vs/sessions/contrib/providers/remoteAgentHost/browser/remoteAgentHostConnectionCustomization.d.ts +27 -0
  240. package/vscode/src/vs/sessions/contrib/providers/remoteAgentHost/browser/remoteAgentHostConnectionCustomization.js +26 -0
  241. package/vscode/src/vs/sessions/contrib/search/browser/media/searchEditorEmptyState.css +15 -0
  242. package/vscode/src/vs/sessions/contrib/search/browser/search.contribution.d.ts +1 -0
  243. package/vscode/src/vs/sessions/contrib/search/browser/search.contribution.js +79 -0
  244. package/vscode/src/vs/sessions/contrib/search/browser/searchEditorEmptyState.contribution.d.ts +7 -0
  245. package/vscode/src/vs/sessions/contrib/search/browser/searchEditorEmptyState.contribution.js +57 -0
  246. package/vscode/src/vs/sessions/contrib/sessions/browser/blockedSessionsCIFixModel.d.ts +39 -0
  247. package/vscode/src/vs/sessions/contrib/sessions/browser/blockedSessionsCIFixModel.js +155 -0
  248. package/vscode/src/vs/sessions/contrib/sessions/browser/blockedSessionsIndicatorModel.d.ts +117 -0
  249. package/vscode/src/vs/sessions/contrib/sessions/browser/blockedSessionsIndicatorModel.js +320 -0
  250. package/vscode/src/vs/sessions/contrib/sessions/browser/blockedSessionsList.d.ts +65 -0
  251. package/vscode/src/vs/sessions/contrib/sessions/browser/blockedSessionsList.js +129 -0
  252. package/vscode/src/vs/sessions/contrib/sessions/browser/media/automationsCards.css +624 -0
  253. package/vscode/src/vs/sessions/contrib/sessions/browser/media/blockedSessionsList.css +111 -0
  254. package/vscode/src/vs/sessions/contrib/sessions/browser/media/newSessionActionViewItem.css +112 -0
  255. package/vscode/src/vs/sessions/contrib/sessions/browser/media/sessionsTitleBarWidget.css +159 -0
  256. package/vscode/src/vs/sessions/contrib/sessions/browser/sessionActionFeedback.d.ts +26 -0
  257. package/vscode/src/vs/sessions/contrib/sessions/browser/sessionActionFeedback.js +26 -0
  258. package/vscode/src/vs/sessions/contrib/sessions/browser/sessionDetailsAction.d.ts +2 -0
  259. package/vscode/src/vs/sessions/contrib/sessions/browser/sessionDetailsAction.js +77 -0
  260. package/vscode/src/vs/sessions/contrib/sessions/browser/sessions.contribution.d.ts +1 -0
  261. package/vscode/src/vs/sessions/contrib/sessions/browser/sessions.contribution.js +162 -0
  262. package/vscode/src/vs/sessions/contrib/sessions/browser/sessionsActions.d.ts +111 -0
  263. package/vscode/src/vs/sessions/contrib/sessions/browser/sessionsActions.js +1550 -0
  264. package/vscode/src/vs/sessions/contrib/sessions/browser/sessionsMouseNavigation.d.ts +13 -0
  265. package/vscode/src/vs/sessions/contrib/sessions/browser/sessionsMouseNavigation.js +69 -0
  266. package/vscode/src/vs/sessions/contrib/sessions/browser/sessionsPicker.d.ts +10 -0
  267. package/vscode/src/vs/sessions/contrib/sessions/browser/sessionsPicker.js +33 -0
  268. package/vscode/src/vs/sessions/contrib/sessions/browser/sessionsTelemetry.contribution.d.ts +126 -0
  269. package/vscode/src/vs/sessions/contrib/sessions/browser/sessionsTelemetry.contribution.js +724 -0
  270. package/vscode/src/vs/sessions/contrib/sessions/browser/sessionsTitleBarWidget.d.ts +150 -0
  271. package/vscode/src/vs/sessions/contrib/sessions/browser/sessionsTitleBarWidget.js +526 -0
  272. package/vscode/src/vs/sessions/contrib/sessions/browser/sessionsTypedCharactersTracker.d.ts +64 -0
  273. package/vscode/src/vs/sessions/contrib/sessions/browser/sessionsTypedCharactersTracker.js +99 -0
  274. package/vscode/src/vs/sessions/contrib/sessions/browser/sessionsWindowNotifier.d.ts +37 -0
  275. package/vscode/src/vs/sessions/contrib/sessions/browser/sessionsWindowNotifier.js +160 -0
  276. package/vscode/src/vs/sessions/contrib/sessions/browser/views/automationTemplates.d.ts +19 -0
  277. package/vscode/src/vs/sessions/contrib/sessions/browser/views/automationTemplates.js +74 -0
  278. package/vscode/src/vs/sessions/contrib/sessions/browser/views/automationsAccessibility.d.ts +4 -0
  279. package/vscode/src/vs/sessions/contrib/sessions/browser/views/automationsAccessibility.js +228 -0
  280. package/vscode/src/vs/sessions/contrib/sessions/browser/views/automationsView.d.ts +53 -0
  281. package/vscode/src/vs/sessions/contrib/sessions/browser/views/automationsView.js +2143 -0
  282. package/vscode/src/vs/sessions/contrib/sessions/browser/views/sessionsViewActions.d.ts +12 -0
  283. package/vscode/src/vs/sessions/contrib/sessions/browser/views/sessionsViewActions.js +1270 -0
  284. package/vscode/src/vs/sessions/contrib/workspace/browser/workspace.contribution.d.ts +1 -0
  285. package/vscode/src/vs/sessions/contrib/workspace/browser/workspace.contribution.js +5 -0
  286. package/vscode/src/vs/sessions/contrib/workspace/browser/workspaceFolderManagement.d.ts +28 -0
  287. package/vscode/src/vs/sessions/contrib/workspace/browser/workspaceFolderManagement.js +95 -0
  288. package/vscode/src/vs/sessions/services/agentHostFilter/browser/agentHostFilterService.d.ts +79 -0
  289. package/vscode/src/vs/sessions/services/agentHostFilter/browser/agentHostFilterService.js +259 -0
  290. package/vscode/src/vs/sessions/services/customView/browser/customView.d.ts +42 -0
  291. package/vscode/src/vs/sessions/services/customView/browser/customView.js +15 -0
  292. package/vscode/src/vs/sessions/services/customView/browser/customViewService.d.ts +21 -0
  293. package/vscode/src/vs/sessions/services/customView/browser/customViewService.js +68 -0
  294. package/vscode/src/vs/sessions/services/sessions/browser/closedItemHistory.d.ts +72 -0
  295. package/vscode/src/vs/sessions/services/sessions/browser/closedItemHistory.js +115 -0
  296. package/vscode/src/vs/sessions/services/sessions/browser/sessionGroupsService.d.ts +77 -0
  297. package/vscode/src/vs/sessions/services/sessions/browser/sessionGroupsService.js +330 -0
  298. package/vscode/src/vs/sessions/services/sessions/browser/sessionNavigation.d.ts +67 -0
  299. package/vscode/src/vs/sessions/services/sessions/browser/sessionNavigation.js +157 -0
  300. package/vscode/src/vs/sessions/services/sessions/browser/sessionOpenTelemetryService.d.ts +32 -0
  301. package/vscode/src/vs/sessions/services/sessions/browser/sessionOpenTelemetryService.js +162 -0
  302. package/vscode/src/vs/sessions/services/sessions/browser/sessionSectionOrderService.d.ts +40 -0
  303. package/vscode/src/vs/sessions/services/sessions/browser/sessionSectionOrderService.js +170 -0
  304. package/vscode/src/vs/sessions/services/sessions/browser/sessionsListModelService.d.ts +63 -0
  305. package/vscode/src/vs/sessions/services/sessions/browser/sessionsListModelService.js +419 -0
  306. package/vscode/src/vs/sessions/services/sessions/browser/sessionsManagementService.d.ts +229 -0
  307. package/vscode/src/vs/sessions/services/sessions/browser/sessionsManagementService.js +1212 -0
  308. package/vscode/src/vs/sessions/services/sessions/browser/sessionsProvidersService.d.ts +22 -0
  309. package/vscode/src/vs/sessions/services/sessions/browser/sessionsProvidersService.js +42 -0
  310. package/vscode/src/vs/sessions/services/sessions/browser/sessionsRecencyHistory.d.ts +43 -0
  311. package/vscode/src/vs/sessions/services/sessions/browser/sessionsRecencyHistory.js +103 -0
  312. package/vscode/src/vs/sessions/services/sessions/browser/sessionsService.d.ts +243 -0
  313. package/vscode/src/vs/sessions/services/sessions/browser/sessionsService.js +1121 -0
  314. package/vscode/src/vs/sessions/services/sessions/browser/sessionsWindowUsageService.d.ts +8 -0
  315. package/vscode/src/vs/sessions/services/sessions/browser/sessionsWindowUsageService.js +24 -0
  316. package/vscode/src/vs/sessions/services/sessions/browser/visibleSessions.d.ts +321 -0
  317. package/vscode/src/vs/sessions/services/sessions/browser/visibleSessions.js +729 -0
  318. package/vscode/src/vs/sessions/services/sessions/browser/worktreeTrust.d.ts +23 -0
  319. package/vscode/src/vs/sessions/services/sessions/browser/worktreeTrust.js +23 -0
  320. package/vscode/src/vs/sessions/services/sessions/common/sessionContextKeys.d.ts +32 -0
  321. package/vscode/src/vs/sessions/services/sessions/common/sessionContextKeys.js +103 -0
  322. package/vscode/src/vs/sessions/services/workspaceFolderLabel/browser/workspaceFolderLabelService.d.ts +16 -0
  323. package/vscode/src/vs/sessions/services/workspaceFolderLabel/browser/workspaceFolderLabelService.js +41 -0
  324. package/vscode/src/vs/workbench/browser/layout.js +7 -7
  325. package/vscode/src/vs/workbench/browser/workbench.js +3 -3
@@ -0,0 +1,1550 @@
1
+
2
+ import { registerCss } from '@codingame/monaco-vscode-api/css';
3
+ import { __decorate, __param } from '@codingame/monaco-vscode-api/external/tslib/tslib.es6';
4
+ import { Codicon } from '@codingame/monaco-vscode-api/vscode/vs/base/common/codicons';
5
+ 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';
7
+ 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';
9
+ import '@codingame/monaco-vscode-api/vscode/vs/base/common/observableInternal/index';
10
+ import { Event, Emitter } from '@codingame/monaco-vscode-api/vscode/vs/base/common/event';
11
+ import { ThemeIcon } from '@codingame/monaco-vscode-api/vscode/vs/base/common/themables';
12
+ 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';
14
+ import { IActionViewItemService } from '@codingame/monaco-vscode-api/vscode/vs/platform/actions/browser/actionViewItemService.service';
15
+ import { ICommandService } from '@codingame/monaco-vscode-api/vscode/vs/platform/commands/common/commands.service';
16
+ import { isConfigured } from '@codingame/monaco-vscode-api/vscode/vs/platform/configuration/common/configuration';
17
+ import { IConfigurationService } from '@codingame/monaco-vscode-api/vscode/vs/platform/configuration/common/configuration.service';
18
+ import { ContextKeyExpr } from '@codingame/monaco-vscode-api/vscode/vs/platform/contextkey/common/contextkey';
19
+ import { IContextKeyService } from '@codingame/monaco-vscode-api/vscode/vs/platform/contextkey/common/contextkey.service';
20
+ import { InputFocusedContext } from '@codingame/monaco-vscode-api/vscode/vs/platform/contextkey/common/contextkeys';
21
+ import { IKeybindingService } from '@codingame/monaco-vscode-api/vscode/vs/platform/keybinding/common/keybinding.service';
22
+ import { KeybindingWeight, KeybindingsRegistry } from '@codingame/monaco-vscode-api/vscode/vs/platform/keybinding/common/keybindingsRegistry';
23
+ import { WorkbenchListFocusContextKey } from '@codingame/monaco-vscode-api/vscode/vs/platform/list/browser/listService';
24
+ import { ILogService } from '@codingame/monaco-vscode-api/vscode/vs/platform/log/common/log.service';
25
+ import { observableConfigValue } from '@codingame/monaco-vscode-api/vscode/vs/platform/observable/common/platformObservableUtils';
26
+ import { IUriIdentityService } from '@codingame/monaco-vscode-api/vscode/vs/platform/uriIdentity/common/uriIdentity.service';
27
+ import { IQuickInputService } from '@codingame/monaco-vscode-api/vscode/vs/platform/quickinput/common/quickInput.service';
28
+ import { IsSessionsWindowContext, IsAuxiliaryWindowContext, EditorAreaFocusContext, FocusedViewContext } from '@codingame/monaco-vscode-api/vscode/vs/workbench/common/contextkeys';
29
+ import { Parts } from '@codingame/monaco-vscode-api/vscode/vs/workbench/services/layout/browser/layoutService';
30
+ import { IWorkbenchLayoutService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/services/layout/browser/layoutService.service';
31
+ import { IViewsService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/services/views/common/viewsService.service';
32
+ 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
+ import { Menus } from '@codingame/monaco-vscode-api/vscode/vs/sessions/browser/menus';
35
+ 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';
37
+ 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';
39
+ import { ISessionsManagementService } from '@codingame/monaco-vscode-api/vscode/vs/sessions/services/sessions/common/sessionsManagement.service';
40
+ 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';
42
+ import { ISessionsPartService } from '@codingame/monaco-vscode-api/vscode/vs/sessions/services/sessions/browser/sessionsPartService.service';
43
+ import { ISessionsListModelService } from '@codingame/monaco-vscode-api/vscode/vs/sessions/services/sessions/browser/sessionsListModelService.service';
44
+ import { EventHelper, isMouseEvent, $, reset, append, ModifierKeyEmitter } from '@codingame/monaco-vscode-api/vscode/vs/base/browser/dom';
45
+ import { BaseActionViewItem } from '@codingame/monaco-vscode-api/vscode/vs/base/browser/ui/actionbar/actionViewItems';
46
+ import { Button } from '@codingame/monaco-vscode-api/vscode/vs/base/browser/ui/button/button';
47
+ import { HoverPosition } from '@codingame/monaco-vscode-api/vscode/vs/base/browser/ui/hover/hoverWidget';
48
+ import { KeybindingLabel } from '@codingame/monaco-vscode-api/vscode/vs/base/browser/ui/keybindingLabel/keybindingLabel';
49
+ import { OS } from '@codingame/monaco-vscode-api/vscode/vs/base/common/platform';
50
+ import { IEnvironmentService } from '@codingame/monaco-vscode-api/vscode/vs/platform/environment/common/environment.service';
51
+ import { IHoverService } from '@codingame/monaco-vscode-api/vscode/vs/platform/hover/browser/hover.service';
52
+ import { IProductService } from '@codingame/monaco-vscode-api/vscode/vs/platform/product/common/productService.service';
53
+ import { ITelemetryService } from '@codingame/monaco-vscode-api/vscode/vs/platform/telemetry/common/telemetry.service';
54
+ import { asCssVariable } from '@codingame/monaco-vscode-api/vscode/vs/platform/theme/common/colorUtils';
55
+ import '@codingame/monaco-vscode-api/vscode/vs/platform/theme/common/colors/baseColors';
56
+ import '@codingame/monaco-vscode-api/vscode/vs/platform/theme/common/colors/chartsColors';
57
+ import '@codingame/monaco-vscode-api/vscode/vs/platform/theme/common/colors/editorColors';
58
+ import '@codingame/monaco-vscode-api/vscode/vs/platform/theme/common/colors/inputColors';
59
+ import '@codingame/monaco-vscode-api/vscode/vs/platform/theme/common/colors/listColors';
60
+ import '@codingame/monaco-vscode-api/vscode/vs/platform/theme/common/colors/menuColors';
61
+ import '@codingame/monaco-vscode-api/vscode/vs/platform/theme/common/colors/minimapColors';
62
+ import '@codingame/monaco-vscode-api/vscode/vs/platform/theme/common/colors/miscColors';
63
+ import '@codingame/monaco-vscode-api/vscode/vs/platform/theme/common/colors/quickpickColors';
64
+ import '@codingame/monaco-vscode-api/vscode/vs/platform/theme/common/colors/searchColors';
65
+ import { defaultButtonStyles } from '@codingame/monaco-vscode-api/vscode/vs/platform/theme/browser/defaultStyles';
66
+ import { markOnboardingTarget } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/onboarding/browser/spotlight/onboardingTarget';
67
+ 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';
69
+ import { logSessionsInteraction } from '@codingame/monaco-vscode-api/vscode/vs/sessions/common/sessionsTelemetry';
70
+ import { NEW_SESSION_ACTION_ID } from '@codingame/monaco-vscode-api/vscode/vs/sessions/contrib/chat/common/constants';
71
+ 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';
74
+ import { SessionsViewId } from '@codingame/monaco-vscode-api/vscode/vs/sessions/contrib/sessions/browser/views/sessionsView';
75
+ import * as newSessionActionViewItem from './media/newSessionActionViewItem.css';
76
+ import { INewSessionComposerService } from '@codingame/monaco-vscode-api/vscode/vs/sessions/contrib/chat/browser/newSessionComposerService.service';
77
+ import { observableSignalFromEvent } from '@codingame/monaco-vscode-api/vscode/vs/base/common/observableInternal/observables/observableSignalFromEvent';
78
+ import { autorun } from '@codingame/monaco-vscode-api/vscode/vs/base/common/observableInternal/reactions/autorun';
79
+ import { getHighestPriorityPullRequestIcon } from '@codingame/monaco-vscode-api/vscode/vs/workbench/common/chatPullRequest';
80
+ import { observableValue } from '@codingame/monaco-vscode-api/vscode/vs/base/common/observableInternal/observables/observableValue';
81
+
82
+ var NewSessionActionViewItemContribution_1;
83
+ registerCss(newSessionActionViewItem, 1);
84
+ const NEW_SESSION_BUTTON_STYLE_SETTING = "sessions.newSessionButton.style";
85
+ const NEW_SESSION_BUTTON_STYLE_TREATMENT = "agentSessionsNewSessionButtonStyle";
86
+ const SHOW_SESSIONS_PICKER_COMMAND_ID = "sessions.showSessionsPicker";
87
+ registerAction2(class ShowSessionsPickerAction extends Action2 {
88
+ constructor() {
89
+ super({
90
+ id: SHOW_SESSIONS_PICKER_COMMAND_ID,
91
+ title: ( localize2(4534, "Show Sessions Picker")),
92
+ f1: true,
93
+ category: SessionsCategories.Sessions,
94
+ keybinding: {
95
+ primary: KeyMod.CtrlCmd | KeyCode.KeyR,
96
+ mac: {
97
+ primary: KeyMod.WinCtrl | KeyMod.Alt | KeyCode.KeyR
98
+ },
99
+ weight: KeybindingWeight.SessionsContrib,
100
+ when: IsSessionsWindowContext
101
+ }
102
+ });
103
+ }
104
+ async run(accessor) {
105
+ const sessionsService = accessor.get(ISessionsService);
106
+ const quickInputService = accessor.get(IQuickInputService);
107
+ const sessionsPartService = accessor.get(ISessionsPartService);
108
+ const sessionsListModelService = accessor.get(ISessionsListModelService);
109
+ const sessionsManagementService = accessor.get(ISessionsManagementService);
110
+ const contextKeyService = accessor.get(IContextKeyService);
111
+ const composerService = accessor.get(INewSessionComposerService);
112
+ const activeSessionId = sessionsService.activeSession.get()?.sessionId;
113
+ const toPickItem = (session, reader) => {
114
+ const title = session.title.read(reader) || getUntitledSessionTitle(session.isQuickChat?.read(reader) ?? false);
115
+ const status = session.status.read(reader);
116
+ const isRead = session.isRead.read(reader);
117
+ const isArchived = session.isArchived.read(reader);
118
+ const workspace = session.workspace.read(reader);
119
+ const gitHubInfo = workspace?.folders[0]?.gitRepository?.gitHubInfo.read(reader);
120
+ const pullRequestIcon = getHighestPriorityPullRequestIcon(getGitHubPullRequestRefs(gitHubInfo).map(pullRequest => pullRequest.icon));
121
+ const completedStateIcon = session.completedStateIcon?.read(reader) ?? pullRequestIcon;
122
+ const icon = sessionsListModelService.getStatusIcon(status, isRead, isArchived, completedStateIcon);
123
+ const detailParts = [];
124
+ if (workspace?.label) {
125
+ const isWorkspaceFolder = workspace.folders.length > 0 && workspace.folders[0]?.gitRepository?.workTreeUri === undefined;
126
+ const workspaceIcon = workspace.typeIcon ?? (workspace.isVirtualWorkspace ? Codicon.cloud : isWorkspaceFolder ? Codicon.folder : Codicon.worktree);
127
+ detailParts.push(`$(${Codicon.blank.id}) $(${workspaceIcon.id}) ${workspace.label}`);
128
+ } else {
129
+ detailParts.push(`$(${Codicon.blank.id})`);
130
+ }
131
+ detailParts.push(fromNow(session.updatedAt.read(reader), true, true));
132
+ return {
133
+ id: session.sessionId,
134
+ label: title,
135
+ detail: detailParts.join(" · "),
136
+ iconClass: ThemeIcon.asClassName(icon),
137
+ iconColor: icon.color,
138
+ session
139
+ };
140
+ };
141
+ const picker = quickInputService.createQuickPick({
142
+ useSeparators: true
143
+ });
144
+ picker.placeholder = ( localize(4535, "Search sessions by name or folder"));
145
+ picker.canAcceptInBackground = true;
146
+ picker.matchOnDetail = true;
147
+ const disposables = ( new DisposableStore());
148
+ disposables.add(picker);
149
+ const sessionsChanged = observableSignalFromEvent(
150
+ "sessionsPickerSessionsChanged",
151
+ sessionsManagementService.onDidChangeSessions
152
+ );
153
+ disposables.add(autorun(reader => {
154
+ sessionsChanged.read(reader);
155
+ const {
156
+ recent,
157
+ other
158
+ } = sessionsService.getRecentlyOpenedSessions();
159
+ const sessionGroups = groupSessionsForPicker(recent, other, reader);
160
+ const items = [{
161
+ id: "newSession",
162
+ label: `$(add) ${( localize(4536, "New Session"))}`,
163
+ session: undefined
164
+ }];
165
+ let firstSessionItem;
166
+ const appendSessions = (label, sessions) => {
167
+ if (sessions.length === 0) {
168
+ return;
169
+ }
170
+ items.push({
171
+ type: "separator",
172
+ label
173
+ });
174
+ for (const session of sessions) {
175
+ const item = toPickItem(session, reader);
176
+ firstSessionItem ??= item;
177
+ items.push(item);
178
+ }
179
+ };
180
+ appendSessions(( localize(4537, "needs input")), sessionGroups.needsInput);
181
+ appendSessions(( localize(4538, "unread")), sessionGroups.unread);
182
+ appendSessions(( localize(4539, "recently opened")), sessionGroups.recent);
183
+ appendSessions(( localize(4540, "other sessions")), sessionGroups.other);
184
+ const activeItemId = picker.activeItems[0]?.id;
185
+ picker.items = items;
186
+ const activeItem = activeItemId ? items.find(item => item.type !== "separator" && item.id === activeItemId) : firstSessionItem;
187
+ if (activeItem) {
188
+ picker.activeItems = [activeItem];
189
+ }
190
+ }));
191
+ const pickerVisibleContext = SessionsPickerVisibleContext.bindTo(contextKeyService);
192
+ pickerVisibleContext.set(true);
193
+ disposables.add(toDisposable(() => pickerVisibleContext.reset()));
194
+ const openSelected = (selected, inBackground, toSide) => {
195
+ composerService.notifyUserNavigation();
196
+ if (!selected.session) {
197
+ sessionsService.openNewSession();
198
+ sessionsPartService.focusSession(sessionsService.activeSession.get());
199
+ return;
200
+ }
201
+ if (toSide && activeSessionId !== undefined && selected.session.sessionId !== activeSessionId) {
202
+ sessionsService.insertAt(selected.session, activeSessionId, "right", !inBackground);
203
+ } else {
204
+ sessionsService.openSession(selected.session.resource, {
205
+ preserveFocus: inBackground,
206
+ source: "sessionsList"
207
+ });
208
+ }
209
+ };
210
+ disposables.add(picker.onDidAccept(e => {
211
+ const [selected] = picker.selectedItems;
212
+ if (selected) {
213
+ const toSide = picker.keyMods.ctrlCmd || picker.keyMods.alt;
214
+ openSelected(selected, e.inBackground, toSide);
215
+ }
216
+ if (!e.inBackground) {
217
+ picker.hide();
218
+ }
219
+ }));
220
+ disposables.add(picker.onDidHide(() => disposables.dispose()));
221
+ picker.show();
222
+ }
223
+ });
224
+ const SESSIONS_PICKER_NAVIGATE_NEXT_ID = "sessions.showSessionsPicker.navigateNext";
225
+ KeybindingsRegistry.registerCommandAndKeybindingRule({
226
+ id: SESSIONS_PICKER_NAVIGATE_NEXT_ID,
227
+ weight: KeybindingWeight.SessionsContrib + 50,
228
+ handler: getQuickNavigateHandler(SESSIONS_PICKER_NAVIGATE_NEXT_ID, true),
229
+ when: SessionsPickerVisibleContext,
230
+ primary: KeyMod.CtrlCmd | KeyCode.KeyR,
231
+ mac: {
232
+ primary: KeyMod.WinCtrl | KeyMod.Alt | KeyCode.KeyR
233
+ }
234
+ });
235
+ const SESSIONS_PICKER_NAVIGATE_PREVIOUS_ID = "sessions.showSessionsPicker.navigatePrevious";
236
+ KeybindingsRegistry.registerCommandAndKeybindingRule({
237
+ id: SESSIONS_PICKER_NAVIGATE_PREVIOUS_ID,
238
+ weight: KeybindingWeight.SessionsContrib + 50,
239
+ handler: getQuickNavigateHandler(SESSIONS_PICKER_NAVIGATE_PREVIOUS_ID, false),
240
+ when: SessionsPickerVisibleContext,
241
+ primary: KeyMod.CtrlCmd | KeyMod.Shift | KeyCode.KeyR,
242
+ mac: {
243
+ primary: KeyMod.WinCtrl | KeyMod.Alt | KeyMod.Shift | KeyCode.KeyR
244
+ }
245
+ });
246
+ registerAction2(class GoBackAction extends Action2 {
247
+ constructor() {
248
+ super({
249
+ id: "sessions.goBack",
250
+ title: {
251
+ ...( localize2(4541, "Go Back")),
252
+ mnemonicTitle: ( localize(4542, "&&Back"))
253
+ },
254
+ f1: true,
255
+ icon: Codicon.arrowLeft,
256
+ tooltip: ( localize(4543, "Go Back One Session")),
257
+ category: SessionsCategories.Sessions,
258
+ precondition: CanGoBackContext,
259
+ keybinding: {
260
+ weight: KeybindingWeight.SessionsContrib,
261
+ win: {
262
+ primary: KeyMod.Alt | KeyCode.LeftArrow,
263
+ secondary: [KeyCode.BrowserBack, KeyMod.CtrlCmd | KeyMod.Shift | KeyCode.Tab]
264
+ },
265
+ mac: {
266
+ primary: KeyMod.WinCtrl | KeyCode.Minus,
267
+ secondary: [KeyCode.BrowserBack, KeyMod.WinCtrl | KeyMod.Shift | KeyCode.Tab]
268
+ },
269
+ linux: {
270
+ primary: KeyMod.CtrlCmd | KeyMod.Alt | KeyCode.Minus,
271
+ secondary: [KeyCode.BrowserBack, KeyMod.CtrlCmd | KeyMod.Shift | KeyCode.Tab]
272
+ },
273
+ when: ( ContextKeyExpr.and(IsSessionsWindowContext, ( EditorAreaFocusContext.toNegated())))
274
+ },
275
+ menu: [{
276
+ id: Menus.TitleBarCenterLeft,
277
+ group: "navigation",
278
+ order: 1,
279
+ when: ( ContextKeyExpr.and(( IsAuxiliaryWindowContext.toNegated()), ( SessionsWelcomeVisibleContext.toNegated())))
280
+ }, {
281
+ id: Menus.GoMenu,
282
+ group: "1_history_nav",
283
+ order: 1
284
+ }]
285
+ });
286
+ }
287
+ async run(accessor) {
288
+ await accessor.get(ISessionsService).openPreviousSession();
289
+ }
290
+ });
291
+ registerAction2(class GoForwardAction extends Action2 {
292
+ constructor() {
293
+ super({
294
+ id: "sessions.goForward",
295
+ title: {
296
+ ...( localize2(4544, "Go Forward")),
297
+ mnemonicTitle: ( localize(4545, "&&Forward"))
298
+ },
299
+ f1: true,
300
+ icon: Codicon.arrowRight,
301
+ tooltip: ( localize(4546, "Go Forward One Session")),
302
+ category: SessionsCategories.Sessions,
303
+ precondition: CanGoForwardContext,
304
+ keybinding: {
305
+ weight: KeybindingWeight.SessionsContrib,
306
+ win: {
307
+ primary: KeyMod.Alt | KeyCode.RightArrow,
308
+ secondary: [KeyCode.BrowserForward, KeyMod.CtrlCmd | KeyCode.Tab]
309
+ },
310
+ mac: {
311
+ primary: KeyMod.WinCtrl | KeyMod.Shift | KeyCode.Minus,
312
+ secondary: [KeyCode.BrowserForward, KeyMod.WinCtrl | KeyCode.Tab]
313
+ },
314
+ linux: {
315
+ primary: KeyMod.CtrlCmd | KeyMod.Shift | KeyCode.Minus,
316
+ secondary: [KeyCode.BrowserForward, KeyMod.CtrlCmd | KeyCode.Tab]
317
+ },
318
+ when: ( ContextKeyExpr.and(IsSessionsWindowContext, ( EditorAreaFocusContext.toNegated())))
319
+ },
320
+ menu: [{
321
+ id: Menus.TitleBarCenterLeft,
322
+ group: "navigation",
323
+ order: 2,
324
+ when: ( ContextKeyExpr.and(( IsAuxiliaryWindowContext.toNegated()), ( SessionsWelcomeVisibleContext.toNegated())))
325
+ }, {
326
+ id: Menus.GoMenu,
327
+ group: "1_history_nav",
328
+ order: 2
329
+ }]
330
+ });
331
+ }
332
+ async run(accessor) {
333
+ await accessor.get(ISessionsService).openNextSession();
334
+ }
335
+ });
336
+ registerAction2(class FocusActiveSessionAction extends Action2 {
337
+ constructor() {
338
+ super({
339
+ id: FOCUS_ACTIVE_SESSION_COMMAND_ID,
340
+ title: ( localize2(4547, "Focus Active Session")),
341
+ f1: true,
342
+ category: SessionsCategories.Sessions,
343
+ keybinding: {
344
+ weight: KeybindingWeight.SessionsContrib,
345
+ primary: KeyMod.CtrlCmd | KeyMod.Alt | KeyCode.KeyI,
346
+ secondary: [KeyMod.CtrlCmd | KeyMod.Shift | KeyCode.KeyI],
347
+ mac: {
348
+ primary: KeyMod.CtrlCmd | KeyMod.WinCtrl | KeyCode.KeyI,
349
+ secondary: [KeyMod.CtrlCmd | KeyMod.Shift | KeyCode.KeyI]
350
+ },
351
+ linux: {
352
+ primary: KeyMod.CtrlCmd | KeyMod.Alt | KeyCode.KeyI,
353
+ secondary: [KeyMod.CtrlCmd | KeyMod.Alt | KeyMod.Shift | KeyCode.KeyI]
354
+ }
355
+ }
356
+ });
357
+ }
358
+ async run(accessor) {
359
+ const sessionsPartService = accessor.get(ISessionsPartService);
360
+ const sessionsService = accessor.get(ISessionsService);
361
+ sessionsPartService.focusSession(sessionsService.activeSession.get());
362
+ }
363
+ });
364
+ function withActiveSessionView(accessor, action) {
365
+ const sessionsService = accessor.get(ISessionsService);
366
+ const view = accessor.get(ISessionsPartService).getSessionView(sessionsService.activeSession.get()?.sessionId);
367
+ if (view) {
368
+ action(view);
369
+ }
370
+ }
371
+ registerAction2(class FocusPreviousChatGroupAction extends Action2 {
372
+ constructor() {
373
+ super({
374
+ id: FOCUS_PREVIOUS_CHAT_GROUP_COMMAND_ID,
375
+ title: ( localize2(4548, "Focus Previous Chat Group")),
376
+ f1: true,
377
+ category: SessionsCategories.Sessions,
378
+ keybinding: {
379
+ weight: KeybindingWeight.SessionsContrib,
380
+ primary: KeyChord(KeyMod.CtrlCmd | KeyCode.KeyK, KeyMod.CtrlCmd | KeyCode.LeftArrow),
381
+ when: ( ContextKeyExpr.and(IsSessionsWindowContext, ( EditorAreaFocusContext.toNegated())))
382
+ }
383
+ });
384
+ }
385
+ run(accessor) {
386
+ withActiveSessionView(accessor, view => view.focusAdjacentChatGroup("previous"));
387
+ }
388
+ });
389
+ registerAction2(class FocusNextChatGroupAction extends Action2 {
390
+ constructor() {
391
+ super({
392
+ id: FOCUS_NEXT_CHAT_GROUP_COMMAND_ID,
393
+ title: ( localize2(4549, "Focus Next Chat Group")),
394
+ f1: true,
395
+ category: SessionsCategories.Sessions,
396
+ keybinding: {
397
+ weight: KeybindingWeight.SessionsContrib,
398
+ primary: KeyChord(KeyMod.CtrlCmd | KeyCode.KeyK, KeyMod.CtrlCmd | KeyCode.RightArrow),
399
+ when: ( ContextKeyExpr.and(IsSessionsWindowContext, ( EditorAreaFocusContext.toNegated())))
400
+ }
401
+ });
402
+ }
403
+ run(accessor) {
404
+ withActiveSessionView(accessor, view => view.focusAdjacentChatGroup("next"));
405
+ }
406
+ });
407
+ registerAction2(class SplitChatGroupRightAction extends Action2 {
408
+ constructor() {
409
+ super({
410
+ id: SPLIT_CHAT_GROUP_RIGHT_COMMAND_ID,
411
+ title: ( localize2(4550, "Split Chat Group Right")),
412
+ f1: true,
413
+ category: SessionsCategories.Sessions
414
+ });
415
+ }
416
+ run(accessor) {
417
+ withActiveSessionView(accessor, view => view.splitActiveChat("right"));
418
+ }
419
+ });
420
+ registerAction2(class SplitChatGroupDownAction extends Action2 {
421
+ constructor() {
422
+ super({
423
+ id: SPLIT_CHAT_GROUP_DOWN_COMMAND_ID,
424
+ title: ( localize2(4551, "Split Chat Group Down")),
425
+ f1: true,
426
+ category: SessionsCategories.Sessions
427
+ });
428
+ }
429
+ run(accessor) {
430
+ withActiveSessionView(accessor, view => view.splitActiveChat("bottom"));
431
+ }
432
+ });
433
+ registerAction2(class MoveChatToPreviousGroupAction extends Action2 {
434
+ constructor() {
435
+ super({
436
+ id: MOVE_CHAT_TO_PREVIOUS_GROUP_COMMAND_ID,
437
+ title: ( localize2(4552, "Move Chat to Previous Group")),
438
+ f1: true,
439
+ category: SessionsCategories.Sessions
440
+ });
441
+ }
442
+ run(accessor) {
443
+ withActiveSessionView(accessor, view => view.moveActiveChatToAdjacentGroup("previous"));
444
+ }
445
+ });
446
+ registerAction2(class MoveChatToNextGroupAction extends Action2 {
447
+ constructor() {
448
+ super({
449
+ id: MOVE_CHAT_TO_NEXT_GROUP_COMMAND_ID,
450
+ title: ( localize2(4553, "Move Chat to Next Group")),
451
+ f1: true,
452
+ category: SessionsCategories.Sessions
453
+ });
454
+ }
455
+ run(accessor) {
456
+ withActiveSessionView(accessor, view => view.moveActiveChatToAdjacentGroup("next"));
457
+ }
458
+ });
459
+ for (let index = 0; index < 9; index++) {
460
+ const position = index + 1;
461
+ const isLast = position === 9;
462
+ registerAction2(class FocusSessionByPositionAction extends Action2 {
463
+ constructor() {
464
+ super({
465
+ id: `sessions.focusSessionInGrid${position}`,
466
+ title: isLast ? ( localize2(4554, "Focus Last Session in Grid")) : ( localize2(4555, "Focus Session {0} in Grid", position)),
467
+ f1: true,
468
+ category: SessionsCategories.Sessions,
469
+ keybinding: {
470
+ weight: KeybindingWeight.SessionsContrib,
471
+ primary: KeyMod.CtrlCmd | (KeyCode.Digit1 + index),
472
+ when: IsSessionsWindowContext
473
+ }
474
+ });
475
+ }
476
+ async run(accessor) {
477
+ const sessionsService = accessor.get(ISessionsService);
478
+ const sessionsPartService = accessor.get(ISessionsPartService);
479
+ const visible = sessionsService.visibleSessions.get();
480
+ const targetIndex = isLast ? visible.length - 1 : index;
481
+ if (targetIndex < 0 || targetIndex >= visible.length) {
482
+ return;
483
+ }
484
+ const session = visible[targetIndex];
485
+ sessionsService.setActive(session);
486
+ sessionsPartService.focusSession(session);
487
+ }
488
+ });
489
+ }
490
+ registerAction2(class CloseAllSessionsAction extends Action2 {
491
+ constructor() {
492
+ super({
493
+ id: "sessions.closeAllSessions",
494
+ title: ( localize2(4556, "Close All Sessions")),
495
+ f1: true,
496
+ category: SessionsCategories.Sessions,
497
+ precondition: IsSessionsWindowContext,
498
+ keybinding: {
499
+ weight: KeybindingWeight.SessionsContrib,
500
+ primary: KeyChord(KeyMod.CtrlCmd | KeyCode.KeyK, KeyMod.CtrlCmd | KeyCode.KeyW),
501
+ when: ( ContextKeyExpr.and(IsSessionsWindowContext, SessionsFocusContext))
502
+ }
503
+ });
504
+ }
505
+ async run(accessor) {
506
+ accessor.get(ISessionsService).closeAllSessions();
507
+ }
508
+ });
509
+ const CHAT_TAB_KEYBINDING_WEIGHT = KeybindingWeight.SessionsContrib + 10;
510
+ function getSessionsList(accessor) {
511
+ return accessor.get(IViewsService).getViewWithId(SessionsViewId)?.sessionsControl;
512
+ }
513
+ function getChatRenameContext(accessor, context) {
514
+ if (context) {
515
+ return context;
516
+ }
517
+ const sessionsList = getSessionsList(accessor);
518
+ const focusedChat = sessionsList?.getFocusedChatItem();
519
+ if (focusedChat) {
520
+ return focusedChat;
521
+ }
522
+ if (sessionsList?.getFocusedSessions() !== undefined) {
523
+ return undefined;
524
+ }
525
+ const sessionView = accessor.get(ISessionsPartService).getFocusedSessionView();
526
+ const session = sessionView?.getSession();
527
+ const chat = sessionView?.getFocusedChat();
528
+ return session && chat ? {
529
+ session,
530
+ chat
531
+ } : undefined;
532
+ }
533
+ async function renameChatWithQuickInput(accessor, context) {
534
+ const extUri = accessor.get(IUriIdentityService).extUri;
535
+ const quickInputService = accessor.get(IQuickInputService);
536
+ const sessionsManagementService = accessor.get(ISessionsManagementService);
537
+ const {
538
+ session,
539
+ chat
540
+ } = context;
541
+ const resource = chat.resource;
542
+ const initialChat = session.chats.get().find(candidate => extUri.isEqual(candidate.resource, resource));
543
+ if (!initialChat || extUri.isEqual(resource, session.mainChat.get().resource) || initialChat.status.get() === SessionStatus.Untitled || !getChatCapabilities(initialChat, session, undefined).canRename) {
544
+ return;
545
+ }
546
+ const initialTitle = initialChat.title.get().trim() || ( localize(4557, "Untitled Chat"));
547
+ const newTitle = await quickInputService.input({
548
+ value: initialTitle,
549
+ prompt: ( localize(4558, "New chat title")),
550
+ validateInput: async value => value.trim() ? undefined : ( localize(4559, "Title cannot be empty"))
551
+ });
552
+ const trimmedTitle = newTitle?.trim();
553
+ if (!trimmedTitle || trimmedTitle === initialTitle) {
554
+ return;
555
+ }
556
+ const currentChat = session.chats.get().find(candidate => extUri.isEqual(candidate.resource, resource));
557
+ if (!currentChat || extUri.isEqual(resource, session.mainChat.get().resource) || currentChat.status.get() === SessionStatus.Untitled || !getChatCapabilities(currentChat, session, undefined).canRename) {
558
+ return;
559
+ }
560
+ await sessionsManagementService.renameChat(session, resource, trimmedTitle);
561
+ }
562
+ registerAction2(class RenameChatAction extends Action2 {
563
+ constructor() {
564
+ super({
565
+ id: RENAME_CHAT_COMMAND_ID,
566
+ title: ( localize2(4560, "Rename...")),
567
+ f1: false,
568
+ category: SessionsCategories.Sessions,
569
+ keybinding: {
570
+ primary: KeyCode.F2,
571
+ 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(4561, "Rename...")),
588
+ f1: false,
589
+ menu: {
590
+ id: Menus.SessionChatItemContext,
591
+ group: "1_chat",
592
+ order: 1,
593
+ when: ( ContextKeyExpr.and(SessionChatItemCanRenameContext, ( SessionChatItemIsUntitledContext.negate())))
594
+ }
595
+ });
596
+ }
597
+ async run(accessor, context) {
598
+ if (!context) {
599
+ return;
600
+ }
601
+ await renameChatWithQuickInput(accessor, context);
602
+ }
603
+ });
604
+ registerAction2(class OpenSessionListChatToSideAction extends Action2 {
605
+ constructor() {
606
+ super({
607
+ id: "sessions.list.openChatToSide",
608
+ title: ( localize2(4562, "Open to the Side")),
609
+ f1: false,
610
+ menu: {
611
+ id: Menus.SessionChatItemContext,
612
+ group: "1_chat",
613
+ order: 2
614
+ }
615
+ });
616
+ }
617
+ async run(accessor, context) {
618
+ if (!context) {
619
+ return;
620
+ }
621
+ const sessionsService = accessor.get(ISessionsService);
622
+ if (!(await sessionsService.canOpenSession(context.session))) {
623
+ return;
624
+ }
625
+ await sessionsService.openChatToSide(context.session, context.chat.resource);
626
+ }
627
+ });
628
+ registerAction2(class DeleteSessionListChatAction extends Action2 {
629
+ constructor() {
630
+ super({
631
+ id: "sessions.list.deleteChat",
632
+ title: ( localize2(4563, "Delete...")),
633
+ f1: false,
634
+ menu: {
635
+ id: Menus.SessionChatItemContext,
636
+ group: "2_delete",
637
+ order: 1,
638
+ when: SessionChatItemCanDeleteContext
639
+ }
640
+ });
641
+ }
642
+ async run(accessor, context) {
643
+ if (!context || !getChatCapabilities(context.chat, context.session, undefined).canDelete) {
644
+ return;
645
+ }
646
+ await accessor.get(ISessionsManagementService).deleteChat(context.session, context.chat.resource);
647
+ }
648
+ });
649
+ const ADD_CHAT_TO_SESSION_ACTION_ID = "sessions.chatCompositeBar.addChat";
650
+ registerAction2(class AddChatToSessionAction extends Action2 {
651
+ constructor() {
652
+ super({
653
+ id: ADD_CHAT_TO_SESSION_ACTION_ID,
654
+ title: ( localize2(4564, "New Chat in This Session")),
655
+ icon: Codicon.add,
656
+ keybinding: {
657
+ weight: CHAT_TAB_KEYBINDING_WEIGHT,
658
+ when: ( ContextKeyExpr.and(IsSessionsWindowContext, ( EditorAreaFocusContext.toNegated()), SessionIsCreatedContext, SessionSupportsMultipleChatsContext, ( IsQuickChatSessionContext.negate()), ( SessionIsArchivedContext.negate()))),
659
+ primary: KeyMod.CtrlCmd | KeyCode.KeyT
660
+ },
661
+ menu: [{
662
+ id: Menus.SessionBarToolbar,
663
+ group: "secondary/3_newChat",
664
+ order: 10,
665
+ when: ( ContextKeyExpr.and(
666
+ SessionIsCreatedContext,
667
+ SessionSupportsMultipleChatsContext,
668
+ ( IsQuickChatSessionContext.negate()),
669
+ ( SessionIsArchivedContext.negate())
670
+ ))
671
+ }, {
672
+ id: Menus.SessionItemContextMenu,
673
+ group: "1_newChat",
674
+ order: 0,
675
+ when: ( ContextKeyExpr.and(
676
+ SessionIsCreatedContext,
677
+ SessionSupportsMultipleChatsContext,
678
+ ( IsQuickChatSessionContext.negate()),
679
+ ( SessionIsArchivedContext.negate())
680
+ ))
681
+ }]
682
+ });
683
+ }
684
+ async run(accessor, context) {
685
+ const sessionsService = accessor.get(ISessionsService);
686
+ const sessionsPartService = accessor.get(ISessionsPartService);
687
+ const target = Array.isArray(context) ? context[0] : context ?? sessionsService.activeSession.get();
688
+ if (!target) {
689
+ return;
690
+ }
691
+ if (target.isQuickChat?.get()) {
692
+ return;
693
+ }
694
+ await sessionsService.openNewChatInSession(target);
695
+ const activeSession = sessionsService.activeSession.get();
696
+ sessionsPartService.focusSession(activeSession?.sessionId === target.sessionId ? activeSession : undefined);
697
+ }
698
+ });
699
+ function navigateChatTab(accessor, direction) {
700
+ const sessionsService = accessor.get(ISessionsService);
701
+ const sessionsPartService = accessor.get(ISessionsPartService);
702
+ const extUri = accessor.get(IUriIdentityService).extUri;
703
+ const session = sessionsService.activeSession.get();
704
+ if (!session) {
705
+ return;
706
+ }
707
+ const tabs = session.visibleChatTabs.get();
708
+ if (tabs.length < 2) {
709
+ return;
710
+ }
711
+ const activeChat = session.activeChat.get();
712
+ const currentIndex = activeChat ? tabs.findIndex(chat => extUri.isEqual(chat.resource, activeChat.resource)) : -1;
713
+ const from = currentIndex === -1 ? 0 : currentIndex;
714
+ const delta = direction === "next" ? 1 : -1;
715
+ const target = tabs[(from + delta + tabs.length) % tabs.length];
716
+ sessionsService.openChat(session, target.resource);
717
+ sessionsPartService.focusSession(session);
718
+ }
719
+ registerAction2(class NavigateNextChatAction extends Action2 {
720
+ constructor() {
721
+ super({
722
+ id: "sessions.chatCompositeBar.navigateNextChat",
723
+ title: ( localize2(4565, "Go to Next Chat")),
724
+ f1: true,
725
+ category: SessionsCategories.Sessions,
726
+ precondition: SessionHasMultipleOpenChatsContext,
727
+ keybinding: {
728
+ weight: CHAT_TAB_KEYBINDING_WEIGHT,
729
+ when: ( ContextKeyExpr.and(IsSessionsWindowContext, ( EditorAreaFocusContext.toNegated()), SessionHasMultipleOpenChatsContext)),
730
+ primary: KeyMod.CtrlCmd | KeyMod.Shift | KeyCode.BracketRight
731
+ }
732
+ });
733
+ }
734
+ run(accessor) {
735
+ navigateChatTab(accessor, "next");
736
+ }
737
+ });
738
+ registerAction2(class NavigatePreviousChatAction extends Action2 {
739
+ constructor() {
740
+ super({
741
+ id: "sessions.chatCompositeBar.navigatePreviousChat",
742
+ title: ( localize2(4566, "Go to Previous Chat")),
743
+ f1: true,
744
+ category: SessionsCategories.Sessions,
745
+ precondition: SessionHasMultipleOpenChatsContext,
746
+ keybinding: {
747
+ weight: CHAT_TAB_KEYBINDING_WEIGHT,
748
+ when: ( ContextKeyExpr.and(IsSessionsWindowContext, ( EditorAreaFocusContext.toNegated()), SessionHasMultipleOpenChatsContext)),
749
+ primary: KeyMod.CtrlCmd | KeyMod.Shift | KeyCode.BracketLeft
750
+ }
751
+ });
752
+ }
753
+ run(accessor) {
754
+ navigateChatTab(accessor, "previous");
755
+ }
756
+ });
757
+ registerAction2(class CloseChatAction extends Action2 {
758
+ constructor() {
759
+ super({
760
+ id: CLOSE_CHAT_COMMAND_ID,
761
+ title: ( localize2(4567, "Close Chat")),
762
+ icon: Codicon.close,
763
+ f1: false,
764
+ category: SessionsCategories.Sessions,
765
+ keybinding: {
766
+ weight: CHAT_TAB_KEYBINDING_WEIGHT,
767
+ when: ( ContextKeyExpr.and(IsSessionsWindowContext, ( EditorAreaFocusContext.toNegated()), SessionActiveChatIsClosableContext)),
768
+ primary: KeyMod.CtrlCmd | KeyCode.KeyW,
769
+ win: {
770
+ primary: KeyMod.CtrlCmd | KeyCode.F4,
771
+ secondary: [KeyMod.CtrlCmd | KeyCode.KeyW]
772
+ }
773
+ },
774
+ menu: {
775
+ id: Menus.SessionChatTab,
776
+ group: "navigation",
777
+ order: 10
778
+ }
779
+ });
780
+ }
781
+ async run(accessor, context) {
782
+ const sessionsService = accessor.get(ISessionsService);
783
+ const sessionsManagementService = accessor.get(ISessionsManagementService);
784
+ const extUri = accessor.get(IUriIdentityService).extUri;
785
+ const session = context?.session ?? sessionsService.activeSession.get();
786
+ if (!session) {
787
+ return;
788
+ }
789
+ const chat = context?.chat ?? session.activeChat.get();
790
+ if (!chat || extUri.isEqual(chat.resource, session.mainChat.get().resource)) {
791
+ return;
792
+ }
793
+ if (chat.status.get() === SessionStatus.Untitled) {
794
+ await sessionsManagementService.deleteChat(session, chat.resource, {
795
+ skipConfirmation: true
796
+ });
797
+ } else {
798
+ await sessionsService.closeChat(session, chat);
799
+ }
800
+ }
801
+ });
802
+ registerAction2(class CloseAllChatsAction extends Action2 {
803
+ constructor() {
804
+ super({
805
+ id: "sessions.chatCompositeBar.closeAllChats",
806
+ title: ( localize2(4568, "Close All Chats")),
807
+ f1: true,
808
+ category: SessionsCategories.Sessions,
809
+ precondition: SessionHasMultipleOpenChatsContext,
810
+ keybinding: {
811
+ weight: CHAT_TAB_KEYBINDING_WEIGHT,
812
+ when: ( ContextKeyExpr.and(IsSessionsWindowContext, (
813
+ EditorAreaFocusContext.toNegated()), SessionHasMultipleOpenChatsContext)),
814
+ primary: KeyChord(KeyMod.CtrlCmd | KeyCode.KeyK, KeyCode.KeyW)
815
+ }
816
+ });
817
+ }
818
+ async run(accessor) {
819
+ const sessionsService = accessor.get(ISessionsService);
820
+ const sessionsManagementService = accessor.get(ISessionsManagementService);
821
+ const extUri = accessor.get(IUriIdentityService).extUri;
822
+ const session = sessionsService.activeSession.get();
823
+ if (!session) {
824
+ return;
825
+ }
826
+ const mainResource = session.mainChat.get().resource;
827
+ const chatsToClose = session.openChats.get().filter(chat => !extUri.isEqual(chat.resource, mainResource));
828
+ for (const chat of chatsToClose) {
829
+ if (chat.status.get() === SessionStatus.Untitled) {
830
+ await sessionsManagementService.deleteChat(session, chat.resource, {
831
+ skipConfirmation: true
832
+ });
833
+ } else {
834
+ await sessionsService.closeChat(session, chat, {
835
+ skipHistory: true
836
+ });
837
+ }
838
+ }
839
+ }
840
+ });
841
+ registerAction2(class DeleteChatAction extends Action2 {
842
+ constructor() {
843
+ super({
844
+ id: "sessions.chatCompositeBar.deleteChat",
845
+ title: ( localize2(4569, "Delete Chat")),
846
+ f1: true,
847
+ category: SessionsCategories.Sessions,
848
+ keybinding: {
849
+ weight: CHAT_TAB_KEYBINDING_WEIGHT,
850
+ when: ( ContextKeyExpr.and(IsSessionsWindowContext, SessionsFocusContext, ( EditorAreaFocusContext.toNegated()), ( InputFocusedContext.toNegated()), SessionActiveChatIsDeletableContext)),
851
+ primary: KeyCode.Delete,
852
+ mac: {
853
+ primary: KeyMod.CtrlCmd | KeyCode.Backspace,
854
+ secondary: [KeyCode.Delete]
855
+ }
856
+ }
857
+ });
858
+ }
859
+ async run(accessor) {
860
+ const sessionsService = accessor.get(ISessionsService);
861
+ const sessionsManagementService = accessor.get(ISessionsManagementService);
862
+ const session = sessionsService.activeSession.get();
863
+ if (!session) {
864
+ return;
865
+ }
866
+ const chat = session.activeChat.get();
867
+ if (!chat || !getChatCapabilities(chat, session, undefined).canDelete) {
868
+ return;
869
+ }
870
+ await sessionsManagementService.deleteChat(session, chat.resource);
871
+ }
872
+ });
873
+ registerAction2(class ReopenLastClosedChatAction extends Action2 {
874
+ constructor() {
875
+ super({
876
+ id: "sessions.chatCompositeBar.reopenLastClosedChat",
877
+ title: ( localize2(4570, "Reopen Last Closed Chat")),
878
+ f1: true,
879
+ category: SessionsCategories.Sessions,
880
+ precondition: SessionSupportsMultipleChatsContext
881
+ });
882
+ }
883
+ async run(accessor) {
884
+ const sessionsService = accessor.get(ISessionsService);
885
+ const sessionsPartService = accessor.get(ISessionsPartService);
886
+ const session = sessionsService.activeSession.get();
887
+ if (!session) {
888
+ return;
889
+ }
890
+ const lastClosed = session.lastClosedChat;
891
+ if (!lastClosed) {
892
+ return;
893
+ }
894
+ await sessionsService.openChat(session, lastClosed.resource);
895
+ sessionsPartService.focusSession(session);
896
+ }
897
+ });
898
+ registerAction2(class ReopenLastClosedItemAction extends Action2 {
899
+ constructor() {
900
+ super({
901
+ id: "sessions.reopenLastClosedItem",
902
+ title: ( localize2(4571, "Reopen Closed Chat or Session")),
903
+ category: SessionsCategories.Sessions,
904
+ keybinding: {
905
+ weight: CHAT_TAB_KEYBINDING_WEIGHT,
906
+ when: ( ContextKeyExpr.and(IsSessionsWindowContext, ( SessionsEditorScopeContext.negate()))),
907
+ primary: KeyMod.CtrlCmd | KeyMod.Shift | KeyCode.KeyT
908
+ },
909
+ menu: {
910
+ id: MenuId.CommandPalette,
911
+ when: ( ContextKeyExpr.and(IsSessionsWindowContext, SessionsHasClosedItemContext))
912
+ }
913
+ });
914
+ }
915
+ async run(accessor) {
916
+ await accessor.get(ISessionsService).reopenLastClosedItem();
917
+ }
918
+ });
919
+ const SHOW_CHATS_PICKER_COMMAND_ID = "sessions.showChatsPicker";
920
+ const QUICK_SWITCH_NEXT_CHAT_ID = "sessions.quickSwitchNextChat";
921
+ const QUICK_SWITCH_PREVIOUS_CHAT_ID = "sessions.quickSwitchPreviousChat";
922
+ const CHATS_PICKER_QUICK_NAVIGATE_NEXT_ID = "sessions.chatsPicker.quickNavigateNext";
923
+ const CHATS_PICKER_QUICK_NAVIGATE_PREVIOUS_ID = "sessions.chatsPicker.quickNavigatePrevious";
924
+ const ChatsPickerScopeContext = ( ContextKeyExpr.and(IsSessionsWindowContext, ( EditorAreaFocusContext.toNegated()), SessionHasMultipleOpenChatsContext, ( inQuickPickContext.negate())));
925
+ function openChatsPicker(accessor, mru) {
926
+ const sessionsService = accessor.get(ISessionsService);
927
+ const quickInputService = accessor.get(IQuickInputService);
928
+ const sessionsPartService = accessor.get(ISessionsPartService);
929
+ const contextKeyService = accessor.get(IContextKeyService);
930
+ const keybindingService = accessor.get(IKeybindingService);
931
+ const session = sessionsService.activeSession.get();
932
+ if (!session) {
933
+ return;
934
+ }
935
+ const extUri = accessor.get(IUriIdentityService).extUri;
936
+ const toItem = chat => ({
937
+ label: chat.title.get()?.trim() || ( localize(4557, "Untitled Chat")),
938
+ description: fromNow(chat.updatedAt.get(), true, true),
939
+ iconClass: ThemeIcon.asClassName(Codicon.commentDiscussion),
940
+ chat
941
+ });
942
+ const openItems = (mru ? session.visibleChatTabs.get() : session.visibleChatTabs.get().filter(chat => chat.status.get() !== SessionStatus.Untitled)).map(toItem);
943
+ const closedItems = mru ? [] : session.closedChats.get().filter(
944
+ chat => chat.status.get() !== SessionStatus.Untitled && chat.origin?.kind !== ChatOriginKind.Tool
945
+ ).map(toItem);
946
+ const pickItems = [...openItems, ...closedItems];
947
+ if (pickItems.length === 0) {
948
+ return;
949
+ }
950
+ const displayItems = closedItems.length === 0 ? openItems : [{
951
+ type: "separator",
952
+ label: ( localize(4572, "Open"))
953
+ }, ...openItems, {
954
+ type: "separator",
955
+ label: ( localize(4573, "Closed"))
956
+ }, ...closedItems];
957
+ const activeChat = session.activeChat.get();
958
+ const activeIndex = Math.max(
959
+ 0,
960
+ activeChat ? pickItems.findIndex(item => extUri.isEqual(item.chat.resource, activeChat.resource)) : -1
961
+ );
962
+ const startIndex = mru ? (activeIndex + (mru.backward ? -1 : 1) + pickItems.length) % pickItems.length : activeIndex;
963
+ const disposables = ( new DisposableStore());
964
+ const picker = disposables.add(quickInputService.createQuickPick({
965
+ useSeparators: true
966
+ }));
967
+ picker.items = displayItems;
968
+ picker.activeItems = [pickItems[startIndex]];
969
+ if (mru) {
970
+ picker.hideInput = true;
971
+ picker.quickNavigate = {
972
+ keybindings: keybindingService.lookupKeybindings(CHATS_PICKER_QUICK_NAVIGATE_NEXT_ID)
973
+ };
974
+ } else {
975
+ picker.placeholder = ( localize(4574, "Search chats by name"));
976
+ picker.matchOnDescription = true;
977
+ }
978
+ const pickerVisibleContext = SessionChatsPickerVisibleContext.bindTo(contextKeyService);
979
+ pickerVisibleContext.set(true);
980
+ disposables.add(toDisposable(() => pickerVisibleContext.reset()));
981
+ disposables.add(picker.onDidAccept(() => {
982
+ const [selected] = picker.selectedItems;
983
+ if (selected) {
984
+ sessionsService.openChat(session, selected.chat.resource);
985
+ sessionsPartService.focusSession(session);
986
+ }
987
+ picker.hide();
988
+ }));
989
+ disposables.add(picker.onDidHide(() => disposables.dispose()));
990
+ picker.show();
991
+ }
992
+ registerAction2(class ShowChatsPickerAction extends Action2 {
993
+ constructor() {
994
+ super({
995
+ id: SHOW_CHATS_PICKER_COMMAND_ID,
996
+ title: ( localize2(4575, "Go to Chat in Session")),
997
+ f1: true,
998
+ category: SessionsCategories.Sessions,
999
+ precondition: SessionHasMultipleCommittedChatsContext,
1000
+ keybinding: {
1001
+ weight: KeybindingWeight.SessionsContrib,
1002
+ when: ( ContextKeyExpr.and(IsSessionsWindowContext, ( EditorAreaFocusContext.toNegated()), ( inQuickPickContext.negate()))),
1003
+ primary: KeyMod.CtrlCmd | KeyMod.Shift | KeyCode.KeyO
1004
+ }
1005
+ });
1006
+ }
1007
+ run(accessor) {
1008
+ openChatsPicker(accessor);
1009
+ }
1010
+ });
1011
+ registerAction2(class QuickSwitchNextChatAction extends Action2 {
1012
+ constructor() {
1013
+ super({
1014
+ id: QUICK_SWITCH_NEXT_CHAT_ID,
1015
+ title: ( localize2(4576, "Quick Switch to Next Chat")),
1016
+ f1: false,
1017
+ category: SessionsCategories.Sessions,
1018
+ precondition: SessionHasMultipleOpenChatsContext,
1019
+ keybinding: {
1020
+ weight: KeybindingWeight.SessionsContrib + 1,
1021
+ when: ChatsPickerScopeContext,
1022
+ primary: KeyMod.CtrlCmd | KeyCode.Tab,
1023
+ mac: {
1024
+ primary: KeyMod.WinCtrl | KeyCode.Tab
1025
+ }
1026
+ }
1027
+ });
1028
+ }
1029
+ run(accessor) {
1030
+ openChatsPicker(accessor, {
1031
+ backward: false
1032
+ });
1033
+ }
1034
+ });
1035
+ registerAction2(class QuickSwitchPreviousChatAction extends Action2 {
1036
+ constructor() {
1037
+ super({
1038
+ id: QUICK_SWITCH_PREVIOUS_CHAT_ID,
1039
+ title: ( localize2(4577, "Quick Switch to Previous Chat")),
1040
+ f1: false,
1041
+ category: SessionsCategories.Sessions,
1042
+ precondition: SessionHasMultipleOpenChatsContext,
1043
+ keybinding: {
1044
+ weight: KeybindingWeight.SessionsContrib + 1,
1045
+ when: ChatsPickerScopeContext,
1046
+ primary: KeyMod.CtrlCmd | KeyMod.Shift | KeyCode.Tab,
1047
+ mac: {
1048
+ primary: KeyMod.WinCtrl | KeyMod.Shift | KeyCode.Tab
1049
+ }
1050
+ }
1051
+ });
1052
+ }
1053
+ run(accessor) {
1054
+ openChatsPicker(accessor, {
1055
+ backward: true
1056
+ });
1057
+ }
1058
+ });
1059
+ KeybindingsRegistry.registerCommandAndKeybindingRule({
1060
+ id: CHATS_PICKER_QUICK_NAVIGATE_NEXT_ID,
1061
+ weight: KeybindingWeight.SessionsContrib + 50,
1062
+ handler: getQuickNavigateHandler(CHATS_PICKER_QUICK_NAVIGATE_NEXT_ID, true),
1063
+ when: SessionChatsPickerVisibleContext,
1064
+ primary: KeyMod.CtrlCmd | KeyCode.Tab,
1065
+ mac: {
1066
+ primary: KeyMod.WinCtrl | KeyCode.Tab
1067
+ }
1068
+ });
1069
+ KeybindingsRegistry.registerCommandAndKeybindingRule({
1070
+ id: CHATS_PICKER_QUICK_NAVIGATE_PREVIOUS_ID,
1071
+ weight: KeybindingWeight.SessionsContrib + 50,
1072
+ handler: getQuickNavigateHandler(CHATS_PICKER_QUICK_NAVIGATE_PREVIOUS_ID, false),
1073
+ when: SessionChatsPickerVisibleContext,
1074
+ primary: KeyMod.CtrlCmd | KeyMod.Shift | KeyCode.Tab,
1075
+ mac: {
1076
+ primary: KeyMod.WinCtrl | KeyMod.Shift | KeyCode.Tab
1077
+ }
1078
+ });
1079
+ let CompactButtonActionViewItem = class CompactButtonActionViewItem extends BaseActionViewItem {
1080
+ constructor(action, keybindingService, hoverService, contextKeyService) {
1081
+ super(undefined, action);
1082
+ this.keybindingService = keybindingService;
1083
+ this.hoverService = hoverService;
1084
+ this.contextKeyService = contextKeyService;
1085
+ }
1086
+ get onboardingTargetId() {
1087
+ return undefined;
1088
+ }
1089
+ get showKeybindingHint() {
1090
+ return true;
1091
+ }
1092
+ onRun() {}
1093
+ runAction(_event) {
1094
+ void this.actionRunner.run(this.action, this._context);
1095
+ }
1096
+ configureButton(_button) {}
1097
+ render(container) {
1098
+ super.render(container);
1099
+ if (!this.element) {
1100
+ return;
1101
+ }
1102
+ const button = this._register(( new Button(this.element, {
1103
+ ...defaultButtonStyles,
1104
+ buttonSecondaryBackground: asCssVariable(agentsNewSessionButtonBackground),
1105
+ buttonSecondaryForeground: asCssVariable(agentsNewSessionButtonForeground),
1106
+ buttonSecondaryHoverBackground: asCssVariable(agentsNewSessionButtonHoverBackground),
1107
+ buttonSecondaryBorder: asCssVariable(agentsNewSessionButtonBorder),
1108
+ secondary: true,
1109
+ supportIcons: true
1110
+ })));
1111
+ button.element.classList.add("agent-sessions-compact-new-button");
1112
+ this.configureButton(button);
1113
+ const onboardingTargetId = this.onboardingTargetId;
1114
+ if (onboardingTargetId) {
1115
+ this._register(markOnboardingTarget(button.element, onboardingTargetId));
1116
+ }
1117
+ this._register(button.onDidClick(e => {
1118
+ EventHelper.stop(e, true);
1119
+ if (!this.action.enabled) {
1120
+ return;
1121
+ }
1122
+ this.onRun();
1123
+ this.runAction(isMouseEvent(e) ? e : undefined);
1124
+ }));
1125
+ const buttonLabel = $("span.new-session-button-label", undefined, this.label);
1126
+ const keybindingHint = $("span.new-session-keybinding-hint");
1127
+ const keybindingHintLabel = this.showKeybindingHint ? this._register(( new KeybindingLabel(keybindingHint, OS, {
1128
+ disableTitle: true,
1129
+ keybindingLabelBackground: "transparent",
1130
+ keybindingLabelForeground: "inherit",
1131
+ keybindingLabelBorder: "transparent",
1132
+ keybindingLabelBottomBorder: undefined,
1133
+ keybindingLabelShadow: undefined
1134
+ }))) : undefined;
1135
+ reset(button.element, buttonLabel);
1136
+ const getKeybinding = () => {
1137
+ const primaryKeybinding = this.keybindingService.lookupKeybinding(this.commandId, this.contextKeyService, true);
1138
+ const resolvedKeybindings = this.keybindingService.lookupKeybindings(this.commandId);
1139
+ return primaryKeybinding ?? resolvedKeybindings[0];
1140
+ };
1141
+ this._register(this.hoverService.setupDelayedHover(button.element, () => ({
1142
+ content: this.getHoverContent(getKeybinding()?.getLabel() ?? undefined),
1143
+ appearance: {
1144
+ compact: true
1145
+ },
1146
+ position: {
1147
+ hoverPosition: HoverPosition.BELOW
1148
+ }
1149
+ })));
1150
+ let lastRenderedKeybindingLabel = null;
1151
+ let lastRenderedKeybindingAriaLabel = null;
1152
+ const updateButton = () => {
1153
+ const keybinding = getKeybinding();
1154
+ const keybindingLabel = keybinding?.getLabel() ?? undefined;
1155
+ const keybindingAriaLabel = keybinding?.getAriaLabel() ?? undefined;
1156
+ if (lastRenderedKeybindingLabel === keybindingLabel && lastRenderedKeybindingAriaLabel === keybindingAriaLabel) {
1157
+ return;
1158
+ }
1159
+ lastRenderedKeybindingLabel = keybindingLabel;
1160
+ lastRenderedKeybindingAriaLabel = keybindingAriaLabel;
1161
+ keybindingHintLabel?.set(keybinding);
1162
+ if (keybindingHintLabel && keybinding) {
1163
+ if (keybindingHint.parentElement !== button.element) {
1164
+ append(button.element, keybindingHint);
1165
+ }
1166
+ } else {
1167
+ keybindingHint.remove();
1168
+ }
1169
+ button.element.setAttribute("aria-label", this.getAriaLabel(keybindingAriaLabel));
1170
+ };
1171
+ this._register(
1172
+ Event.runAndSubscribe(this.keybindingService.onDidUpdateKeybindings, updateButton)
1173
+ );
1174
+ }
1175
+ };
1176
+ CompactButtonActionViewItem = ( __decorate([( __param(1, IKeybindingService)), ( __param(2, IHoverService)), ( __param(3, IContextKeyService))], CompactButtonActionViewItem));
1177
+ let NewSessionActionViewItem = class NewSessionActionViewItem extends CompactButtonActionViewItem {
1178
+ constructor(
1179
+ action,
1180
+ telemetrySource,
1181
+ newSessionButtonStyle,
1182
+ keybindingService,
1183
+ hoverService,
1184
+ telemetryService,
1185
+ contextKeyService,
1186
+ commandService
1187
+ ) {
1188
+ super(action, keybindingService, hoverService, contextKeyService);
1189
+ this.telemetrySource = telemetrySource;
1190
+ this.newSessionButtonStyle = newSessionButtonStyle;
1191
+ this.telemetryService = telemetryService;
1192
+ this.commandService = commandService;
1193
+ }
1194
+ get commandId() {
1195
+ return NEW_SESSION_ACTION_ID;
1196
+ }
1197
+ get label() {
1198
+ return localize(4578, "New");
1199
+ }
1200
+ get onboardingTargetId() {
1201
+ return "sessions.newSession.button";
1202
+ }
1203
+ configureButton(button) {
1204
+ this._register(autorun(reader => {
1205
+ const style = this.newSessionButtonStyle.read(reader);
1206
+ button.element.classList.toggle(
1207
+ "lightweight",
1208
+ style === "lightweight" || style === "lightweightWithKeybindingBackground"
1209
+ );
1210
+ button.element.classList.toggle(
1211
+ "lightweight-keybinding-background",
1212
+ style === "lightweightWithKeybindingBackground"
1213
+ );
1214
+ }));
1215
+ }
1216
+ getHoverContent(keybindingLabel) {
1217
+ return keybindingLabel ? ( localize(4579, "New Session ({0})", keybindingLabel)) : ( localize(4580, "New Session"));
1218
+ }
1219
+ getAriaLabel(keybindingAriaLabel) {
1220
+ return keybindingAriaLabel ? ( localize(4581, "New Session ({0})", keybindingAriaLabel)) : ( localize(4582, "New Session"));
1221
+ }
1222
+ onRun() {
1223
+ logSessionsInteraction(this.telemetryService, "newSession", this.telemetrySource);
1224
+ }
1225
+ runAction(event) {
1226
+ if (event?.altKey) {
1227
+ this.commandService.executeCommand(NEW_SESSION_ACTION_ID, {
1228
+ toSide: true
1229
+ }).catch(onUnexpectedError);
1230
+ } else {
1231
+ super.runAction(event);
1232
+ }
1233
+ }
1234
+ };
1235
+ NewSessionActionViewItem = ( __decorate([( __param(3, IKeybindingService)), ( __param(4, IHoverService)), ( __param(5, ITelemetryService)), ( __param(6, IContextKeyService)), ( __param(7, ICommandService))], NewSessionActionViewItem));
1236
+ let NewSessionActionViewItemContribution = class NewSessionActionViewItemContribution extends Disposable {
1237
+ static {
1238
+ NewSessionActionViewItemContribution_1 = this;
1239
+ }
1240
+ static {
1241
+ this.ID = "workbench.contrib.sessions.newSessionActionViewItem";
1242
+ }
1243
+ static {
1244
+ this.NEW_SESSION_TITLEBAR_TREATMENT = "agentSessionsTitleBarNewSession";
1245
+ }
1246
+ constructor(
1247
+ actionViewItemService,
1248
+ contextKeyService,
1249
+ assignmentService,
1250
+ environmentService,
1251
+ productService,
1252
+ configurationService,
1253
+ logService
1254
+ ) {
1255
+ super();
1256
+ this.assignmentService = assignmentService;
1257
+ this.environmentService = environmentService;
1258
+ this.productService = productService;
1259
+ this.configurationService = configurationService;
1260
+ this.logService = logService;
1261
+ this.newSessionButtonStyle = observableValue(this, "default");
1262
+ this.newSessionButtonStyleRequest = 0;
1263
+ this.titleBarEnabledContext = SessionsTitleBarNewSessionEnabledContext.bindTo(contextKeyService);
1264
+ const configuredStyle = observableConfigValue(NEW_SESSION_BUTTON_STYLE_SETTING, "default", this.configurationService);
1265
+ const assignmentsChanged = observableSignalFromEvent(this, this.assignmentService.onDidRefetchAssignments);
1266
+ this._register(autorun(reader => {
1267
+ configuredStyle.read(reader);
1268
+ assignmentsChanged.read(reader);
1269
+ void this.updateNewSessionButtonStyle().catch(onUnexpectedError);
1270
+ }));
1271
+ const onDidRegister = this._register(( new Emitter()));
1272
+ const menus = [Menus.SidebarSessionsHeader, Menus.TitleBarLeftLayout];
1273
+ for (const menu of menus) {
1274
+ const source = menu === Menus.TitleBarLeftLayout ? "titleBar" : "sidebar";
1275
+ this._register(
1276
+ actionViewItemService.register(menu, NEW_SESSION_ACTION_ID, (action, _options, instantiationService) => {
1277
+ if (!(action instanceof MenuItemAction)) {
1278
+ return undefined;
1279
+ }
1280
+ return instantiationService.createInstance(NewSessionActionViewItem, action, source, this.newSessionButtonStyle);
1281
+ }, onDidRegister.event)
1282
+ );
1283
+ }
1284
+ onDidRegister.fire();
1285
+ this._register(
1286
+ this.assignmentService.onDidRefetchAssignments(() => this.updateTitleBarTreatment())
1287
+ );
1288
+ this.updateTitleBarTreatment();
1289
+ }
1290
+ async updateNewSessionButtonStyle() {
1291
+ const request = ++this.newSessionButtonStyleRequest;
1292
+ const inspection = this.configurationService.inspect(NEW_SESSION_BUTTON_STYLE_SETTING);
1293
+ let value;
1294
+ if (isConfigured(inspection)) {
1295
+ value = inspection.value;
1296
+ } else {
1297
+ try {
1298
+ value = await this.assignmentService.getTreatment(NEW_SESSION_BUTTON_STYLE_TREATMENT);
1299
+ } catch (error) {
1300
+ this.logService.warn(
1301
+ "[NewSessionActionViewItemContribution] Failed to resolve the New Session button style treatment; using default.",
1302
+ error
1303
+ );
1304
+ }
1305
+ }
1306
+ if (request !== this.newSessionButtonStyleRequest) {
1307
+ return;
1308
+ }
1309
+ this.newSessionButtonStyle.set(this.normalizeNewSessionButtonStyle(value), undefined);
1310
+ }
1311
+ normalizeNewSessionButtonStyle(value) {
1312
+ if (value === undefined || value === "default" || value === "lightweight" || value === "lightweightWithKeybindingBackground") {
1313
+ return value ?? "default";
1314
+ }
1315
+ this.logService.warn(
1316
+ `[NewSessionActionViewItemContribution] Unsupported New Session button style treatment '${value}'; using 'default'.`
1317
+ );
1318
+ return "default";
1319
+ }
1320
+ async updateTitleBarTreatment() {
1321
+ if (!this.environmentService.isBuilt) {
1322
+ this.titleBarEnabledContext.set(true);
1323
+ return;
1324
+ }
1325
+ const enabled = await this.assignmentService.getTreatment(NewSessionActionViewItemContribution_1.NEW_SESSION_TITLEBAR_TREATMENT);
1326
+ this.titleBarEnabledContext.set(enabled ?? this.productService.quality === "insider");
1327
+ }
1328
+ };
1329
+ 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));
1330
+ let SessionConversationActionsContribution = class SessionConversationActionsContribution extends Disposable {
1331
+ static {
1332
+ this.ID = "workbench.contrib.sessions.conversationActions";
1333
+ }
1334
+ constructor(_sessionsService, _uriIdentityService) {
1335
+ super();
1336
+ this._sessionsService = _sessionsService;
1337
+ this._uriIdentityService = _uriIdentityService;
1338
+ this._register(autorun(reader => {
1339
+ for (const session of this._sessionsService.visibleSessions.read(reader)) {
1340
+ if (session) {
1341
+ reader.store.add(this._registerSessionConversationActions(session, reader));
1342
+ }
1343
+ }
1344
+ }));
1345
+ }
1346
+ _registerSessionConversationActions(session, reader) {
1347
+ const store = ( new DisposableStore());
1348
+ const that = this;
1349
+ const extUri = this._uriIdentityService.extUri;
1350
+ const scopedToSession = ( ContextKeyExpr.equals(SessionIdContext.key, session.sessionId));
1351
+ const conversationsVisible = ( ContextKeyExpr.and(scopedToSession, SessionIsCreatedContext, ( SessionIsArchivedContext.negate()), SessionHasSideChatsContext));
1352
+ const allChats = session.chats.read(reader);
1353
+ const registerOpen = (chat, order) => {
1354
+ const chatResource = chat.resource;
1355
+ const title = chat.title.read(reader) || ( localize(4557, "Untitled Chat"));
1356
+ store.add(registerAction2(class extends Action2 {
1357
+ constructor() {
1358
+ super({
1359
+ id: getSessionConversationActionId(session.sessionId, chatResource),
1360
+ title,
1361
+ menu: {
1362
+ id: Menus.SessionConversations,
1363
+ group: SESSION_CONVERSATION_SIDE_CHATS_GROUP,
1364
+ order,
1365
+ when: conversationsVisible
1366
+ }
1367
+ });
1368
+ }
1369
+ async run(accessor, forwardedSession) {
1370
+ const target = forwardedSession ?? session;
1371
+ const targetChat = target.chats.get().find(c => extUri.isEqual(c.resource, chatResource));
1372
+ if (!targetChat) {
1373
+ return;
1374
+ }
1375
+ if (ModifierKeyEmitter.getInstance().keyStatus.altKey) {
1376
+ const view = accessor.get(ISessionsPartService).getSessionView(target.sessionId);
1377
+ if (view) {
1378
+ await view.openChatToSide(targetChat.resource);
1379
+ return;
1380
+ }
1381
+ }
1382
+ await that._sessionsService.openChat(target, targetChat.resource);
1383
+ }
1384
+ }));
1385
+ };
1386
+ allChats.forEach((chat, index) => {
1387
+ if (chat.status.read(reader) === SessionStatus.Untitled) {
1388
+ return;
1389
+ }
1390
+ if (isSessionConversationSideChat(chat)) {
1391
+ registerOpen(chat, index);
1392
+ }
1393
+ });
1394
+ return store;
1395
+ }
1396
+ };
1397
+ SessionConversationActionsContribution = ( __decorate([( __param(0, ISessionsService)), ( __param(1, IUriIdentityService))], SessionConversationActionsContribution));
1398
+ MenuRegistry.appendMenuItem(Menus.SessionBarToolbar, {
1399
+ submenu: Menus.SessionConversations,
1400
+ title: ( localize2(4583, "Side Chats")),
1401
+ icon: Codicon.commentDiscussion,
1402
+ group: "secondary/2_chats",
1403
+ order: 10,
1404
+ when: ( ContextKeyExpr.and(SessionIsCreatedContext, ( SessionIsArchivedContext.negate()), SessionHasSideChatsContext))
1405
+ });
1406
+ registerAction2(class TogglePinSessionAction extends Action2 {
1407
+ constructor() {
1408
+ super({
1409
+ id: "sessions.chatCompositeBar.togglePin",
1410
+ title: ( localize2(4584, "Pin")),
1411
+ icon: Codicon.pin,
1412
+ toggled: {
1413
+ condition: SessionIsStickyContext,
1414
+ icon: Codicon.pinned,
1415
+ title: ( localize(4585, "Unpin"))
1416
+ },
1417
+ menu: [{
1418
+ id: Menus.SessionBarToolbar,
1419
+ group: "navigation",
1420
+ order: 10,
1421
+ when: ( ContextKeyExpr.and(SessionIsCreatedContext, SessionIsStickyContext, ( SessionIsArchivedContext.negate())))
1422
+ }, {
1423
+ id: Menus.SessionBarToolbar,
1424
+ group: "secondary/4_pin",
1425
+ order: 10,
1426
+ when: ( ContextKeyExpr.and(SessionIsCreatedContext, ( SessionIsArchivedContext.negate())))
1427
+ }]
1428
+ });
1429
+ }
1430
+ async run(accessor, session) {
1431
+ if (!session) {
1432
+ return;
1433
+ }
1434
+ accessor.get(ISessionsService).toggleSessionStickiness(session);
1435
+ }
1436
+ });
1437
+ MenuRegistry.appendMenuItem(Menus.SessionHeaderContext, {
1438
+ command: {
1439
+ id: "sessions.chatCompositeBar.togglePin",
1440
+ title: ( localize(4586, "Pin")),
1441
+ toggled: {
1442
+ condition: SessionIsStickyContext,
1443
+ title: ( localize(4587, "Unpin"))
1444
+ }
1445
+ },
1446
+ group: "1_view",
1447
+ order: 1,
1448
+ when: SessionIsCreatedContext
1449
+ });
1450
+ registerAction2(class RenameSessionHeaderAction extends Action2 {
1451
+ constructor() {
1452
+ super({
1453
+ id: "sessions.sessionHeader.rename",
1454
+ title: ( localize2(4588, "Rename...")),
1455
+ icon: Codicon.edit,
1456
+ menu: [{
1457
+ id: Menus.SessionHeaderContext,
1458
+ group: "2_edit",
1459
+ order: 1,
1460
+ when: ( ContextKeyExpr.regex(SessionProviderIdContext.key, ANY_AGENT_HOST_PROVIDER_RE))
1461
+ }, {
1462
+ id: Menus.SessionBarToolbar,
1463
+ group: "secondary/1_session",
1464
+ order: 20,
1465
+ when: ( ContextKeyExpr.and(SessionIsCreatedContext, SessionSupportsRenameContext, ( SessionIsArchivedContext.negate())))
1466
+ }]
1467
+ });
1468
+ }
1469
+ async run(accessor, session) {
1470
+ if (!session) {
1471
+ return;
1472
+ }
1473
+ if (accessor.get(ISessionsPartService).getSessionView(session.sessionId)?.startTitleEditing()) {
1474
+ return;
1475
+ }
1476
+ await accessor.get(ICommandService).executeCommand(RENAME_SESSION_COMMAND_ID, session);
1477
+ }
1478
+ });
1479
+ registerAction2(class CloseSessionAction extends Action2 {
1480
+ constructor() {
1481
+ super({
1482
+ id: "sessions.chatCompositeBar.close",
1483
+ title: ( localize2(4589, "Close")),
1484
+ icon: Codicon.close,
1485
+ menu: [{
1486
+ id: Menus.SessionBarToolbar,
1487
+ when: ( ContextKeyExpr.or(SessionIsCreatedContext, MultipleSessionsVisibleContext)),
1488
+ group: "secondary/4_pin",
1489
+ order: 30
1490
+ }, {
1491
+ id: Menus.SessionHeaderContext,
1492
+ when: ( ContextKeyExpr.or(SessionIsCreatedContext, MultipleSessionsVisibleContext)),
1493
+ group: "1_view",
1494
+ order: 2
1495
+ }]
1496
+ });
1497
+ }
1498
+ async run(accessor, session) {
1499
+ const sessionsService = accessor.get(ISessionsService);
1500
+ const sessionsPartService = accessor.get(ISessionsPartService);
1501
+ sessionsService.closeSession(session);
1502
+ sessionsPartService.focusSession(sessionsService.activeSession.get());
1503
+ }
1504
+ });
1505
+ registerAction2(class ToggleMaximizeSessionViewAction extends Action2 {
1506
+ constructor() {
1507
+ super({
1508
+ id: "sessions.chatCompositeBar.toggleMaximize",
1509
+ title: ( localize2(4590, "Maximize")),
1510
+ icon: Codicon.screenFull,
1511
+ toggled: {
1512
+ condition: SessionIsMaximizedContext,
1513
+ icon: Codicon.screenNormal,
1514
+ title: ( localize(4591, "Restore"))
1515
+ },
1516
+ menu: {
1517
+ id: Menus.SessionBarToolbar,
1518
+ when: MultipleSessionsVisibleContext,
1519
+ group: "secondary/4_pin",
1520
+ order: 20
1521
+ }
1522
+ });
1523
+ }
1524
+ async run(accessor, session) {
1525
+ accessor.get(ISessionsPartService).toggleMaximizeSession(session);
1526
+ accessor.get(ISessionsService).setActive(session);
1527
+ }
1528
+ });
1529
+ registerAction2(class CloseEditorAreaAction extends Action2 {
1530
+ constructor() {
1531
+ super({
1532
+ id: "sessions.closeEditorArea",
1533
+ title: ( localize2(4592, "Close Editor Area")),
1534
+ icon: Codicon.close,
1535
+ category: SessionsCategories.Sessions,
1536
+ menu: {
1537
+ id: MenuId.EditorGroupWatermarkToolbar,
1538
+ group: "navigation",
1539
+ order: 10,
1540
+ when: IsSessionsWindowContext
1541
+ }
1542
+ });
1543
+ }
1544
+ async run(accessor) {
1545
+ const layoutService = accessor.get(IWorkbenchLayoutService);
1546
+ layoutService.setPartHidden(true, Parts.EDITOR_PART);
1547
+ }
1548
+ });
1549
+
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 };