@codingame/monaco-vscode-workbench-service-override 37.6.0 → 38.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (324) hide show
  1. package/common.js +2 -0
  2. package/index.js +9 -10
  3. package/package.json +10 -10
  4. package/session.js +45 -42
  5. package/vscode/src/vs/platform/agentHost/common/sessionComparisonPrompts.d.ts +1 -0
  6. package/vscode/src/vs/platform/agentHost/common/sessionComparisonPrompts.js +12 -0
  7. package/vscode/src/vs/sessions/browser/{singlePaneWorkbench.d.ts → desktopWorkbench.d.ts} +6 -5
  8. package/vscode/src/vs/sessions/browser/{singlePaneWorkbench.js → desktopWorkbench.js} +23 -25
  9. package/vscode/src/vs/sessions/browser/dockedAuxiliaryBarController.d.ts +5 -2
  10. package/vscode/src/vs/sessions/browser/dockedAuxiliaryBarController.js +41 -3
  11. package/vscode/src/vs/sessions/browser/layoutActions.js +25 -41
  12. package/vscode/src/vs/sessions/browser/mobileWorkbench.d.ts +4 -0
  13. package/vscode/src/vs/sessions/browser/mobileWorkbench.js +10 -0
  14. package/vscode/src/vs/sessions/browser/parts/chatCompositeBar.d.ts +10 -5
  15. package/vscode/src/vs/sessions/browser/parts/chatCompositeBar.js +138 -34
  16. package/vscode/src/vs/sessions/browser/parts/chatGroupDropTarget.d.ts +2 -0
  17. package/vscode/src/vs/sessions/browser/parts/chatGroupDropTarget.js +13 -5
  18. package/vscode/src/vs/sessions/browser/parts/chatGroupView.d.ts +27 -5
  19. package/vscode/src/vs/sessions/browser/parts/chatGroupView.js +129 -28
  20. package/vscode/src/vs/sessions/browser/parts/chatGroupsView.d.ts +22 -7
  21. package/vscode/src/vs/sessions/browser/parts/chatGroupsView.js +260 -21
  22. package/vscode/src/vs/sessions/browser/parts/chatHeader.d.ts +25 -0
  23. package/vscode/src/vs/sessions/browser/parts/chatHeader.js +42 -0
  24. package/vscode/src/vs/sessions/browser/parts/customViewGridPart.js +9 -1
  25. package/vscode/src/vs/sessions/browser/parts/customViewNode.js +1 -1
  26. package/vscode/src/vs/sessions/browser/parts/{singlePaneAuxiliaryBarPart.d.ts → desktopAuxiliaryBarPart.d.ts} +4 -4
  27. package/vscode/src/vs/sessions/browser/parts/desktopAuxiliaryBarPart.js +26 -0
  28. package/vscode/src/vs/sessions/browser/parts/{singlePaneEditorPart.d.ts → desktopEditorPart.d.ts} +8 -6
  29. package/vscode/src/vs/sessions/browser/parts/{singlePaneEditorPart.js → desktopEditorPart.js} +25 -5
  30. package/vscode/src/vs/sessions/browser/parts/editorPart.js +16 -4
  31. package/vscode/src/vs/sessions/browser/parts/editorParts.d.ts +1 -1
  32. package/vscode/src/vs/sessions/browser/parts/editorParts.js +7 -6
  33. package/vscode/src/vs/sessions/browser/parts/gridGap.d.ts +14 -0
  34. package/vscode/src/vs/sessions/browser/parts/gridGap.js +69 -0
  35. package/vscode/src/vs/sessions/browser/parts/media/chatCompositeBar.css +132 -4
  36. package/vscode/src/vs/sessions/browser/parts/media/chatGroupsView.css +10 -0
  37. package/vscode/src/vs/sessions/browser/parts/media/editorPart.css +46 -2
  38. package/vscode/src/vs/sessions/browser/parts/media/sessionReadOnlyBanner.css +3 -3
  39. package/vscode/src/vs/sessions/browser/parts/media/sessionView.css +45 -48
  40. package/vscode/src/vs/sessions/browser/parts/media/sessionsPart.css +15 -0
  41. package/vscode/src/vs/sessions/browser/parts/menubar.contribution.js +8 -8
  42. package/vscode/src/vs/sessions/browser/parts/mobile/mobileSessionsPart.js +1 -1
  43. package/vscode/src/vs/sessions/browser/parts/remoteHostUnavailableEmptyState.d.ts +9 -1
  44. package/vscode/src/vs/sessions/browser/parts/remoteHostUnavailableEmptyState.js +21 -3
  45. package/vscode/src/vs/sessions/browser/parts/sessionBarStyles.js +1 -1
  46. package/vscode/src/vs/sessions/browser/parts/sessionDropTarget.d.ts +4 -3
  47. package/vscode/src/vs/sessions/browser/parts/sessionDropTarget.js +29 -15
  48. package/vscode/src/vs/sessions/browser/parts/sessionGridLayout.d.ts +67 -0
  49. package/vscode/src/vs/sessions/browser/parts/sessionGridLayout.js +598 -0
  50. package/vscode/src/vs/sessions/browser/parts/sessionHeader.d.ts +11 -84
  51. package/vscode/src/vs/sessions/browser/parts/sessionHeader.js +37 -317
  52. package/vscode/src/vs/sessions/browser/parts/sessionHeaderBar.d.ts +103 -0
  53. package/vscode/src/vs/sessions/browser/parts/sessionHeaderBar.js +391 -0
  54. package/vscode/src/vs/sessions/browser/parts/sessionReadOnlyBanner.d.ts +6 -4
  55. package/vscode/src/vs/sessions/browser/parts/sessionReadOnlyBanner.js +58 -28
  56. package/vscode/src/vs/sessions/browser/parts/sessionRemoteConnection.d.ts +4 -0
  57. package/vscode/src/vs/sessions/browser/parts/sessionRemoteConnection.js +66 -23
  58. package/vscode/src/vs/sessions/browser/parts/sessionView.d.ts +24 -5
  59. package/vscode/src/vs/sessions/browser/parts/sessionView.js +143 -33
  60. package/vscode/src/vs/sessions/browser/parts/sessionsPart.d.ts +25 -19
  61. package/vscode/src/vs/sessions/browser/parts/sessionsPart.js +157 -58
  62. package/vscode/src/vs/sessions/browser/parts/sessionsParts.d.ts +12 -3
  63. package/vscode/src/vs/sessions/browser/parts/sessionsParts.js +17 -2
  64. package/vscode/src/vs/sessions/browser/sessionWorkspace.d.ts +6 -3
  65. package/vscode/src/vs/sessions/browser/sessionWorkspace.js +2 -2
  66. package/vscode/src/vs/sessions/browser/sessionsSetUpService.js +66 -20
  67. package/vscode/src/vs/sessions/browser/sessionsSignInDialog.d.ts +1 -0
  68. package/vscode/src/vs/sessions/browser/sessionsSignInDialog.js +5 -4
  69. package/vscode/src/vs/sessions/browser/workbenchFactory.d.ts +12 -0
  70. package/vscode/src/vs/sessions/browser/workbenchFactory.js +17 -0
  71. package/vscode/src/vs/sessions/contrib/accountMenu/browser/account.contribution.d.ts +85 -1
  72. package/vscode/src/vs/sessions/contrib/accountMenu/browser/account.contribution.js +118 -100
  73. package/vscode/src/vs/sessions/contrib/accountMenu/browser/chatPetAchievementBadges.d.ts +3 -2
  74. package/vscode/src/vs/sessions/contrib/accountMenu/browser/chatPetAchievementBadges.js +39 -34
  75. package/vscode/src/vs/sessions/contrib/accountMenu/browser/media/accountTitleBarWidget.css +6 -0
  76. package/vscode/src/vs/sessions/contrib/agentFeedback/browser/nullAgentFeedbackService.contribution.d.ts +3 -0
  77. package/vscode/src/vs/sessions/contrib/agentFeedback/browser/nullAgentFeedbackService.contribution.js +6 -0
  78. package/vscode/src/vs/sessions/contrib/aiCustomizationTreeView/browser/aiCustomizationTreeView.contribution.js +18 -18
  79. package/vscode/src/vs/sessions/contrib/aiCustomizationTreeView/browser/aiCustomizationTreeViewViews.js +12 -12
  80. package/vscode/src/vs/sessions/contrib/applyCommitsToParentRepo/browser/applyChangesToParentRepo.js +7 -7
  81. package/vscode/src/vs/sessions/contrib/aquarium/browser/aquarium.contribution.js +12 -12
  82. package/vscode/src/vs/sessions/contrib/aquarium/browser/aquariumOverlay.js +10 -10
  83. package/vscode/src/vs/sessions/contrib/automations/browser/automationDialog.d.ts +78 -8
  84. package/vscode/src/vs/sessions/contrib/automations/browser/automationDialog.js +1166 -202
  85. package/vscode/src/vs/sessions/contrib/automations/browser/automationDialogService.d.ts +11 -1
  86. package/vscode/src/vs/sessions/contrib/automations/browser/automationDialogService.js +190 -69
  87. package/vscode/src/vs/sessions/contrib/automations/browser/automationRunner.d.ts +11 -9
  88. package/vscode/src/vs/sessions/contrib/automations/browser/automationRunner.js +122 -233
  89. package/vscode/src/vs/sessions/contrib/automations/browser/automationTelemetry.d.ts +22 -0
  90. package/vscode/src/vs/sessions/contrib/automations/browser/automationTelemetry.js +62 -0
  91. package/vscode/src/vs/sessions/contrib/automations/browser/automationTools.d.ts +7 -2
  92. package/vscode/src/vs/sessions/contrib/automations/browser/automationTools.js +172 -84
  93. package/vscode/src/vs/sessions/contrib/automations/browser/automations.contribution.js +17 -7
  94. package/vscode/src/vs/sessions/contrib/automations/browser/media/automationDialog.css +242 -60
  95. package/vscode/src/vs/sessions/contrib/automations/browser/providerAutomationService.d.ts +24 -36
  96. package/vscode/src/vs/sessions/contrib/automations/browser/providerAutomationService.js +104 -420
  97. package/vscode/src/vs/sessions/contrib/changes/browser/changes.contribution.js +15 -14
  98. package/vscode/src/vs/sessions/contrib/changes/browser/changesActions.d.ts +13 -3
  99. package/vscode/src/vs/sessions/contrib/changes/browser/changesActions.js +66 -43
  100. package/vscode/src/vs/sessions/contrib/changes/browser/changesMultiDiffSourceResolver.js +2 -7
  101. package/vscode/src/vs/sessions/contrib/changes/browser/changesViewActions.js +54 -59
  102. package/vscode/src/vs/sessions/contrib/changes/browser/changesetReviewActions.js +7 -7
  103. package/vscode/src/vs/sessions/contrib/changes/browser/media/changesActions.css +6 -0
  104. package/vscode/src/vs/sessions/contrib/changes/browser/sessionSyncChanges.js +25 -21
  105. package/vscode/src/vs/sessions/contrib/changes/browser/sessionsChangesAccessibilityHelp.js +21 -27
  106. package/vscode/src/vs/sessions/contrib/chat/browser/sessionChatInputToolbarDebug.js +17 -17
  107. package/vscode/src/vs/sessions/contrib/chat/browser/sessionTaskRunner.d.ts +5 -5
  108. package/vscode/src/vs/sessions/contrib/chat/browser/sessionTaskRunner.js +2 -2
  109. package/vscode/src/vs/sessions/contrib/chatDebug/browser/chatDebug.contribution.js +2 -2
  110. package/vscode/src/vs/sessions/contrib/codeReview/browser/codeReview.contributions.js +9 -16
  111. package/vscode/src/vs/sessions/contrib/customViewTest/browser/customViewTest.contribution.js +7 -7
  112. package/vscode/src/vs/sessions/contrib/editor/browser/addTabActions.js +15 -13
  113. package/vscode/src/vs/sessions/contrib/editor/browser/editor.contribution.d.ts +13 -1
  114. package/vscode/src/vs/sessions/contrib/editor/browser/editor.contribution.js +104 -117
  115. package/vscode/src/vs/sessions/contrib/editor/browser/emptyFileEditor.contribution.js +8 -7
  116. package/vscode/src/vs/sessions/contrib/editor/browser/emptyFileEditor.js +5 -5
  117. package/vscode/src/vs/sessions/contrib/editor/browser/emptyFileEditorInput.js +1 -1
  118. package/vscode/src/vs/sessions/contrib/editor/browser/media/editorBreadcrumbs.css +0 -1
  119. package/vscode/src/vs/sessions/contrib/editor/browser/media/editorHeader.css +1 -1
  120. package/vscode/src/vs/sessions/contrib/files/browser/files.contribution.d.ts +7 -0
  121. package/vscode/src/vs/sessions/contrib/files/browser/files.contribution.js +77 -13
  122. package/vscode/src/vs/sessions/contrib/files/browser/filesView.d.ts +2 -1
  123. package/vscode/src/vs/sessions/contrib/files/browser/filesView.js +14 -4
  124. package/vscode/src/vs/sessions/contrib/layout/browser/baseSessionLayoutController.d.ts +45 -10
  125. package/vscode/src/vs/sessions/contrib/layout/browser/baseSessionLayoutController.js +527 -96
  126. package/vscode/src/vs/sessions/contrib/layout/browser/chatLayoutOwnerKeys.d.ts +18 -0
  127. package/vscode/src/vs/sessions/contrib/layout/browser/chatLayoutOwnerKeys.js +95 -0
  128. package/vscode/src/vs/sessions/contrib/layout/browser/{singlePane/singlePaneDetailPanelCoordinator.d.ts → desktop/desktopDetailPanelCoordinator.d.ts} +5 -4
  129. package/vscode/src/vs/sessions/contrib/layout/browser/{singlePane/singlePaneDetailPanelCoordinator.js → desktop/desktopDetailPanelCoordinator.js} +10 -7
  130. package/vscode/src/vs/sessions/contrib/layout/browser/{singlePane/singlePaneDockedTabsCoordinator.d.ts → desktop/desktopDockedTabsCoordinator.d.ts} +15 -12
  131. package/vscode/src/vs/sessions/contrib/layout/browser/{singlePane/singlePaneDockedTabsCoordinator.js → desktop/desktopDockedTabsCoordinator.js} +91 -44
  132. package/vscode/src/vs/sessions/contrib/layout/browser/{singlePane/singlePaneDraftSessionStrategy.d.ts → desktop/desktopDraftSessionStrategy.d.ts} +10 -5
  133. package/vscode/src/vs/sessions/contrib/layout/browser/{singlePane/singlePaneDraftSessionStrategy.js → desktop/desktopDraftSessionStrategy.js} +95 -22
  134. package/vscode/src/vs/sessions/contrib/layout/browser/{singlePane/singlePaneExistingSessionStrategy.d.ts → desktop/desktopExistingSessionStrategy.d.ts} +13 -11
  135. package/vscode/src/vs/sessions/contrib/layout/browser/{singlePane/singlePaneExistingSessionStrategy.js → desktop/desktopExistingSessionStrategy.js} +137 -57
  136. package/vscode/src/vs/sessions/contrib/layout/browser/{singlePane/singlePaneLayoutStrategy.d.ts → desktop/desktopLayoutStrategy.d.ts} +22 -13
  137. package/vscode/src/vs/sessions/contrib/layout/browser/{singlePane/singlePaneLayoutStrategy.js → desktop/desktopLayoutStrategy.js} +2 -2
  138. package/vscode/src/vs/sessions/contrib/layout/browser/desktop/desktopOwnerCompositionStore.d.ts +22 -0
  139. package/vscode/src/vs/sessions/contrib/layout/browser/desktop/desktopOwnerCompositionStore.js +136 -0
  140. package/vscode/src/vs/sessions/contrib/layout/browser/{singlePane/singlePaneSharedHelpers.d.ts → desktop/desktopSharedHelpers.d.ts} +9 -2
  141. package/vscode/src/vs/sessions/contrib/layout/browser/desktop/desktopSharedHelpers.js +56 -0
  142. package/vscode/src/vs/sessions/contrib/layout/browser/{singlePane/singlePaneVisibilityProfileStore.d.ts → desktop/desktopVisibilityProfileStore.d.ts} +3 -2
  143. package/vscode/src/vs/sessions/contrib/layout/browser/{singlePane/singlePaneVisibilityProfileStore.js → desktop/desktopVisibilityProfileStore.js} +10 -9
  144. package/vscode/src/vs/sessions/contrib/layout/browser/desktopLayoutController.d.ts +71 -0
  145. package/vscode/src/vs/sessions/contrib/layout/browser/desktopLayoutController.js +201 -0
  146. package/vscode/src/vs/sessions/contrib/layout/browser/sessions.layout.contribution.d.ts +8 -1
  147. package/vscode/src/vs/sessions/contrib/layout/browser/sessions.layout.contribution.js +35 -35
  148. package/vscode/src/vs/sessions/contrib/layout/common/sessionEditorWorkingSet.d.ts +39 -0
  149. package/vscode/src/vs/sessions/contrib/layout/common/sessionEditorWorkingSet.js +73 -0
  150. package/vscode/src/vs/sessions/contrib/onboardingTours/browser/newSessionTourContribution.d.ts +42 -1
  151. package/vscode/src/vs/sessions/contrib/onboardingTours/browser/newSessionTourContribution.js +14 -10
  152. package/vscode/src/vs/sessions/contrib/onboardingTours/browser/newSessionViewTourContribution.js +3 -4
  153. package/vscode/src/vs/sessions/contrib/onboardingTours/browser/newSessionViewTourTrigger.d.ts +2 -2
  154. package/vscode/src/vs/sessions/contrib/onboardingTours/browser/newSessionViewTourTrigger.js +13 -9
  155. package/vscode/src/vs/sessions/contrib/onboardingTours/browser/newSessionViewV2TourContribution.js +20 -5
  156. package/vscode/src/vs/sessions/contrib/onboardingTours/browser/newSessionViewV2TourVariation.d.ts +8 -0
  157. package/vscode/src/vs/sessions/contrib/onboardingTours/browser/newSessionViewV2TourVariation.js +19 -0
  158. package/vscode/src/vs/sessions/contrib/onboardingTours/browser/newSessionViewV3Prompt.js +21 -20
  159. package/vscode/src/vs/sessions/contrib/onboardingTours/browser/tours/newSessionTour.js +10 -5
  160. package/vscode/src/vs/sessions/contrib/onboardingTours/browser/tours/newSessionViewTour.js +12 -8
  161. package/vscode/src/vs/sessions/contrib/onboardingTours/browser/tours/newSessionViewTourShared.d.ts +3 -1
  162. package/vscode/src/vs/sessions/contrib/onboardingTours/browser/tours/newSessionViewTourShared.js +12 -7
  163. package/vscode/src/vs/sessions/contrib/onboardingTours/browser/tours/newSessionViewV2Tour.d.ts +9 -1
  164. package/vscode/src/vs/sessions/contrib/onboardingTours/browser/tours/newSessionViewV2Tour.js +46 -19
  165. package/vscode/src/vs/sessions/contrib/onboardingTours/browser/tours/newSessionViewV3Tour.js +2 -0
  166. package/vscode/src/vs/sessions/contrib/policyBlocked/browser/media/sessionsPolicyBlocked.css +33 -0
  167. package/vscode/src/vs/sessions/contrib/policyBlocked/browser/policyBlocked.contribution.d.ts +4 -2
  168. package/vscode/src/vs/sessions/contrib/policyBlocked/browser/policyBlocked.contribution.js +29 -8
  169. package/vscode/src/vs/sessions/contrib/policyBlocked/browser/sessionsPolicyBlocked.d.ts +15 -2
  170. package/vscode/src/vs/sessions/contrib/policyBlocked/browser/sessionsPolicyBlocked.js +169 -32
  171. package/vscode/src/vs/sessions/contrib/providers/agentHost/browser/agentHostForkActions.js +30 -8
  172. package/vscode/src/vs/sessions/contrib/providers/agentHost/browser/agentHostSessionBranchActions.js +8 -34
  173. package/vscode/src/vs/sessions/contrib/providers/agentHost/browser/agentMergeActions.js +63 -49
  174. package/vscode/src/vs/sessions/contrib/providers/agentHost/browser/exportDebugLogsAction.js +1 -1
  175. package/vscode/src/vs/sessions/contrib/providers/agentHost/browser/mobile/mobileChatInputConfigPicker.js +31 -17
  176. package/vscode/src/vs/sessions/contrib/providers/remoteAgentHost/browser/connectionDiagnostics.contribution.d.ts +32 -0
  177. package/vscode/src/vs/sessions/contrib/providers/remoteAgentHost/browser/connectionDiagnostics.contribution.js +250 -0
  178. package/vscode/src/vs/sessions/contrib/providers/remoteAgentHost/browser/connectionDiagnosticsLogs.d.ts +6 -0
  179. package/vscode/src/vs/sessions/contrib/providers/remoteAgentHost/browser/connectionDiagnosticsLogs.js +52 -0
  180. package/vscode/src/vs/sessions/contrib/providers/remoteAgentHost/browser/connectionDiagnosticsReport.d.ts +51 -0
  181. package/vscode/src/vs/sessions/contrib/providers/remoteAgentHost/browser/connectionDiagnosticsReport.js +439 -0
  182. package/vscode/src/vs/sessions/contrib/providers/remoteAgentHost/browser/connectionDiagnosticsService.d.ts +45 -0
  183. package/vscode/src/vs/sessions/contrib/providers/remoteAgentHost/browser/connectionDiagnosticsService.js +595 -0
  184. package/vscode/src/vs/sessions/contrib/providers/remoteAgentHost/browser/devContainerAgentHostService.d.ts +20 -3
  185. package/vscode/src/vs/sessions/contrib/providers/remoteAgentHost/browser/devContainerAgentHostService.js +360 -46
  186. package/vscode/src/vs/sessions/contrib/providers/remoteAgentHost/browser/devContainerSource.d.ts +9 -0
  187. package/vscode/src/vs/sessions/contrib/providers/remoteAgentHost/browser/devContainerSource.js +59 -0
  188. package/vscode/src/vs/sessions/contrib/providers/remoteAgentHost/browser/media/connectionDiagnostics.css +201 -0
  189. package/vscode/src/vs/sessions/contrib/remoteSessions/browser/getRemoteSessionTool.d.ts +10 -0
  190. package/vscode/src/vs/sessions/contrib/remoteSessions/browser/getRemoteSessionTool.js +70 -0
  191. package/vscode/src/vs/sessions/contrib/remoteSessions/browser/remoteSessionChatService.d.ts +20 -0
  192. package/vscode/src/vs/sessions/contrib/remoteSessions/browser/remoteSessionChatService.js +104 -0
  193. package/vscode/src/vs/sessions/contrib/remoteSessions/browser/remoteSessionInspector.d.ts +15 -0
  194. package/vscode/src/vs/sessions/contrib/remoteSessions/browser/remoteSessionInspector.js +152 -0
  195. package/vscode/src/vs/sessions/contrib/remoteSessions/browser/remoteSessionMessageRouter.d.ts +49 -0
  196. package/vscode/src/vs/sessions/contrib/remoteSessions/browser/remoteSessionMessageRouter.js +340 -0
  197. package/vscode/src/vs/sessions/contrib/remoteSessions/browser/remoteSessionService.d.ts +41 -0
  198. package/vscode/src/vs/sessions/contrib/remoteSessions/browser/remoteSessionService.js +400 -0
  199. package/vscode/src/vs/sessions/contrib/remoteSessions/browser/remoteSessionSource.d.ts +28 -0
  200. package/vscode/src/vs/sessions/contrib/remoteSessions/browser/remoteSessionSource.js +178 -0
  201. package/vscode/src/vs/sessions/contrib/remoteSessions/browser/remoteSessionTools.d.ts +17 -0
  202. package/vscode/src/vs/sessions/contrib/remoteSessions/browser/remoteSessionTools.js +206 -0
  203. package/vscode/src/vs/sessions/contrib/remoteSessions/browser/remoteSessions.contribution.d.ts +1 -0
  204. package/vscode/src/vs/sessions/contrib/remoteSessions/browser/remoteSessions.contribution.js +58 -0
  205. package/vscode/src/vs/sessions/contrib/remoteSessions/browser/sendRemoteMessageTool.d.ts +10 -0
  206. package/vscode/src/vs/sessions/contrib/remoteSessions/browser/sendRemoteMessageTool.js +90 -0
  207. package/vscode/src/vs/sessions/contrib/remoteSessions/common/remoteSessionInspection.d.ts +38 -0
  208. package/vscode/src/vs/sessions/contrib/remoteSessions/common/remoteSessionInspection.js +58 -0
  209. package/vscode/src/vs/sessions/contrib/search/browser/search.contribution.js +4 -5
  210. package/vscode/src/vs/sessions/contrib/search/browser/searchEditorEmptyState.contribution.js +1 -1
  211. package/vscode/src/vs/sessions/contrib/sessionComparison/browser/sessionComparison.contribution.d.ts +1 -0
  212. package/vscode/src/vs/sessions/contrib/sessionComparison/browser/sessionComparison.contribution.js +33 -0
  213. package/vscode/src/vs/sessions/contrib/sessionComparison/browser/sessionComparisonGridController.d.ts +30 -0
  214. package/vscode/src/vs/sessions/contrib/sessionComparison/browser/sessionComparisonGridController.js +190 -0
  215. package/vscode/src/vs/sessions/contrib/sessionComparison/browser/sessionComparisonTool.d.ts +31 -0
  216. package/vscode/src/vs/sessions/contrib/sessionComparison/browser/sessionComparisonTool.js +559 -0
  217. package/vscode/src/vs/sessions/contrib/sessionComparison/browser/sessionComparisonViewService.d.ts +12 -0
  218. package/vscode/src/vs/sessions/contrib/sessionComparison/browser/sessionComparisonViewService.js +38 -0
  219. package/vscode/src/vs/sessions/contrib/sessions/browser/blockedSessionsIndicatorModel.d.ts +13 -4
  220. package/vscode/src/vs/sessions/contrib/sessions/browser/blockedSessionsIndicatorModel.js +155 -22
  221. package/vscode/src/vs/sessions/contrib/sessions/browser/blockedSessionsList.js +9 -5
  222. package/vscode/src/vs/sessions/contrib/sessions/browser/media/automationsCards.css +90 -25
  223. package/vscode/src/vs/sessions/contrib/sessions/browser/media/sessionsTitleBarWidget.css +21 -4
  224. package/vscode/src/vs/sessions/contrib/sessions/browser/sessionDetailsAction.d.ts +2 -1
  225. package/vscode/src/vs/sessions/contrib/sessions/browser/sessionDetailsAction.js +11 -7
  226. package/vscode/src/vs/sessions/contrib/sessions/browser/sessions.contribution.d.ts +116 -1
  227. package/vscode/src/vs/sessions/contrib/sessions/browser/sessions.contribution.js +126 -30
  228. package/vscode/src/vs/sessions/contrib/sessions/browser/sessionsAccountTelemetry.d.ts +26 -0
  229. package/vscode/src/vs/sessions/contrib/sessions/browser/sessionsAccountTelemetry.js +160 -0
  230. package/vscode/src/vs/sessions/contrib/sessions/browser/sessionsActions.d.ts +14 -6
  231. package/vscode/src/vs/sessions/contrib/sessions/browser/sessionsActions.js +555 -151
  232. package/vscode/src/vs/sessions/contrib/sessions/browser/sessionsLifecycleTracker.d.ts +192 -0
  233. package/vscode/src/vs/sessions/contrib/sessions/browser/sessionsLifecycleTracker.js +510 -0
  234. package/vscode/src/vs/sessions/contrib/sessions/browser/sessionsTelemetry.contribution.d.ts +6 -7
  235. package/vscode/src/vs/sessions/contrib/sessions/browser/sessionsTelemetry.contribution.js +64 -57
  236. package/vscode/src/vs/sessions/contrib/sessions/browser/sessionsTitleBarWidget.d.ts +5 -3
  237. package/vscode/src/vs/sessions/contrib/sessions/browser/sessionsTitleBarWidget.js +83 -51
  238. package/vscode/src/vs/sessions/contrib/sessions/browser/sessionsWindowNotifier.d.ts +5 -1
  239. package/vscode/src/vs/sessions/contrib/sessions/browser/sessionsWindowNotifier.js +33 -12
  240. package/vscode/src/vs/sessions/contrib/sessions/browser/views/automationCataloguePresentation.d.ts +3 -0
  241. package/vscode/src/vs/sessions/contrib/sessions/browser/views/automationCataloguePresentation.js +53 -0
  242. package/vscode/src/vs/sessions/contrib/sessions/browser/views/automationTemplates.js +10 -10
  243. package/vscode/src/vs/sessions/contrib/sessions/browser/views/automationsAccessibility.d.ts +2 -2
  244. package/vscode/src/vs/sessions/contrib/sessions/browser/views/automationsAccessibility.js +103 -55
  245. package/vscode/src/vs/sessions/contrib/sessions/browser/views/automationsView.d.ts +7 -1
  246. package/vscode/src/vs/sessions/contrib/sessions/browser/views/automationsView.js +679 -325
  247. package/vscode/src/vs/sessions/contrib/sessions/browser/views/sessionsViewActions.d.ts +27 -1
  248. package/vscode/src/vs/sessions/contrib/sessions/browser/views/sessionsViewActions.js +508 -163
  249. package/vscode/src/vs/sessions/contrib/terminal/browser/agentHostSessionTaskRunner.d.ts +20 -2
  250. package/vscode/src/vs/sessions/contrib/terminal/browser/agentHostSessionTaskRunner.js +100 -17
  251. package/vscode/src/vs/sessions/contrib/terminal/browser/sessionsTerminalContribution.d.ts +5 -1
  252. package/vscode/src/vs/sessions/contrib/terminal/browser/sessionsTerminalContribution.js +108 -30
  253. package/vscode/src/vs/sessions/contrib/workspace/browser/workspaceFolderManagement.d.ts +5 -3
  254. package/vscode/src/vs/sessions/contrib/workspace/browser/workspaceFolderManagement.js +47 -35
  255. package/vscode/src/vs/sessions/services/agentHostFilter/browser/agentHostFilterService.d.ts +9 -4
  256. package/vscode/src/vs/sessions/services/agentHostFilter/browser/agentHostFilterService.js +75 -25
  257. package/vscode/src/vs/sessions/services/customView/browser/customViewService.d.ts +11 -4
  258. package/vscode/src/vs/sessions/services/customView/browser/customViewService.js +17 -9
  259. package/vscode/src/vs/sessions/services/sessions/browser/closedItemHistory.d.ts +5 -0
  260. package/vscode/src/vs/sessions/services/sessions/browser/closedItemHistory.js +20 -2
  261. package/vscode/src/vs/sessions/services/sessions/browser/sessionComparisonService.d.ts +75 -0
  262. package/vscode/src/vs/sessions/services/sessions/browser/sessionComparisonService.js +1135 -0
  263. package/vscode/src/vs/sessions/services/sessions/browser/sessionGridState.d.ts +17 -0
  264. package/vscode/src/vs/sessions/services/sessions/browser/sessionGridState.js +99 -0
  265. package/vscode/src/vs/sessions/services/sessions/browser/sessionGroupsService.d.ts +4 -0
  266. package/vscode/src/vs/sessions/services/sessions/browser/sessionGroupsService.js +88 -23
  267. package/vscode/src/vs/sessions/services/sessions/browser/sessionNavigation.d.ts +19 -26
  268. package/vscode/src/vs/sessions/services/sessions/browser/sessionNavigation.js +115 -74
  269. package/vscode/src/vs/sessions/services/sessions/browser/sessionsListModelService.js +1 -1
  270. package/vscode/src/vs/sessions/services/sessions/browser/sessionsManagementService.d.ts +22 -7
  271. package/vscode/src/vs/sessions/services/sessions/browser/sessionsManagementService.js +278 -60
  272. package/vscode/src/vs/sessions/services/sessions/browser/sessionsRecencyHistory.d.ts +17 -20
  273. package/vscode/src/vs/sessions/services/sessions/browser/sessionsRecencyHistory.js +33 -22
  274. package/vscode/src/vs/sessions/services/sessions/browser/sessionsService.d.ts +28 -8
  275. package/vscode/src/vs/sessions/services/sessions/browser/sessionsService.js +673 -160
  276. package/vscode/src/vs/sessions/services/sessions/browser/visibleSessions.d.ts +13 -4
  277. package/vscode/src/vs/sessions/services/sessions/browser/visibleSessions.js +105 -15
  278. package/vscode/src/vs/sessions/services/sessions/common/sessionContextKeys.js +53 -34
  279. package/vscode/src/vs/sessions/services/workspaceFolderLabel/browser/workspaceFolderLabelService.js +1 -1
  280. package/vscode/src/vs/workbench/browser/layout.d.ts +46 -70
  281. package/vscode/src/vs/workbench/browser/layout.js +243 -44
  282. package/vscode/src/vs/workbench/browser/workbench.d.ts +1 -3
  283. package/vscode/src/vs/workbench/browser/workbench.js +26 -24
  284. package/vscode/src/vs/workbench/contrib/chat/common/automations/schedule.d.ts +6 -0
  285. package/vscode/src/vs/workbench/contrib/chat/common/automations/schedule.js +41 -0
  286. package/vscode/src/vs/workbench/contrib/chat/common/chatUsage.d.ts +15 -0
  287. package/vscode/src/vs/workbench/contrib/chat/common/chatUsage.js +56 -0
  288. package/vscode/src/vs/platform/agentHost/common/meta/agentCheckoutOperationMeta.d.ts +0 -18
  289. package/vscode/src/vs/platform/agentHost/common/meta/agentCheckoutOperationMeta.js +0 -27
  290. package/vscode/src/vs/sessions/browser/parts/singlePaneAuxiliaryBarPart.js +0 -36
  291. package/vscode/src/vs/sessions/contrib/automations/browser/automationLeaderElection.d.ts +0 -37
  292. package/vscode/src/vs/sessions/contrib/automations/browser/automationLeaderElection.js +0 -126
  293. package/vscode/src/vs/sessions/contrib/automations/browser/automationScheduler.d.ts +0 -59
  294. package/vscode/src/vs/sessions/contrib/automations/browser/automationScheduler.js +0 -232
  295. package/vscode/src/vs/sessions/contrib/automations/browser/automationStorageService.d.ts +0 -13
  296. package/vscode/src/vs/sessions/contrib/automations/browser/automationStorageService.js +0 -22
  297. package/vscode/src/vs/sessions/contrib/blockedSessions/browser/blockedSessions.d.ts +0 -45
  298. package/vscode/src/vs/sessions/contrib/blockedSessions/browser/blockedSessions.js +0 -110
  299. package/vscode/src/vs/sessions/contrib/layout/browser/desktopSessionLayoutController.d.ts +0 -112
  300. package/vscode/src/vs/sessions/contrib/layout/browser/desktopSessionLayoutController.js +0 -444
  301. package/vscode/src/vs/sessions/contrib/layout/browser/singlePane/singlePaneSharedHelpers.js +0 -43
  302. package/vscode/src/vs/sessions/contrib/layout/browser/singlePaneLayoutController.d.ts +0 -55
  303. package/vscode/src/vs/sessions/contrib/layout/browser/singlePaneLayoutController.js +0 -91
  304. package/vscode/src/vs/sessions/contrib/providers/agentHost/browser/agentHostClaudePermissionModePicker.d.ts +0 -26
  305. package/vscode/src/vs/sessions/contrib/providers/agentHost/browser/agentHostClaudePermissionModePicker.js +0 -98
  306. package/vscode/src/vs/sessions/contrib/providers/agentHost/browser/agentHostCodexApprovalsPicker.d.ts +0 -33
  307. package/vscode/src/vs/sessions/contrib/providers/agentHost/browser/agentHostCodexApprovalsPicker.js +0 -98
  308. package/vscode/src/vs/sessions/contrib/providers/agentHost/browser/agentHostModeIcon.d.ts +0 -2
  309. package/vscode/src/vs/sessions/contrib/providers/agentHost/browser/agentHostModeIcon.js +0 -13
  310. package/vscode/src/vs/sessions/contrib/providers/agentHost/browser/agentHostModePicker.d.ts +0 -122
  311. package/vscode/src/vs/sessions/contrib/providers/agentHost/browser/agentHostModePicker.js +0 -464
  312. package/vscode/src/vs/sessions/contrib/providers/agentHost/browser/agentHostPermissionPickerActionItem.d.ts +0 -35
  313. package/vscode/src/vs/sessions/contrib/providers/agentHost/browser/agentHostPermissionPickerActionItem.js +0 -90
  314. package/vscode/src/vs/sessions/contrib/providers/agentHost/browser/agentHostPermissionPickerDelegate.d.ts +0 -84
  315. package/vscode/src/vs/sessions/contrib/providers/agentHost/browser/agentHostPermissionPickerDelegate.js +0 -328
  316. package/vscode/src/vs/sessions/contrib/providers/agentHost/browser/agentHostSessionConfigPicker.d.ts +0 -174
  317. package/vscode/src/vs/sessions/contrib/providers/agentHost/browser/agentHostSessionConfigPicker.js +0 -1390
  318. package/vscode/src/vs/sessions/contrib/providers/agentHost/browser/media/agentHostSessionConfigPicker.css +0 -44
  319. package/vscode/src/vs/sessions/contrib/providers/agentHost/browser/mobile/mobileAgentHostModePicker.d.ts +0 -30
  320. package/vscode/src/vs/sessions/contrib/providers/agentHost/browser/mobile/mobileAgentHostModePicker.js +0 -78
  321. package/vscode/src/vs/sessions/contrib/providers/agentHost/browser/mobile/mobileChatPhoneInputTarget.d.ts +0 -11
  322. package/vscode/src/vs/sessions/contrib/providers/agentHost/browser/mobile/mobileChatPhoneInputTarget.js +0 -26
  323. package/vscode/src/vs/sessions/contrib/providers/remoteAgentHost/browser/remoteAgentHostConnectionCustomization.d.ts +0 -27
  324. package/vscode/src/vs/sessions/contrib/providers/remoteAgentHost/browser/remoteAgentHostConnectionCustomization.js +0 -26
