@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
@@ -1,1390 +0,0 @@
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 agentHostSessionConfigPicker from './media/agentHostSessionConfigPicker.css';
5
- import { getActiveElement, isHTMLElement, getActiveDocument, append, $, EventType, addDisposableListener, EventHelper, clearNode, isAncestorOfActiveElement, isAncestor, isActiveElement } from '@codingame/monaco-vscode-api/vscode/vs/base/browser/dom';
6
- import { Gesture, EventType as EventType$1 } from '@codingame/monaco-vscode-api/vscode/vs/base/browser/touch';
7
- import { renderIcon } from '@codingame/monaco-vscode-api/vscode/vs/base/browser/ui/iconLabel/iconLabels';
8
- import { ActionListItemKind } from '@codingame/monaco-vscode-api/vscode/vs/platform/actionWidget/browser/actionList';
9
- import { IActionWidgetService } from '@codingame/monaco-vscode-api/vscode/vs/platform/actionWidget/browser/actionWidget.service';
10
- import { BaseActionViewItem } from '@codingame/monaco-vscode-api/vscode/vs/base/browser/ui/actionbar/actionViewItems';
11
- import { Checkbox } from '@codingame/monaco-vscode-api/vscode/vs/base/browser/ui/toggle/toggle';
12
- import { toAction } from '@codingame/monaco-vscode-api/vscode/vs/base/common/actions';
13
- import { Delayer, SequencerByKey } from '@codingame/monaco-vscode-api/vscode/vs/base/common/async';
14
- import { Codicon } from '@codingame/monaco-vscode-api/vscode/vs/base/common/codicons';
15
- import { Disposable, MutableDisposable, DisposableStore, DisposableMap, toDisposable } from '@codingame/monaco-vscode-api/vscode/vs/base/common/lifecycle';
16
- import '@codingame/monaco-vscode-api/vscode/vs/base/common/observableInternal/index';
17
- import { ThemeIcon } from '@codingame/monaco-vscode-api/vscode/vs/base/common/themables';
18
- import { localize2, localize } from '@codingame/monaco-vscode-api/vscode/vs/nls';
19
- import { IActionViewItemService } from '@codingame/monaco-vscode-api/vscode/vs/platform/actions/browser/actionViewItemService.service';
20
- import { registerAction2, Action2, MenuId, MenuItemAction } from '@codingame/monaco-vscode-api/vscode/vs/platform/actions/common/actions';
21
- import { IConfigurationService } from '@codingame/monaco-vscode-api/vscode/vs/platform/configuration/common/configuration.service';
22
- import { ContextKeyExpr } from '@codingame/monaco-vscode-api/vscode/vs/platform/contextkey/common/contextkey';
23
- import { IContextKeyService } from '@codingame/monaco-vscode-api/vscode/vs/platform/contextkey/common/contextkey.service';
24
- import { IDialogService } from '@codingame/monaco-vscode-api/vscode/vs/platform/dialogs/common/dialogs.service';
25
- import { IInstantiationService } from '@codingame/monaco-vscode-api/vscode/vs/platform/instantiation/common/instantiation';
26
- import { IHoverService } from '@codingame/monaco-vscode-api/vscode/vs/platform/hover/browser/hover.service';
27
- import { ITelemetryService } from '@codingame/monaco-vscode-api/vscode/vs/platform/telemetry/common/telemetry.service';
28
- import { IStorageService } from '@codingame/monaco-vscode-api/vscode/vs/platform/storage/common/storage.service';
29
- import { defaultCheckboxStyles } from '@codingame/monaco-vscode-api/vscode/vs/platform/theme/browser/defaultStyles';
30
- import { ChatConfiguration, isChatPermissionLevel } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/constants';
31
- import { maybeConfirmElevatedPermissionLevel } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/chatPermissionWarnings';
32
- import { ChatContextKeyExprs, ChatContextKeys } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/actions/chatContextKeys';
33
- import { markOnboardingTarget } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/onboarding/browser/spotlight/onboardingTarget';
34
- import { registerWorkbenchContribution2, WorkbenchPhase } from '@codingame/monaco-vscode-api/vscode/vs/workbench/common/contributions';
35
- import { IViewsService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/services/views/common/viewsService.service';
36
- import { IAgentWorkbenchLayoutService } from '@codingame/monaco-vscode-api/vscode/vs/sessions/browser/workbench.service';
37
- import { Menus } from '@codingame/monaco-vscode-api/vscode/vs/sessions/browser/menus';
38
- import { DevContainerWorktreeEnabledSettingId } from '@codingame/monaco-vscode-api/vscode/vs/sessions/common/devContainerAgentHostService';
39
- import { SessionProviderIdContext, IsQuickChatSessionContext, IsPhoneLayoutContext } from '@codingame/monaco-vscode-api/vscode/vs/sessions/common/contextkeys';
40
- import { IWorkbenchLayoutService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/services/layout/browser/layoutService.service';
41
- import { reportNewChatPickerClosed } from '@codingame/monaco-vscode-api/vscode/vs/sessions/contrib/chat/browser/newChatPickerTelemetry';
42
- import '@codingame/monaco-vscode-api/vscode/vs/sessions/contrib/changes/browser/sessionChangesService';
43
- import { CHANGES_VIEW_ID } from '@codingame/monaco-vscode-api/vscode/vs/sessions/contrib/changes/common/changes';
44
- import { ISessionsProvidersService } from '@codingame/monaco-vscode-api/vscode/vs/sessions/services/sessions/browser/sessionsProvidersService.service';
45
- import { ISessionContext } from '@codingame/monaco-vscode-api/vscode/vs/sessions/services/sessions/browser/sessionContext.service';
46
- import { ISessionsService } from '@codingame/monaco-vscode-api/vscode/vs/sessions/services/sessions/browser/sessionsService.service';
47
- import { REMOTE_AGENT_HOST_PROVIDER_RE, LOCAL_AGENT_HOST_PROVIDER_ID, isAgentHostProvider } from '@codingame/monaco-vscode-api/vscode/vs/sessions/common/agentHostSessionsProvider';
48
- import { MobilePermissionPicker } from '@codingame/monaco-vscode-katex-common/vscode/vs/sessions/contrib/providers/copilotChatSessions/browser/mobilePermissionPicker';
49
- import { isPhoneLayout } from '@codingame/monaco-vscode-api/vscode/vs/sessions/browser/parts/mobile/mobileLayout';
50
- import { showMobilePickerSheet, MOBILE_PICKER_SHEET_CONFIRM } from '@codingame/monaco-vscode-api/vscode/vs/sessions/browser/parts/mobile/mobilePickerSheet';
51
- import { AgentHostModePicker } from './agentHostModePicker.js';
52
- import { MobileAgentHostModePicker } from './mobile/mobileAgentHostModePicker.js';
53
- import { AgentHostPermissionPickerActionItem } from './agentHostPermissionPickerActionItem.js';
54
- import { isWellKnownClaudePermissionModeSchema, isWellKnownCodexApprovalsSchema, AgentHostPermissionPickerDelegate } from './agentHostPermissionPickerDelegate.js';
55
- import { SessionConfigKey } from '@codingame/monaco-vscode-api/vscode/vs/platform/agentHost/common/sessionConfigKeys';
56
- import { AGENT_HOST_CHECKOUT_CHANGESET_OPERATION_ID } from '@codingame/monaco-vscode-api/vscode/vs/platform/agentHost/common/agentHostChangesetOperationService';
57
- import { checkoutOperationMeta, isCheckoutOperationDirtyWorkingTreeErrorData, CheckoutOperationPreAction } from '../../../../../platform/agentHost/common/meta/agentCheckoutOperationMeta.js';
58
- import { ProtocolError } from '@codingame/monaco-vscode-api/vscode/vs/platform/agentHost/common/state/sessionProtocol';
59
- import { AgentHostClaudePermissionModePicker } from './agentHostClaudePermissionModePicker.js';
60
- import { ClaudeSessionConfigKey } from '@codingame/monaco-vscode-api/vscode/vs/platform/agentHost/common/claudeSessionConfigKeys';
61
- import { AgentHostCodexApprovalsPicker } from './agentHostCodexApprovalsPicker.js';
62
- import { isAutoApproveValuePolicyRestricted } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/agentHostConfigPolicy';
63
- import { CodexSessionConfigKey } from '@codingame/monaco-vscode-api/vscode/vs/platform/agentHost/common/codexSessionConfigKeys';
64
- import { UNCOMMITTED_CHANGES_CHANGESET_ID } from '@codingame/monaco-vscode-api/vscode/vs/sessions/services/sessions/common/session';
65
- import { MarkdownString } from '@codingame/monaco-vscode-api/vscode/vs/base/common/htmlContent';
66
- import { observableValue } from '@codingame/monaco-vscode-api/vscode/vs/base/common/observableInternal/observables/observableValue';
67
- import { autorun } from '@codingame/monaco-vscode-api/vscode/vs/base/common/observableInternal/reactions/autorun';
68
- import { isWellKnownAutoApproveSchema, isWellKnownModeSchema } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostModePickerPresentation';
69
- import { ISessionChangesService } from '@codingame/monaco-vscode-api/vscode/vs/sessions/contrib/changes/common/sessionChangesService.service';
70
-
71
- registerCss(agentHostSessionConfigPicker, 1);
72
- const IsActiveSessionRemoteAgentHost = ( ContextKeyExpr.regex(SessionProviderIdContext.key, REMOTE_AGENT_HOST_PROVIDER_RE));
73
- const IsActiveSessionLocalAgentHost = ( ContextKeyExpr.equals(SessionProviderIdContext.key, LOCAL_AGENT_HOST_PROVIDER_ID));
74
- function showActiveSessionModePicker(accessor) {
75
- const activeElement = getActiveElement();
76
- const anchor = isHTMLElement(activeElement) ? activeElement : getActiveDocument().body;
77
- const picker = accessor.get(IInstantiationService).createInstance(
78
- isPhoneLayout(accessor.get(IWorkbenchLayoutService)) ? MobileAgentHostModePicker : AgentHostModePicker,
79
- accessor.get(ISessionsService).activeSession
80
- );
81
- if (!picker.showPicker(anchor, () => picker.dispose())) {
82
- picker.dispose();
83
- }
84
- }
85
- registerAction2(class extends Action2 {
86
- constructor() {
87
- super({
88
- id: "sessions.agentHost.sessionConfigPicker",
89
- title: ( localize2(4215, "Session Configuration")),
90
- f1: false,
91
- menu: [{
92
- id: Menus.NewSessionRepositoryConfig,
93
- group: "navigation",
94
- order: 3,
95
- when: ( ContextKeyExpr.and(( ContextKeyExpr.or(IsActiveSessionLocalAgentHost, IsActiveSessionRemoteAgentHost)), ( IsQuickChatSessionContext.negate())))
96
- }]
97
- });
98
- }
99
- async run() {}
100
- });
101
- function getConfigIcon(property, value, hasUncommittedChanges = false) {
102
- if (property === SessionConfigKey.Isolation) {
103
- if (value === "folder") {
104
- return Codicon.folder;
105
- }
106
- if (value === "worktree") {
107
- return Codicon.worktree;
108
- }
109
- }
110
- if (property === SessionConfigKey.Branch) {
111
- return hasUncommittedChanges ? Codicon.gitBranchChanges : Codicon.gitBranch;
112
- }
113
- if (property === SessionConfigKey.AutoApprove) {
114
- if (value === "autopilot") {
115
- return Codicon.rocket;
116
- }
117
- if (value === "autoApprove") {
118
- return Codicon.warning;
119
- }
120
- if (value === "assisted") {
121
- return Codicon.sparkle;
122
- }
123
- return Codicon.shield;
124
- }
125
- return undefined;
126
- }
127
- function formatUncommittedChanges(count) {
128
- return count === 1 ? ( localize(4216, "1 uncommitted file")) : ( localize(4217, "{0} uncommitted files", count));
129
- }
130
- function getBranchUncommittedChanges(branchName, repositoryBranchName, repositoryUncommittedChanges) {
131
- return branchName === repositoryBranchName && (repositoryUncommittedChanges ?? 0) > 0 ? repositoryUncommittedChanges : undefined;
132
- }
133
- function toActionItems(
134
- property,
135
- items,
136
- currentValue,
137
- policyRestricted,
138
- repositoryBranchName,
139
- repositoryUncommittedChanges,
140
- onShowChanges
141
- ) {
142
- const actionItems = items.map(item => {
143
- const disabled = property === SessionConfigKey.AutoApprove && isAutoApproveValuePolicyRestricted(item.value, policyRestricted === true);
144
- const checked = isSelectedValue(currentValue, item.value);
145
- const uncommittedChanges = property === SessionConfigKey.Branch ? getBranchUncommittedChanges(item.value, repositoryBranchName, repositoryUncommittedChanges) : undefined;
146
- const uncommittedChangesDescription = uncommittedChanges !== undefined ? formatUncommittedChanges(uncommittedChanges) : undefined;
147
- return {
148
- kind: ActionListItemKind.Action,
149
- label: item.label,
150
- detail: disabled ? ( localize(4218, "Disabled by your organization. Contact your administrator.")) : uncommittedChangesDescription ?? item.description,
151
- group: {
152
- title: "",
153
- icon: getConfigIcon(property, item.value, uncommittedChanges !== undefined)
154
- },
155
- ariaDescription: uncommittedChangesDescription,
156
- disabled,
157
- item: {
158
- ...item,
159
- checked
160
- },
161
- toolbarActions: property === SessionConfigKey.Branch && item.value === repositoryBranchName && onShowChanges ? [toAction({
162
- id: "sessions.agentHost.showBranchChanges",
163
- label: ( localize(4219, "Show Changes")),
164
- class: ThemeIcon.asClassName(Codicon.diffMultiple),
165
- run: onShowChanges
166
- })] : undefined
167
- };
168
- });
169
- if (property === SessionConfigKey.Branch) {
170
- const currentIndex = actionItems.findIndex(item => item.item?.checked);
171
- if (currentIndex >= 0) {
172
- const [current] = actionItems.splice(currentIndex, 1);
173
- actionItems.unshift(current);
174
- if (actionItems.length > 1) {
175
- actionItems.splice(1, 0, {
176
- kind: ActionListItemKind.Separator,
177
- label: ""
178
- });
179
- }
180
- }
181
- }
182
- return actionItems;
183
- }
184
- function isSelectedValue(currentValue, itemValue) {
185
- if (typeof currentValue === "boolean") {
186
- return currentValue === (itemValue === "true");
187
- }
188
- return itemValue === currentValue;
189
- }
190
- function renderPickerTrigger(slot, disabled, disposables, onOpen) {
191
- const trigger = append(slot, disabled ? $("span.action-label") : $("a.action-label"));
192
- if (disabled) {
193
- trigger.setAttribute("aria-readonly", "true");
194
- } else {
195
- trigger.role = "button";
196
- trigger.tabIndex = 0;
197
- trigger.setAttribute("aria-haspopup", "listbox");
198
- disposables.add(Gesture.addTarget(trigger));
199
- for (const eventType of [EventType.CLICK, EventType$1.Tap]) {
200
- disposables.add(addDisposableListener(trigger, eventType, e => {
201
- EventHelper.stop(e, true);
202
- onOpen();
203
- }));
204
- }
205
- disposables.add(addDisposableListener(trigger, EventType.KEY_DOWN, e => {
206
- if (e.key === "Enter" || e.key === " ") {
207
- EventHelper.stop(e, true);
208
- onOpen();
209
- }
210
- }));
211
- }
212
- slot.classList.toggle("disabled", disabled);
213
- return trigger;
214
- }
215
- function applyAutoApproveFiltering(items, property, configurationService) {
216
- if (property !== SessionConfigKey.AutoApprove) {
217
- return {
218
- items,
219
- policyRestricted: false
220
- };
221
- }
222
- const policyRestricted = configurationService.inspect(ChatConfiguration.GlobalAutoApprove).policyValue === false;
223
- return {
224
- items,
225
- policyRestricted
226
- };
227
- }
228
- async function confirmAutoApproveLevel(value, label, dialogService, storageService) {
229
- if (!isChatPermissionLevel(value)) {
230
- return true;
231
- }
232
- return maybeConfirmElevatedPermissionLevel(value, dialogService, storageService, {
233
- defaultSettingKey: ChatConfiguration.DefaultConfiguration,
234
- levelLabel: label
235
- });
236
- }
237
- function triggerAriaLabel(title, label, isReadOnly, hasUncommittedChanges) {
238
- if (hasUncommittedChanges) {
239
- return isReadOnly ? ( localize(4220, "{0}: {1}, Uncommitted Files, Read-Only", title, label)) : ( localize(4221, "{0}: {1}, Uncommitted Files", title, label));
240
- }
241
- return isReadOnly ? ( localize(4222, "{0}: {1}, Read-Only", title, label)) : ( localize(4223, "{0}: {1}", title, label));
242
- }
243
- class ConfigCheckboxControl extends Disposable {
244
- constructor(sessionId, label, className, _hoverService, onToggle, onboardingTarget) {
245
- super();
246
- this.sessionId = sessionId;
247
- this._hoverService = _hoverService;
248
- this._hover = this._register(( new MutableDisposable()));
249
- this._enabled = true;
250
- this.slot = $(".sessions-chat-picker-slot.sessions-chat-config-checkbox");
251
- this.slot.classList.add(className);
252
- this._row = append(this.slot, $(".action-label"));
253
- this.checkbox = this._register(( new Checkbox(label, false, {
254
- ...defaultCheckboxStyles,
255
- size: 14
256
- })));
257
- append(this._row, this.checkbox.domNode);
258
- const labelSpan = append(this._row, $("span.sessions-chat-dropdown-label"));
259
- labelSpan.textContent = label;
260
- if (onboardingTarget) {
261
- this._register(markOnboardingTarget(this.slot, onboardingTarget));
262
- }
263
- this._register(this.checkbox.onChange(() => onToggle(this.checkbox.checked)));
264
- this._register(Gesture.addTarget(this._row));
265
- for (const eventType of [EventType.CLICK, EventType$1.Tap]) {
266
- this._register(addDisposableListener(this._row, eventType, e => {
267
- EventHelper.stop(e, true);
268
- if (!this._enabled) {
269
- return;
270
- }
271
- this.checkbox.checked = !this.checkbox.checked;
272
- onToggle(this.checkbox.checked);
273
- }));
274
- }
275
- }
276
- update(checked, readOnly, resolving, tooltip) {
277
- this._enabled = !readOnly && !resolving;
278
- this.checkbox.checked = checked;
279
- if (readOnly) {
280
- this.checkbox.disable();
281
- } else {
282
- this.checkbox.enable();
283
- this.checkbox.domNode.setAttribute("aria-disabled", resolving ? "true" : "false");
284
- }
285
- this.slot.classList.toggle("disabled", readOnly);
286
- this.slot.classList.toggle("resolving", !readOnly && resolving);
287
- if (this._tooltip !== tooltip) {
288
- this._tooltip = tooltip;
289
- this._hover.value = tooltip ? this._hoverService.setupDelayedHover(this._row, {
290
- content: tooltip
291
- }) : undefined;
292
- }
293
- }
294
- dispose() {
295
- this.slot.remove();
296
- super.dispose();
297
- }
298
- }
299
- let AgentHostSessionConfigPicker = class AgentHostSessionConfigPicker extends Disposable {
300
- constructor(
301
- _session,
302
- _actionWidgetService,
303
- _configurationService,
304
- _contextKeyService,
305
- _dialogService,
306
- _hoverService,
307
- _sessionsProvidersService,
308
- _telemetryService,
309
- _layoutService,
310
- _storageService,
311
- _sessionChangesService,
312
- _viewsService
313
- ) {
314
- super();
315
- this._session = _session;
316
- this._actionWidgetService = _actionWidgetService;
317
- this._configurationService = _configurationService;
318
- this._contextKeyService = _contextKeyService;
319
- this._dialogService = _dialogService;
320
- this._hoverService = _hoverService;
321
- this._sessionsProvidersService = _sessionsProvidersService;
322
- this._telemetryService = _telemetryService;
323
- this._layoutService = _layoutService;
324
- this._storageService = _storageService;
325
- this._sessionChangesService = _sessionChangesService;
326
- this._viewsService = _viewsService;
327
- this._renderDisposables = this._register(( new DisposableStore()));
328
- this._providerListeners = this._register(( new DisposableMap()));
329
- this._isolationCheckbox = this._register(( new MutableDisposable()));
330
- this._hostMarker = this._register(( new MutableDisposable()));
331
- this._filterDelayer = this._register(( new Delayer(200)));
332
- this._repositoryConfigSequencer = ( new SequencerByKey());
333
- this._dynamicValueLabels = ( new Map());
334
- this._register(autorun(reader => {
335
- const session = this._session.read(reader);
336
- for (const changeset of session?.changesets?.read(reader) ?? []) {
337
- changeset.operations?.read(reader);
338
- }
339
- this._renderConfigPickers();
340
- }));
341
- this._register(this._sessionsProvidersService.onDidChangeProviders(e => {
342
- for (const provider of e.removed) {
343
- this._providerListeners.deleteAndDispose(provider.id);
344
- }
345
- this._watchProviders(e.added);
346
- this._renderConfigPickers();
347
- }));
348
- this._watchProviders(this._sessionsProvidersService.getProviders());
349
- this._register(this._configurationService.onDidChangeConfiguration(e => {
350
- if (e.affectsConfiguration(DevContainerWorktreeEnabledSettingId)) {
351
- this._renderConfigPickers();
352
- }
353
- }));
354
- this._register(this._contextKeyService.onDidChangeContext(e => {
355
- if (e.affectsSome(( new Set([IsPhoneLayoutContext.key])))) {
356
- this._renderConfigPickers();
357
- }
358
- }));
359
- }
360
- _watchProviders(providers) {
361
- for (const provider of providers) {
362
- if (!isAgentHostProvider(provider) || ( this._providerListeners.has(provider.id))) {
363
- continue;
364
- }
365
- this._providerListeners.set(
366
- provider.id,
367
- provider.onDidChangeSessionConfig(() => this._renderConfigPickers())
368
- );
369
- }
370
- }
371
- render(container) {
372
- this._isolationCheckbox.clear();
373
- container.classList.add("sessions-chat-agent-host-config-host");
374
- this._hostMarker.value = toDisposable(() => container.classList.remove("sessions-chat-agent-host-config-host"));
375
- this._container = append(container, $(".sessions-chat-agent-host-config"));
376
- this._renderConfigPickers();
377
- }
378
- _renderConfigPickers() {
379
- if (!this._container) {
380
- return;
381
- }
382
- this._renderDisposables.clear();
383
- const checkboxSlots = ( new Set([this._isolationCheckbox.value?.slot]));
384
- for (const child of Array.from(this._container.children)) {
385
- if (!( checkboxSlots.has(child))) {
386
- child.remove();
387
- }
388
- }
389
- const session = this._session.get();
390
- this._evictDynamicValueLabelsForOtherSessions(session?.sessionId);
391
- const provider = session ? this._getProvider(session.providerId) : undefined;
392
- const resolvedConfig = session && provider?.getSessionConfig(session.sessionId);
393
- if (!session || !provider || !resolvedConfig) {
394
- this._isolationCheckbox.clear();
395
- return;
396
- }
397
- const isNewSession = provider.getCreateSessionConfig(session.sessionId) !== undefined;
398
- const isLoading = provider.isSessionConfigResolving(session.sessionId).get();
399
- const properties = this._orderProperties(Object.entries(resolvedConfig.schema.properties));
400
- let renderedIsolationCheckbox = false;
401
- for (const [property, schema] of properties) {
402
- if (!this._isPickable(schema)) {
403
- continue;
404
- }
405
- if (property === SessionConfigKey.SandboxEnabled) {
406
- continue;
407
- }
408
- if (property === SessionConfigKey.WorktreeBranchTrack || property === SessionConfigKey.WorktreeCreateNewBranch) {
409
- continue;
410
- }
411
- if (property === SessionConfigKey.Isolation && !schema.enum?.includes("worktree")) {
412
- continue;
413
- }
414
- if (!this._shouldRenderProperty(property, schema, isNewSession)) {
415
- continue;
416
- }
417
- if (property === SessionConfigKey.AutoApprove && isWellKnownAutoApproveSchema(schema)) {
418
- continue;
419
- }
420
- if (property === SessionConfigKey.Mode && isWellKnownModeSchema(schema)) {
421
- continue;
422
- }
423
- if (property === ClaudeSessionConfigKey.PermissionMode && isWellKnownClaudePermissionModeSchema(schema)) {
424
- continue;
425
- }
426
- if (property === CodexSessionConfigKey.PermissionsPreset && isWellKnownCodexApprovalsSchema(schema)) {
427
- continue;
428
- }
429
- const value = resolvedConfig.values[property] ?? schema.default;
430
- const isReadOnly = this._isReadOnlyChip(property, schema, isNewSession) || (this._requiresBranchCheckout(provider, session.sessionId, property) && !this._getCheckoutChangeset(session.sessionId));
431
- if (property === SessionConfigKey.Isolation && this._shouldRenderIsolationAsCheckbox(schema)) {
432
- this._renderIsolationCheckbox(
433
- provider,
434
- session.sessionId,
435
- schema,
436
- value,
437
- isReadOnly,
438
- !isReadOnly && isLoading
439
- );
440
- renderedIsolationCheckbox = true;
441
- continue;
442
- }
443
- const slot = append(this._container, $(".sessions-chat-picker-slot"));
444
- if (property === SessionConfigKey.Isolation) {
445
- this._renderDisposables.add(markOnboardingTarget(slot, "sessions.newSession.isolation"));
446
- }
447
- const trigger = renderPickerTrigger(
448
- slot,
449
- isReadOnly,
450
- this._renderDisposables,
451
- () => this._showPicker(provider, session.sessionId, property, schema, trigger)
452
- );
453
- const tooltip = property !== SessionConfigKey.Branch ? (schema.description ?? schema.title) : undefined;
454
- if (tooltip) {
455
- this._renderDisposables.add(this._hoverService.setupDelayedHover(trigger, {
456
- content: tooltip
457
- }));
458
- }
459
- if (!isReadOnly && isLoading) {
460
- slot.classList.add("resolving");
461
- trigger.setAttribute("aria-disabled", "true");
462
- }
463
- this._renderTrigger(trigger, session.sessionId, property, schema, value, isReadOnly);
464
- }
465
- if (!renderedIsolationCheckbox) {
466
- this._isolationCheckbox.clear();
467
- }
468
- }
469
- _isPickable(schema) {
470
- if (schema.type === "boolean") {
471
- return true;
472
- }
473
- if (schema.type !== "string") {
474
- return false;
475
- }
476
- return !!schema.enumDynamic || (Array.isArray(schema.enum) && schema.enum.length > 0);
477
- }
478
- _orderProperties(properties) {
479
- const order = ( new Map([[SessionConfigKey.Isolation, 0], [SessionConfigKey.Branch, 1]]));
480
- return properties.map(([key, schema], index) => ({
481
- key,
482
- schema,
483
- index
484
- })).sort((a, b) => {
485
- const aRank = order.get(a.key) ?? Number.MAX_SAFE_INTEGER;
486
- const bRank = order.get(b.key) ?? Number.MAX_SAFE_INTEGER;
487
- return aRank - bRank || a.index - b.index;
488
- }).map((
489
- {
490
- key,
491
- schema
492
- }
493
- ) => [key, schema]);
494
- }
495
- _shouldRenderProperty(property, schema, isNewSession) {
496
- return isNewSession || !!schema.sessionMutable;
497
- }
498
- _isReadOnlyChip(property, schema, isNewSession) {
499
- return !!schema.readOnly;
500
- }
501
- async _setSessionConfigValue(provider, sessionId, property, value) {
502
- const isDraftRepositoryProperty = provider.getCreateSessionConfig(sessionId) !== undefined && (property === SessionConfigKey.Isolation || property === SessionConfigKey.Branch);
503
- if (!isDraftRepositoryProperty) {
504
- await provider.setSessionConfigValue(sessionId, property, value);
505
- return;
506
- }
507
- let treeish;
508
- if (property === SessionConfigKey.Branch) {
509
- if (typeof value !== "string" || value.length === 0) {
510
- throw ( new Error("Branch configuration values must be non-empty strings."));
511
- }
512
- treeish = value;
513
- }
514
- const configOperation = this._repositoryConfigSequencer.queue(sessionId, async () => {
515
- const shouldCheckout = this._requiresBranchCheckout(provider, sessionId, property);
516
- if (!shouldCheckout) {
517
- await provider.setSessionConfigValue(sessionId, property, value);
518
- return;
519
- }
520
- if (!treeish) {
521
- throw ( new Error("Branch checkout requires a non-empty treeish."));
522
- }
523
- const changeset = this._getCheckoutChangeset(sessionId);
524
- if (!changeset) {
525
- throw ( new Error("Branch checkout is not available for this session."));
526
- }
527
- const checkedOut = await this._invokeCheckoutOperation(changeset, treeish);
528
- if (checkedOut) {
529
- await provider.setSessionConfigValue(sessionId, property, value);
530
- }
531
- });
532
- provider.trackSessionConfigOperation(sessionId, configOperation);
533
- await configOperation;
534
- }
535
- async _invokeCheckoutOperation(changeset, treeish) {
536
- let errorMessage;
537
- try {
538
- await changeset.invokeOperation(
539
- AGENT_HOST_CHECKOUT_CHANGESET_OPERATION_ID,
540
- undefined,
541
- checkoutOperationMeta(treeish)
542
- );
543
- return true;
544
- } catch (error) {
545
- if (!(error instanceof ProtocolError) || !isCheckoutOperationDirtyWorkingTreeErrorData(error.data)) {
546
- throw error;
547
- }
548
- errorMessage = error instanceof Error ? error.message : String(error);
549
- }
550
- const {
551
- result
552
- } = await this._dialogService.prompt({
553
- type: "warning",
554
- message: ( localize(
555
- 4224,
556
- "Your local changes would be overwritten when checking out '{0}'.",
557
- treeish
558
- )),
559
- detail: ( new MarkdownString(errorMessage)),
560
- buttons: [{
561
- label: ( localize(4225, "Stash & Checkout")),
562
- run: () => CheckoutOperationPreAction.Stash
563
- }, {
564
- label: ( localize(4226, "Commit & Checkout")),
565
- run: () => CheckoutOperationPreAction.Commit
566
- }],
567
- cancelButton: true
568
- });
569
- if (!result) {
570
- return false;
571
- }
572
- await changeset.invokeOperation(
573
- AGENT_HOST_CHECKOUT_CHANGESET_OPERATION_ID,
574
- undefined,
575
- checkoutOperationMeta(treeish, result)
576
- );
577
- return true;
578
- }
579
- _requiresBranchCheckout(provider, sessionId, property) {
580
- return property === SessionConfigKey.Branch && provider.getCreateSessionConfig(sessionId) !== undefined && provider.getSessionConfig(sessionId)?.values[SessionConfigKey.Isolation] === "folder";
581
- }
582
- _getCheckoutChangeset(sessionId) {
583
- const session = this._session.get();
584
- if (session?.sessionId !== sessionId) {
585
- return undefined;
586
- }
587
- return session.changesets.get()?.find(
588
- changeset => changeset.id === UNCOMMITTED_CHANGES_CHANGESET_ID && ( changeset.operations.get().some(operation => operation.id === AGENT_HOST_CHECKOUT_CHANGESET_OPERATION_ID))
589
- );
590
- }
591
- _renderTrigger(trigger, sessionId, property, schema, value, isReadOnly) {
592
- clearNode(trigger);
593
- const icon = getConfigIcon(property, value);
594
- const iconElement = icon ? append(trigger, renderIcon(icon)) : undefined;
595
- const labelSpan = append(trigger, $("span.sessions-chat-dropdown-label"));
596
- const label = this._getLabel(sessionId, property, schema, value);
597
- labelSpan.textContent = label;
598
- trigger.setAttribute("aria-label", triggerAriaLabel(schema.title, label, isReadOnly, false));
599
- if (property === SessionConfigKey.Branch && icon && iconElement) {
600
- this._trackBranchRepositoryState(trigger, iconElement, icon, schema, label, value, isReadOnly);
601
- } else if (property === SessionConfigKey.AutoApprove) {
602
- trigger.classList.toggle("warning", value === "autopilot" || value === "assisted");
603
- trigger.classList.toggle("info", value === "autoApprove");
604
- }
605
- }
606
- _trackBranchRepositoryState(trigger, iconElement, icon, schema, label, value, isReadOnly) {
607
- let appliedHoverContent;
608
- const hover = this._renderDisposables.add(( new MutableDisposable()));
609
- this._renderDisposables.add(autorun(reader => {
610
- const session = this._session.read(reader);
611
- const repository = session?.workspace.read(reader)?.folders[0]?.gitRepository;
612
- const uncommittedChanges = typeof value === "string" ? getBranchUncommittedChanges(value, repository?.branchName, repository?.uncommittedChanges) : undefined;
613
- const hasUncommittedChanges = uncommittedChanges !== undefined;
614
- iconElement.className = "";
615
- iconElement.classList.add(
616
- ...ThemeIcon.asClassNameArray(hasUncommittedChanges ? Codicon.gitBranchChanges : icon)
617
- );
618
- trigger.setAttribute(
619
- "aria-label",
620
- triggerAriaLabel(schema.title, label, isReadOnly, hasUncommittedChanges)
621
- );
622
- const branchName = schema.description ?? schema.title;
623
- const content = !hasUncommittedChanges ? branchName : uncommittedChanges === 1 ? ( localize(4227, "{0}, {1} uncommitted file", branchName, uncommittedChanges)) : ( localize(4228, "{0}, {1} uncommitted files", branchName, uncommittedChanges));
624
- if (appliedHoverContent !== content) {
625
- appliedHoverContent = content;
626
- hover.clear();
627
- hover.value = content ? this._hoverService.setupDelayedHover(trigger, {
628
- content
629
- }) : undefined;
630
- }
631
- }));
632
- }
633
- _shouldRenderIsolationAsCheckbox(schema) {
634
- return !isPhoneLayout(this._layoutService) && Array.isArray(schema.enum) && schema.enum.includes("worktree") && schema.enum.includes("folder");
635
- }
636
- _renderIsolationCheckbox(provider, sessionId, schema, value, isReadOnly, isLoading) {
637
- const label = ( localize(4229, "New Worktree"));
638
- const worktreeIndex = schema.enum?.indexOf("worktree") ?? -1;
639
- const checked = value === "worktree";
640
- const combinationDisabled = !this._isDevContainerWorktreeEnabled() && provider.isDevContainerEnabled?.(sessionId) === true && !checked;
641
- const tooltip = combinationDisabled ? ( localize(4230, "New Worktree cannot be combined with Dev Container execution.")) : (worktreeIndex >= 0 ? schema.enumDescriptions?.[worktreeIndex] : undefined) ?? schema.description ?? schema.title;
642
- let control = this._isolationCheckbox.value;
643
- if (!control || control.sessionId !== sessionId) {
644
- control = ( new ConfigCheckboxControl(
645
- sessionId,
646
- label,
647
- "sessions-chat-isolation-checkbox",
648
- this._hoverService,
649
- checked => this._applyIsolationValue(sessionId, checked),
650
- "sessions.newSession.isolation"
651
- ));
652
- this._isolationCheckbox.value = control;
653
- this._container?.prepend(control.slot);
654
- }
655
- control.update(checked, isReadOnly || combinationDisabled, isLoading, tooltip);
656
- }
657
- _isDevContainerWorktreeEnabled() {
658
- return this._configurationService.getValue(DevContainerWorktreeEnabledSettingId) === true;
659
- }
660
- _applyIsolationValue(sessionId, checked) {
661
- const session = this._session.get();
662
- if (!session || session.sessionId !== sessionId) {
663
- return;
664
- }
665
- const provider = this._getProvider(session.providerId);
666
- const resolvedConfig = provider?.getSessionConfig(sessionId);
667
- const schema = resolvedConfig?.schema.properties[SessionConfigKey.Isolation];
668
- if (!provider || !schema) {
669
- return;
670
- }
671
- const before = resolvedConfig.values[SessionConfigKey.Isolation] ?? schema.default;
672
- const nextValue = checked ? "worktree" : "folder";
673
- reportNewChatPickerClosed(this._telemetryService, {
674
- id: "NewChatAgentHostSessionConfigPicker",
675
- name: `NewChatAgentHostSessionConfigPicker.${SessionConfigKey.Isolation}`,
676
- optionIdBefore: typeof before === "string" ? before : undefined,
677
- optionIdAfter: nextValue,
678
- optionLabelBefore: typeof before === "string" ? this._getLabel(sessionId, SessionConfigKey.Isolation, schema, before) : undefined,
679
- optionLabelAfter: this._getLabel(sessionId, SessionConfigKey.Isolation, schema, nextValue),
680
- isPII: false
681
- });
682
- this._setSessionConfigValue(provider, sessionId, SessionConfigKey.Isolation, nextValue).catch(() => {});
683
- }
684
- async _showPicker(provider, sessionId, property, schema, trigger) {
685
- if (schema.readOnly || this._actionWidgetService.isVisible) {
686
- return;
687
- }
688
- if (provider.isSessionConfigResolving(sessionId).get()) {
689
- return;
690
- }
691
- const rawItems = await this._getItems(provider, sessionId, property, schema);
692
- const {
693
- items,
694
- policyRestricted
695
- } = applyAutoApproveFiltering(rawItems, property, this._configurationService);
696
- if (items.length === 0) {
697
- return;
698
- }
699
- const isAutoApproveProperty = property === SessionConfigKey.AutoApprove;
700
- const currentValue = provider.getSessionConfig(sessionId)?.values[property] ?? schema.default;
701
- const currentItem = items.find(i => isSelectedValue(currentValue, i.value));
702
- const repositoryState = property === SessionConfigKey.Branch ? this._getRepositoryBranchState(sessionId) : undefined;
703
- const onShowChanges = property === SessionConfigKey.Branch ? () => this._showChanges() : undefined;
704
- const actionItems = toActionItems(
705
- property,
706
- items,
707
- currentValue,
708
- policyRestricted,
709
- repositoryState?.branchName,
710
- repositoryState?.uncommittedChanges,
711
- onShowChanges
712
- );
713
- const delegate = {
714
- onSelect: async item => {
715
- this._actionWidgetService.hide();
716
- reportNewChatPickerClosed(this._telemetryService, {
717
- id: "NewChatAgentHostSessionConfigPicker",
718
- name: `NewChatAgentHostSessionConfigPicker.${property}`,
719
- optionIdBefore: typeof currentValue === "string" ? currentValue : undefined,
720
- optionIdAfter: item.value,
721
- optionLabelBefore: currentItem?.label,
722
- optionLabelAfter: item.label,
723
- isPII: !!schema.enumDynamic
724
- });
725
- if (isAutoApproveProperty && item.value !== "default") {
726
- const confirmed = await confirmAutoApproveLevel(item.value, item.label, this._dialogService, this._storageService);
727
- if (!confirmed) {
728
- return;
729
- }
730
- }
731
- const nextValue = schema.type === "boolean" ? item.value === "true" : item.value;
732
- this._setSessionConfigValue(provider, sessionId, property, nextValue).catch(() => {});
733
- },
734
- onFilter: schema.enumDynamic ? query => this._filterDelayer.trigger(async () => {
735
- const filteredRawItems = await this._getItems(provider, sessionId, property, schema, query);
736
- const {
737
- items: filteredItems,
738
- policyRestricted: filteredPolicyRestricted
739
- } = applyAutoApproveFiltering(filteredRawItems, property, this._configurationService);
740
- const filteredRepositoryState = this._getRepositoryBranchState(sessionId);
741
- return toActionItems(
742
- property,
743
- filteredItems,
744
- provider.getSessionConfig(sessionId)?.values[property] ?? schema.default,
745
- filteredPolicyRestricted,
746
- filteredRepositoryState.branchName,
747
- filteredRepositoryState.uncommittedChanges,
748
- onShowChanges
749
- );
750
- }) : undefined,
751
- onHide: () => {
752
- trigger.focus();
753
- }
754
- };
755
- this._actionWidgetService.show(
756
- `agentHostSessionConfig.${property}`,
757
- false,
758
- actionItems,
759
- delegate,
760
- trigger,
761
- undefined,
762
- [],
763
- {
764
- getAriaLabel: item => item.ariaDescription ? ( localize(4231, "{0}, {1}", item.label ?? "", item.ariaDescription)) : item.label ?? "",
765
- getWidgetAriaLabel: () => ( localize(4232, "{0} Picker", schema.title))
766
- },
767
- items.length > 10 ? {
768
- showFilter: true,
769
- filterPlaceholder: ( localize(4233, "Filter options...")),
770
- minWidth: 255
771
- } : {
772
- minWidth: 255
773
- }
774
- );
775
- }
776
- async _showChanges() {
777
- this._actionWidgetService.hide();
778
- const session = this._session.get();
779
- if (this._layoutService.isSinglePaneLayoutEnabled && session) {
780
- if ((this._getRepositoryBranchState(session.sessionId).uncommittedChanges ?? 0) > 0) {
781
- this._layoutService.revealEditorPartExplicitly();
782
- }
783
- const suppression = this._layoutService.suppressEditorPartAutoVisibility();
784
- try {
785
- await this._sessionChangesService.openChangesEditor(session.resource);
786
- } finally {
787
- suppression.dispose();
788
- }
789
- }
790
- await this._viewsService.openView(CHANGES_VIEW_ID, true);
791
- }
792
- _getRepositoryBranchState(sessionId) {
793
- const session = this._session.get();
794
- const repository = session?.sessionId === sessionId ? session.workspace.get()?.folders[0]?.gitRepository : undefined;
795
- return {
796
- branchName: repository?.branchName,
797
- uncommittedChanges: repository?.uncommittedChanges
798
- };
799
- }
800
- async _getItems(provider, sessionId, property, schema, query) {
801
- if (schema.type === "boolean") {
802
- return [{
803
- value: "true",
804
- label: ( localize(4234, "On"))
805
- }, {
806
- value: "false",
807
- label: ( localize(4235, "Off"))
808
- }];
809
- }
810
- const dynamicItems = schema.enumDynamic ? await provider.getSessionConfigCompletions(sessionId, property, query) : undefined;
811
- if (dynamicItems?.length) {
812
- const items = dynamicItems.map(item => this._fromCompletionItem(item));
813
- this._cacheDynamicValueLabels(sessionId, property, items);
814
- return items;
815
- }
816
- return (schema.enum ?? []).map((value, index) => ({
817
- value: String(value),
818
- label: schema.enumLabels?.[index] ?? String(value),
819
- description: schema.enumDescriptions?.[index]
820
- }));
821
- }
822
- _fromCompletionItem(item) {
823
- return {
824
- value: item.value,
825
- label: item.label,
826
- description: item.description
827
- };
828
- }
829
- _dynamicValueLabelsKey(sessionId, property) {
830
- return `${sessionId}\0${property}`;
831
- }
832
- _cacheDynamicValueLabels(sessionId, property, items) {
833
- const key = this._dynamicValueLabelsKey(sessionId, property);
834
- let labels = this._dynamicValueLabels.get(key);
835
- if (!labels) {
836
- labels = ( new Map());
837
- this._dynamicValueLabels.set(key, labels);
838
- }
839
- for (const item of items) {
840
- labels.set(item.value, item.label);
841
- }
842
- }
843
- _evictDynamicValueLabelsForOtherSessions(sessionId) {
844
- if (!sessionId) {
845
- return;
846
- }
847
- const prefix = `${sessionId}\0`;
848
- for (const key of ( this._dynamicValueLabels.keys())) {
849
- if (!key.startsWith(prefix)) {
850
- this._dynamicValueLabels.delete(key);
851
- }
852
- }
853
- }
854
- _getLabel(sessionId, property, schema, value) {
855
- if (schema.type === "boolean") {
856
- return value === true ? ( localize(4236, "On")) : ( localize(4237, "Off"));
857
- }
858
- if (typeof value === "string") {
859
- if (schema.enumDynamic) {
860
- const key = this._dynamicValueLabelsKey(sessionId, property);
861
- const dynamicLabel = this._dynamicValueLabels.get(key)?.get(value);
862
- if (dynamicLabel) {
863
- return dynamicLabel;
864
- }
865
- }
866
- const index = schema.enum?.indexOf(value) ?? -1;
867
- return index >= 0 ? schema.enumLabels?.[index] ?? value : value;
868
- }
869
- return schema.title;
870
- }
871
- _getProvider(providerId) {
872
- const provider = this._sessionsProvidersService.getProvider(providerId);
873
- return provider && isAgentHostProvider(provider) ? provider : undefined;
874
- }
875
- };
876
- AgentHostSessionConfigPicker = ( __decorate([( __param(1, IActionWidgetService)), ( __param(2, IConfigurationService)), ( __param(3, IContextKeyService)), ( __param(4, IDialogService)), ( __param(5, IHoverService)), ( __param(6, ISessionsProvidersService)), ( __param(7, ITelemetryService)), ( __param(8, IAgentWorkbenchLayoutService)), ( __param(9, IStorageService)), ( __param(10, ISessionChangesService)), ( __param(11, IViewsService))], AgentHostSessionConfigPicker));
877
- class MobileAgentHostSessionConfigPicker extends AgentHostSessionConfigPicker {
878
- _orderProperties(properties) {
879
- if (!isPhoneLayout(this._layoutService)) {
880
- return super._orderProperties(properties);
881
- }
882
- const order = ( new Map([[SessionConfigKey.Branch, 0], [SessionConfigKey.Isolation, 1]]));
883
- return properties.slice().sort(([aKey], [bKey]) => {
884
- const a = order.get(aKey) ?? Number.MAX_SAFE_INTEGER;
885
- const b = order.get(bKey) ?? Number.MAX_SAFE_INTEGER;
886
- return a - b;
887
- });
888
- }
889
- _shouldRenderProperty(property, schema, isNewSession) {
890
- const isUnifiedRepoProperty = property === SessionConfigKey.Isolation || property === SessionConfigKey.Branch;
891
- return isUnifiedRepoProperty || super._shouldRenderProperty(property, schema, isNewSession);
892
- }
893
- _isReadOnlyChip(property, schema, isNewSession) {
894
- return super._isReadOnlyChip(property, schema, isNewSession) || (!isNewSession && !schema.sessionMutable);
895
- }
896
- async _showPicker(provider, sessionId, property, schema, trigger) {
897
- if (!isPhoneLayout(this._layoutService)) {
898
- return super._showPicker(provider, sessionId, property, schema, trigger);
899
- }
900
- if (provider.isSessionConfigResolving(sessionId).get()) {
901
- return;
902
- }
903
- if (property === SessionConfigKey.Isolation || property === SessionConfigKey.Branch) {
904
- await this._showUnifiedRepoSheet(provider, sessionId, trigger);
905
- return;
906
- }
907
- return super._showPicker(provider, sessionId, property, schema, trigger);
908
- }
909
- async _showUnifiedRepoSheet(provider, sessionId, trigger) {
910
- const config = provider.getSessionConfig(sessionId);
911
- if (!config) {
912
- return;
913
- }
914
- const isolationSchema = config.schema.properties[SessionConfigKey.Isolation];
915
- const branchSchema = config.schema.properties[SessionConfigKey.Branch];
916
- const canSelectBranch = !this._requiresBranchCheckout(provider, sessionId, SessionConfigKey.Branch) || !!this._getCheckoutChangeset(sessionId);
917
- const [isolationItems, branchItems] = await Promise.all([
918
- isolationSchema && !isolationSchema.readOnly ? this._getItems(provider, sessionId, SessionConfigKey.Isolation, isolationSchema) : Promise.resolve([]),
919
- branchSchema && !branchSchema.readOnly && canSelectBranch ? this._getItems(provider, sessionId, SessionConfigKey.Branch, branchSchema) : Promise.resolve([])
920
- ]);
921
- const isolationValue = config.values[SessionConfigKey.Isolation];
922
- const branchValue = config.values[SessionConfigKey.Branch];
923
- const repositoryState = this._getRepositoryBranchState(sessionId);
924
- const sheetItems = [];
925
- const idToConfig = ( new Map());
926
- const registerId = (property, value, label, isPII) => {
927
- const id = `repo-row-${idToConfig.size}`;
928
- idToConfig.set(id, {
929
- property,
930
- value,
931
- label,
932
- isPII
933
- });
934
- return id;
935
- };
936
- isolationItems.forEach((item, index) => {
937
- sheetItems.push({
938
- id: registerId(
939
- SessionConfigKey.Isolation,
940
- item.value,
941
- item.label,
942
- !!isolationSchema?.enumDynamic
943
- ),
944
- label: item.label,
945
- description: item.description,
946
- icon: getConfigIcon(SessionConfigKey.Isolation, item.value),
947
- checked: item.value === isolationValue,
948
- sectionTitle: index === 0 ? (isolationSchema?.title ?? ( localize(4238, "Isolation"))) : undefined
949
- });
950
- });
951
- const branchSectionTitle = branchSchema?.title ?? ( localize(4239, "Base Branch"));
952
- if (!branchSchema?.enumDynamic) {
953
- branchItems.forEach((item, index) => {
954
- const uncommittedChanges = getBranchUncommittedChanges(item.value, repositoryState.branchName, repositoryState.uncommittedChanges);
955
- sheetItems.push({
956
- id: registerId(
957
- SessionConfigKey.Branch,
958
- item.value,
959
- item.label,
960
- !!branchSchema?.enumDynamic
961
- ),
962
- label: item.label,
963
- description: uncommittedChanges !== undefined ? formatUncommittedChanges(uncommittedChanges) : item.description,
964
- icon: getConfigIcon(SessionConfigKey.Branch, item.value, uncommittedChanges !== undefined),
965
- checked: item.value === branchValue,
966
- sectionTitle: index === 0 ? branchSectionTitle : undefined
967
- });
968
- });
969
- }
970
- if (sheetItems.length === 0 && !branchSchema?.enumDynamic) {
971
- return;
972
- }
973
- let search;
974
- if (branchSchema?.enumDynamic && !branchSchema.readOnly && canSelectBranch) {
975
- search = {
976
- placeholder: ( localize(4240, "Search branches")),
977
- ariaLabel: ( localize(4241, "Search base branches")),
978
- resultsSectionTitle: branchSectionTitle,
979
- emptyMessage: ( localize(4242, "No matching branches.")),
980
- loadItems: async (query, token) => {
981
- const items = query ? await this._getItems(provider, sessionId, SessionConfigKey.Branch, branchSchema, query) : branchItems;
982
- if (token.isCancellationRequested) {
983
- return [];
984
- }
985
- return items.map(item => {
986
- const uncommittedChanges = getBranchUncommittedChanges(item.value, repositoryState.branchName, repositoryState.uncommittedChanges);
987
- return {
988
- id: registerId(
989
- SessionConfigKey.Branch,
990
- item.value,
991
- item.label,
992
- !!branchSchema.enumDynamic
993
- ),
994
- label: item.label,
995
- description: uncommittedChanges !== undefined ? formatUncommittedChanges(uncommittedChanges) : item.description,
996
- icon: getConfigIcon(SessionConfigKey.Branch, item.value, uncommittedChanges !== undefined),
997
- checked: item.value === branchValue
998
- };
999
- });
1000
- }
1001
- };
1002
- }
1003
- trigger.setAttribute("aria-expanded", "true");
1004
- await showMobilePickerSheet(this._layoutService.mainContainer, ( localize(4243, "Worktree")), sheetItems, {
1005
- search,
1006
- stayOpenOnSelect: true,
1007
- onDidSelect: id => {
1008
- const selection = idToConfig.get(id);
1009
- if (selection) {
1010
- const beforeValue = provider.getSessionConfig(sessionId)?.values[selection.property];
1011
- reportNewChatPickerClosed(this._telemetryService, {
1012
- id: "NewChatAgentHostSessionConfigPicker",
1013
- name: `NewChatAgentHostSessionConfigPicker.${selection.property}`,
1014
- optionIdBefore: typeof beforeValue === "string" ? beforeValue : undefined,
1015
- optionIdAfter: selection.value,
1016
- optionLabelBefore: undefined,
1017
- optionLabelAfter: selection.label,
1018
- isPII: selection.isPII
1019
- });
1020
- this._setSessionConfigValue(provider, sessionId, selection.property, selection.value).catch(() => {});
1021
- if (selection.property === SessionConfigKey.Isolation) {
1022
- return MOBILE_PICKER_SHEET_CONFIRM;
1023
- }
1024
- }
1025
- return undefined;
1026
- }
1027
- });
1028
- trigger.setAttribute("aria-expanded", "false");
1029
- trigger.focus();
1030
- }
1031
- }
1032
- class PickerActionViewItem extends BaseActionViewItem {
1033
- constructor(_picker, disposable) {
1034
- super(undefined, {
1035
- id: "",
1036
- label: "",
1037
- enabled: true,
1038
- class: undefined,
1039
- tooltip: "",
1040
- run: () => {}
1041
- });
1042
- this._picker = _picker;
1043
- this._compact = false;
1044
- if (disposable) {
1045
- this._register(disposable);
1046
- }
1047
- }
1048
- render(container) {
1049
- this.element = container;
1050
- this._focusableElement = this._picker.render(container) ?? undefined;
1051
- container.classList.toggle("compact-picker", this._compact);
1052
- }
1053
- focus() {
1054
- if (this._picker.focus) {
1055
- this._picker.focus();
1056
- } else if (this._focusableElement) {
1057
- this._focusableElement.focus();
1058
- } else if (this.element) {
1059
- this._focusFirstTabStop(this.element);
1060
- } else {
1061
- super.focus();
1062
- }
1063
- }
1064
- isFocused() {
1065
- return this.element ? isAncestorOfActiveElement(this.element) : super.isFocused();
1066
- }
1067
- blur() {
1068
- const activeElement = getActiveElement();
1069
- if (this.element && isHTMLElement(activeElement) && isAncestor(activeElement, this.element)) {
1070
- activeElement.blur();
1071
- } else {
1072
- super.blur();
1073
- }
1074
- }
1075
- setFocusable(_focusable) {
1076
- if (this.element) {
1077
- this.element.tabIndex = -1;
1078
- }
1079
- }
1080
- _focusFirstTabStop(container) {
1081
- for (const child of container.children) {
1082
- if (!isHTMLElement(child)) {
1083
- continue;
1084
- }
1085
- if (child.tabIndex >= 0) {
1086
- child.focus();
1087
- if (isActiveElement(child)) {
1088
- return true;
1089
- }
1090
- }
1091
- if (this._focusFirstTabStop(child)) {
1092
- return true;
1093
- }
1094
- }
1095
- return false;
1096
- }
1097
- isCompact() {
1098
- return this._compact;
1099
- }
1100
- setCompact(compact) {
1101
- this._compact = compact;
1102
- this.element?.classList.toggle("compact-picker", compact);
1103
- }
1104
- show(anchor) {
1105
- const target = anchor ?? this.element;
1106
- if (target) {
1107
- this._picker.showPicker?.(target);
1108
- }
1109
- }
1110
- dispose() {
1111
- this._picker.dispose();
1112
- super.dispose();
1113
- }
1114
- }
1115
- let AgentHostSessionConfigPickerContribution = class AgentHostSessionConfigPickerContribution extends Disposable {
1116
- static {
1117
- this.ID = "sessions.contrib.agentHostSessionConfigPicker";
1118
- }
1119
- constructor(actionViewItemService, _layoutService) {
1120
- super();
1121
- this._layoutService = _layoutService;
1122
- this._register(actionViewItemService.register(
1123
- Menus.NewSessionRepositoryConfig,
1124
- "sessions.agentHost.sessionConfigPicker",
1125
- (_action, _options, scopedInstantiationService) => {
1126
- const {
1127
- session
1128
- } = scopedInstantiationService.invokeFunction(accessor => accessor.get(ISessionContext));
1129
- return ( new PickerActionViewItem(
1130
- scopedInstantiationService.createInstance(MobileAgentHostSessionConfigPicker, session)
1131
- ));
1132
- }
1133
- ));
1134
- this._register(actionViewItemService.register(
1135
- Menus.NewSessionControl,
1136
- NEW_SESSION_MODE_PICKER_ID,
1137
- (_action, _options, scopedInstantiationService) => {
1138
- const {
1139
- session
1140
- } = scopedInstantiationService.invokeFunction(accessor => accessor.get(ISessionContext));
1141
- return ( new PickerActionViewItem(scopedInstantiationService.createInstance(
1142
- isPhoneLayout(this._layoutService) ? MobileAgentHostModePicker : AgentHostModePicker,
1143
- session
1144
- )));
1145
- }
1146
- ));
1147
- this._register(actionViewItemService.register(
1148
- MenuId.ChatInputSecondary,
1149
- RUNNING_SESSION_MODE_PICKER_ID,
1150
- (_action, _options, scopedInstantiationService) => {
1151
- const {
1152
- session
1153
- } = scopedInstantiationService.invokeFunction(accessor => accessor.get(ISessionContext));
1154
- return ( new PickerActionViewItem(scopedInstantiationService.createInstance(
1155
- isPhoneLayout(this._layoutService) ? MobileAgentHostModePicker : AgentHostModePicker,
1156
- session
1157
- )));
1158
- }
1159
- ));
1160
- this._register(actionViewItemService.register(
1161
- Menus.NewSessionControl,
1162
- NEW_SESSION_APPROVE_PICKER_ID,
1163
- (_action, _options, scopedInstantiationService) => this._createNewSessionPermissionPicker(scopedInstantiationService)
1164
- ));
1165
- this._register(actionViewItemService.register(
1166
- Menus.NewSessionControl,
1167
- NEW_SESSION_PERMISSION_MODE_PICKER_ID,
1168
- (_action, _options, scopedInstantiationService) => {
1169
- const {
1170
- session
1171
- } = scopedInstantiationService.invokeFunction(accessor => accessor.get(ISessionContext));
1172
- return ( new PickerActionViewItem(
1173
- scopedInstantiationService.createInstance(AgentHostClaudePermissionModePicker, session)
1174
- ));
1175
- }
1176
- ));
1177
- this._register(actionViewItemService.register(
1178
- Menus.NewSessionControl,
1179
- NEW_SESSION_CODEX_APPROVALS_PICKER_ID,
1180
- (_action, _options, scopedInstantiationService) => {
1181
- const {
1182
- session
1183
- } = scopedInstantiationService.invokeFunction(accessor => accessor.get(ISessionContext));
1184
- return ( new PickerActionViewItem(
1185
- scopedInstantiationService.createInstance(AgentHostCodexApprovalsPicker, session)
1186
- ));
1187
- }
1188
- ));
1189
- this._register(actionViewItemService.register(
1190
- MenuId.ChatInputSecondary,
1191
- RUNNING_SESSION_CONFIG_PICKER_ID,
1192
- this._createRunningSessionPermissionPickerFactory()
1193
- ));
1194
- this._register(actionViewItemService.register(
1195
- MenuId.ChatInputSecondary,
1196
- RUNNING_SESSION_PERMISSION_MODE_PICKER_ID,
1197
- (_action, _options, scopedInstantiationService) => {
1198
- const {
1199
- session
1200
- } = scopedInstantiationService.invokeFunction(accessor => accessor.get(ISessionContext));
1201
- return ( new PickerActionViewItem(
1202
- scopedInstantiationService.createInstance(AgentHostClaudePermissionModePicker, session)
1203
- ));
1204
- }
1205
- ));
1206
- this._register(actionViewItemService.register(
1207
- MenuId.ChatInputSecondary,
1208
- RUNNING_SESSION_CODEX_APPROVALS_PICKER_ID,
1209
- (_action, _options, scopedInstantiationService) => {
1210
- const {
1211
- session
1212
- } = scopedInstantiationService.invokeFunction(accessor => accessor.get(ISessionContext));
1213
- return ( new PickerActionViewItem(
1214
- scopedInstantiationService.createInstance(AgentHostCodexApprovalsPicker, session)
1215
- ));
1216
- }
1217
- ));
1218
- }
1219
- _createNewSessionPermissionPicker(instantiationService) {
1220
- const {
1221
- session
1222
- } = instantiationService.invokeFunction(accessor => accessor.get(ISessionContext));
1223
- const delegate = instantiationService.createInstance(AgentHostPermissionPickerDelegate, session);
1224
- const picker = instantiationService.createInstance(MobilePermissionPicker, delegate);
1225
- return ( new PickerActionViewItem(picker, delegate));
1226
- }
1227
- _createRunningSessionPermissionPickerFactory() {
1228
- return (action, _options, instantiationService) => {
1229
- if (!(action instanceof MenuItemAction)) {
1230
- return undefined;
1231
- }
1232
- const {
1233
- session
1234
- } = instantiationService.invokeFunction(accessor => accessor.get(ISessionContext));
1235
- const pickerOptions = {
1236
- compact: observableValue(action, false),
1237
- listOptions: {
1238
- minWidth: 255
1239
- }
1240
- };
1241
- return instantiationService.createInstance(AgentHostPermissionPickerActionItem, action, pickerOptions, session);
1242
- };
1243
- }
1244
- };
1245
- AgentHostSessionConfigPickerContribution = ( __decorate([( __param(0, IActionViewItemService)), ( __param(1, IWorkbenchLayoutService))], AgentHostSessionConfigPickerContribution));
1246
- const NEW_SESSION_APPROVE_PICKER_ID = "sessions.agentHost.newSessionApprovePicker";
1247
- registerAction2(class extends Action2 {
1248
- constructor() {
1249
- super({
1250
- id: NEW_SESSION_APPROVE_PICKER_ID,
1251
- title: ( localize2(4244, "Session Approvals")),
1252
- f1: false,
1253
- menu: [{
1254
- id: Menus.NewSessionControl,
1255
- group: "navigation",
1256
- order: 1,
1257
- when: ( ContextKeyExpr.or(IsActiveSessionLocalAgentHost, IsActiveSessionRemoteAgentHost))
1258
- }]
1259
- });
1260
- }
1261
- async run() {}
1262
- });
1263
- const NEW_SESSION_PERMISSION_MODE_PICKER_ID = "sessions.agentHost.newSessionPermissionModePicker";
1264
- registerAction2(class extends Action2 {
1265
- constructor() {
1266
- super({
1267
- id: NEW_SESSION_PERMISSION_MODE_PICKER_ID,
1268
- title: ( localize2(4245, "Approvals")),
1269
- f1: false,
1270
- menu: [{
1271
- id: Menus.NewSessionControl,
1272
- group: "navigation",
1273
- order: 2,
1274
- when: ( ContextKeyExpr.or(IsActiveSessionLocalAgentHost, IsActiveSessionRemoteAgentHost))
1275
- }]
1276
- });
1277
- }
1278
- async run() {}
1279
- });
1280
- const NEW_SESSION_CODEX_APPROVALS_PICKER_ID = "sessions.agentHost.newSessionCodexApprovalsPicker";
1281
- registerAction2(class extends Action2 {
1282
- constructor() {
1283
- super({
1284
- id: NEW_SESSION_CODEX_APPROVALS_PICKER_ID,
1285
- title: ( localize2(4246, "Approvals")),
1286
- f1: false,
1287
- menu: [{
1288
- id: Menus.NewSessionControl,
1289
- group: "navigation",
1290
- order: 3,
1291
- when: ( ContextKeyExpr.or(IsActiveSessionLocalAgentHost, IsActiveSessionRemoteAgentHost))
1292
- }]
1293
- });
1294
- }
1295
- async run() {}
1296
- });
1297
- const NEW_SESSION_MODE_PICKER_ID = "sessions.agentHost.newSessionModePicker";
1298
- registerAction2(class extends Action2 {
1299
- constructor() {
1300
- super({
1301
- id: NEW_SESSION_MODE_PICKER_ID,
1302
- title: ( localize2(4247, "Agent Mode")),
1303
- f1: false,
1304
- menu: [{
1305
- id: Menus.NewSessionControl,
1306
- group: "navigation",
1307
- order: 0,
1308
- when: ( ContextKeyExpr.and(( ContextKeyExpr.or(IsActiveSessionLocalAgentHost, IsActiveSessionRemoteAgentHost)), ( IsPhoneLayoutContext.negate())))
1309
- }]
1310
- });
1311
- }
1312
- async run() {}
1313
- });
1314
- const RUNNING_SESSION_CONFIG_PICKER_ID = "sessions.agentHost.runningSessionConfigPicker";
1315
- registerAction2(class extends Action2 {
1316
- constructor() {
1317
- super({
1318
- id: RUNNING_SESSION_CONFIG_PICKER_ID,
1319
- title: ( localize2(4248, "Session Approvals")),
1320
- f1: false,
1321
- menu: [{
1322
- id: MenuId.ChatInputSecondary,
1323
- group: "navigation",
1324
- order: 10,
1325
- when: ChatContextKeyExprs.isAgentHostSession
1326
- }]
1327
- });
1328
- }
1329
- async run() {}
1330
- });
1331
- const RUNNING_SESSION_PERMISSION_MODE_PICKER_ID = "sessions.agentHost.runningSessionPermissionModePicker";
1332
- registerAction2(class extends Action2 {
1333
- constructor() {
1334
- super({
1335
- id: RUNNING_SESSION_PERMISSION_MODE_PICKER_ID,
1336
- title: ( localize2(4249, "Approvals")),
1337
- f1: false,
1338
- menu: [{
1339
- id: MenuId.ChatInputSecondary,
1340
- group: "navigation",
1341
- order: 11,
1342
- when: ChatContextKeyExprs.isAgentHostSession
1343
- }]
1344
- });
1345
- }
1346
- async run() {}
1347
- });
1348
- const RUNNING_SESSION_CODEX_APPROVALS_PICKER_ID = "sessions.agentHost.runningSessionCodexApprovalsPicker";
1349
- registerAction2(class extends Action2 {
1350
- constructor() {
1351
- super({
1352
- id: RUNNING_SESSION_CODEX_APPROVALS_PICKER_ID,
1353
- title: ( localize2(4250, "Approvals")),
1354
- f1: false,
1355
- menu: [{
1356
- id: MenuId.ChatInputSecondary,
1357
- group: "navigation",
1358
- order: 12,
1359
- when: ChatContextKeyExprs.isAgentHostSession
1360
- }]
1361
- });
1362
- }
1363
- async run() {}
1364
- });
1365
- const RUNNING_SESSION_MODE_PICKER_ID = "sessions.agentHost.runningSessionModePicker";
1366
- registerAction2(class extends Action2 {
1367
- constructor() {
1368
- super({
1369
- id: RUNNING_SESSION_MODE_PICKER_ID,
1370
- title: ( localize2(4251, "Agent Mode")),
1371
- f1: false,
1372
- menu: [{
1373
- id: MenuId.ChatInputSecondary,
1374
- group: "navigation",
1375
- order: 9,
1376
- when: ( ContextKeyExpr.and(ChatContextKeyExprs.isAgentHostSession, ( ChatContextKeys.hasPendingDelegationTarget.negate())))
1377
- }]
1378
- });
1379
- }
1380
- async run(accessor) {
1381
- showActiveSessionModePicker(accessor);
1382
- }
1383
- });
1384
- registerWorkbenchContribution2(
1385
- AgentHostSessionConfigPickerContribution.ID,
1386
- AgentHostSessionConfigPickerContribution,
1387
- WorkbenchPhase.AfterRestored
1388
- );
1389
-
1390
- export { AgentHostSessionConfigPicker, PickerActionViewItem, getConfigIcon };