@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,1052 @@
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 * as sidebarActionButton from '@codingame/monaco-vscode-api/vscode/vs/sessions/browser/media/sidebarActionButton.css';
5
+ import * as accountWidget from './media/accountWidget.css';
6
+ import * as accountTitleBarWidget from './media/accountTitleBarWidget.css';
7
+ import * as chatStatus from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/browser/chatStatus/media/chatStatus.css';
8
+ import Severity from '@codingame/monaco-vscode-api/vscode/vs/base/common/severity';
9
+ import { MutableDisposable, toDisposable, DisposableStore, Disposable } from '@codingame/monaco-vscode-api/vscode/vs/base/common/lifecycle';
10
+ import '@codingame/monaco-vscode-api/vscode/vs/base/common/observableInternal/index';
11
+ import { localize2, localize } from '@codingame/monaco-vscode-api/vscode/vs/nls';
12
+ import { registerAction2, Action2, MenuRegistry } from '@codingame/monaco-vscode-api/vscode/vs/platform/actions/common/actions';
13
+ import { IMenuService } from '@codingame/monaco-vscode-api/vscode/vs/platform/actions/common/actions.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 { IConfigurationService } from '@codingame/monaco-vscode-api/vscode/vs/platform/configuration/common/configuration.service';
17
+ import { IDefaultAccountService } from '@codingame/monaco-vscode-api/vscode/vs/platform/defaultAccount/common/defaultAccount.service';
18
+ import { IInstantiationService } from '@codingame/monaco-vscode-api/vscode/vs/platform/instantiation/common/instantiation';
19
+ import { registerWorkbenchContribution2, WorkbenchPhase } from '@codingame/monaco-vscode-api/vscode/vs/workbench/common/contributions';
20
+ import { appendUpdateMenuItems } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/update/browser/update';
21
+ import { Menus } from '@codingame/monaco-vscode-api/vscode/vs/sessions/browser/menus';
22
+ import { IActionViewItemService } from '@codingame/monaco-vscode-api/vscode/vs/platform/actions/browser/actionViewItemService.service';
23
+ import { fillInActionBarActions } from '@codingame/monaco-vscode-api/vscode/vs/platform/actions/browser/menuEntryActionViewItem';
24
+ import { append, $, getDomNodePagePosition, disposableWindowInterval, clearNode, addDisposableListener, EventType } from '@codingame/monaco-vscode-api/vscode/vs/base/browser/dom';
25
+ import { mainWindow } from '@codingame/monaco-vscode-api/vscode/vs/base/browser/window';
26
+ import { ActionBar, ActionsOrientation } from '@codingame/monaco-vscode-api/vscode/vs/base/browser/ui/actionbar/actionbar';
27
+ import { BaseActionViewItem } from '@codingame/monaco-vscode-api/vscode/vs/base/browser/ui/actionbar/actionViewItems';
28
+ import { Action, Separator } from '@codingame/monaco-vscode-api/vscode/vs/base/common/actions';
29
+ import { Codicon } from '@codingame/monaco-vscode-api/vscode/vs/base/common/codicons';
30
+ import { IHoverService } from '@codingame/monaco-vscode-api/vscode/vs/platform/hover/browser/hover.service';
31
+ import { IDialogService } from '@codingame/monaco-vscode-api/vscode/vs/platform/dialogs/common/dialogs.service';
32
+ import { registerUpdateTitleBarMenuPlacement } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/update/browser/updateTitleBarEntry';
33
+ import { ChatEntitlement, getQuotaUsage, QuotaUsageKind, getQuotaReset, getChatPlanName } from '@codingame/monaco-vscode-api/vscode/vs/workbench/services/chat/common/chatEntitlementService';
34
+ import { IChatEntitlementService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/services/chat/common/chatEntitlementService.service';
35
+ import { ChatStatusDashboard } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/browser/chatStatus/chatStatusDashboard';
36
+ import { HoverPosition } from '@codingame/monaco-vscode-api/vscode/vs/base/browser/ui/hover/hoverWidget';
37
+ import { ThemeIcon } from '@codingame/monaco-vscode-api/vscode/vs/base/common/themables';
38
+ import { getAccountTitleBarState, resolveAccountInfo, getAccountTitleBarBadgeKey, getAccountProfileImageUrl } from '@codingame/monaco-vscode-api/vscode/vs/sessions/browser/accountTitleBarState';
39
+ import { observeAllowSignedOutWhenUsable } from '@codingame/monaco-vscode-api/vscode/vs/sessions/browser/sessionsAuthGate';
40
+ import { SessionsWelcomeVisibleContext, IsPhoneLayoutContext } from '@codingame/monaco-vscode-api/vscode/vs/sessions/common/contextkeys';
41
+ import { IsAuxiliaryWindowContext } from '@codingame/monaco-vscode-api/vscode/vs/workbench/common/contextkeys';
42
+ import { IAuthenticationAccessService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/services/authentication/browser/authenticationAccessService.service';
43
+ import { IAuthenticationUsageService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/services/authentication/browser/authenticationUsageService.service';
44
+ import { ACCOUNTS_AVATAR_SETTING } from '@codingame/monaco-vscode-api/vscode/vs/workbench/services/authentication/common/authentication';
45
+ import { IAuthenticationService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/services/authentication/common/authentication.service';
46
+ import '@codingame/monaco-vscode-api/vscode/vs/platform/instantiation/common/extensions';
47
+ import { shouldShowCodexAccount, hasSignedInCodexChatGPTAccount, createCodexAccountMenuActions } from '@codingame/monaco-vscode-api/vscode/vs/workbench/services/agentHost/browser/codexAccountService';
48
+ import { ICodexAccountService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/services/agentHost/browser/codexAccountService.service';
49
+ import { ICommandService } from '@codingame/monaco-vscode-api/vscode/vs/platform/commands/common/commands.service';
50
+ import { MANAGE_CHAT_COMMAND_ID } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/constants';
51
+ import '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationManagement';
52
+ import { AICustomizationManagementCommands, AICustomizationManagementSection } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/aiCustomizationWorkspaceService';
53
+ import { SessionType } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/chatSessionsService';
54
+ import { safeIntl, fromNow } from '@codingame/monaco-vscode-api/vscode/vs/base/common/date';
55
+ import { language } from '@codingame/monaco-vscode-api/vscode/vs/base/common/platform';
56
+ import { AgentHostCodexAgentEnabledSettingId } from '@codingame/monaco-vscode-api/vscode/vs/platform/agentHost/common/agentService';
57
+ import { ChatAIDisabledSettingId } from '@codingame/monaco-vscode-api/vscode/vs/platform/chat/common/chatSettings';
58
+ import { CHAT_SETUP_ACTION_ID } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/browser/actions/chatActions';
59
+ import { AGENTIC_SIGN_IN_COMMAND_ID } from '@codingame/monaco-vscode-api/vscode/vs/sessions/common/sessionCommands';
60
+ import { SessionsChatPetAchievementBadges } from './chatPetAchievementBadges.js';
61
+ import { CHAT_PET_OPEN_ACHIEVEMENTS_COMMAND_ID } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/browser/chatPetAchievements';
62
+ import { runOnChange } from '@codingame/monaco-vscode-api/vscode/vs/base/common/observableInternal/utils/runOnChange';
63
+
64
+ registerCss(sidebarActionButton, 0);
65
+ registerCss(accountWidget, 1);
66
+ registerCss(accountTitleBarWidget, 1);
67
+ registerCss(chatStatus, 1);
68
+ const AccountMenu = Menus.AccountMenu;
69
+ const SessionsTitleBarAccountWidgetAction = "sessions.action.titleBarAccountWidget";
70
+ const SESSIONS_ACCOUNT_TITLEBAR_PANEL_WIDTH = 400;
71
+ const PERSONALIZE_ACTION_IDS = ["workbench.action.openSettings"];
72
+ const SIGN_OUT_ACTION_ID = "workbench.action.agenticSignOut";
73
+ const accountDateFormatter = safeIntl.DateTimeFormat(language, {
74
+ month: "short",
75
+ day: "numeric"
76
+ });
77
+ const accountTimeFormatter = safeIntl.DateTimeFormat(language, {
78
+ hour: "numeric",
79
+ minute: "numeric"
80
+ });
81
+ function shouldShowAccountPanelSummary(state, hasCopilotDashboard, isAccountLoading) {
82
+ return !hasCopilotDashboard && !isAccountLoading && !(state.source === "copilot" && state.kind === "prominent");
83
+ }
84
+ registerUpdateTitleBarMenuPlacement(Menus.TitleBarLeftLayout, {
85
+ group: "navigation",
86
+ order: 2,
87
+ when: ( ContextKeyExpr.and(( IsAuxiliaryWindowContext.toNegated()), ( SessionsWelcomeVisibleContext.toNegated())))
88
+ });
89
+ registerAction2(class extends Action2 {
90
+ constructor() {
91
+ super({
92
+ id: AGENTIC_SIGN_IN_COMMAND_ID,
93
+ title: ( localize2(3176, "Sign in to use GitHub Copilot")),
94
+ icon: Codicon.signIn,
95
+ menu: {
96
+ id: AccountMenu,
97
+ when: ( ContextKeyExpr.notEquals("defaultAccountStatus", "available")),
98
+ group: "1_account",
99
+ order: 1
100
+ }
101
+ });
102
+ }
103
+ async run(accessor) {
104
+ await accessor.get(ICommandService).executeCommand(CHAT_SETUP_ACTION_ID);
105
+ }
106
+ });
107
+ registerAction2(class extends Action2 {
108
+ constructor() {
109
+ super({
110
+ id: "workbench.action.agenticSignOut",
111
+ title: ( localize2(3177, "Sign Out")),
112
+ icon: Codicon.signOut,
113
+ menu: {
114
+ id: AccountMenu,
115
+ when: ( ContextKeyExpr.equals("defaultAccountStatus", "available")),
116
+ group: "1_account",
117
+ order: 1
118
+ }
119
+ });
120
+ }
121
+ async run(accessor) {
122
+ const defaultAccountService = accessor.get(IDefaultAccountService);
123
+ const dialogService = accessor.get(IDialogService);
124
+ const authenticationService = accessor.get(IAuthenticationService);
125
+ const authenticationUsageService = accessor.get(IAuthenticationUsageService);
126
+ const authenticationAccessService = accessor.get(IAuthenticationAccessService);
127
+ const defaultAccount = await defaultAccountService.getDefaultAccount();
128
+ if (!defaultAccount) {
129
+ return;
130
+ }
131
+ const providerId = defaultAccount.authenticationProvider.id;
132
+ const accountLabel = defaultAccount.accountName;
133
+ const {
134
+ confirmed
135
+ } = await dialogService.confirm({
136
+ type: Severity.Info,
137
+ message: ( localize(3178, "Sign out of the Agents window?")),
138
+ detail: ( localize(3179, "This will sign out '{0}' from the Agents window.", accountLabel)),
139
+ primaryButton: ( localize(3180, "&&Sign Out"))
140
+ });
141
+ if (!confirmed) {
142
+ return;
143
+ }
144
+ const allSessions = await authenticationService.getSessions(providerId);
145
+ const sessions = allSessions.filter(session => session.account.label === accountLabel);
146
+ await Promise.all(
147
+ sessions.map(session => authenticationService.removeSession(providerId, session.id))
148
+ );
149
+ authenticationUsageService.removeAccountUsage(providerId, accountLabel);
150
+ authenticationAccessService.removeAllowedExtensions(providerId, accountLabel);
151
+ }
152
+ });
153
+ MenuRegistry.appendMenuItem(AccountMenu, {
154
+ command: {
155
+ id: "workbench.action.openSettings",
156
+ title: ( localize(3181, "Settings")),
157
+ icon: Codicon.settingsGear
158
+ },
159
+ when: ( IsPhoneLayoutContext.negate()),
160
+ group: "2_settings",
161
+ order: 1
162
+ });
163
+ appendUpdateMenuItems(AccountMenu, "3_updates");
164
+ let TitleBarAccountWidget = class TitleBarAccountWidget extends BaseActionViewItem {
165
+ constructor(
166
+ action,
167
+ options,
168
+ defaultAccountService,
169
+ authenticationService,
170
+ menuService,
171
+ contextKeyService,
172
+ hoverService,
173
+ instantiationService,
174
+ chatEntitlementService,
175
+ codexAccountService,
176
+ configurationService,
177
+ commandService
178
+ ) {
179
+ super(undefined, action, options);
180
+ this.defaultAccountService = defaultAccountService;
181
+ this.authenticationService = authenticationService;
182
+ this.menuService = menuService;
183
+ this.contextKeyService = contextKeyService;
184
+ this.hoverService = hoverService;
185
+ this.instantiationService = instantiationService;
186
+ this.chatEntitlementService = chatEntitlementService;
187
+ this.codexAccountService = codexAccountService;
188
+ this.configurationService = configurationService;
189
+ this.commandService = commandService;
190
+ this.isAccountLoading = true;
191
+ this.accountRequestCounter = 0;
192
+ this.avatarRequestCounter = 0;
193
+ this.codexAvatarRequestCounter = 0;
194
+ this.isMenuVisible = false;
195
+ this.copilotDashboardStore = this._register(( new MutableDisposable()));
196
+ this.clickPanelDisposable = this._register(( new MutableDisposable()));
197
+ this.avatarLoadDisposable = this._register(( new MutableDisposable()));
198
+ this.codexAvatarLoadDisposable = this._register(( new MutableDisposable()));
199
+ this.lastCodexAccount = this.codexAccountService.account;
200
+ this.allowSignedOutWhenUsable = observeAllowSignedOutWhenUsable(configurationService);
201
+ this.lastState = getAccountTitleBarState({
202
+ isAccountLoading: true,
203
+ entitlement: this.chatEntitlementService.entitlement,
204
+ sentiment: this.chatEntitlementService.sentiment,
205
+ quotas: this.chatEntitlementService.quotas,
206
+ allowSignedOutWhenUsable: false
207
+ });
208
+ this._register(
209
+ this.defaultAccountService.onDidChangeDefaultAccount(() => this.refreshAccount())
210
+ );
211
+ this._register(
212
+ this.authenticationService.onDidChangeSessions(() => this.refreshAccount())
213
+ );
214
+ this._register(
215
+ this.chatEntitlementService.onDidChangeEntitlement(() => this.renderState())
216
+ );
217
+ this._register(this.chatEntitlementService.onDidChangeSentiment(() => this.renderState()));
218
+ this._register(
219
+ this.chatEntitlementService.onDidChangeQuotaExceeded(() => this.renderState())
220
+ );
221
+ this._register(
222
+ this.chatEntitlementService.onDidChangeQuotaRemaining(() => this.renderState())
223
+ );
224
+ this._register(this.codexAccountService.onDidChangeAccount(account => {
225
+ if (hasCodexAccountPanelContentChanged(this.lastCodexAccount, account)) {
226
+ this.clickPanelDisposable.clear();
227
+ }
228
+ this.lastCodexAccount = account;
229
+ this.refreshCodexAvatar();
230
+ this.renderState();
231
+ }));
232
+ this._register(this.configurationService.onDidChangeConfiguration(event => {
233
+ if (event.affectsConfiguration(AgentHostCodexAgentEnabledSettingId) || event.affectsConfiguration(ChatAIDisabledSettingId)) {
234
+ this.clickPanelDisposable.clear();
235
+ this.renderState();
236
+ }
237
+ if (event.affectsConfiguration(ACCOUNTS_AVATAR_SETTING)) {
238
+ this.refreshAvatar();
239
+ this.refreshCodexAvatar();
240
+ }
241
+ }));
242
+ this._register(runOnChange(this.allowSignedOutWhenUsable, () => this.renderState()));
243
+ this.refreshAccount();
244
+ this.refreshCodexAvatar();
245
+ }
246
+ setFocusable(_focusable) {}
247
+ render(container) {
248
+ super.render(container);
249
+ this.container = container;
250
+ container.classList.add("sessions-account-titlebar-widget");
251
+ container.setAttribute("role", "button");
252
+ container.tabIndex = 0;
253
+ this.avatarElement = append(container, $("img.sessions-account-titlebar-widget-avatar", {
254
+ alt: ( localize(3182, "Account profile image")),
255
+ draggable: "false"
256
+ }));
257
+ this.avatarElement.decoding = "async";
258
+ this.avatarElement.referrerPolicy = "no-referrer";
259
+ this.iconElement = append(container, $(".sessions-account-titlebar-widget-icon"));
260
+ this.labelElement = append(container, $("span.sessions-account-titlebar-widget-label"));
261
+ this.badgeElement = append(container, $("span.sessions-account-titlebar-widget-badge"));
262
+ this.renderState();
263
+ }
264
+ onClick() {
265
+ if (!this.container) {
266
+ return;
267
+ }
268
+ this.showCombinedPanel();
269
+ }
270
+ async refreshAccount() {
271
+ const requestId = ++this.accountRequestCounter;
272
+ this.isAccountLoading = true;
273
+ this.renderState();
274
+ const info = await resolveAccountInfo(this.defaultAccountService, this.authenticationService);
275
+ if (requestId !== this.accountRequestCounter || this._store.isDisposed) {
276
+ return;
277
+ }
278
+ this.accountName = info?.accountName;
279
+ this.accountProviderId = info?.accountProviderId;
280
+ this.accountProviderLabel = info?.accountProviderLabel;
281
+ this.accountIcon = info?.accountIcon;
282
+ this.isAccountLoading = false;
283
+ this.refreshAvatar();
284
+ this.renderState();
285
+ }
286
+ renderState() {
287
+ if (!this.container || !this.avatarElement || !this.iconElement || !this.labelElement || !this.badgeElement) {
288
+ return;
289
+ }
290
+ const entitlement = this.accountName && this.chatEntitlementService.entitlement === ChatEntitlement.Unknown ? ChatEntitlement.Unresolved : this.chatEntitlementService.entitlement;
291
+ const state = getAccountTitleBarState({
292
+ isAccountLoading: this.isAccountLoading,
293
+ accountName: this.accountName,
294
+ accountProviderLabel: this.accountProviderLabel,
295
+ entitlement,
296
+ sentiment: this.chatEntitlementService.sentiment,
297
+ quotas: this.chatEntitlementService.quotas,
298
+ allowSignedOutWhenUsable: this.allowSignedOutWhenUsable.get()
299
+ });
300
+ this.lastState = state;
301
+ this.container.classList.remove("kind-default", "kind-accent", "kind-warning", "kind-prominent");
302
+ this.container.classList.add(`kind-${state.kind}`);
303
+ this.container.classList.toggle("menu-visible", this.isMenuVisible);
304
+ this.container.setAttribute("aria-label", state.ariaLabel);
305
+ const badgeKey = getAccountTitleBarBadgeKey(state);
306
+ if (badgeKey !== this.lastBadgeKey) {
307
+ this.lastBadgeKey = badgeKey;
308
+ this.dismissedBadgeKey = undefined;
309
+ }
310
+ const shouldShowDotBadge = !!badgeKey && badgeKey !== this.dismissedBadgeKey;
311
+ const loadedAvatarUrl = !this.isAccountLoading ? this.loadedAvatarUrl : undefined;
312
+ const hasLoadedAvatar = !!loadedAvatarUrl;
313
+ const titleBarIcon = state.dotBadge ? Codicon.account : state.icon;
314
+ this.avatarElement.classList.toggle("visible", hasLoadedAvatar);
315
+ this.avatarElement.alt = this.getAvatarAltText(hasLoadedAvatar);
316
+ if (hasLoadedAvatar) {
317
+ if (this.avatarElement.src !== loadedAvatarUrl) {
318
+ this.avatarElement.src = loadedAvatarUrl;
319
+ }
320
+ } else {
321
+ this.avatarElement.removeAttribute("src");
322
+ }
323
+ this.iconElement.className = `sessions-account-titlebar-widget-icon ${ThemeIcon.asClassName(titleBarIcon)}`;
324
+ this.iconElement.classList.toggle("hidden", hasLoadedAvatar);
325
+ this.labelElement.textContent = "";
326
+ this.badgeElement.textContent = "";
327
+ this.badgeElement.classList.toggle("dot-badge", shouldShowDotBadge);
328
+ this.badgeElement.classList.toggle("dot-badge-warning", shouldShowDotBadge && state.dotBadge === "warning");
329
+ this.badgeElement.classList.toggle("dot-badge-error", shouldShowDotBadge && state.dotBadge === "error");
330
+ this.badgeElement.style.display = shouldShowDotBadge ? "" : "none";
331
+ this.renderCodexPanelAvatar();
332
+ }
333
+ getAvatarAltText(hasLoadedAvatar) {
334
+ if (hasLoadedAvatar && this.accountProviderId === "github" && this.accountName) {
335
+ return localize(3183, "GitHub profile image for {0}", this.accountName);
336
+ }
337
+ return localize(3182, "Account profile image");
338
+ }
339
+ getCodexAvatarAltText() {
340
+ return this.codexAccountService.account.email ? ( localize(
341
+ 3184,
342
+ "ChatGPT profile image for {0}",
343
+ this.codexAccountService.account.email
344
+ )) : ( localize(3185, "ChatGPT profile image"));
345
+ }
346
+ renderCodexPanelAvatar() {
347
+ if (!this.codexPanelAvatarElement || !this.codexPanelIconElement) {
348
+ return;
349
+ }
350
+ const avatarUrl = this.loadedCodexAvatarUrl;
351
+ this.codexPanelAvatarElement.classList.toggle("hidden", !avatarUrl);
352
+ this.codexPanelIconElement.classList.toggle("hidden", !!avatarUrl);
353
+ this.codexPanelAvatarElement.alt = this.getCodexAvatarAltText();
354
+ if (avatarUrl) {
355
+ if (this.codexPanelAvatarElement.src !== avatarUrl) {
356
+ this.codexPanelAvatarElement.src = avatarUrl;
357
+ }
358
+ } else {
359
+ this.codexPanelAvatarElement.removeAttribute("src");
360
+ }
361
+ }
362
+ refreshAvatar() {
363
+ const avatarUrl = this.configurationService.getValue(ACCOUNTS_AVATAR_SETTING) ? getAccountProfileImageUrl(this.accountProviderId, this.accountName, this.accountIcon) : undefined;
364
+ if (avatarUrl === this.currentAvatarUrl) {
365
+ return;
366
+ }
367
+ this.currentAvatarUrl = avatarUrl;
368
+ this.loadedAvatarUrl = undefined;
369
+ this.avatarLoadDisposable.clear();
370
+ const requestId = ++this.avatarRequestCounter;
371
+ if (!avatarUrl) {
372
+ this.renderState();
373
+ return;
374
+ }
375
+ const image = ( new Image());
376
+ image.referrerPolicy = "no-referrer";
377
+ const clearHandlers = () => {
378
+ image.onload = null;
379
+ image.onerror = null;
380
+ };
381
+ image.onload = () => {
382
+ if (requestId !== this.avatarRequestCounter) {
383
+ return;
384
+ }
385
+ this.loadedAvatarUrl = avatarUrl;
386
+ this.renderState();
387
+ clearHandlers();
388
+ };
389
+ image.onerror = () => {
390
+ if (requestId !== this.avatarRequestCounter) {
391
+ return;
392
+ }
393
+ this.loadedAvatarUrl = undefined;
394
+ this.renderState();
395
+ clearHandlers();
396
+ };
397
+ this.avatarLoadDisposable.value = toDisposable(() => {
398
+ clearHandlers();
399
+ image.src = "";
400
+ });
401
+ image.src = avatarUrl;
402
+ this.renderState();
403
+ }
404
+ refreshCodexAvatar() {
405
+ const account = this.codexAccountService.account;
406
+ const avatarUrl = this.configurationService.getValue(ACCOUNTS_AVATAR_SETTING) && account.status === "signedIn" ? account.profileImageDataUri : undefined;
407
+ if (avatarUrl === this.currentCodexAvatarUrl) {
408
+ return;
409
+ }
410
+ this.currentCodexAvatarUrl = avatarUrl;
411
+ this.loadedCodexAvatarUrl = undefined;
412
+ this.codexAvatarLoadDisposable.clear();
413
+ const requestId = ++this.codexAvatarRequestCounter;
414
+ if (!avatarUrl) {
415
+ this.renderState();
416
+ return;
417
+ }
418
+ const image = ( new Image());
419
+ image.referrerPolicy = "no-referrer";
420
+ const clearHandlers = () => {
421
+ image.onload = null;
422
+ image.onerror = null;
423
+ };
424
+ image.onload = () => {
425
+ if (requestId !== this.codexAvatarRequestCounter) {
426
+ return;
427
+ }
428
+ this.loadedCodexAvatarUrl = avatarUrl;
429
+ this.renderState();
430
+ clearHandlers();
431
+ };
432
+ image.onerror = () => {
433
+ if (requestId !== this.codexAvatarRequestCounter) {
434
+ return;
435
+ }
436
+ this.loadedCodexAvatarUrl = undefined;
437
+ this.renderState();
438
+ clearHandlers();
439
+ };
440
+ this.codexAvatarLoadDisposable.value = toDisposable(() => {
441
+ clearHandlers();
442
+ image.src = "";
443
+ });
444
+ image.src = avatarUrl;
445
+ this.renderState();
446
+ }
447
+ getHoverTarget() {
448
+ const {
449
+ left,
450
+ width
451
+ } = getDomNodePagePosition(this.container);
452
+ return {
453
+ targetElements: [this.container],
454
+ x: left + width - SESSIONS_ACCOUNT_TITLEBAR_PANEL_WIDTH
455
+ };
456
+ }
457
+ showCombinedPanel() {
458
+ if (!this.container) {
459
+ return;
460
+ }
461
+ if (this.isMenuVisible) {
462
+ this.hoverService.hideHover(true);
463
+ this.clickPanelDisposable.clear();
464
+ return;
465
+ }
466
+ this.hoverService.hideHover(true);
467
+ this.clickPanelDisposable.clear();
468
+ const panelStore = ( new DisposableStore());
469
+ this.clickPanelDisposable.value = panelStore;
470
+ const badgeKey = getAccountTitleBarBadgeKey(this.lastState);
471
+ if (badgeKey) {
472
+ this.dismissedBadgeKey = badgeKey;
473
+ }
474
+ this.isMenuVisible = true;
475
+ this.container.classList.add("menu-visible");
476
+ this.renderState();
477
+ panelStore.add({
478
+ dispose: () => {
479
+ this.isMenuVisible = false;
480
+ this.container?.classList.remove("menu-visible");
481
+ this.renderState();
482
+ this.container?.focus();
483
+ }
484
+ });
485
+ const panelContent = this.createCombinedPanelContent(panelStore);
486
+ const hoverWidget = this.hoverService.showInstantHover({
487
+ content: panelContent,
488
+ target: this.getHoverTarget(),
489
+ additionalClasses: ["sessions-account-titlebar-panel-hover"],
490
+ position: {
491
+ hoverPosition: HoverPosition.BELOW
492
+ },
493
+ persistence: {
494
+ sticky: true,
495
+ hideOnHover: false
496
+ },
497
+ appearance: {
498
+ showPointer: false,
499
+ skipFadeInAnimation: true,
500
+ maxHeightRatio: 0.8
501
+ }
502
+ }, true);
503
+ if (hoverWidget) {
504
+ panelStore.add(hoverWidget);
505
+ }
506
+ panelStore.add(disposableWindowInterval(mainWindow, () => {
507
+ if (!panelContent.isConnected || hoverWidget?.isDisposed) {
508
+ this.clickPanelDisposable.clear();
509
+ }
510
+ }, 500));
511
+ }
512
+ createCombinedPanelContent(panelStore) {
513
+ const panel = $("div.sessions-account-titlebar-panel");
514
+ const menu = this.menuService.createMenu(AccountMenu, this.contextKeyService);
515
+ const rawActions = [];
516
+ fillInActionBarActions(menu.getActions(), rawActions);
517
+ menu.dispose();
518
+ const codexAccount = this.codexAccountService.account;
519
+ const codexAccountVisible = shouldShowCodexAccount(this.configurationService, true);
520
+ const partitioned = this.partitionMenuActions(rawActions);
521
+ const identities = append(panel, $(".sessions-account-titlebar-panel-identities"));
522
+ if (this.accountName || this.isAccountLoading) {
523
+ const copilotAccount = append(
524
+ identities,
525
+ $("section.sessions-account-titlebar-panel-provider-account", {
526
+ "aria-label": ( localize(3186, "Copilot account"))
527
+ })
528
+ );
529
+ const copilotIdentity = append(copilotAccount, $(".sessions-account-titlebar-panel-provider-identity"));
530
+ const loadedAvatarUrl = !this.isAccountLoading ? this.loadedAvatarUrl : undefined;
531
+ if (loadedAvatarUrl) {
532
+ const avatar = append(
533
+ copilotIdentity,
534
+ $("img.sessions-account-titlebar-panel-provider-avatar", {
535
+ alt: this.getAvatarAltText(true),
536
+ draggable: "false",
537
+ src: loadedAvatarUrl
538
+ })
539
+ );
540
+ avatar.decoding = "async";
541
+ avatar.referrerPolicy = "no-referrer";
542
+ } else {
543
+ const accountIcon = append(copilotIdentity, $("span.sessions-account-titlebar-panel-provider-icon", {
544
+ "aria-hidden": "true"
545
+ }));
546
+ accountIcon.classList.add(...ThemeIcon.asClassNameArray(Codicon.github));
547
+ }
548
+ const title = append(copilotIdentity, $("div.sessions-account-titlebar-panel-provider-name"));
549
+ title.textContent = this.getPanelHeaderLabel();
550
+ const copilotActions = append(copilotIdentity, $(".sessions-account-titlebar-panel-provider-actions"));
551
+ const copilotActionBar = panelStore.add(( new ActionBar(copilotActions)));
552
+ panelStore.add(copilotActionBar.onWillRun(() => {
553
+ this.hoverService.hideHover(true);
554
+ this.clickPanelDisposable.clear();
555
+ }));
556
+ copilotActionBar.push(panelStore.add(( new Action("copilot.manageModels", ( localize(3187, "Manage Copilot Models")), ThemeIcon.asClassName(Codicon.copilot), true, () => this.commandService.executeCommand(MANAGE_CHAT_COMMAND_ID, "@provider:\"Copilot\"")))), {
557
+ icon: true,
558
+ label: false
559
+ });
560
+ copilotActionBar.push(panelStore.add(( new Action("copilot.openAgentCustomizations", ( localize(3188, "Agent Customizations for Copilot")), ThemeIcon.asClassName(Codicon.settingsGear), true, () => this.commandService.executeCommand(AICustomizationManagementCommands.OpenEditor, {
561
+ sessionType: SessionType.AgentHostCopilot,
562
+ section: AICustomizationManagementSection.Agents
563
+ })))), {
564
+ icon: true,
565
+ label: false
566
+ });
567
+ if (partitioned.signOut) {
568
+ copilotActionBar.push(partitioned.signOut, {
569
+ icon: true,
570
+ label: false
571
+ });
572
+ }
573
+ this.appendCopilotUsage(copilotAccount, panelStore);
574
+ } else if (partitioned.signIn) {
575
+ const copilotAccount = append(
576
+ identities,
577
+ $("section.sessions-account-titlebar-panel-provider-account.signed-out", {
578
+ "aria-label": ( localize(3186, "Copilot account"))
579
+ })
580
+ );
581
+ const copilotIdentity = append(copilotAccount, $(".sessions-account-titlebar-panel-provider-identity"));
582
+ const accountIcon = append(copilotIdentity, $("span.sessions-account-titlebar-panel-provider-icon", {
583
+ "aria-hidden": "true"
584
+ }));
585
+ accountIcon.classList.add(...ThemeIcon.asClassNameArray(Codicon.github));
586
+ const signInActions = append(
587
+ copilotIdentity,
588
+ $(".sessions-account-titlebar-panel-provider-sign-in-actions")
589
+ );
590
+ const signInActionBar = panelStore.add(( new ActionBar(signInActions)));
591
+ panelStore.add(signInActionBar.onWillRun(() => {
592
+ this.hoverService.hideHover(true);
593
+ this.clickPanelDisposable.clear();
594
+ }));
595
+ signInActionBar.push(partitioned.signIn, {
596
+ icon: false,
597
+ label: true
598
+ });
599
+ }
600
+ if (hasSignedInCodexChatGPTAccount(codexAccount, codexAccountVisible)) {
601
+ const accountSection = append(
602
+ identities,
603
+ $("section.sessions-account-titlebar-panel-provider-account", {
604
+ "aria-label": ( localize(3189, "ChatGPT account"))
605
+ })
606
+ );
607
+ const accountIdentity = append(accountSection, $(".sessions-account-titlebar-panel-provider-identity"));
608
+ const avatar = append(
609
+ accountIdentity,
610
+ $("img.sessions-account-titlebar-panel-provider-avatar", {
611
+ alt: this.getCodexAvatarAltText(),
612
+ draggable: "false"
613
+ })
614
+ );
615
+ avatar.decoding = "async";
616
+ avatar.referrerPolicy = "no-referrer";
617
+ const accountIcon = append(accountIdentity, $("span.sessions-account-titlebar-panel-provider-icon", {
618
+ "aria-hidden": "true"
619
+ }));
620
+ accountIcon.classList.add(...ThemeIcon.asClassNameArray(Codicon.openai));
621
+ this.codexPanelAvatarElement = avatar;
622
+ this.codexPanelIconElement = accountIcon;
623
+ this.renderCodexPanelAvatar();
624
+ panelStore.add(toDisposable(() => {
625
+ if (this.codexPanelAvatarElement === avatar) {
626
+ this.codexPanelAvatarElement = undefined;
627
+ }
628
+ if (this.codexPanelIconElement === accountIcon) {
629
+ this.codexPanelIconElement = undefined;
630
+ }
631
+ }));
632
+ const accountName = append(accountIdentity, $(".sessions-account-titlebar-panel-provider-name"));
633
+ accountName.textContent = codexAccount.email ?? ( localize(3190, "ChatGPT"));
634
+ const accountActions = append(accountIdentity, $(".sessions-account-titlebar-panel-provider-actions"));
635
+ const accountActionBar = panelStore.add(( new ActionBar(accountActions)));
636
+ panelStore.add(accountActionBar.onWillRun(() => {
637
+ this.hoverService.hideHover(true);
638
+ this.clickPanelDisposable.clear();
639
+ }));
640
+ accountActionBar.push(panelStore.add(( new Action("codex.manageChatGPTModels", ( localize(3191, "Manage ChatGPT Models")), ThemeIcon.asClassName(Codicon.openai), true, () => this.commandService.executeCommand(MANAGE_CHAT_COMMAND_ID, "@provider:\"ChatGPT\"")))), {
641
+ icon: true,
642
+ label: false
643
+ });
644
+ accountActionBar.push(panelStore.add(( new Action("codex.openAgentCustomizations", ( localize(3192, "Agent Customizations for Codex")), ThemeIcon.asClassName(Codicon.settingsGear), true, () => this.commandService.executeCommand(AICustomizationManagementCommands.OpenEditor, {
645
+ sessionType: SessionType.AgentHostCodex,
646
+ section: AICustomizationManagementSection.HarnessSettings
647
+ })))), {
648
+ icon: true,
649
+ label: false
650
+ });
651
+ accountActionBar.push(panelStore.add(( new Action("codex.signOutOfChatGPT", ( localize(3193, "Sign Out")), ThemeIcon.asClassName(Codicon.signOut), true, () => this.codexAccountService.signOut()))), {
652
+ icon: true,
653
+ label: false
654
+ });
655
+ this.appendChatGPTUsage(accountSection);
656
+ } else {
657
+ const codexAccountActions = createCodexAccountMenuActions(this.codexAccountService, codexAccountVisible);
658
+ if (codexAccountActions.length) {
659
+ const accountSection = append(
660
+ identities,
661
+ $("section.sessions-account-titlebar-panel-provider-account.signed-out", {
662
+ "aria-label": ( localize(3189, "ChatGPT account"))
663
+ })
664
+ );
665
+ const accountIdentity = append(accountSection, $(".sessions-account-titlebar-panel-provider-identity"));
666
+ const accountIcon = append(accountIdentity, $("span.sessions-account-titlebar-panel-provider-icon", {
667
+ "aria-hidden": "true"
668
+ }));
669
+ accountIcon.classList.add(...ThemeIcon.asClassNameArray(Codicon.openai));
670
+ const signInActions = append(
671
+ accountIdentity,
672
+ $(".sessions-account-titlebar-panel-provider-sign-in-actions")
673
+ );
674
+ const signInActionBar = panelStore.add(( new ActionBar(signInActions)));
675
+ panelStore.add(signInActionBar.onWillRun(() => {
676
+ this.hoverService.hideHover(true);
677
+ this.clickPanelDisposable.clear();
678
+ }));
679
+ for (const action of codexAccountActions) {
680
+ signInActionBar.push(action instanceof Action ? panelStore.add(action) : action, {
681
+ icon: false,
682
+ label: true
683
+ });
684
+ }
685
+ }
686
+ }
687
+ panelStore.add(
688
+ this.instantiationService.createInstance(SessionsChatPetAchievementBadges, panel, () => {
689
+ this.hoverService.hideHover(true);
690
+ this.clickPanelDisposable.clear();
691
+ void this.commandService.executeCommand(CHAT_PET_OPEN_ACHIEVEMENTS_COMMAND_ID);
692
+ })
693
+ );
694
+ if (this.shouldShowCopilotDashboardHover()) {
695
+ const footer = append(panel, $("section.sessions-account-titlebar-panel-footer", {
696
+ "aria-label": ( localize(3194, "Account status"))
697
+ }));
698
+ append(footer, this.createCopilotHoverContent({
699
+ compactQuotaLayout: true
700
+ }));
701
+ }
702
+ if (( partitioned.other.some(a => !(a instanceof Separator)))) {
703
+ const actionsSection = append(panel, $(".sessions-account-titlebar-panel-actions"));
704
+ const actionsActionBar = panelStore.add(( new ActionBar(actionsSection, {
705
+ orientation: ActionsOrientation.VERTICAL
706
+ })));
707
+ panelStore.add(actionsActionBar.onWillRun(() => {
708
+ this.hoverService.hideHover(true);
709
+ this.clickPanelDisposable.clear();
710
+ }));
711
+ let lastWasSeparator = true;
712
+ for (const action of partitioned.other) {
713
+ if (action instanceof Separator) {
714
+ if (!lastWasSeparator) {
715
+ actionsActionBar.push(action);
716
+ lastWasSeparator = true;
717
+ }
718
+ continue;
719
+ }
720
+ lastWasSeparator = false;
721
+ actionsActionBar.push(action, {
722
+ icon: false,
723
+ label: true
724
+ });
725
+ }
726
+ }
727
+ if (shouldShowAccountPanelSummary(
728
+ this.lastState,
729
+ this.shouldShowCopilotDashboardHover(),
730
+ this.isAccountLoading
731
+ )) {
732
+ const contentSection = append(panel, $(".sessions-account-titlebar-panel-content"));
733
+ const summary = append(contentSection, $(".sessions-account-titlebar-panel-summary"));
734
+ summary.textContent = this.lastState.ariaLabel;
735
+ }
736
+ return panel;
737
+ }
738
+ appendCopilotUsage(accountSection, panelStore) {
739
+ const usage = append(accountSection, $(".sessions-account-titlebar-panel-provider-usage"));
740
+ const contentStore = panelStore.add(( new DisposableStore()));
741
+ const render = () => {
742
+ contentStore.clear();
743
+ clearNode(usage);
744
+ this.renderCopilotUsage(usage, contentStore);
745
+ };
746
+ render();
747
+ panelStore.add(this.chatEntitlementService.onDidChangeQuotaRemaining(render));
748
+ panelStore.add(this.chatEntitlementService.onDidChangeEntitlement(render));
749
+ }
750
+ renderCopilotUsage(usage, store) {
751
+ const quota = this.chatEntitlementService.quotas.premiumChat ?? this.chatEntitlementService.quotas.chat;
752
+ const planRow = append(usage, $(".sessions-account-titlebar-panel-provider-metric-row.primary"));
753
+ append(planRow, $(
754
+ "span.sessions-account-titlebar-panel-provider-plan",
755
+ undefined,
756
+ this.getCopilotPlanLabel()
757
+ ));
758
+ const quotaUsage = getQuotaUsage(quota);
759
+ if (!quota || !quotaUsage) {
760
+ return;
761
+ }
762
+ const formatter = safeIntl.NumberFormat(language, {
763
+ maximumFractionDigits: 2,
764
+ minimumFractionDigits: 0
765
+ });
766
+ if (quotaUsage.kind === QuotaUsageKind.CreditsUsed) {
767
+ const creditsFormatted = formatter.value.format(quotaUsage.creditsUsed);
768
+ append(planRow, $("span.sessions-account-titlebar-panel-provider-usage-value", {
769
+ "aria-label": ( localize(3195, "{0} credits used", creditsFormatted))
770
+ }, creditsFormatted));
771
+ } else {
772
+ const usedPercentage = Math.floor(quotaUsage.usedPercentage);
773
+ const percentageLabel = ( localize(3196, "{0}%", usedPercentage));
774
+ const percentageAriaLabel = ( localize(3197, "{0}% credits used", usedPercentage));
775
+ const {
776
+ used,
777
+ total
778
+ } = quotaUsage;
779
+ const usageValue = append(planRow, $(
780
+ "span.sessions-account-titlebar-panel-provider-usage-value",
781
+ used !== undefined && total !== undefined ? {
782
+ tabIndex: 0
783
+ } : undefined
784
+ ));
785
+ usageValue.textContent = percentageLabel;
786
+ usageValue.setAttribute("aria-label", percentageAriaLabel);
787
+ if (used !== undefined && total !== undefined) {
788
+ const creditsValue = ( localize(
789
+ 3198,
790
+ "{0} / {1}",
791
+ formatter.value.format(used),
792
+ formatter.value.format(total)
793
+ ));
794
+ const creditsAriaLabel = ( localize(
795
+ 3199,
796
+ "{0} / {1} credits used",
797
+ formatter.value.format(used),
798
+ formatter.value.format(total)
799
+ ));
800
+ const showCredits = () => {
801
+ usageValue.textContent = creditsValue;
802
+ usageValue.setAttribute("aria-label", creditsAriaLabel);
803
+ };
804
+ const showPercentage = () => {
805
+ usageValue.textContent = percentageLabel;
806
+ usageValue.setAttribute("aria-label", percentageAriaLabel);
807
+ };
808
+ store.add(addDisposableListener(usageValue, EventType.MOUSE_ENTER, showCredits));
809
+ store.add(addDisposableListener(usageValue, EventType.MOUSE_LEAVE, showPercentage));
810
+ store.add(addDisposableListener(usageValue, EventType.FOCUS, showCredits));
811
+ store.add(addDisposableListener(usageValue, EventType.BLUR, showPercentage));
812
+ }
813
+ }
814
+ const detailRow = append(usage, $(".sessions-account-titlebar-panel-provider-metric-row.secondary"));
815
+ const resetLabel = this.getCopilotResetLabel(quota);
816
+ if (resetLabel) {
817
+ append(detailRow, $(
818
+ "span.sessions-account-titlebar-panel-provider-reset",
819
+ undefined,
820
+ resetLabel
821
+ ));
822
+ } else {
823
+ detailRow.classList.add("without-reset");
824
+ }
825
+ append(detailRow, $(
826
+ "span.sessions-account-titlebar-panel-provider-usage-label",
827
+ undefined,
828
+ ( localize(3200, "Credits used"))
829
+ ));
830
+ }
831
+ appendChatGPTUsage(accountSection) {
832
+ const account = this.codexAccountService.account;
833
+ const usage = append(accountSection, $(".sessions-account-titlebar-panel-provider-usage"));
834
+ const planRow = append(usage, $(".sessions-account-titlebar-panel-provider-metric-row.primary"));
835
+ append(planRow, $(
836
+ "span.sessions-account-titlebar-panel-provider-plan",
837
+ undefined,
838
+ account.planType ? ( localize(
839
+ 3201,
840
+ "ChatGPT {0}",
841
+ account.planType.charAt(0).toUpperCase() + account.planType.slice(1)
842
+ )) : ( localize(3202, "ChatGPT subscription"))
843
+ ));
844
+ if (!account.rateLimit) {
845
+ return;
846
+ }
847
+ const percentageFormatter = safeIntl.NumberFormat(language, {
848
+ maximumFractionDigits: 0
849
+ });
850
+ const usedPercentage = percentageFormatter.value.format(account.rateLimit.usedPercent);
851
+ append(planRow, $("span.sessions-account-titlebar-panel-provider-usage-value", {
852
+ "aria-label": ( localize(3203, "{0}% used", usedPercentage))
853
+ }, ( localize(3204, "{0}%", usedPercentage))));
854
+ const detailRow = append(usage, $(".sessions-account-titlebar-panel-provider-metric-row.secondary"));
855
+ if (account.rateLimit.resetsAt) {
856
+ append(detailRow, $(
857
+ "span.sessions-account-titlebar-panel-provider-reset",
858
+ undefined,
859
+ ( localize(
860
+ 3205,
861
+ "{0} resets {1}",
862
+ this.getChatGPTLimitLabel(account.rateLimit.windowDurationMins),
863
+ fromNow(account.rateLimit.resetsAt * 1000, false, true)
864
+ ))
865
+ ));
866
+ } else {
867
+ detailRow.classList.add("without-reset");
868
+ }
869
+ append(detailRow, $(
870
+ "span.sessions-account-titlebar-panel-provider-usage-label",
871
+ undefined,
872
+ ( localize(3206, "Limit used"))
873
+ ));
874
+ }
875
+ getCopilotResetLabel(quota) {
876
+ const reset = getQuotaReset(quota, this.chatEntitlementService.quotas);
877
+ if (!reset) {
878
+ return undefined;
879
+ }
880
+ return reset.hasTime ? ( localize(
881
+ 3207,
882
+ "Resets {0} at {1}",
883
+ accountDateFormatter.value.format(reset.date),
884
+ accountTimeFormatter.value.format(reset.date)
885
+ )) : ( localize(3208, "Resets {0}", accountDateFormatter.value.format(reset.date)));
886
+ }
887
+ getChatGPTLimitLabel(windowDurationMins) {
888
+ if (windowDurationMins !== undefined) {
889
+ if (Math.abs(windowDurationMins - 7 * 24 * 60) <= 60) {
890
+ return localize(3209, "Weekly limit");
891
+ }
892
+ if (Math.abs(windowDurationMins - 24 * 60) <= 60) {
893
+ return localize(3210, "Daily limit");
894
+ }
895
+ }
896
+ return localize(3211, "Usage limit");
897
+ }
898
+ partitionMenuActions(rawActions) {
899
+ let signIn;
900
+ let signOut;
901
+ const personalizeMap = ( new Map());
902
+ const other = [];
903
+ const pushSeparator = () => {
904
+ if (other.length === 0 || other[other.length - 1] instanceof Separator) {
905
+ return;
906
+ }
907
+ other.push(( new Separator()));
908
+ };
909
+ for (const action of rawActions) {
910
+ if (action instanceof Separator) {
911
+ pushSeparator();
912
+ continue;
913
+ }
914
+ if (action.id === SIGN_OUT_ACTION_ID) {
915
+ signOut = action;
916
+ continue;
917
+ }
918
+ if (action.id === AGENTIC_SIGN_IN_COMMAND_ID) {
919
+ if (!this.isAccountLoading) {
920
+ signIn = action;
921
+ }
922
+ continue;
923
+ }
924
+ if (PERSONALIZE_ACTION_IDS.includes(action.id)) {
925
+ personalizeMap.set(action.id, action);
926
+ continue;
927
+ }
928
+ if (action.id.startsWith("update.")) {
929
+ continue;
930
+ }
931
+ other.push(action);
932
+ }
933
+ if (other.length > 0 && other[other.length - 1] instanceof Separator) {
934
+ other.pop();
935
+ }
936
+ const personalize = PERSONALIZE_ACTION_IDS.map(id => personalizeMap.get(id)).filter(a => !!a);
937
+ return {
938
+ signIn,
939
+ signOut,
940
+ personalize,
941
+ other
942
+ };
943
+ }
944
+ getPanelHeaderLabel() {
945
+ if (this.accountName) {
946
+ return this.accountName;
947
+ }
948
+ if (this.isAccountLoading) {
949
+ return localize(3212, "Loading Account...");
950
+ }
951
+ return localize(3213, "Account");
952
+ }
953
+ getCopilotPlanLabel() {
954
+ switch (this.chatEntitlementService.entitlement) {
955
+ case ChatEntitlement.Available:
956
+ case ChatEntitlement.Free:
957
+ case ChatEntitlement.EDU:
958
+ case ChatEntitlement.Pro:
959
+ case ChatEntitlement.ProPlus:
960
+ case ChatEntitlement.Business:
961
+ case ChatEntitlement.Enterprise:
962
+ case ChatEntitlement.Max:
963
+ return getChatPlanName(this.chatEntitlementService.entitlement);
964
+ default:
965
+ return "";
966
+ }
967
+ }
968
+ shouldShowCopilotDashboardHover() {
969
+ return !this.chatEntitlementService.sentiment.hidden && !!this.accountName;
970
+ }
971
+ createCopilotHoverContent(extraOptions) {
972
+ const store = ( new DisposableStore());
973
+ this.copilotDashboardStore.value = store;
974
+ const dashboardElement = ChatStatusDashboard.instantiateInContents(this.instantiationService, store, {
975
+ disableInlineSuggestionsSettings: true,
976
+ disableModelSelection: true,
977
+ disableProviderOptions: true,
978
+ disableCompletionsSnooze: true,
979
+ disableQuickSettingsCollapsible: true,
980
+ ...extraOptions
981
+ });
982
+ store.add(disposableWindowInterval(mainWindow, () => {
983
+ if (!dashboardElement.isConnected) {
984
+ store.dispose();
985
+ }
986
+ }, 2000));
987
+ return dashboardElement;
988
+ }
989
+ };
990
+ TitleBarAccountWidget = ( __decorate([( __param(2, IDefaultAccountService)), ( __param(3, IAuthenticationService)), ( __param(4, IMenuService)), ( __param(5, IContextKeyService)), ( __param(6, IHoverService)), ( __param(7, IInstantiationService)), ( __param(8, IChatEntitlementService)), ( __param(9, ICodexAccountService)), ( __param(10, IConfigurationService)), ( __param(11, ICommandService))], TitleBarAccountWidget));
991
+ function hasCodexAccountPanelContentChanged(previous, current) {
992
+ return previous.status !== current.status || previous.email !== current.email || previous.planType !== current.planType || previous.requiresOpenaiAuth !== current.requiresOpenaiAuth || previous.authUrl !== current.authUrl || previous.authUrlNonce !== current.authUrlNonce || previous.rateLimit?.usedPercent !== current.rateLimit?.usedPercent || previous.rateLimit?.windowDurationMins !== current.rateLimit?.windowDurationMins || previous.rateLimit?.resetsAt !== current.rateLimit?.resetsAt;
993
+ }
994
+ registerAction2(class extends Action2 {
995
+ constructor() {
996
+ super({
997
+ id: SessionsTitleBarAccountWidgetAction,
998
+ title: ( localize2(3214, "Agents Account and Status")),
999
+ menu: {
1000
+ id: Menus.TitleBarRightLayout,
1001
+ group: "navigation",
1002
+ order: 100,
1003
+ when: ( IsAuxiliaryWindowContext.toNegated())
1004
+ }
1005
+ });
1006
+ }
1007
+ run() {}
1008
+ });
1009
+ let AccountWidgetContribution = class AccountWidgetContribution extends Disposable {
1010
+ static {
1011
+ this.ID = "workbench.contrib.sessionsWidget";
1012
+ }
1013
+ constructor(actionViewItemService, instantiationService) {
1014
+ super();
1015
+ this._register(actionViewItemService.register(
1016
+ Menus.TitleBarRightLayout,
1017
+ SessionsTitleBarAccountWidgetAction,
1018
+ (action, options) => {
1019
+ return instantiationService.createInstance(TitleBarAccountWidget, action, options);
1020
+ },
1021
+ undefined
1022
+ ));
1023
+ }
1024
+ };
1025
+ AccountWidgetContribution = ( __decorate([( __param(0, IActionViewItemService)), ( __param(1, IInstantiationService))], AccountWidgetContribution));
1026
+ registerWorkbenchContribution2(
1027
+ AccountWidgetContribution.ID,
1028
+ AccountWidgetContribution,
1029
+ WorkbenchPhase.BlockRestore
1030
+ );
1031
+ let ChatDashboardServiceImpl = class ChatDashboardServiceImpl {
1032
+ constructor(instantiationService) {
1033
+ this.instantiationService = instantiationService;
1034
+ }
1035
+ createDashboardElement(store) {
1036
+ const dashboardElement = ChatStatusDashboard.instantiateInContents(this.instantiationService, store, {
1037
+ disableInlineSuggestionsSettings: true,
1038
+ disableModelSelection: true,
1039
+ disableProviderOptions: true,
1040
+ disableCompletionsSnooze: true
1041
+ });
1042
+ store.add(disposableWindowInterval(mainWindow, () => {
1043
+ if (!dashboardElement.isConnected) {
1044
+ store.dispose();
1045
+ }
1046
+ }, 2000));
1047
+ return dashboardElement;
1048
+ }
1049
+ };
1050
+ ChatDashboardServiceImpl = ( __decorate([( __param(0, IInstantiationService))], ChatDashboardServiceImpl));
1051
+
1052
+ export { ChatDashboardServiceImpl, shouldShowAccountPanelSummary };