@@ -0,0 +1,510 @@
1
+
2
+ import { StringSHA1, hash } from '@codingame/monaco-vscode-api/vscode/vs/base/common/hash';
3
+ import { Disposable } from '@codingame/monaco-vscode-api/vscode/vs/base/common/lifecycle';
4
+ import { Schemas } from '@codingame/monaco-vscode-api/vscode/vs/base/common/network';
5
+ import { StorageScope, StorageTarget } from '@codingame/monaco-vscode-api/vscode/vs/platform/storage/common/storage';
6
+ import '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/constants';
7
+ import { AgentsWindowUsage } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/agentsWindowUsage';
8
+ import { getGitHubPullRequestRefs, SessionArtifactKind } from '@codingame/monaco-vscode-api/vscode/vs/sessions/services/sessions/common/session';
9
+ import { getPullRequestStatusFromIcon } from '@codingame/monaco-vscode-api/vscode/vs/sessions/contrib/github/common/types';
10
+ import { linkKey } from '@codingame/monaco-vscode-api/vscode/vs/sessions/common/sessionLinks';
11
+ import { getSessionsTelemetryProviderId, classifySessionWorkspaceTopology, hashSessionIdForTelemetry } from '@codingame/monaco-vscode-api/vscode/vs/sessions/common/sessionsTelemetry';
12
+
13
+ function getResolvedPullRequestStatus(pullRequest) {
14
+ const state = pullRequest.liveState ?? pullRequest.state;
15
+ if (state !== "open") {
16
+ return state;
17
+ }
18
+ return pullRequest.liveState !== undefined && getPullRequestStatusFromIcon(pullRequest.icon) === "draft" ? "draft" : state;
19
+ }
20
+ const SESSIONS_KEY = "agentSessions.telemetry.summary.sessions";
21
+ const WORKSPACE_SESSIONS_KEY = "agentSessions.telemetry.workspaceSessions";
22
+ const PROVIDER_SESSIONS_KEY = "agentSessions.telemetry.providerSessions";
23
+ const MAX_TRACKED_SESSIONS = 2000;
24
+ const MAX_TYPED_FILES_PER_SESSION = 250;
25
+ const TYPED_FILE_HASH_LENGTH = 12;
26
+ function hashTypedFilePath(resource) {
27
+ const sha1 = ( new StringSHA1());
28
+ sha1.update(( resource.toString()));
29
+ return sha1.digest().substring(0, TYPED_FILE_HASH_LENGTH);
30
+ }
31
+ class SessionsLifecycleTracker extends Disposable {
32
+ constructor(_storageService, appLaunchCount) {
33
+ super();
34
+ this._storageService = _storageService;
35
+ this._usage = ( new AgentsWindowUsage(_storageService));
36
+ this._appLaunchCount = appLaunchCount;
37
+ this._stats = this._load();
38
+ }
39
+ recordNewChatRequestSent(session) {
40
+ this._recordRequestSent(session, true);
41
+ }
42
+ recordRequestSent(session) {
43
+ this._recordRequestSent(session, false);
44
+ }
45
+ _recordRequestSent(session, isNewChat) {
46
+ const entry = this._ensure(session);
47
+ entry.requestsSent++;
48
+ if (isNewChat) {
49
+ entry.chatCount++;
50
+ }
51
+ if (entry.firstRequestSentAt === 0) {
52
+ entry.firstRequestSentAt = Date.now();
53
+ entry.firstRequestSentInThisClient = true;
54
+ }
55
+ this._updateObservedState(entry, session);
56
+ this._save();
57
+ }
58
+ recordFirstRequestTaskInfo(session, info) {
59
+ const entry = this._stats.get(session.sessionId);
60
+ if (!entry || entry.hasWorktreeCreatedTask !== undefined) {
61
+ return;
62
+ }
63
+ entry.hasWorktreeCreatedTask = info.hasWorktreeCreatedTask;
64
+ entry.configuredTasksCount = info.configuredTasksCount;
65
+ this._save();
66
+ }
67
+ bumpCounter(session, key) {
68
+ const entry = this._ensure(session);
69
+ entry[key]++;
70
+ this._updateObservedState(entry, session);
71
+ this._save();
72
+ }
73
+ addTypedCharacters(sessionId, resource, characters) {
74
+ const entry = this._stats.get(sessionId);
75
+ if (!entry || characters <= 0) {
76
+ return;
77
+ }
78
+ entry.typedCharacters = (entry.typedCharacters ?? 0) + characters;
79
+ const fileHash = hashTypedFilePath(resource);
80
+ const typedFileHashes = entry.typedFileHashes ?? (entry.typedFileHashes = []);
81
+ if (typedFileHashes.length < MAX_TYPED_FILES_PER_SESSION && !typedFileHashes.includes(fileHash)) {
82
+ typedFileHashes.push(fileHash);
83
+ }
84
+ this._save();
85
+ }
86
+ updateSessionState(session) {
87
+ const entry = this._stats.get(session.sessionId);
88
+ if (!entry) {
89
+ return;
90
+ }
91
+ this._updateObservedState(entry, session);
92
+ this._save();
93
+ }
94
+ incrementAndGetUserRequestCounters(session) {
95
+ const providerId = getSessionsTelemetryProviderId(session.providerId);
96
+ const workspaceUri = session.workspace.get()?.uri.toString();
97
+ const userSessionsTotal = this._usage.recordSessionCreated();
98
+ const providerCounts = this._readProviderCounterMap();
99
+ const userSessionsForProvider = (providerCounts[providerId] ?? 0) + 1;
100
+ providerCounts[providerId] = userSessionsForProvider;
101
+ this._storageService.store(
102
+ PROVIDER_SESSIONS_KEY,
103
+ JSON.stringify(providerCounts),
104
+ StorageScope.APPLICATION,
105
+ StorageTarget.MACHINE
106
+ );
107
+ let userSessionsInWorkspace = 0;
108
+ if (workspaceUri) {
109
+ const workspaceCounts = this._readCounterMap(WORKSPACE_SESSIONS_KEY);
110
+ userSessionsInWorkspace = (workspaceCounts[workspaceUri] ?? 0) + 1;
111
+ workspaceCounts[workspaceUri] = userSessionsInWorkspace;
112
+ this._storageService.store(
113
+ WORKSPACE_SESSIONS_KEY,
114
+ JSON.stringify(workspaceCounts),
115
+ StorageScope.APPLICATION,
116
+ StorageTarget.MACHINE
117
+ );
118
+ }
119
+ return {
120
+ userSessionsTotal,
121
+ userSessionsInWorkspace,
122
+ userSessionsForProvider
123
+ };
124
+ }
125
+ getUserRequestCounters(session) {
126
+ return this._readUserRequestCounters(session.providerId, session.workspace.get()?.uri.toString());
127
+ }
128
+ isTracked(sessionId) {
129
+ return ( this._stats.has(sessionId));
130
+ }
131
+ getTrackedIds() {
132
+ return [...( this._stats.keys())];
133
+ }
134
+ getTrackedEntries() {
135
+ const result = [];
136
+ for (const [sessionId, entry] of this._stats) {
137
+ result.push({
138
+ sessionId,
139
+ providerId: entry.providerId
140
+ });
141
+ }
142
+ return result;
143
+ }
144
+ finalize(sessionId, reason, finalSession) {
145
+ const entry = this._stats.get(sessionId);
146
+ if (!entry) {
147
+ return undefined;
148
+ }
149
+ if (finalSession) {
150
+ this._updateObservedState(entry, finalSession);
151
+ }
152
+ this._stats.delete(sessionId);
153
+ this._save();
154
+ return buildSummary(
155
+ sessionId,
156
+ entry,
157
+ reason,
158
+ this._appLaunchCount,
159
+ this._readUserRequestCountersForSummary(entry)
160
+ );
161
+ }
162
+ _readUserRequestCountersForSummary(entry) {
163
+ return this._readUserRequestCounters(entry.providerId, entry.workspaceUriString || undefined);
164
+ }
165
+ _readUserRequestCounters(providerId, workspaceUri) {
166
+ const userSessionsTotal = this._usage.createdSessionCount;
167
+ const providerCounts = this._readProviderCounterMap();
168
+ const userSessionsForProvider = providerCounts[getSessionsTelemetryProviderId(providerId)] ?? 0;
169
+ let userSessionsInWorkspace = 0;
170
+ if (workspaceUri) {
171
+ const workspaceCounts = this._readCounterMap(WORKSPACE_SESSIONS_KEY);
172
+ userSessionsInWorkspace = workspaceCounts[workspaceUri] ?? 0;
173
+ }
174
+ return {
175
+ userSessionsTotal,
176
+ userSessionsInWorkspace,
177
+ userSessionsForProvider
178
+ };
179
+ }
180
+ _readProviderCounterMap() {
181
+ const storedCounts = this._readCounterMap(PROVIDER_SESSIONS_KEY);
182
+ const providerCounts = {};
183
+ for (const [providerId, count] of Object.entries(storedCounts)) {
184
+ const telemetryProviderId = getSessionsTelemetryProviderId(providerId);
185
+ providerCounts[telemetryProviderId] = (providerCounts[telemetryProviderId] ?? 0) + count;
186
+ }
187
+ return providerCounts;
188
+ }
189
+ _readCounterMap(key) {
190
+ const raw = this._storageService.get(key, StorageScope.APPLICATION);
191
+ if (!raw) {
192
+ return {};
193
+ }
194
+ try {
195
+ const parsed = JSON.parse(raw);
196
+ return (parsed && typeof parsed === "object") ? parsed : {};
197
+ } catch {
198
+ return {};
199
+ }
200
+ }
201
+ _ensure(session) {
202
+ const id = session.sessionId;
203
+ let entry = this._stats.get(id);
204
+ if (!entry) {
205
+ if (this._stats.size >= MAX_TRACKED_SESSIONS) {
206
+ this._evictOldest();
207
+ }
208
+ entry = createEntry(session, this._appLaunchCount);
209
+ this._stats.set(id, entry);
210
+ }
211
+ return entry;
212
+ }
213
+ _updateObservedState(entry, session) {
214
+ entry.isExternal = session.isExternal?.get() ?? entry.isExternal ?? false;
215
+ this._updateWorkspaceTopology(entry, session);
216
+ this._updatePullRequestState(entry, session);
217
+ this._updateArtifactCounts(entry, session);
218
+ this._updateChangesSummary(entry, session);
219
+ }
220
+ _updateWorkspaceTopology(entry, session) {
221
+ const folders = session.workspace.get()?.folders;
222
+ if (!folders || folders.length === 0) {
223
+ return;
224
+ }
225
+ const topology = classifySessionWorkspaceTopology(
226
+ folders.length,
227
+ folders.filter(folder => folder.gitRepository !== undefined).length
228
+ );
229
+ entry.isMultiRoot = topology.isMultiRoot;
230
+ entry.folderCount = topology.folderCount;
231
+ entry.gitFolderCount = topology.gitFolderCount;
232
+ entry.nonGitFolderCount = topology.nonGitFolderCount;
233
+ }
234
+ _updatePullRequestState(entry, session) {
235
+ const gitHubInfo = session.workspace.get()?.folders[0]?.gitRepository?.gitHubInfo.get();
236
+ if (!gitHubInfo) {
237
+ return;
238
+ }
239
+ const pullRequests = gitHubInfo.pullRequests;
240
+ entry.pullRequestCount = pullRequests?.length ?? (gitHubInfo.pullRequest ? 1 : 0);
241
+ entry.pullRequestStatus = getPullRequestStatusFromIcon(gitHubInfo.pullRequest?.icon ?? pullRequests?.[0]?.icon);
242
+ }
243
+ _updateArtifactCounts(entry, session) {
244
+ const artifacts = session.artifacts?.get();
245
+ if (!artifacts) {
246
+ return;
247
+ }
248
+ const pullRequestStatuses = ( new Map());
249
+ for (const folder of session.workspace.get()?.folders ?? []) {
250
+ for (const pullRequest of getGitHubPullRequestRefs(folder.gitRepository?.gitHubInfo.get())) {
251
+ const status = getResolvedPullRequestStatus(pullRequest);
252
+ if (status) {
253
+ pullRequestStatuses.set(linkKey(( pullRequest.uri.toString())), status);
254
+ }
255
+ }
256
+ }
257
+ let pullRequestArtifactMergedCount = 0;
258
+ let pullRequestArtifactOpenCount = 0;
259
+ let pullRequestArtifactDraftCount = 0;
260
+ let pullRequestArtifactClosedCount = 0;
261
+ let issueArtifactCount = 0;
262
+ let otherArtifactCount = 0;
263
+ let artifactCount = 0;
264
+ let referenceCount = 0;
265
+ for (const artifact of artifacts) {
266
+ if (!artifact.isArtifact) {
267
+ referenceCount++;
268
+ continue;
269
+ }
270
+ artifactCount++;
271
+ if (artifact.kind === SessionArtifactKind.Issue) {
272
+ issueArtifactCount++;
273
+ continue;
274
+ }
275
+ if (artifact.kind !== SessionArtifactKind.PullRequest) {
276
+ otherArtifactCount++;
277
+ continue;
278
+ }
279
+ const status = artifact.link ? pullRequestStatuses.get(linkKey(( artifact.link.toString()))) : undefined;
280
+ switch (status) {
281
+ case "merged":
282
+ pullRequestArtifactMergedCount++;
283
+ break;
284
+ case "open":
285
+ pullRequestArtifactOpenCount++;
286
+ break;
287
+ case "draft":
288
+ pullRequestArtifactDraftCount++;
289
+ break;
290
+ case "closed":
291
+ pullRequestArtifactClosedCount++;
292
+ break;
293
+ }
294
+ }
295
+ entry.pullRequestArtifactMergedCount = pullRequestArtifactMergedCount;
296
+ entry.pullRequestArtifactOpenCount = pullRequestArtifactOpenCount;
297
+ entry.pullRequestArtifactDraftCount = pullRequestArtifactDraftCount;
298
+ entry.pullRequestArtifactClosedCount = pullRequestArtifactClosedCount;
299
+ entry.issueArtifactCount = issueArtifactCount;
300
+ entry.otherArtifactCount = otherArtifactCount;
301
+ entry.artifactCount = artifactCount;
302
+ entry.referenceCount = referenceCount;
303
+ }
304
+ _updateChangesSummary(entry, session) {
305
+ const summary = session.changesSummary?.get();
306
+ if (summary) {
307
+ entry.filesChanged = summary.files;
308
+ entry.linesAdded = summary.additions;
309
+ entry.linesDeleted = summary.deletions;
310
+ return;
311
+ }
312
+ let files = 0;
313
+ let additions = 0;
314
+ let deletions = 0;
315
+ for (const change of session.mainChat.get().changes.get()) {
316
+ files++;
317
+ additions += change.insertions;
318
+ deletions += change.deletions;
319
+ }
320
+ entry.filesChanged = files;
321
+ entry.linesAdded = additions;
322
+ entry.linesDeleted = deletions;
323
+ }
324
+ _evictOldest() {
325
+ let oldestId;
326
+ let oldestTime = Number.POSITIVE_INFINITY;
327
+ for (const [id, entry] of this._stats) {
328
+ if (entry.firstObservedAt < oldestTime) {
329
+ oldestTime = entry.firstObservedAt;
330
+ oldestId = id;
331
+ }
332
+ }
333
+ if (oldestId !== undefined) {
334
+ this._stats.delete(oldestId);
335
+ }
336
+ }
337
+ _load() {
338
+ const raw = this._storageService.get(SESSIONS_KEY, StorageScope.APPLICATION);
339
+ const map = ( new Map());
340
+ if (!raw) {
341
+ return map;
342
+ }
343
+ try {
344
+ const parsed = JSON.parse(raw);
345
+ if (parsed && typeof parsed === "object") {
346
+ for (const [id, value] of Object.entries(parsed)) {
347
+ if (value && typeof value === "object") {
348
+ const entry = value;
349
+ if (entry.typedFileHashes?.some(fileHash => typeof fileHash !== "string")) {
350
+ entry.typedFileHashes = [];
351
+ }
352
+ map.set(id, entry);
353
+ }
354
+ }
355
+ }
356
+ } catch {}
357
+ return map;
358
+ }
359
+ _save() {
360
+ if (this._stats.size === 0) {
361
+ this._storageService.remove(SESSIONS_KEY, StorageScope.APPLICATION);
362
+ return;
363
+ }
364
+ const obj = {};
365
+ for (const [id, entry] of this._stats) {
366
+ obj[id] = entry;
367
+ }
368
+ this._storageService.store(
369
+ SESSIONS_KEY,
370
+ JSON.stringify(obj),
371
+ StorageScope.APPLICATION,
372
+ StorageTarget.MACHINE
373
+ );
374
+ }
375
+ }
376
+ function createEntry(session, appLaunchCount) {
377
+ const workspace = session.workspace.get();
378
+ const workspaceUriString = workspace?.uri.toString() ?? "";
379
+ const hasWorktree = workspace?.folders.some(folder => folder.gitRepository?.workTreeUri !== undefined) ?? false;
380
+ const hasGit = workspace?.folders.some(folder => folder.gitRepository !== undefined) ?? false;
381
+ const isVirtual = workspace ? workspace.uri.scheme !== Schemas.file : false;
382
+ const folders = workspace?.folders ?? [];
383
+ const topology = classifySessionWorkspaceTopology(
384
+ folders.length,
385
+ folders.filter(folder => folder.gitRepository !== undefined).length
386
+ );
387
+ return {
388
+ providerId: session.providerId,
389
+ providerType: session.sessionType,
390
+ sessionResourceUri: ( session.resource.toString()),
391
+ workspaceUriString,
392
+ isolationKind: hasWorktree ? "worktree" : "folder",
393
+ hasGitRepository: hasGit,
394
+ isVirtualWorkspace: isVirtual,
395
+ isExternal: session.isExternal?.get() ?? false,
396
+ isMultiRoot: topology.isMultiRoot,
397
+ folderCount: topology.folderCount,
398
+ gitFolderCount: topology.gitFolderCount,
399
+ nonGitFolderCount: topology.nonGitFolderCount,
400
+ firstRequestSentInThisClient: false,
401
+ hasWorktreeCreatedTask: undefined,
402
+ configuredTasksCount: undefined,
403
+ firstObservedAt: Date.now(),
404
+ firstRequestSentAt: 0,
405
+ appLaunchCountAtFirstObserved: appLaunchCount,
406
+ requestsSent: 0,
407
+ chatCount: 0,
408
+ feedbackAdded: 0,
409
+ feedbackConverted: 0,
410
+ feedbackReplyAdded: 0,
411
+ feedbackSubmitted: 0,
412
+ createPullRequest: 0,
413
+ createDraftPullRequest: 0,
414
+ updatePullRequest: 0,
415
+ mergePullRequest: 0,
416
+ checkoutPullRequest: 0,
417
+ initializeRepository: 0,
418
+ commit: 0,
419
+ commitAndSync: 0,
420
+ sessionRestored: 0,
421
+ stickinessToggled: 0,
422
+ maximizeToggled: 0,
423
+ chatDeleted: 0,
424
+ chatRenamed: 0,
425
+ sessionRenamed: 0,
426
+ fixCIChecks: 0,
427
+ taskRun: 0,
428
+ typedCharacters: 0,
429
+ typedFileHashes: [],
430
+ filesChanged: 0,
431
+ linesAdded: 0,
432
+ linesDeleted: 0,
433
+ pullRequestCount: 0,
434
+ pullRequestStatus: undefined,
435
+ pullRequestArtifactMergedCount: 0,
436
+ pullRequestArtifactOpenCount: 0,
437
+ pullRequestArtifactDraftCount: 0,
438
+ pullRequestArtifactClosedCount: 0,
439
+ issueArtifactCount: 0,
440
+ otherArtifactCount: 0,
441
+ artifactCount: 0,
442
+ referenceCount: 0
443
+ };
444
+ }
445
+ function buildSummary(sessionId, entry, reason, appLaunchCount, requestCounters) {
446
+ const now = Date.now();
447
+ return {
448
+ agentSessionId: hashSessionIdForTelemetry(sessionId),
449
+ providerId: getSessionsTelemetryProviderId(entry.providerId),
450
+ providerType: entry.providerType,
451
+ isolationKind: entry.isolationKind,
452
+ workspaceHash: entry.workspaceUriString ? ( hash(entry.workspaceUriString).toString(16)) : "",
453
+ hasGitRepository: entry.hasGitRepository,
454
+ isVirtualWorkspace: entry.isVirtualWorkspace,
455
+ isExternal: entry.isExternal ?? false,
456
+ isMultiRoot: entry.isMultiRoot ?? false,
457
+ folderCount: entry.folderCount ?? 0,
458
+ gitFolderCount: entry.gitFolderCount ?? 0,
459
+ nonGitFolderCount: entry.nonGitFolderCount ?? 0,
460
+ doneReason: reason,
461
+ firstRequestSentInThisClient: entry.firstRequestSentInThisClient,
462
+ hasWorktreeCreatedTask: entry.hasWorktreeCreatedTask,
463
+ configuredTasksCount: entry.configuredTasksCount,
464
+ timeSinceFirstObservedMs: now - entry.firstObservedAt,
465
+ timeSinceFirstRequestMs: entry.firstRequestSentAt > 0 ? (now - entry.firstRequestSentAt) : -1,
466
+ appLaunchesSinceFirstObserved: appLaunchCount - entry.appLaunchCountAtFirstObserved,
467
+ requestsSent: entry.requestsSent,
468
+ chatCount: entry.chatCount,
469
+ feedbackAdded: entry.feedbackAdded,
470
+ feedbackConverted: entry.feedbackConverted,
471
+ feedbackReplyAdded: entry.feedbackReplyAdded,
472
+ feedbackSubmitted: entry.feedbackSubmitted,
473
+ createPullRequest: entry.createPullRequest,
474
+ createDraftPullRequest: entry.createDraftPullRequest,
475
+ updatePullRequest: entry.updatePullRequest,
476
+ mergePullRequest: entry.mergePullRequest,
477
+ checkoutPullRequest: entry.checkoutPullRequest,
478
+ initializeRepository: entry.initializeRepository,
479
+ commit: entry.commit,
480
+ commitAndSync: entry.commitAndSync,
481
+ sessionRestored: entry.sessionRestored,
482
+ stickinessToggled: entry.stickinessToggled,
483
+ maximizeToggled: entry.maximizeToggled,
484
+ chatDeleted: entry.chatDeleted,
485
+ chatRenamed: entry.chatRenamed,
486
+ sessionRenamed: entry.sessionRenamed,
487
+ fixCIChecks: entry.fixCIChecks,
488
+ taskRun: entry.taskRun,
489
+ typedCharacters: entry.typedCharacters ?? 0,
490
+ typedFileCount: entry.typedFileHashes?.length ?? 0,
491
+ filesChanged: entry.filesChanged,
492
+ linesAdded: entry.linesAdded,
493
+ linesDeleted: entry.linesDeleted,
494
+ pullRequestCount: entry.pullRequestCount ?? 0,
495
+ pullRequestStatus: entry.pullRequestStatus,
496
+ pullRequestArtifactMergedCount: entry.pullRequestArtifactMergedCount ?? 0,
497
+ pullRequestArtifactOpenCount: entry.pullRequestArtifactOpenCount ?? 0,
498
+ pullRequestArtifactDraftCount: entry.pullRequestArtifactDraftCount ?? 0,
499
+ pullRequestArtifactClosedCount: entry.pullRequestArtifactClosedCount ?? 0,
500
+ issueArtifactCount: entry.issueArtifactCount ?? 0,
501
+ otherArtifactCount: entry.otherArtifactCount ?? 0,
502
+ artifactCount: entry.artifactCount ?? 0,
503
+ referenceCount: entry.referenceCount ?? 0,
504
+ userSessionsTotal: requestCounters.userSessionsTotal,
505
+ userSessionsInWorkspace: requestCounters.userSessionsInWorkspace,
506
+ userSessionsForProvider: requestCounters.userSessionsForProvider
507
+ };
508
+ }
509
+
510
+ export { MAX_TRACKED_SESSIONS, MAX_TYPED_FILES_PER_SESSION, SESSIONS_KEY, SessionsLifecycleTracker };
@@ -6,6 +6,7 @@ import { IStorageService } from "@codingame/monaco-vscode-api/vscode/vs/platform
6
6
  import { ITelemetryService } from "@codingame/monaco-vscode-api/vscode/vs/platform/telemetry/common/telemetry.service";
