@codingame/monaco-vscode-workbench-service-override 37.1.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,1270 @@
1
+
2
+ import { __decorate, __param } from '@codingame/monaco-vscode-api/external/tslib/tslib.es6';
3
+ import { Codicon } from '@codingame/monaco-vscode-api/vscode/vs/base/common/codicons';
4
+ import { toErrorMessage } from '@codingame/monaco-vscode-api/vscode/vs/base/common/errorMessage';
5
+ import { KeyMod, KeyCode, KeyChord } from '@codingame/monaco-vscode-api/vscode/vs/base/common/keyCodes';
6
+ import { Disposable, DisposableStore } from '@codingame/monaco-vscode-api/vscode/vs/base/common/lifecycle';
7
+ import { isWeb, isMobile } from '@codingame/monaco-vscode-api/vscode/vs/base/common/platform';
8
+ import { localize2, localize } from '@codingame/monaco-vscode-api/vscode/vs/nls';
9
+ import { Categories } from '@codingame/monaco-vscode-api/vscode/vs/platform/action/common/actionCommonCategories';
10
+ import { registerAction2, Action2, MenuRegistry, MenuId } from '@codingame/monaco-vscode-api/vscode/vs/platform/actions/common/actions';
11
+ import { CommandsRegistry } from '@codingame/monaco-vscode-api/vscode/vs/platform/commands/common/commands';
12
+ import { ICommandService } from '@codingame/monaco-vscode-api/vscode/vs/platform/commands/common/commands.service';
13
+ import { IConfigurationService } from '@codingame/monaco-vscode-api/vscode/vs/platform/configuration/common/configuration.service';
14
+ import { ContextKeyExpr } from '@codingame/monaco-vscode-api/vscode/vs/platform/contextkey/common/contextkey';
15
+ import { IContextKeyService } from '@codingame/monaco-vscode-api/vscode/vs/platform/contextkey/common/contextkey.service';
16
+ import { IsDevelopmentContext } from '@codingame/monaco-vscode-api/vscode/vs/platform/contextkey/common/contextkeys';
17
+ import { IDialogService } from '@codingame/monaco-vscode-api/vscode/vs/platform/dialogs/common/dialogs.service';
18
+ import { IQuickInputService } from '@codingame/monaco-vscode-api/vscode/vs/platform/quickinput/common/quickInput.service';
19
+ import { StorageScope, StorageTarget } from '@codingame/monaco-vscode-api/vscode/vs/platform/storage/common/storage';
20
+ import { IStorageService } from '@codingame/monaco-vscode-api/vscode/vs/platform/storage/common/storage.service';
21
+ import { KeybindingsRegistry, KeybindingWeight } from '@codingame/monaco-vscode-api/vscode/vs/platform/keybinding/common/keybindingsRegistry';
22
+ import { WorkbenchListFocusContextKey } from '@codingame/monaco-vscode-api/vscode/vs/platform/list/browser/listService';
23
+ import { IViewsService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/services/views/common/viewsService.service';
24
+ import { CLOSE_MOBILE_SIDEBAR_DRAWER_COMMAND_ID } from '@codingame/monaco-vscode-api/vscode/vs/sessions/browser/workbench';
25
+ import { EditorsVisibleContext, IsSessionsWindowContext, EditorAreaFocusContext, FocusedViewContext } from '@codingame/monaco-vscode-api/vscode/vs/workbench/common/contextkeys';
26
+ import { SessionsCategories } from '@codingame/monaco-vscode-api/vscode/vs/sessions/common/categories';
27
+ import { ARCHIVE_SESSION_COMMAND_ID, UNARCHIVE_SESSION_COMMAND_ID, RENAME_SESSION_COMMAND_ID, MARK_SESSION_READ_COMMAND_ID, MARK_SESSION_UNREAD_COMMAND_ID } from '@codingame/monaco-vscode-api/vscode/vs/sessions/common/sessionCommands';
28
+ import { IsNewChatSessionContext, SessionIsArchivedContext, SessionIsCreatedContext, SessionSupportsRenameContext, SessionSupportsDeleteContext, SessionIsReadContext } from '@codingame/monaco-vscode-api/vscode/vs/sessions/common/contextkeys';
29
+ import { SessionsSorting, SessionsGrouping, SessionSectionToolbarMenuId, SessionSectionHasNonCloudRepositoryContext, SessionSectionTypeContext, NEW_SESSION_FOR_WORKSPACE_ACTION_ID, SessionGroupHasVisibleSessionsContext, SessionGroupToolbarMenuId, SessionGroupIsEmptyContext, SessionItemToolbarMenuId, SessionItemContextMenuId, IsSessionPinnedContext } from '@codingame/monaco-vscode-api/vscode/vs/sessions/contrib/sessions/browser/views/sessionsList';
30
+ import { SessionStatus } from '@codingame/monaco-vscode-api/vscode/vs/sessions/services/sessions/common/session';
31
+ import { ISessionGroupsService } from '@codingame/monaco-vscode-api/vscode/vs/sessions/services/sessions/browser/sessionGroupsService.service';
32
+ import { SessionsViewId, SessionsViewFilterSubMenu, SessionsViewFilterOptionsSubMenu, SessionsViewSortingContext, SessionsViewGroupingContext, IsWorkspaceGroupCappedContext } from '@codingame/monaco-vscode-api/vscode/vs/sessions/contrib/sessions/browser/views/sessionsView';
33
+ import { Menus } from '@codingame/monaco-vscode-api/vscode/vs/sessions/browser/menus';
34
+ import { ISessionsManagementService } from '@codingame/monaco-vscode-api/vscode/vs/sessions/services/sessions/common/sessionsManagement.service';
35
+ import { ChatContextKeys } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/actions/chatContextKeys';
36
+ import { ChatSessionArchiveActionWording, getChatSessionArchiveActionPresentation, ChatSessionArchiveActionWordingSettingId, getChatSessionArchiveActionWording } from '@codingame/monaco-vscode-api/vscode/vs/platform/chat/common/sessionArchiveActions';
37
+ import { AGENT_HOST_ENABLED_CONTEXT_KEY } from '@codingame/monaco-vscode-api/vscode/vs/platform/agentHost/common/agentHostEnablementService';
38
+ import { ISessionsPartService } from '@codingame/monaco-vscode-api/vscode/vs/sessions/services/sessions/browser/sessionsPartService.service';
39
+ import { ISessionsService } from '@codingame/monaco-vscode-api/vscode/vs/sessions/services/sessions/browser/sessionsService.service';
40
+ import { registerWorkbenchContribution2, WorkbenchPhase } from '@codingame/monaco-vscode-api/vscode/vs/workbench/common/contributions';
41
+ import { registerExternalSessionsFilterMenu } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/browser/agentSessions/externalSessionsFilterMenu';
42
+ import { ICustomViewService } from '@codingame/monaco-vscode-api/vscode/vs/sessions/services/customView/browser/customViewService.service';
43
+ import { IAutomationService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/automations/automationService.service';
44
+ import { ChatAutomationsEnabledContext } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/automations/automationsEnabled';
45
+ import { AUTOMATIONS_CUSTOM_VIEW_ID } from '@codingame/monaco-vscode-api/vscode/vs/sessions/contrib/sessions/browser/automationsConstants';
46
+ import { UNIFIED_WORKSPACE_PICKER_SETTING } from '@codingame/monaco-vscode-api/vscode/vs/sessions/contrib/chat/common/constants';
47
+ import { INewSessionComposerService } from '@codingame/monaco-vscode-api/vscode/vs/sessions/contrib/chat/browser/newSessionComposerService.service';
48
+ import { WorkspaceSelectionOrigin } from '@codingame/monaco-vscode-api/vscode/vs/sessions/common/workspaceSelection';
49
+
50
+ const CLOSE_SESSION_COMMAND_ID = "sessionsViewPane.closeSession";
51
+ registerAction2(class CloseSessionAction extends Action2 {
52
+ constructor() {
53
+ super({
54
+ id: CLOSE_SESSION_COMMAND_ID,
55
+ title: ( localize2(4847, "Close Session")),
56
+ f1: true,
57
+ precondition: ( ContextKeyExpr.and(( IsNewChatSessionContext.negate()), ( EditorsVisibleContext.negate()))),
58
+ category: SessionsCategories.Sessions
59
+ });
60
+ }
61
+ async run(accessor) {
62
+ accessor.get(INewSessionComposerService).notifyUserNavigation();
63
+ const sessionsService = accessor.get(ISessionsService);
64
+ sessionsService.openNewSession();
65
+ }
66
+ });
67
+ KeybindingsRegistry.registerKeybindingRule({
68
+ id: CLOSE_SESSION_COMMAND_ID,
69
+ weight: KeybindingWeight.SessionsContrib,
70
+ when: ( ContextKeyExpr.and(( IsNewChatSessionContext.negate()), ( EditorsVisibleContext.negate()))),
71
+ primary: KeyMod.CtrlCmd | KeyCode.KeyW,
72
+ win: {
73
+ primary: KeyMod.CtrlCmd | KeyCode.F4,
74
+ secondary: [KeyMod.CtrlCmd | KeyCode.KeyW]
75
+ }
76
+ });
77
+ const OPEN_SESSION_AT_INDEX_COMMAND_ID = "sessionsViewPane.openSessionAtIndex";
78
+ function digitToKeyCode(digit) {
79
+ switch (digit) {
80
+ case 1:
81
+ return KeyCode.Digit1;
82
+ case 2:
83
+ return KeyCode.Digit2;
84
+ case 3:
85
+ return KeyCode.Digit3;
86
+ case 4:
87
+ return KeyCode.Digit4;
88
+ case 5:
89
+ return KeyCode.Digit5;
90
+ case 6:
91
+ return KeyCode.Digit6;
92
+ case 7:
93
+ return KeyCode.Digit7;
94
+ case 8:
95
+ return KeyCode.Digit8;
96
+ case 9:
97
+ return KeyCode.Digit9;
98
+ default:
99
+ return KeyCode.Unknown;
100
+ }
101
+ }
102
+ const openSessionAtIndex = async (accessor, sessionIndex) => {
103
+ if (typeof sessionIndex !== "number") {
104
+ return;
105
+ }
106
+ const viewsService = accessor.get(IViewsService);
107
+ const sessionsService = accessor.get(ISessionsService);
108
+ const view = viewsService.getViewWithId(SessionsViewId);
109
+ const visible = view?.sessionsControl?.getVisibleSessions() ?? [];
110
+ if (visible.length === 0) {
111
+ return;
112
+ }
113
+ const target = sessionIndex === -1 ? visible[visible.length - 1] : visible[sessionIndex];
114
+ if (!target) {
115
+ return;
116
+ }
117
+ if (await sessionsService.canOpenSession(target)) {
118
+ await sessionsService.openChat(target, target.mainChat.get().resource, {
119
+ source: "sessionsList"
120
+ });
121
+ }
122
+ };
123
+ CommandsRegistry.registerCommand({
124
+ id: OPEN_SESSION_AT_INDEX_COMMAND_ID,
125
+ handler: openSessionAtIndex
126
+ });
127
+ for (let visibleIndex = 1; visibleIndex <= 9; visibleIndex++) {
128
+ const sessionIndex = visibleIndex === 9 ? -1 : visibleIndex - 1;
129
+ KeybindingsRegistry.registerCommandAndKeybindingRule({
130
+ id: OPEN_SESSION_AT_INDEX_COMMAND_ID + visibleIndex,
131
+ weight: KeybindingWeight.SessionsContrib,
132
+ when: IsSessionsWindowContext,
133
+ primary: KeyMod.Alt | digitToKeyCode(visibleIndex),
134
+ mac: {
135
+ primary: KeyMod.WinCtrl | digitToKeyCode(visibleIndex)
136
+ },
137
+ handler: accessor => openSessionAtIndex(accessor, sessionIndex)
138
+ });
139
+ }
140
+ const navigateSessionInList = async (accessor, direction) => {
141
+ const viewsService = accessor.get(IViewsService);
142
+ const sessionsService = accessor.get(ISessionsService);
143
+ const view = viewsService.getViewWithId(SessionsViewId);
144
+ const visible = view?.sessionsControl?.getVisibleSessions() ?? [];
145
+ if (visible.length === 0) {
146
+ return;
147
+ }
148
+ const activeResource = sessionsService.activeSession.get()?.resource.toString();
149
+ const currentIndex = activeResource === undefined ? -1 : visible.findIndex(session => ( session.resource.toString()) === activeResource);
150
+ let targetIndex;
151
+ if (currentIndex === -1) {
152
+ targetIndex = direction === "next" ? 0 : visible.length - 1;
153
+ } else {
154
+ targetIndex = direction === "next" ? Math.min(currentIndex + 1, visible.length - 1) : Math.max(currentIndex - 1, 0);
155
+ }
156
+ if (targetIndex === currentIndex) {
157
+ return;
158
+ }
159
+ const target = visible[targetIndex];
160
+ if (target) {
161
+ if (await sessionsService.canOpenSession(target)) {
162
+ await sessionsService.openChat(target, target.mainChat.get().resource, {
163
+ source: "navigation"
164
+ });
165
+ }
166
+ }
167
+ };
168
+ registerAction2(class NavigatePreviousSessionAction extends Action2 {
169
+ constructor() {
170
+ super({
171
+ id: "sessionsViewPane.navigatePreviousSession",
172
+ title: {
173
+ value: ( localize(4848, "Go to Previous Session")),
174
+ original: "Go to Previous Session",
175
+ mnemonicTitle: ( localize(4849, "&&Previous Session"))
176
+ },
177
+ f1: true,
178
+ category: SessionsCategories.Sessions,
179
+ keybinding: {
180
+ weight: KeybindingWeight.SessionsContrib,
181
+ when: ( ContextKeyExpr.and(IsSessionsWindowContext, ( EditorAreaFocusContext.toNegated()))),
182
+ primary: KeyMod.CtrlCmd | KeyCode.PageUp,
183
+ secondary: [KeyMod.Alt | KeyCode.UpArrow],
184
+ mac: {
185
+ primary: KeyMod.CtrlCmd | KeyMod.Alt | KeyCode.LeftArrow,
186
+ secondary: [KeyMod.Alt | KeyCode.UpArrow]
187
+ }
188
+ },
189
+ menu: [{
190
+ id: Menus.GoMenu,
191
+ group: "2_list_nav",
192
+ order: 1
193
+ }]
194
+ });
195
+ }
196
+ run(accessor) {
197
+ return navigateSessionInList(accessor, "previous");
198
+ }
199
+ });
200
+ registerAction2(class NavigateNextSessionAction extends Action2 {
201
+ constructor() {
202
+ super({
203
+ id: "sessionsViewPane.navigateNextSession",
204
+ title: {
205
+ value: ( localize(4850, "Go to Next Session")),
206
+ original: "Go to Next Session",
207
+ mnemonicTitle: ( localize(4851, "&&Next Session"))
208
+ },
209
+ f1: true,
210
+ category: SessionsCategories.Sessions,
211
+ keybinding: {
212
+ weight: KeybindingWeight.SessionsContrib,
213
+ when: ( ContextKeyExpr.and(IsSessionsWindowContext, ( EditorAreaFocusContext.toNegated()))),
214
+ primary: KeyMod.CtrlCmd | KeyCode.PageDown,
215
+ secondary: [KeyMod.Alt | KeyCode.DownArrow],
216
+ mac: {
217
+ primary: KeyMod.CtrlCmd | KeyMod.Alt | KeyCode.RightArrow,
218
+ secondary: [KeyMod.Alt | KeyCode.DownArrow]
219
+ }
220
+ },
221
+ menu: [{
222
+ id: Menus.GoMenu,
223
+ group: "2_list_nav",
224
+ order: 2
225
+ }]
226
+ });
227
+ }
228
+ run(accessor) {
229
+ return navigateSessionInList(accessor, "next");
230
+ }
231
+ });
232
+ MenuRegistry.appendMenuItem(Menus.SidebarSessionsHeader, {
233
+ submenu: SessionsViewFilterSubMenu,
234
+ title: ( localize2(4852, "Filter Sessions")),
235
+ icon: Codicon.settings,
236
+ group: "navigation",
237
+ order: 10
238
+ });
239
+ MenuRegistry.appendMenuItem(Menus.SidebarSessionsHeader, {
240
+ command: {
241
+ id: "sessionsViewPane.find",
242
+ title: ( localize2(4853, "Find Session")),
243
+ icon: Codicon.search
244
+ },
245
+ group: "navigation",
246
+ order: 20
247
+ });
248
+ MenuRegistry.appendMenuItem(SessionsViewFilterSubMenu, {
249
+ submenu: SessionsViewFilterOptionsSubMenu,
250
+ title: ( localize2(4854, "Filter")),
251
+ group: "0_filter",
252
+ order: 0
253
+ });
254
+ registerExternalSessionsFilterMenu(
255
+ SessionsViewFilterOptionsSubMenu,
256
+ Menus.SessionsViewExternalFilter,
257
+ "2_external"
258
+ );
259
+ registerAction2(class SortByCreatedAction extends Action2 {
260
+ constructor() {
261
+ super({
262
+ id: "sessionsViewPane.sortByCreated",
263
+ title: ( localize2(4855, "Sort by Created")),
264
+ category: SessionsCategories.Sessions,
265
+ toggled: ( ContextKeyExpr.equals(SessionsViewSortingContext.key, SessionsSorting.Created)),
266
+ menu: [{
267
+ id: SessionsViewFilterSubMenu,
268
+ group: "1_sort",
269
+ order: 0
270
+ }]
271
+ });
272
+ }
273
+ run(accessor) {
274
+ const viewsService = accessor.get(IViewsService);
275
+ const view = viewsService.getViewWithId(SessionsViewId);
276
+ view?.setSorting(SessionsSorting.Created);
277
+ }
278
+ });
279
+ registerAction2(class SortByUpdatedAction extends Action2 {
280
+ constructor() {
281
+ super({
282
+ id: "sessionsViewPane.sortByUpdated",
283
+ title: ( localize2(4856, "Sort by Updated")),
284
+ category: SessionsCategories.Sessions,
285
+ toggled: ( ContextKeyExpr.equals(SessionsViewSortingContext.key, SessionsSorting.Updated)),
286
+ menu: [{
287
+ id: SessionsViewFilterSubMenu,
288
+ group: "1_sort",
289
+ order: 1
290
+ }]
291
+ });
292
+ }
293
+ run(accessor) {
294
+ const viewsService = accessor.get(IViewsService);
295
+ const view = viewsService.getViewWithId(SessionsViewId);
296
+ view?.setSorting(SessionsSorting.Updated);
297
+ }
298
+ });
299
+ registerAction2(class GroupByWorkspaceAction extends Action2 {
300
+ constructor() {
301
+ super({
302
+ id: "sessionsViewPane.groupByWorkspace",
303
+ title: ( localize2(4857, "Group by Workspace")),
304
+ category: SessionsCategories.Sessions,
305
+ toggled: ( ContextKeyExpr.equals(SessionsViewGroupingContext.key, SessionsGrouping.Workspace)),
306
+ menu: [{
307
+ id: SessionsViewFilterSubMenu,
308
+ group: "2_group",
309
+ order: 0
310
+ }]
311
+ });
312
+ }
313
+ run(accessor) {
314
+ const viewsService = accessor.get(IViewsService);
315
+ const view = viewsService.getViewWithId(SessionsViewId);
316
+ view?.setGrouping(SessionsGrouping.Workspace);
317
+ }
318
+ });
319
+ registerAction2(class GroupByTimeAction extends Action2 {
320
+ constructor() {
321
+ super({
322
+ id: "sessionsViewPane.groupByTime",
323
+ title: ( localize2(4858, "Group by Time")),
324
+ category: SessionsCategories.Sessions,
325
+ toggled: ( ContextKeyExpr.equals(SessionsViewGroupingContext.key, SessionsGrouping.Date)),
326
+ menu: [{
327
+ id: SessionsViewFilterSubMenu,
328
+ group: "2_group",
329
+ order: 1
330
+ }]
331
+ });
332
+ }
333
+ run(accessor) {
334
+ const viewsService = accessor.get(IViewsService);
335
+ const view = viewsService.getViewWithId(SessionsViewId);
336
+ view?.setGrouping(SessionsGrouping.Date);
337
+ }
338
+ });
339
+ registerAction2(class ShowRecentWorkspaceSessionsAction extends Action2 {
340
+ constructor() {
341
+ super({
342
+ id: "sessionsViewPane.showRecentSessions",
343
+ title: ( localize2(4859, "Show Recent Sessions")),
344
+ category: SessionsCategories.Sessions,
345
+ toggled: IsWorkspaceGroupCappedContext,
346
+ menu: [{
347
+ id: SessionsViewFilterSubMenu,
348
+ group: "3_cap",
349
+ order: 0,
350
+ when: ( ContextKeyExpr.equals(SessionsViewGroupingContext.key, SessionsGrouping.Workspace))
351
+ }]
352
+ });
353
+ }
354
+ run(accessor) {
355
+ const viewsService = accessor.get(IViewsService);
356
+ const view = viewsService.getViewWithId(SessionsViewId);
357
+ view?.sessionsControl?.setWorkspaceGroupCapped(true);
358
+ IsWorkspaceGroupCappedContext.bindTo(accessor.get(IContextKeyService)).set(true);
359
+ }
360
+ });
361
+ registerAction2(class ShowAllWorkspaceSessionsAction extends Action2 {
362
+ constructor() {
363
+ super({
364
+ id: "sessionsViewPane.showAllSessions",
365
+ title: ( localize2(4860, "Show All Sessions")),
366
+ category: SessionsCategories.Sessions,
367
+ toggled: ( IsWorkspaceGroupCappedContext.negate()),
368
+ menu: [{
369
+ id: SessionsViewFilterSubMenu,
370
+ group: "3_cap",
371
+ order: 1,
372
+ when: ( ContextKeyExpr.equals(SessionsViewGroupingContext.key, SessionsGrouping.Workspace))
373
+ }]
374
+ });
375
+ }
376
+ run(accessor) {
377
+ const viewsService = accessor.get(IViewsService);
378
+ const view = viewsService.getViewWithId(SessionsViewId);
379
+ view?.sessionsControl?.setWorkspaceGroupCapped(false);
380
+ IsWorkspaceGroupCappedContext.bindTo(accessor.get(IContextKeyService)).set(false);
381
+ }
382
+ });
383
+ registerAction2(class CollapseAllGroupsAction extends Action2 {
384
+ constructor() {
385
+ super({
386
+ id: "sessionsViewPane.collapseAllGroups",
387
+ title: ( localize2(4861, "Collapse All Groups")),
388
+ category: SessionsCategories.Sessions,
389
+ menu: [{
390
+ id: SessionsViewFilterSubMenu,
391
+ group: "4_collapse",
392
+ order: 0
393
+ }]
394
+ });
395
+ }
396
+ run(accessor) {
397
+ const viewsService = accessor.get(IViewsService);
398
+ const view = viewsService.getViewWithId(SessionsViewId);
399
+ view?.sessionsControl?.collapseAllSections();
400
+ }
401
+ });
402
+ registerAction2(class RefreshSessionsAction extends Action2 {
403
+ constructor() {
404
+ super({
405
+ id: "sessionsViewPane.refresh",
406
+ title: ( localize2(4862, "Refresh Sessions")),
407
+ icon: Codicon.refresh,
408
+ f1: true,
409
+ category: SessionsCategories.Sessions
410
+ });
411
+ }
412
+ run(accessor) {
413
+ const viewsService = accessor.get(IViewsService);
414
+ const view = viewsService.getViewWithId(SessionsViewId);
415
+ return view?.sessionsControl?.refresh();
416
+ }
417
+ });
418
+ registerAction2(class FindSessionAction extends Action2 {
419
+ constructor() {
420
+ super({
421
+ id: "sessionsViewPane.find",
422
+ title: ( localize2(4853, "Find Session")),
423
+ icon: Codicon.search,
424
+ category: SessionsCategories.Sessions
425
+ });
426
+ }
427
+ run(accessor) {
428
+ const viewsService = accessor.get(IViewsService);
429
+ const view = viewsService.getViewWithId(SessionsViewId);
430
+ return view?.openFind();
431
+ }
432
+ });
433
+ registerAction2(class NewSessionForWorkspaceAction extends Action2 {
434
+ constructor() {
435
+ super({
436
+ id: NEW_SESSION_FOR_WORKSPACE_ACTION_ID,
437
+ title: ( localize2(4863, "New Session")),
438
+ icon: Codicon.plus,
439
+ menu: [{
440
+ id: SessionSectionToolbarMenuId,
441
+ group: "navigation",
442
+ order: 0,
443
+ when: ( ContextKeyExpr.and(
444
+ ChatContextKeys.enabled,
445
+ SessionSectionHasNonCloudRepositoryContext,
446
+ ( ContextKeyExpr.equals(SessionSectionTypeContext.key, "workspace"))
447
+ ))
448
+ }, {
449
+ id: SessionSectionToolbarMenuId,
450
+ group: "navigation",
451
+ order: 0,
452
+ when: ( ContextKeyExpr.and(( ContextKeyExpr.equals(SessionSectionTypeContext.key, "workspace")), ( ContextKeyExpr.or(( ChatContextKeys.enabled.negate()), ( SessionSectionHasNonCloudRepositoryContext.negate())))))
453
+ }]
454
+ });
455
+ }
456
+ async run(accessor, context) {
457
+ if (!context || !context.sessions || context.sessions.length === 0) {
458
+ return;
459
+ }
460
+ const sessionsService = accessor.get(ISessionsService);
461
+ const sessionsPartService = accessor.get(ISessionsPartService);
462
+ const commandService = accessor.get(ICommandService);
463
+ accessor.get(INewSessionComposerService).notifyUserWorkspaceSelection();
464
+ await sessionsService.openNewSession();
465
+ const session = context.sessions[0];
466
+ const workspace = session.workspace.get();
467
+ const folderUri = workspace?.folders[0]?.root;
468
+ const providerId = session.providerId;
469
+ const newSession = sessionsService.activeSession.get();
470
+ if (folderUri) {
471
+ sessionsPartService.getSessionView(newSession?.sessionId)?.selectWorkspace(folderUri, {
472
+ providerId,
473
+ selectionOrigin: WorkspaceSelectionOrigin.User
474
+ });
475
+ }
476
+ if (isWeb && isMobile) {
477
+ commandService.executeCommand(CLOSE_MOBILE_SIDEBAR_DRAWER_COMMAND_ID);
478
+ }
479
+ sessionsPartService.focusSession(newSession);
480
+ }
481
+ });
482
+ const NEW_QUICK_CHAT_COMMAND_ID = "sessionsView.newQuickChat";
483
+ const QuickChatEnabledContext = ( ContextKeyExpr.and(ChatContextKeys.enabled, AGENT_HOST_ENABLED_CONTEXT_KEY));
484
+ registerAction2(class NewQuickChatAction extends Action2 {
485
+ constructor() {
486
+ super({
487
+ id: NEW_QUICK_CHAT_COMMAND_ID,
488
+ title: ( localize2(4864, "New Quick Chat")),
489
+ icon: Codicon.add,
490
+ category: SessionsCategories.Sessions,
491
+ f1: true,
492
+ precondition: QuickChatEnabledContext,
493
+ keybinding: {
494
+ weight: KeybindingWeight.SessionsContrib,
495
+ primary: KeyChord(KeyMod.CtrlCmd | KeyCode.KeyK, KeyMod.CtrlCmd | KeyCode.KeyN),
496
+ when: ( ContextKeyExpr.and(QuickChatEnabledContext, IsSessionsWindowContext, ( EditorAreaFocusContext.negate())))
497
+ },
498
+ menu: [{
499
+ id: SessionSectionToolbarMenuId,
500
+ group: "navigation",
501
+ order: 0,
502
+ when: ( ContextKeyExpr.and(QuickChatEnabledContext, ( ContextKeyExpr.equals(SessionSectionTypeContext.key, "quickchats"))))
503
+ }]
504
+ });
505
+ }
506
+ run(accessor) {
507
+ const sessionsService = accessor.get(ISessionsService);
508
+ const sessionsPartService = accessor.get(ISessionsPartService);
509
+ const composerService = accessor.get(INewSessionComposerService);
510
+ composerService.notifyUserNavigation();
511
+ let activeSession;
512
+ if (accessor.get(IConfigurationService).getValue(UNIFIED_WORKSPACE_PICKER_SETTING)) {
513
+ if (accessor.get(ISessionsManagementService).isQuickChatTargetAvailable()) {
514
+ sessionsService.unsetNewSession();
515
+ sessionsPartService.getSessionView(undefined)?.selectNoWorkspace();
516
+ }
517
+ activeSession = sessionsService.activeSession.get();
518
+ } else {
519
+ composerService.notifyUserWorkspaceSelection();
520
+ activeSession = sessionsService.openQuickChat();
521
+ }
522
+ if (isWeb && isMobile) {
523
+ accessor.get(ICommandService).executeCommand(CLOSE_MOBILE_SIDEBAR_DRAWER_COMMAND_ID);
524
+ }
525
+ sessionsPartService.focusSession(activeSession);
526
+ }
527
+ });
528
+ const ConfirmArchiveStorageKey = "sessions.confirmArchive";
529
+ function getArchiveSectionConfirmationMessage(context, wording) {
530
+ if (context.id === "pinned") {
531
+ if (context.sessions.length === 1) {
532
+ return wording === ChatSessionArchiveActionWording.MarkAsDone ? ( localize(4865, "Are you sure you want to mark 1 pinned session as done?")) : ( localize(4866, "Are you sure you want to archive 1 pinned session?"));
533
+ }
534
+ return wording === ChatSessionArchiveActionWording.MarkAsDone ? ( localize(
535
+ 4867,
536
+ "Are you sure you want to mark {0} pinned sessions as done?",
537
+ context.sessions.length
538
+ )) : ( localize(
539
+ 4868,
540
+ "Are you sure you want to archive {0} pinned sessions?",
541
+ context.sessions.length
542
+ ));
543
+ }
544
+ if (context.sessions.length === 1) {
545
+ return wording === ChatSessionArchiveActionWording.MarkAsDone ? ( localize(
546
+ 4869,
547
+ "Are you sure you want to mark 1 session from '{0}' as done?",
548
+ context.label
549
+ )) : ( localize(
550
+ 4870,
551
+ "Are you sure you want to archive 1 session from '{0}'?",
552
+ context.label
553
+ ));
554
+ }
555
+ return wording === ChatSessionArchiveActionWording.MarkAsDone ? ( localize(
556
+ 4871,
557
+ "Are you sure you want to mark {0} sessions from '{1}' as done?",
558
+ context.sessions.length,
559
+ context.label
560
+ )) : ( localize(
561
+ 4872,
562
+ "Are you sure you want to archive {0} sessions from '{1}'?",
563
+ context.sessions.length,
564
+ context.label
565
+ ));
566
+ }
567
+ class BaseArchiveSectionAction extends Action2 {
568
+ constructor(wording) {
569
+ const action = getChatSessionArchiveActionPresentation(wording).archiveAll;
570
+ super({
571
+ id: "sessionsView.sectionArchive",
572
+ title: action.title,
573
+ icon: action.icon,
574
+ menu: [{
575
+ id: SessionSectionToolbarMenuId,
576
+ group: "navigation",
577
+ order: 1,
578
+ when: ( ContextKeyExpr.and(( ContextKeyExpr.notEquals(SessionSectionTypeContext.key, "archived")), ( ContextKeyExpr.notEquals(SessionSectionTypeContext.key, "quickchats")), ( ContextKeyExpr.notEquals(SessionSectionTypeContext.key, "automations"))))
579
+ }]
580
+ });
581
+ this.wording = wording;
582
+ }
583
+ async run(accessor, context) {
584
+ if (!context || !context.sessions || context.sessions.length === 0) {
585
+ return;
586
+ }
587
+ const sessionsManagementService = accessor.get(ISessionsManagementService);
588
+ const dialogService = accessor.get(IDialogService);
589
+ const storageService = accessor.get(IStorageService);
590
+ const skipConfirmation = storageService.getBoolean(ConfirmArchiveStorageKey, StorageScope.PROFILE, false);
591
+ if (!skipConfirmation) {
592
+ const confirmed = await dialogService.confirm({
593
+ message: getArchiveSectionConfirmationMessage(context, this.wording),
594
+ detail: this.wording === ChatSessionArchiveActionWording.MarkAsDone ? ( localize(4873, "You can restore sessions later if needed from the sessions view.")) : ( localize(4874, "You can unarchive sessions later if needed from the sessions view.")),
595
+ primaryButton: getChatSessionArchiveActionPresentation(this.wording).archiveAll.title.value,
596
+ checkbox: {
597
+ label: ( localize(4875, "Do not ask me again"))
598
+ }
599
+ });
600
+ if (!confirmed.confirmed) {
601
+ return;
602
+ }
603
+ if (confirmed.checkboxChecked) {
604
+ storageService.store(ConfirmArchiveStorageKey, true, StorageScope.PROFILE, StorageTarget.USER);
605
+ }
606
+ }
607
+ for (const session of context.sessions) {
608
+ await sessionsManagementService.archiveSession(session);
609
+ }
610
+ }
611
+ }
612
+ class ArchiveSectionAction extends BaseArchiveSectionAction {
613
+ constructor() {
614
+ super(ChatSessionArchiveActionWording.Archive);
615
+ }
616
+ }
617
+ class MarkSectionSessionsDoneAction extends BaseArchiveSectionAction {
618
+ constructor() {
619
+ super(ChatSessionArchiveActionWording.MarkAsDone);
620
+ }
621
+ }
622
+ function getArchiveGroupConfirmationMessage(context, wording) {
623
+ if (context.sessions.length === 1) {
624
+ return wording === ChatSessionArchiveActionWording.MarkAsDone ? ( localize(
625
+ 4876,
626
+ "Are you sure you want to mark 1 session from '{0}' as done?",
627
+ context.group.name
628
+ )) : ( localize(
629
+ 4877,
630
+ "Are you sure you want to archive 1 session from '{0}'?",
631
+ context.group.name
632
+ ));
633
+ }
634
+ return wording === ChatSessionArchiveActionWording.MarkAsDone ? ( localize(
635
+ 4878,
636
+ "Are you sure you want to mark {0} sessions from '{1}' as done?",
637
+ context.sessions.length,
638
+ context.group.name
639
+ )) : ( localize(
640
+ 4879,
641
+ "Are you sure you want to archive {0} sessions from '{1}'?",
642
+ context.sessions.length,
643
+ context.group.name
644
+ ));
645
+ }
646
+ class BaseArchiveSessionsInGroupAction extends Action2 {
647
+ constructor(wording) {
648
+ const action = getChatSessionArchiveActionPresentation(wording).archiveAll;
649
+ super({
650
+ id: "sessionsView.markAllInGroupAsDone",
651
+ title: action.title,
652
+ icon: action.icon,
653
+ menu: [{
654
+ id: SessionGroupToolbarMenuId,
655
+ group: "navigation",
656
+ order: 2,
657
+ when: SessionGroupHasVisibleSessionsContext
658
+ }]
659
+ });
660
+ this.wording = wording;
661
+ }
662
+ async run(accessor, context) {
663
+ if (!context || !context.sessions || context.sessions.length === 0) {
664
+ return;
665
+ }
666
+ const sessionsManagementService = accessor.get(ISessionsManagementService);
667
+ const dialogService = accessor.get(IDialogService);
668
+ const storageService = accessor.get(IStorageService);
669
+ const skipConfirmation = storageService.getBoolean(ConfirmArchiveStorageKey, StorageScope.PROFILE, false);
670
+ if (!skipConfirmation) {
671
+ const confirmed = await dialogService.confirm({
672
+ message: getArchiveGroupConfirmationMessage(context, this.wording),
673
+ detail: this.wording === ChatSessionArchiveActionWording.MarkAsDone ? ( localize(4880, "You can restore sessions later if needed from the sessions view.")) : ( localize(4881, "You can unarchive sessions later if needed from the sessions view.")),
674
+ primaryButton: getChatSessionArchiveActionPresentation(this.wording).archiveAll.title.value,
675
+ checkbox: {
676
+ label: ( localize(4875, "Do not ask me again"))
677
+ }
678
+ });
679
+ if (!confirmed.confirmed) {
680
+ return;
681
+ }
682
+ if (confirmed.checkboxChecked) {
683
+ storageService.store(ConfirmArchiveStorageKey, true, StorageScope.PROFILE, StorageTarget.USER);
684
+ }
685
+ }
686
+ for (const session of context.sessions) {
687
+ await sessionsManagementService.archiveSession(session);
688
+ }
689
+ }
690
+ }
691
+ class ArchiveSessionsInGroupAction extends BaseArchiveSessionsInGroupAction {
692
+ constructor() {
693
+ super(ChatSessionArchiveActionWording.Archive);
694
+ }
695
+ }
696
+ class MarkAllSessionsInGroupAsDoneAction extends BaseArchiveSessionsInGroupAction {
697
+ constructor() {
698
+ super(ChatSessionArchiveActionWording.MarkAsDone);
699
+ }
700
+ }
701
+ registerAction2(class DeleteEmptySessionGroupAction extends Action2 {
702
+ constructor() {
703
+ super({
704
+ id: "sessionsView.deleteEmptyGroup",
705
+ title: ( localize2(4882, "Delete Group")),
706
+ icon: Codicon.trash,
707
+ menu: [{
708
+ id: SessionGroupToolbarMenuId,
709
+ group: "navigation",
710
+ order: 2,
711
+ when: SessionGroupIsEmptyContext
712
+ }]
713
+ });
714
+ }
715
+ run(accessor, context) {
716
+ if (!context) {
717
+ return;
718
+ }
719
+ const sessionGroupsService = accessor.get(ISessionGroupsService);
720
+ if (sessionGroupsService.getSessionIdsInGroup(context.group.id).length === 0) {
721
+ sessionGroupsService.deleteGroup(context.group.id);
722
+ }
723
+ }
724
+ });
725
+ registerAction2(class NewSessionInGroupAction extends Action2 {
726
+ constructor() {
727
+ super({
728
+ id: "sessionsView.newSessionInGroup",
729
+ title: ( localize2(4883, "New Session")),
730
+ icon: Codicon.plus,
731
+ menu: [{
732
+ id: SessionGroupToolbarMenuId,
733
+ group: "navigation",
734
+ order: 1
735
+ }]
736
+ });
737
+ }
738
+ run(accessor, context) {
739
+ if (!context) {
740
+ return;
741
+ }
742
+ const sessionsService = accessor.get(ISessionsService);
743
+ const sessionsPartService = accessor.get(ISessionsPartService);
744
+ const sessionGroupsService = accessor.get(ISessionGroupsService);
745
+ const commandService = accessor.get(ICommandService);
746
+ accessor.get(INewSessionComposerService).notifyUserNavigation();
747
+ sessionsService.openNewSession();
748
+ sessionGroupsService.setPendingNewSessionGroup(context.group.id);
749
+ if (isWeb && isMobile) {
750
+ commandService.executeCommand(CLOSE_MOBILE_SIDEBAR_DRAWER_COMMAND_ID);
751
+ }
752
+ sessionsPartService.focusSession(sessionsService.activeSession.get());
753
+ }
754
+ });
755
+ registerAction2(class PinSessionAction extends Action2 {
756
+ constructor() {
757
+ super({
758
+ id: "sessionsViewPane.pinSession",
759
+ title: ( localize2(4884, "Pin")),
760
+ icon: Codicon.pin,
761
+ menu: [{
762
+ id: SessionItemToolbarMenuId,
763
+ group: "navigation",
764
+ order: 2,
765
+ when: ( ContextKeyExpr.and(( ContextKeyExpr.equals(IsSessionPinnedContext.key, false)), ( ContextKeyExpr.equals(SessionIsArchivedContext.key, false))))
766
+ }, {
767
+ id: SessionItemContextMenuId,
768
+ group: "0_pin",
769
+ order: 0,
770
+ when: ( ContextKeyExpr.and(( ContextKeyExpr.equals(IsSessionPinnedContext.key, false)), ( ContextKeyExpr.equals(SessionIsArchivedContext.key, false))))
771
+ }]
772
+ });
773
+ }
774
+ run(accessor, context) {
775
+ if (!context) {
776
+ return;
777
+ }
778
+ const sessions = Array.isArray(context) ? context : [context];
779
+ const viewsService = accessor.get(IViewsService);
780
+ const view = viewsService.getViewWithId(SessionsViewId);
781
+ for (const session of sessions) {
782
+ view?.sessionsControl?.pinSession(session);
783
+ }
784
+ }
785
+ });
786
+ registerAction2(class UnpinSessionAction extends Action2 {
787
+ constructor() {
788
+ super({
789
+ id: "sessionsViewPane.unpinSession",
790
+ title: ( localize2(4885, "Unpin")),
791
+ icon: Codicon.pinned,
792
+ menu: [{
793
+ id: SessionItemToolbarMenuId,
794
+ group: "navigation",
795
+ order: 2,
796
+ when: ( ContextKeyExpr.and(( ContextKeyExpr.equals(IsSessionPinnedContext.key, true)), ( ContextKeyExpr.equals(SessionIsArchivedContext.key, false))))
797
+ }, {
798
+ id: SessionItemContextMenuId,
799
+ group: "0_pin",
800
+ order: 0,
801
+ when: ( ContextKeyExpr.and(( ContextKeyExpr.equals(IsSessionPinnedContext.key, true)), ( ContextKeyExpr.equals(SessionIsArchivedContext.key, false))))
802
+ }]
803
+ });
804
+ }
805
+ run(accessor, context) {
806
+ if (!context) {
807
+ return;
808
+ }
809
+ const sessions = Array.isArray(context) ? context : [context];
810
+ const viewsService = accessor.get(IViewsService);
811
+ const view = viewsService.getViewWithId(SessionsViewId);
812
+ for (const session of sessions) {
813
+ view?.sessionsControl?.unpinSession(session);
814
+ }
815
+ }
816
+ });
817
+ function getSessionActionTargets(accessor, context) {
818
+ if (context) {
819
+ return Array.isArray(context) ? context : [context];
820
+ }
821
+ const focusedSessions = getFocusedSessionListTargets(accessor);
822
+ if (focusedSessions) {
823
+ return focusedSessions;
824
+ }
825
+ const activeSession = accessor.get(ISessionsService).activeSession.get();
826
+ return activeSession ? [activeSession] : [];
827
+ }
828
+ function getFocusedSessionListTargets(accessor) {
829
+ return accessor.get(IViewsService).getViewWithId(SessionsViewId)?.sessionsControl?.getFocusedSessions();
830
+ }
831
+ KeybindingsRegistry.registerKeybindingRule({
832
+ id: ARCHIVE_SESSION_COMMAND_ID,
833
+ weight: KeybindingWeight.SessionsContrib,
834
+ when: ( ContextKeyExpr.and(IsSessionsWindowContext, ( FocusedViewContext.isEqualTo(SessionsViewId)), WorkbenchListFocusContextKey)),
835
+ primary: KeyCode.Delete,
836
+ mac: {
837
+ primary: KeyMod.CtrlCmd | KeyCode.Backspace
838
+ }
839
+ });
840
+ class BaseArchiveSessionAction extends Action2 {
841
+ constructor(wording) {
842
+ const action = getChatSessionArchiveActionPresentation(wording).archive;
843
+ super({
844
+ id: ARCHIVE_SESSION_COMMAND_ID,
845
+ title: action.title,
846
+ icon: action.icon,
847
+ menu: [{
848
+ id: SessionItemToolbarMenuId,
849
+ group: "navigation",
850
+ order: 1,
851
+ when: ( ContextKeyExpr.equals(SessionIsArchivedContext.key, false))
852
+ }, {
853
+ id: Menus.AutomationsHistoryItem,
854
+ group: "navigation",
855
+ order: 2,
856
+ when: ( ContextKeyExpr.equals(SessionIsArchivedContext.key, false))
857
+ }, {
858
+ id: SessionItemContextMenuId,
859
+ group: "1_edit",
860
+ order: 2,
861
+ when: ( ContextKeyExpr.equals(SessionIsArchivedContext.key, false))
862
+ }, {
863
+ id: Menus.SessionBarToolbar,
864
+ group: "secondary/1_session",
865
+ order: 30,
866
+ when: ( ContextKeyExpr.and(SessionIsCreatedContext, ( ContextKeyExpr.equals(SessionIsArchivedContext.key, false))))
867
+ }]
868
+ });
869
+ }
870
+ async run(accessor, context) {
871
+ const targets = context ? (Array.isArray(context) ? context : [context]) : getFocusedSessionListTargets(accessor) ?? [];
872
+ const sessions = targets.filter(session => !session.isArchived.get());
873
+ const sessionsManagementService = accessor.get(ISessionsManagementService);
874
+ for (const session of sessions) {
875
+ await sessionsManagementService.archiveSession(session);
876
+ }
877
+ }
878
+ }
879
+ class ArchiveSessionAction extends BaseArchiveSessionAction {
880
+ constructor() {
881
+ super(ChatSessionArchiveActionWording.Archive);
882
+ }
883
+ }
884
+ class MarkSessionAsDoneAction extends BaseArchiveSessionAction {
885
+ constructor() {
886
+ super(ChatSessionArchiveActionWording.MarkAsDone);
887
+ }
888
+ }
889
+ class BaseUnarchiveSessionAction extends Action2 {
890
+ constructor(wording) {
891
+ const action = getChatSessionArchiveActionPresentation(wording).unarchive;
892
+ super({
893
+ id: UNARCHIVE_SESSION_COMMAND_ID,
894
+ title: action.title,
895
+ icon: action.icon,
896
+ menu: [{
897
+ id: SessionItemToolbarMenuId,
898
+ group: "navigation",
899
+ order: 1,
900
+ when: ( ContextKeyExpr.equals(SessionIsArchivedContext.key, true))
901
+ }, {
902
+ id: SessionItemContextMenuId,
903
+ group: "1_edit",
904
+ order: 2,
905
+ when: ( ContextKeyExpr.equals(SessionIsArchivedContext.key, true))
906
+ }, {
907
+ id: Menus.SessionBarToolbar,
908
+ group: "secondary/1_session",
909
+ order: 5,
910
+ when: ( ContextKeyExpr.equals(SessionIsArchivedContext.key, true))
911
+ }]
912
+ });
913
+ }
914
+ async run(accessor, context) {
915
+ const sessionsManagementService = accessor.get(ISessionsManagementService);
916
+ const sessionsService = accessor.get(ISessionsService);
917
+ if (!context) {
918
+ const activeSession = sessionsService.activeSession.get();
919
+ if (activeSession) {
920
+ await sessionsManagementService.unarchiveSession(activeSession);
921
+ }
922
+ return;
923
+ }
924
+ const sessions = Array.isArray(context) ? context : [context];
925
+ for (const session of sessions) {
926
+ await sessionsManagementService.unarchiveSession(session);
927
+ }
928
+ }
929
+ }
930
+ class UnarchiveSessionAction extends BaseUnarchiveSessionAction {
931
+ constructor() {
932
+ super(ChatSessionArchiveActionWording.Archive);
933
+ }
934
+ }
935
+ class RestoreArchivedSessionAction extends BaseUnarchiveSessionAction {
936
+ constructor() {
937
+ super(ChatSessionArchiveActionWording.MarkAsDone);
938
+ }
939
+ }
940
+ registerAction2(class RenameSessionAction extends Action2 {
941
+ constructor() {
942
+ super({
943
+ id: RENAME_SESSION_COMMAND_ID,
944
+ title: ( localize2(4886, "Rename...")),
945
+ icon: Codicon.edit,
946
+ keybinding: {
947
+ primary: KeyCode.F2,
948
+ weight: KeybindingWeight.SessionsContrib,
949
+ when: ( ContextKeyExpr.and(IsSessionsWindowContext, ( ContextKeyExpr.or(( ContextKeyExpr.and(( FocusedViewContext.isEqualTo(SessionsViewId)), WorkbenchListFocusContextKey)), ( ContextKeyExpr.and(ChatContextKeys.inChatSession, SessionSupportsRenameContext))))))
950
+ },
951
+ menu: [{
952
+ id: SessionItemContextMenuId,
953
+ group: "1_edit",
954
+ order: 1,
955
+ when: SessionSupportsRenameContext
956
+ }]
957
+ });
958
+ }
959
+ async run(accessor, context) {
960
+ const session = getSessionActionTargets(accessor, context)[0];
961
+ if (!session || !session.capabilities.get().supportsRename) {
962
+ return;
963
+ }
964
+ const quickInputService = accessor.get(IQuickInputService);
965
+ const sessionsManagementService = accessor.get(ISessionsManagementService);
966
+ const newTitle = await quickInputService.input({
967
+ value: session.title.get(),
968
+ prompt: ( localize(4887, "New agent session title")),
969
+ validateInput: async value => {
970
+ if (!value.trim()) {
971
+ return localize(4888, "Title cannot be empty");
972
+ }
973
+ return undefined;
974
+ }
975
+ });
976
+ if (newTitle) {
977
+ const trimmedTitle = newTitle.trim();
978
+ if (trimmedTitle && trimmedTitle !== session.title.get().trim()) {
979
+ await sessionsManagementService.renameSession(session, trimmedTitle);
980
+ }
981
+ }
982
+ }
983
+ });
984
+ registerAction2(class DeleteSessionAction extends Action2 {
985
+ constructor() {
986
+ super({
987
+ id: "sessionsViewPane.deleteSession",
988
+ title: ( localize2(4889, "Delete...")),
989
+ menu: [{
990
+ id: SessionItemContextMenuId,
991
+ group: "1_edit",
992
+ order: 4,
993
+ when: SessionSupportsDeleteContext
994
+ }]
995
+ });
996
+ }
997
+ async run(accessor, context) {
998
+ if (!context) {
999
+ return;
1000
+ }
1001
+ const sessions = (Array.isArray(context) ? context : [context]).filter(session => session.capabilities.get().supportsDelete);
1002
+ if (sessions.length === 0) {
1003
+ return;
1004
+ }
1005
+ const dialogService = accessor.get(IDialogService);
1006
+ const sessionsManagementService = accessor.get(ISessionsManagementService);
1007
+ const confirmed = await dialogService.confirm({
1008
+ message: sessions.length === 1 ? ( localize(4890, "Are you sure you want to delete this session?")) : ( localize(4891, "Are you sure you want to delete {0} sessions?", sessions.length)),
1009
+ detail: ( localize(4892, "This action cannot be undone.")),
1010
+ primaryButton: ( localize(4893, "Delete"))
1011
+ });
1012
+ if (!confirmed.confirmed) {
1013
+ return;
1014
+ }
1015
+ try {
1016
+ await sessionsManagementService.deleteSessions(sessions);
1017
+ } catch (err) {
1018
+ dialogService.error(sessions.length === 1 ? ( localize(4894, "Failed to delete the session: {0}", toErrorMessage(err))) : ( localize(4895, "Failed to delete the sessions: {0}", toErrorMessage(err))));
1019
+ }
1020
+ }
1021
+ });
1022
+ registerAction2(class MarkSessionReadAction extends Action2 {
1023
+ constructor() {
1024
+ super({
1025
+ id: MARK_SESSION_READ_COMMAND_ID,
1026
+ title: ( localize2(4896, "Mark as Read")),
1027
+ menu: [{
1028
+ id: SessionItemContextMenuId,
1029
+ group: "0_read",
1030
+ order: 0,
1031
+ when: ( ContextKeyExpr.and(( SessionIsReadContext.negate()), ( SessionIsArchivedContext.negate())))
1032
+ }, {
1033
+ id: Menus.SessionHeaderContext,
1034
+ group: "3_read",
1035
+ order: 0,
1036
+ when: ( ContextKeyExpr.and(( SessionIsReadContext.negate()), ( SessionIsArchivedContext.negate())))
1037
+ }]
1038
+ });
1039
+ }
1040
+ run(accessor, context) {
1041
+ if (!context) {
1042
+ return;
1043
+ }
1044
+ const sessions = Array.isArray(context) ? context : [context];
1045
+ const sessionsManagementService = accessor.get(ISessionsManagementService);
1046
+ sessionsManagementService.markAllRead(sessions);
1047
+ }
1048
+ });
1049
+ registerAction2(class MarkSessionUnreadAction extends Action2 {
1050
+ constructor() {
1051
+ super({
1052
+ id: MARK_SESSION_UNREAD_COMMAND_ID,
1053
+ title: ( localize2(4897, "Mark as Unread")),
1054
+ menu: [{
1055
+ id: SessionItemContextMenuId,
1056
+ group: "0_read",
1057
+ order: 0,
1058
+ when: ( ContextKeyExpr.and(SessionIsReadContext, ( SessionIsArchivedContext.negate())))
1059
+ }, {
1060
+ id: Menus.SessionHeaderContext,
1061
+ group: "3_read",
1062
+ order: 0,
1063
+ when: ( ContextKeyExpr.and(SessionIsReadContext, ( SessionIsArchivedContext.negate())))
1064
+ }]
1065
+ });
1066
+ }
1067
+ run(accessor, context) {
1068
+ if (!context) {
1069
+ return;
1070
+ }
1071
+ const sessions = Array.isArray(context) ? context : [context];
1072
+ const sessionsManagementService = accessor.get(ISessionsManagementService);
1073
+ for (const session of sessions) {
1074
+ sessionsManagementService.markUnread(session);
1075
+ }
1076
+ }
1077
+ });
1078
+ registerAction2(class OpenSessionToTheSideAction extends Action2 {
1079
+ constructor() {
1080
+ super({
1081
+ id: "sessionsViewPane.openToTheSide",
1082
+ title: ( localize2(4898, "Open to the Side")),
1083
+ menu: [{
1084
+ id: SessionItemContextMenuId,
1085
+ group: "navigation",
1086
+ order: -1,
1087
+ when: IsSessionsWindowContext
1088
+ }]
1089
+ });
1090
+ }
1091
+ async run(accessor, context) {
1092
+ if (!context) {
1093
+ return;
1094
+ }
1095
+ const sessions = Array.isArray(context) ? context : [context];
1096
+ const sessionsService = accessor.get(ISessionsService);
1097
+ const sessionsPartService = accessor.get(ISessionsPartService);
1098
+ for (let i = 0; i < sessions.length - 1; i++) {
1099
+ const session = sessions[i];
1100
+ const visible = sessionsService.visibleSessions.get();
1101
+ const lastVisible = visible[visible.length - 1];
1102
+ if (lastVisible && lastVisible.sessionId !== session.sessionId) {
1103
+ sessionsService.insertAt(session, lastVisible.sessionId, "right");
1104
+ }
1105
+ }
1106
+ const lastRequested = sessions[sessions.length - 1];
1107
+ await sessionsService.openSessionToSide(lastRequested, {
1108
+ source: "sessionsList"
1109
+ });
1110
+ const visibleAfterOpen = sessionsService.visibleSessions.get();
1111
+ const opened = visibleAfterOpen.find(s => s?.sessionId === lastRequested.sessionId);
1112
+ if (opened) {
1113
+ sessionsPartService.focusSession(opened);
1114
+ }
1115
+ }
1116
+ });
1117
+ registerAction2(class MarkAllSessionsReadAction extends Action2 {
1118
+ constructor() {
1119
+ super({
1120
+ id: "sessionsViewPane.markAllRead",
1121
+ title: ( localize2(4899, "Mark All as Read")),
1122
+ menu: [{
1123
+ id: SessionItemContextMenuId,
1124
+ group: "0_read",
1125
+ order: 1
1126
+ }]
1127
+ });
1128
+ }
1129
+ run(accessor) {
1130
+ const sessionsManagementService = accessor.get(ISessionsManagementService);
1131
+ const sessions = sessionsManagementService.getSessions().filter(s => !s.isArchived.get() && !s.isRead.get());
1132
+ sessionsManagementService.markAllRead(sessions);
1133
+ }
1134
+ });
1135
+ class BaseUnarchiveActiveSessionAction extends Action2 {
1136
+ constructor(wording) {
1137
+ const action = getChatSessionArchiveActionPresentation(wording).unarchive;
1138
+ super({
1139
+ id: "agentSession.restore",
1140
+ title: action.title,
1141
+ icon: action.icon,
1142
+ menu: [{
1143
+ id: MenuId.AgentsChangesToolbar,
1144
+ group: "navigation",
1145
+ order: 1,
1146
+ when: ( ContextKeyExpr.and(IsSessionsWindowContext, SessionIsArchivedContext))
1147
+ }]
1148
+ });
1149
+ }
1150
+ async run(accessor) {
1151
+ const sessionsManagementService = accessor.get(ISessionsManagementService);
1152
+ const sessionsService = accessor.get(ISessionsService);
1153
+ const activeSession = sessionsService.activeSession.get();
1154
+ if (!activeSession || activeSession.status.get() === SessionStatus.Untitled) {
1155
+ return;
1156
+ }
1157
+ await sessionsManagementService.unarchiveSession(activeSession);
1158
+ }
1159
+ }
1160
+ class UnarchiveActiveSessionAction extends BaseUnarchiveActiveSessionAction {
1161
+ constructor() {
1162
+ super(ChatSessionArchiveActionWording.Archive);
1163
+ }
1164
+ }
1165
+ class RestoreActiveSessionAction extends BaseUnarchiveActiveSessionAction {
1166
+ constructor() {
1167
+ super(ChatSessionArchiveActionWording.MarkAsDone);
1168
+ }
1169
+ }
1170
+ function getSessionsArchiveActionConstructors(wording) {
1171
+ return wording === ChatSessionArchiveActionWording.MarkAsDone ? [
1172
+ MarkSectionSessionsDoneAction,
1173
+ MarkAllSessionsInGroupAsDoneAction,
1174
+ MarkSessionAsDoneAction,
1175
+ RestoreArchivedSessionAction,
1176
+ RestoreActiveSessionAction
1177
+ ] : [
1178
+ ArchiveSectionAction,
1179
+ ArchiveSessionsInGroupAction,
1180
+ ArchiveSessionAction,
1181
+ UnarchiveSessionAction,
1182
+ UnarchiveActiveSessionAction
1183
+ ];
1184
+ }
1185
+ let SessionsArchiveActionsContribution = class SessionsArchiveActionsContribution extends Disposable {
1186
+ static {
1187
+ this.ID = "workbench.contrib.sessionsArchiveActions";
1188
+ }
1189
+ constructor(configurationService) {
1190
+ super();
1191
+ this.configurationService = configurationService;
1192
+ this.actionRegistrations = this._register(( new DisposableStore()));
1193
+ this.registerActions();
1194
+ this._register(this.configurationService.onDidChangeConfiguration(event => {
1195
+ if (event.affectsConfiguration(ChatSessionArchiveActionWordingSettingId)) {
1196
+ this.registerActions();
1197
+ }
1198
+ }));
1199
+ }
1200
+ registerActions() {
1201
+ this.actionRegistrations.clear();
1202
+ const wording = getChatSessionArchiveActionWording(this.configurationService);
1203
+ for (const action of getSessionsArchiveActionConstructors(wording)) {
1204
+ this.actionRegistrations.add(registerAction2(action));
1205
+ }
1206
+ }
1207
+ };
1208
+ SessionsArchiveActionsContribution = ( __decorate([( __param(0, IConfigurationService))], SessionsArchiveActionsContribution));
1209
+ registerWorkbenchContribution2(
1210
+ SessionsArchiveActionsContribution.ID,
1211
+ SessionsArchiveActionsContribution,
1212
+ WorkbenchPhase.BlockStartup
1213
+ );
1214
+ registerAction2(class ManageAutomationsAction extends Action2 {
1215
+ constructor() {
1216
+ super({
1217
+ id: "sessionsView.manageAutomations",
1218
+ title: ( localize2(4900, "Manage Automations")),
1219
+ menu: []
1220
+ });
1221
+ }
1222
+ run(accessor) {
1223
+ accessor.get(ICustomViewService).showCustomView(AUTOMATIONS_CUSTOM_VIEW_ID);
1224
+ }
1225
+ });
1226
+ registerAction2(class ResetAutomationsNewBadgeAction extends Action2 {
1227
+ constructor() {
1228
+ super({
1229
+ id: "sessions.developer.resetAutomationsNewBadge",
1230
+ title: ( localize2(4901, "Reset Automations New Badge")),
1231
+ category: Categories.Developer,
1232
+ f1: true,
1233
+ precondition: ( ContextKeyExpr.and(
1234
+ IsDevelopmentContext,
1235
+ IsSessionsWindowContext,
1236
+ ChatAutomationsEnabledContext
1237
+ ))
1238
+ });
1239
+ }
1240
+ async run(accessor) {
1241
+ const view = await accessor.get(IViewsService).openView(SessionsViewId, false);
1242
+ await view?.sessionsControl?.resetAutomationsNewBadge();
1243
+ }
1244
+ });
1245
+ const MARK_ALL_AUTOMATION_RUNS_READ_COMMAND_ID = "sessionsView.markAllAutomationRunsRead";
1246
+ registerAction2(class MarkAllAutomationRunsReadAction extends Action2 {
1247
+ constructor() {
1248
+ super({
1249
+ id: MARK_ALL_AUTOMATION_RUNS_READ_COMMAND_ID,
1250
+ title: ( localize2(4902, "Mark All as Read"))
1251
+ });
1252
+ }
1253
+ async run(accessor) {
1254
+ const automationService = accessor.get(IAutomationService);
1255
+ const sessionsManagementService = accessor.get(ISessionsManagementService);
1256
+ const runs = automationService.runs.get();
1257
+ const sessions = ( new Map());
1258
+ for (const run of runs) {
1259
+ if ((run.status === "completed" || run.status === "failed") && run.sessionResource) {
1260
+ const session = sessionsManagementService.getSession(run.sessionResource);
1261
+ if (session && !session.isRead.get()) {
1262
+ sessions.set(( session.resource.toString()), session);
1263
+ }
1264
+ }
1265
+ }
1266
+ await sessionsManagementService.markAllRead([...( sessions.values())]);
1267
+ }
1268
+ });
1269
+
1270
+ export { ArchiveSessionAction };