7
7
  import { IUriIdentityService } from "@codingame/monaco-vscode-api/vscode/vs/platform/uriIdentity/common/uriIdentity.service";
8
8
  import { IWorkbenchContribution } from "@codingame/monaco-vscode-api/vscode/vs/workbench/common/contributions";
9
+ import { IChatEntitlementService } from "@codingame/monaco-vscode-api/vscode/vs/workbench/services/chat/common/chatEntitlementService.service";
9
10
  import { ISearchService } from "@codingame/monaco-vscode-api/vscode/vs/workbench/services/search/common/search.service";
10
11
  import { IAgentFeedbackService } from "@codingame/monaco-vscode-api/vscode/vs/sessions/contrib/agentFeedback/browser/agentFeedbackService.service";
11
12
  import { ISessionsTasksService } from "@codingame/monaco-vscode-api/vscode/vs/sessions/contrib/chat/browser/sessionsTasksService.service";
@@ -31,18 +32,17 @@ export declare class SessionsTelemetryContribution extends Disposable implements
31
32
  private readonly _searchService;
32
33
  private readonly _configurationService;
33
34
  private readonly _sessionsTasksService;
35
+ private readonly _chatEntitlementService;
34
36
  static readonly ID = "workbench.contrib.sessionsTelemetry";
35
- /** Final workspace file counts, keyed by session id (so subsequent log calls for the same session are instant). */
36
- private readonly _workspaceFileCountCache;
37
- /** Pending workspace file-count fetches, keyed by workspace URI so a prewarm started before a session-id assignment can be picked up after. */
38
- private readonly _workspaceFileCountInFlight;
37
+ /** Pending and completed workspace file counts, keyed by the scanned workspace folders so each is scanned at most once per window. */
38
+ private readonly _workspaceFileCounts;
39
39
  /** Persists per-session lifecycle counters for the `agents/sessionSummary` event. */
40
40
  private readonly _lifecycleTracker;
41
41
  /** Counts characters the user manually types into session workspace folders from this window. */
42
42
  private readonly _typedCharactersTracker;
43
43
  /** Listener per provider that waits for the provider's first batch of sessions so we can run a one-time reconciliation against tracked entries. */
44
44
  private readonly _providerReconcileListeners;
45
- constructor(_sessionsManagementService: ISessionsManagementService, _sessionsService: ISessionsService, _telemetryService: ITelemetryService, _uriIdentityService: IUriIdentityService, _storageService: IStorageService, _searchService: ISearchService, _configurationService: IConfigurationService, commandService: ICommandService, agentFeedbackService: IAgentFeedbackService, sessionsPartService: ISessionsPartService, sessionsProvidersService: ISessionsProvidersService, _sessionsTasksService: ISessionsTasksService, modelService: IModelService, sessionsWindowUsageService: ISessionsWindowUsageService);
45
+ constructor(_sessionsManagementService: ISessionsManagementService, _sessionsService: ISessionsService, _telemetryService: ITelemetryService, _uriIdentityService: IUriIdentityService, _storageService: IStorageService, _searchService: ISearchService, _configurationService: IConfigurationService, commandService: ICommandService, agentFeedbackService: IAgentFeedbackService, sessionsPartService: ISessionsPartService, sessionsProvidersService: ISessionsProvidersService, _sessionsTasksService: ISessionsTasksService, modelService: IModelService, sessionsWindowUsageService: ISessionsWindowUsageService, _chatEntitlementService: IChatEntitlementService);
46
46
  /**
47
47
  * Resolves the session a session-scoped command was invoked on. The first
48
48
  * argument is expected to be either a session resource {@link URI} or a
@@ -118,8 +118,7 @@ export declare class SessionsTelemetryContribution extends Disposable implements
118
118
  private _getChatFields;
119
119
  private _getWorkspaceFields;
120
120
  private _getWorkspaceTopologyFields;
121
- private _getOrFetchWorkspaceFileCount;
122
- private _startWorkspaceFileCountFetch;
121
+ private _getWorkspaceFileCount;
123
122
  private _computeWorkspaceFileCount;
124
123
  private _getRequestFields;
125
124
  private _getAllSessionsFields;