@codingame/monaco-vscode-workbench-service-override 37.6.1 → 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 (323) 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 +10 -10
  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 -77
  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.js +1 -1
  281. package/vscode/src/vs/workbench/browser/workbench.d.ts +0 -2
  282. package/vscode/src/vs/workbench/browser/workbench.js +23 -20
  283. package/vscode/src/vs/workbench/contrib/chat/common/automations/schedule.d.ts +6 -0
  284. package/vscode/src/vs/workbench/contrib/chat/common/automations/schedule.js +41 -0
  285. package/vscode/src/vs/workbench/contrib/chat/common/chatUsage.d.ts +15 -0
  286. package/vscode/src/vs/workbench/contrib/chat/common/chatUsage.js +56 -0
  287. package/vscode/src/vs/platform/agentHost/common/meta/agentCheckoutOperationMeta.d.ts +0 -18
  288. package/vscode/src/vs/platform/agentHost/common/meta/agentCheckoutOperationMeta.js +0 -27
  289. package/vscode/src/vs/sessions/browser/parts/singlePaneAuxiliaryBarPart.js +0 -36
  290. package/vscode/src/vs/sessions/contrib/automations/browser/automationLeaderElection.d.ts +0 -37
  291. package/vscode/src/vs/sessions/contrib/automations/browser/automationLeaderElection.js +0 -126
  292. package/vscode/src/vs/sessions/contrib/automations/browser/automationScheduler.d.ts +0 -59
  293. package/vscode/src/vs/sessions/contrib/automations/browser/automationScheduler.js +0 -232
  294. package/vscode/src/vs/sessions/contrib/automations/browser/automationStorageService.d.ts +0 -13
  295. package/vscode/src/vs/sessions/contrib/automations/browser/automationStorageService.js +0 -22
  296. package/vscode/src/vs/sessions/contrib/blockedSessions/browser/blockedSessions.d.ts +0 -45
  297. package/vscode/src/vs/sessions/contrib/blockedSessions/browser/blockedSessions.js +0 -110
  298. package/vscode/src/vs/sessions/contrib/layout/browser/desktopSessionLayoutController.d.ts +0 -112
  299. package/vscode/src/vs/sessions/contrib/layout/browser/desktopSessionLayoutController.js +0 -444
  300. package/vscode/src/vs/sessions/contrib/layout/browser/singlePane/singlePaneSharedHelpers.js +0 -43
  301. package/vscode/src/vs/sessions/contrib/layout/browser/singlePaneLayoutController.d.ts +0 -55
  302. package/vscode/src/vs/sessions/contrib/layout/browser/singlePaneLayoutController.js +0 -91
  303. package/vscode/src/vs/sessions/contrib/providers/agentHost/browser/agentHostClaudePermissionModePicker.d.ts +0 -26
  304. package/vscode/src/vs/sessions/contrib/providers/agentHost/browser/agentHostClaudePermissionModePicker.js +0 -98
  305. package/vscode/src/vs/sessions/contrib/providers/agentHost/browser/agentHostCodexApprovalsPicker.d.ts +0 -33
  306. package/vscode/src/vs/sessions/contrib/providers/agentHost/browser/agentHostCodexApprovalsPicker.js +0 -98
  307. package/vscode/src/vs/sessions/contrib/providers/agentHost/browser/agentHostModeIcon.d.ts +0 -2
  308. package/vscode/src/vs/sessions/contrib/providers/agentHost/browser/agentHostModeIcon.js +0 -13
  309. package/vscode/src/vs/sessions/contrib/providers/agentHost/browser/agentHostModePicker.d.ts +0 -122
  310. package/vscode/src/vs/sessions/contrib/providers/agentHost/browser/agentHostModePicker.js +0 -464
  311. package/vscode/src/vs/sessions/contrib/providers/agentHost/browser/agentHostPermissionPickerActionItem.d.ts +0 -35
  312. package/vscode/src/vs/sessions/contrib/providers/agentHost/browser/agentHostPermissionPickerActionItem.js +0 -90
  313. package/vscode/src/vs/sessions/contrib/providers/agentHost/browser/agentHostPermissionPickerDelegate.d.ts +0 -84
  314. package/vscode/src/vs/sessions/contrib/providers/agentHost/browser/agentHostPermissionPickerDelegate.js +0 -328
  315. package/vscode/src/vs/sessions/contrib/providers/agentHost/browser/agentHostSessionConfigPicker.d.ts +0 -174
  316. package/vscode/src/vs/sessions/contrib/providers/agentHost/browser/agentHostSessionConfigPicker.js +0 -1390
  317. package/vscode/src/vs/sessions/contrib/providers/agentHost/browser/media/agentHostSessionConfigPicker.css +0 -44
  318. package/vscode/src/vs/sessions/contrib/providers/agentHost/browser/mobile/mobileAgentHostModePicker.d.ts +0 -30
  319. package/vscode/src/vs/sessions/contrib/providers/agentHost/browser/mobile/mobileAgentHostModePicker.js +0 -78
  320. package/vscode/src/vs/sessions/contrib/providers/agentHost/browser/mobile/mobileChatPhoneInputTarget.d.ts +0 -11
  321. package/vscode/src/vs/sessions/contrib/providers/agentHost/browser/mobile/mobileChatPhoneInputTarget.js +0 -26
  322. package/vscode/src/vs/sessions/contrib/providers/remoteAgentHost/browser/remoteAgentHostConnectionCustomization.d.ts +0 -27
  323. package/vscode/src/vs/sessions/contrib/providers/remoteAgentHost/browser/remoteAgentHostConnectionCustomization.js +0 -26
@@ -4,10 +4,13 @@ import { IObservable } from "@codingame/monaco-vscode-api/vscode/vs/base/common/
4
4
  import { IInstantiationService } from "@codingame/monaco-vscode-api/vscode/vs/platform/instantiation/common/instantiation";
5
5
  import { ILogService } from "@codingame/monaco-vscode-api/vscode/vs/platform/log/common/log.service";
6
6
  import { IProductService } from "@codingame/monaco-vscode-api/vscode/vs/platform/product/common/productService.service";
7
+ import { IStorageService } from "@codingame/monaco-vscode-api/vscode/vs/platform/storage/common/storage.service";
7
8
  import { AgentSessionApprovalModel } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/browser/agentSessions/agentSessionApprovalModel";
9
+ import { IAgentHostFilterService } from "@codingame/monaco-vscode-api/vscode/vs/sessions/services/agentHostFilter/common/agentHostFilter.service";
8
10
  import { ISessionsService } from "@codingame/monaco-vscode-api/vscode/vs/sessions/services/sessions/browser/sessionsService.service";
9
11
  import { ISession } from "@codingame/monaco-vscode-api/vscode/vs/sessions/services/sessions/common/session";
10
- import { BlockedSessions, IBlockedSession } from "../../blockedSessions/browser/blockedSessions.js";
12
+ import { ISessionsManagementService } from "@codingame/monaco-vscode-api/vscode/vs/sessions/services/sessions/common/sessionsManagement.service";
13
+ import { BlockedSessions, IBlockedSession } from "@codingame/monaco-vscode-api/vscode/vs/sessions/contrib/blockedSessions/browser/blockedSessions";
11
14
  import { BlockedSessionsCIFixModel } from "./blockedSessionsCIFixModel.js";
12
15
  import { IApprovedSession } from "@codingame/monaco-vscode-api/vscode/vs/sessions/contrib/sessions/browser/views/sessionsList";
13
16
  /**
@@ -42,6 +45,7 @@ export declare enum RequiresInputKind {
42
45
  export declare class BlockedSessionsIndicatorModel extends Disposable {
43
46
  private readonly _sessionsService;
44
47
  private readonly _logService;
48
+ private readonly _storageService;
45
49
  /** Computes the raw set of blocked sessions (needs input / failing CI). */
46
50
  private readonly _blockedSessionsModel;
47
51
  /** Tracks pending tool approvals per chat; distinguishes terminal vs question. */
@@ -52,10 +56,12 @@ export declare class BlockedSessionsIndicatorModel extends Disposable {
52
56
  private readonly _ciFixModel;
53
57
  /** The CI-fix model, shared with the dropdown list so the fix action and the hide-while-fixing agree. */
54
58
  get ciFixModel(): BlockedSessionsCIFixModel;
55
- /** Current blocked occurrences the user has already acknowledged, keyed by session id. */
59
+ /** Acknowledged occurrences by session id, in acknowledgement order; the latest 50 survive reloads. */
56
60
  private readonly _ignoredBlockOccurrences;
61
+ private _storedIgnoredOccurrences;
62
+ private _writingIgnoredOccurrences;
57
63
  /**
58
- * Blocked sessions that are not visible, ignored, being fixed, or already approved.
64
+ * Blocked sessions in the selected host scope that are not visible, ignored, being fixed, or already approved.
59
65
  * Visible blocked occurrences stay acknowledged after the user navigates away.
60
66
  */
61
67
  readonly blockedSessions: IObservable<readonly IBlockedSession[]>;
@@ -81,7 +87,7 @@ export declare class BlockedSessionsIndicatorModel extends Disposable {
81
87
  * call {@link consumePendingBlink}.
82
88
  */
83
89
  readonly onDidRequestBlink: Event<void>;
84
- constructor(approvalModel: AgentSessionApprovalModel | undefined, blockedSessions: BlockedSessions | undefined, ciFixModel: BlockedSessionsCIFixModel | undefined, _sessionsService: ISessionsService, instantiationService: IInstantiationService, productService: IProductService, _logService: ILogService);
90
+ constructor(approvalModel: AgentSessionApprovalModel | undefined, blockedSessions: BlockedSessions | undefined, ciFixModel: BlockedSessionsCIFixModel | undefined, _sessionsService: ISessionsService, instantiationService: IInstantiationService, productService: IProductService, _logService: ILogService, _storageService: IStorageService, sessionsManagementService: ISessionsManagementService, agentHostFilterService: IAgentHostFilterService);
85
91
  /**
86
92
  * Whether a fresh attention blink is pending. Returns `true` only when a session
87
93
  * queued as newly blocked is still in the surfaced (visible-filtered) blocked set,
@@ -105,6 +111,9 @@ export declare class BlockedSessionsIndicatorModel extends Disposable {
105
111
  * falls back to the generic "N sessions require input".
106
112
  */
107
113
  getRequiresInputLabel(count: number, kind: RequiresInputKind | undefined): string;
114
+ private _loadIgnoredOccurrences;
115
+ private _setIgnoredOccurrences;
116
+ private _storeIgnoredOccurrences;
108
117
  private _ignoreOccurrence;
109
118
  private _isBlockIgnored;
110
119
  private _getBlockOccurrenceId;
@@ -7,16 +7,24 @@ import { localize } from '@codingame/monaco-vscode-api/vscode/vs/nls';
7
7
  import { IInstantiationService } from '@codingame/monaco-vscode-api/vscode/vs/platform/instantiation/common/instantiation';
8
8
  import { ILogService } from '@codingame/monaco-vscode-api/vscode/vs/platform/log/common/log.service';
9
9
  import { IProductService } from '@codingame/monaco-vscode-api/vscode/vs/platform/product/common/productService.service';
10
+ import { StorageScope, StorageTarget } from '@codingame/monaco-vscode-api/vscode/vs/platform/storage/common/storage';
11
+ import { IStorageService } from '@codingame/monaco-vscode-api/vscode/vs/platform/storage/common/storage.service';
10
12
  import { AgentSessionApprovalModel, agentSessionApprovalId, AgentSessionApprovalKind } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/browser/agentSessions/agentSessionApprovalModel';
13
+ import { IAgentHostFilterService } from '@codingame/monaco-vscode-api/vscode/vs/sessions/services/agentHostFilter/common/agentHostFilter.service';
11
14
  import { ISessionsService } from '@codingame/monaco-vscode-api/vscode/vs/sessions/services/sessions/browser/sessionsService.service';
12
- import { BlockedSessions, BlockedSessionReason, describeBlockedSessions } from '../../blockedSessions/browser/blockedSessions.js';
15
+ import { SessionStatus } from '@codingame/monaco-vscode-api/vscode/vs/sessions/services/sessions/common/session';
16
+ import { ISessionsManagementService } from '@codingame/monaco-vscode-api/vscode/vs/sessions/services/sessions/common/sessionsManagement.service';
17
+ import { BlockedSessions, BlockedSessionReason, describeBlockedSessions } from '@codingame/monaco-vscode-api/vscode/vs/sessions/contrib/blockedSessions/browser/blockedSessions';
13
18
  import { BlockedSessionsCIFixModel } from './blockedSessionsCIFixModel.js';
14
19
  import { getFirstApprovalAcrossChats } from '@codingame/monaco-vscode-api/vscode/vs/sessions/contrib/sessions/browser/views/sessionsList';
15
20
  import { observableValue } from '@codingame/monaco-vscode-api/vscode/vs/base/common/observableInternal/observables/observableValue';
21
+ import { observableFromEvent } from '@codingame/monaco-vscode-api/vscode/vs/base/common/observableInternal/observables/observableFromEvent';
16
22
  import { derived } from '@codingame/monaco-vscode-api/vscode/vs/base/common/observableInternal/observables/derived';
17
23
  import { autorun } from '@codingame/monaco-vscode-api/vscode/vs/base/common/observableInternal/reactions/autorun';
18
24
 
19
25
  const LOG_PREFIX = "[BlockedSessionsIndicator]";
26
+ const IGNORED_OCCURRENCES_STORAGE_KEY = "sessions.blockedIndicator.ignoredOccurrences";
27
+ const MAX_STORED_IGNORED_SESSIONS = 50;
20
28
  var RequiresInputKind;
21
29
  (function(RequiresInputKind) {
22
30
  RequiresInputKind[RequiresInputKind["TerminalApproval"] = 0] = "TerminalApproval";
@@ -37,12 +45,18 @@ let BlockedSessionsIndicatorModel = class BlockedSessionsIndicatorModel extends
37
45
  _sessionsService,
38
46
  instantiationService,
39
47
  productService,
40
- _logService
48
+ _logService,
49
+ _storageService,
50
+ sessionsManagementService,
51
+ agentHostFilterService
41
52
  ) {
42
53
  super();
43
54
  this._sessionsService = _sessionsService;
44
55
  this._logService = _logService;
56
+ this._storageService = _storageService;
45
57
  this._ignoredBlockOccurrences = observableValue("ignoredBlockOccurrences", ( new Map()));
58
+ this._storedIgnoredOccurrences = ( new Map());
59
+ this._writingIgnoredOccurrences = false;
46
60
  this._lastBlockedOccurrences = ( new Map());
47
61
  this._pendingBlinkOccurrences = ( new Map());
48
62
  this._onDidRequestBlink = this._register(( new Emitter()));
@@ -51,14 +65,36 @@ let BlockedSessionsIndicatorModel = class BlockedSessionsIndicatorModel extends
51
65
  this._blockedSessionsModel = blockedSessions ?? this._register(instantiationService.createInstance(BlockedSessions));
52
66
  this._ciFixModel = ciFixModel ?? this._register(instantiationService.createInstance(BlockedSessionsCIFixModel));
53
67
  const enabled = productService.quality !== "stable";
68
+ this._storedIgnoredOccurrences = this._loadIgnoredOccurrences();
69
+ this._ignoredBlockOccurrences.set(this._storedIgnoredOccurrences, undefined);
70
+ if (enabled) {
71
+ this._storeIgnoredOccurrences(this._storedIgnoredOccurrences);
72
+ this._register(
73
+ this._storageService.onDidChangeValue(StorageScope.PROFILE, IGNORED_OCCURRENCES_STORAGE_KEY, this._store)(() => {
74
+ if (!this._writingIgnoredOccurrences) {
75
+ this._storedIgnoredOccurrences = this._loadIgnoredOccurrences();
76
+ this._ignoredBlockOccurrences.set(this._storedIgnoredOccurrences, undefined);
77
+ }
78
+ })
79
+ );
80
+ }
81
+ const allSessions = observableFromEvent(
82
+ this,
83
+ sessionsManagementService.onDidChangeSessions,
84
+ () => sessionsManagementService.getSessions()
85
+ );
86
+ const scopedProviderIds = observableFromEvent(
87
+ this,
88
+ agentHostFilterService.onDidChange,
89
+ () => agentHostFilterService.selectedHost?.providerIds
90
+ );
54
91
  this._logService.trace(`${LOG_PREFIX} created (enabled: ${enabled})`);
55
- this._register(toDisposable(() => this._logService.trace(
56
- `${LOG_PREFIX} disposed, discarding ${this._ignoredBlockOccurrences.get().size} acknowledged occurrence(s)`
57
- )));
92
+ this._register(toDisposable(() => this._logService.trace(`${LOG_PREFIX} disposed`)));
58
93
  this.blockedSessions = derived(this, reader => {
59
94
  if (!enabled) {
60
95
  return [];
61
96
  }
97
+ const providerIds = scopedProviderIds.read(reader);
62
98
  const visibleSessionIds = ( new Set());
63
99
  for (const session of this._sessionsService.visibleSessions.read(reader)) {
64
100
  if (session) {
@@ -67,7 +103,9 @@ let BlockedSessionsIndicatorModel = class BlockedSessionsIndicatorModel extends
67
103
  }
68
104
  const ignoredOccurrences = this._ignoredBlockOccurrences.read(reader);
69
105
  const ciFixHidden = this._ciFixModel.hiddenSessions.read(reader);
70
- return this._blockedSessionsModel.blockedSessionsWithReasons.read(reader).filter(blocked => !( visibleSessionIds.has(blocked.session.sessionId)) && !( ciFixHidden.has(blocked.session.sessionId)) && !this._isBlockIgnored(blocked, ignoredOccurrences, reader));
106
+ return this._blockedSessionsModel.blockedSessionsWithReasons.read(reader).filter(
107
+ blocked => (!providerIds || providerIds.includes(blocked.session.providerId)) && !( visibleSessionIds.has(blocked.session.sessionId)) && !( ciFixHidden.has(blocked.session.sessionId)) && !this._isBlockIgnored(blocked, ignoredOccurrences, reader)
108
+ );
71
109
  });
72
110
  this.requiresInputKind = derived(this, reader => {
73
111
  const blocked = this.blockedSessions.read(reader);
@@ -90,6 +128,7 @@ let BlockedSessionsIndicatorModel = class BlockedSessionsIndicatorModel extends
90
128
  }
91
129
  return common;
92
130
  });
131
+ let observedInputSessions = ( new Map());
93
132
  this._register(autorun(reader => {
94
133
  if (!enabled) {
95
134
  return;
@@ -100,9 +139,25 @@ let BlockedSessionsIndicatorModel = class BlockedSessionsIndicatorModel extends
100
139
  this._sessionsService.visibleSessions.read(reader).filter(session => session !== undefined).map(session => session.sessionId)
101
140
  ));
102
141
  const ignoredOccurrences = this._ignoredBlockOccurrences.read(reader);
142
+ const sessionsById = ( new Map(
143
+ ignoredOccurrences.size > 0 ? allSessions.read(reader).map(session => [session.sessionId, session]) : []
144
+ ));
103
145
  const next = ( new Map(ignoredOccurrences));
146
+ const nextObservedInputSessions = ( new Map());
104
147
  let changed = false;
105
148
  for (const [sessionId, acknowledged] of ignoredOccurrences) {
149
+ const session = sessionsById.get(sessionId);
150
+ if (session?.isArchived.read(reader)) {
151
+ next.delete(sessionId);
152
+ changed = true;
153
+ this._logService.trace(`${LOG_PREFIX} releasing acknowledgement of ${sessionId}: archived`);
154
+ continue;
155
+ }
156
+ const connectionStatus = session?.remoteConnectionStatus?.read(reader);
157
+ const connected = !connectionStatus || connectionStatus.kind === "connected";
158
+ if (session && connected && (session.status.read(reader) === SessionStatus.NeedsInput || observedInputSessions.get(sessionId) === session)) {
159
+ nextObservedInputSessions.set(sessionId, session);
160
+ }
106
161
  const blockedSession = blockedById.get(sessionId);
107
162
  if (blockedSession) {
108
163
  const occurrenceId = this._getBlockOccurrenceId(blockedSession, reader, acknowledged.occurrenceId);
@@ -115,6 +170,9 @@ let BlockedSessionsIndicatorModel = class BlockedSessionsIndicatorModel extends
115
170
  }
116
171
  continue;
117
172
  }
173
+ if (!session || !connected || nextObservedInputSessions.get(sessionId) !== session || session.status.read(reader) === SessionStatus.NeedsInput) {
174
+ continue;
175
+ }
118
176
  if (acknowledged.reason === BlockedSessionReason.FailingCI) {
119
177
  this._logService.trace(
120
178
  `${LOG_PREFIX} keeping acknowledgement of ${sessionId} (${acknowledged.occurrenceId}) while it is not reported as blocked`
@@ -134,6 +192,7 @@ let BlockedSessionsIndicatorModel = class BlockedSessionsIndicatorModel extends
134
192
  }
135
193
  const occurrenceId = this._getBlockOccurrenceId(blockedSession, reader, next.get(sessionId)?.occurrenceId);
136
194
  if (next.get(sessionId)?.occurrenceId !== occurrenceId) {
195
+ next.delete(sessionId);
137
196
  next.set(sessionId, {
138
197
  occurrenceId,
139
198
  reason: blockedSession.reason
@@ -144,8 +203,9 @@ let BlockedSessionsIndicatorModel = class BlockedSessionsIndicatorModel extends
144
203
  );
145
204
  }
146
205
  }
206
+ observedInputSessions = nextObservedInputSessions;
147
207
  if (changed) {
148
- this._ignoredBlockOccurrences.set(next, undefined);
208
+ this._setIgnoredOccurrences(next);
149
209
  }
150
210
  }));
151
211
  this._register(autorun(reader => {
@@ -163,14 +223,11 @@ let BlockedSessionsIndicatorModel = class BlockedSessionsIndicatorModel extends
163
223
  ));
164
224
  const previousOccurrences = this._lastBlockedOccurrences;
165
225
  this._lastBlockedOccurrences = currentOccurrences;
166
- const visibleSessionIds = ( new Set());
167
- for (const session of this._sessionsService.visibleSessions.read(reader)) {
168
- if (session) {
169
- visibleSessionIds.add(session.sessionId);
170
- }
171
- }
226
+ const surfacedSessionIds = ( new Set(
227
+ this.blockedSessions.read(reader).map(blocked => blocked.session.sessionId)
228
+ ));
172
229
  for (const [sessionId, occurrenceId] of this._pendingBlinkOccurrences) {
173
- if (currentOccurrences.get(sessionId) !== occurrenceId || ( visibleSessionIds.has(sessionId))) {
230
+ if (currentOccurrences.get(sessionId) !== occurrenceId || !( surfacedSessionIds.has(sessionId))) {
174
231
  this._pendingBlinkOccurrences.delete(sessionId);
175
232
  }
176
233
  }
@@ -178,7 +235,7 @@ let BlockedSessionsIndicatorModel = class BlockedSessionsIndicatorModel extends
178
235
  for (const blocked of modelBlocked) {
179
236
  const sessionId = blocked.session.sessionId;
180
237
  const occurrenceId = currentOccurrences.get(sessionId);
181
- if (previousOccurrences.get(sessionId) !== occurrenceId && !( visibleSessionIds.has(sessionId))) {
238
+ if (previousOccurrences.get(sessionId) !== occurrenceId && ( surfacedSessionIds.has(sessionId))) {
182
239
  this._pendingBlinkOccurrences.set(sessionId, occurrenceId);
183
240
  queued = true;
184
241
  this._logService.trace(`${LOG_PREFIX} queued attention blink for ${sessionId} (${occurrenceId})`);
@@ -240,13 +297,14 @@ let BlockedSessionsIndicatorModel = class BlockedSessionsIndicatorModel extends
240
297
  for (const blocked of blockedSessions) {
241
298
  const sessionId = blocked.session.sessionId;
242
299
  const occurrenceId = this._getBlockOccurrenceId(blocked, undefined, next.get(sessionId)?.occurrenceId);
300
+ next.delete(sessionId);
243
301
  next.set(sessionId, {
244
302
  occurrenceId,
245
303
  reason: blocked.reason
246
304
  });
247
305
  this._logService.trace(`${LOG_PREFIX} ignoring ${sessionId} (${occurrenceId}): ignore all`);
248
306
  }
249
- this._ignoredBlockOccurrences.set(next, undefined);
307
+ this._setIgnoredOccurrences(next);
250
308
  }
251
309
  dismissApproval(approved) {
252
310
  const blocked = this._blockedSessionsModel.blockedSessionsWithReasons.get().find(entry => entry.session.sessionId === approved.session.sessionId);
@@ -258,22 +316,97 @@ let BlockedSessionsIndicatorModel = class BlockedSessionsIndicatorModel extends
258
316
  getRequiresInputLabel(count, kind) {
259
317
  switch (kind) {
260
318
  case RequiresInputKind.TerminalApproval:
261
- return count === 1 ? ( localize(4616, "1 session requires terminal approval")) : ( localize(4617, "{0} sessions require terminal approval", count));
319
+ return count === 1 ? ( localize(5749, "1 session requires terminal approval")) : ( localize(5750, "{0} sessions require terminal approval", count));
262
320
  case RequiresInputKind.Question:
263
- return count === 1 ? ( localize(4618, "1 session has a question")) : ( localize(4619, "{0} sessions have questions", count));
321
+ return count === 1 ? ( localize(5751, "1 session has a question")) : ( localize(5752, "{0} sessions have questions", count));
264
322
  case RequiresInputKind.FailingCI:
265
- return count === 1 ? ( localize(4620, "1 session is failing CI")) : ( localize(4621, "{0} sessions are failing CI", count));
323
+ return count === 1 ? ( localize(5753, "1 session is failing CI")) : ( localize(5754, "{0} sessions are failing CI", count));
266
324
  default:
267
- return count === 1 ? ( localize(4622, "1 session requires input")) : ( localize(4623, "{0} sessions require input", count));
325
+ return count === 1 ? ( localize(5755, "1 session requires input")) : ( localize(5756, "{0} sessions require input", count));
326
+ }
327
+ }
328
+ _loadIgnoredOccurrences() {
329
+ const raw = this._storageService.get(IGNORED_OCCURRENCES_STORAGE_KEY, StorageScope.PROFILE);
330
+ if (raw === undefined) {
331
+ return ( new Map());
332
+ }
333
+ try {
334
+ const parsed = JSON.parse(raw);
335
+ if (!Array.isArray(parsed)) {
336
+ throw ( new Error("Expected an array of ignored blocked occurrences"));
337
+ }
338
+ const occurrences = ( new Map());
339
+ const entries = parsed;
340
+ for (const entry of entries) {
341
+ if (!Array.isArray(entry) || entry.length !== 2 || typeof entry[0] !== "string") {
342
+ throw ( new Error("Invalid ignored blocked occurrence"));
343
+ }
344
+ const occurrence = entry[1];
345
+ if (!occurrence || typeof occurrence !== "object" || typeof occurrence.occurrenceId !== "string" || (occurrence.reason !== BlockedSessionReason.NeedsInput && occurrence.reason !== BlockedSessionReason.FailingCI)) {
346
+ throw ( new Error("Invalid ignored blocked occurrence"));
347
+ }
348
+ occurrences.delete(entry[0]);
349
+ occurrences.set(entry[0], {
350
+ occurrenceId: occurrence.occurrenceId,
351
+ reason: occurrence.reason
352
+ });
353
+ }
354
+ return ( new Map([...occurrences].slice(-MAX_STORED_IGNORED_SESSIONS)));
355
+ } catch (error) {
356
+ this._logService.warn(`${LOG_PREFIX} Failed to load ignored occurrences`, error);
357
+ return ( new Map());
358
+ }
359
+ }
360
+ _setIgnoredOccurrences(next) {
361
+ const previous = this._ignoredBlockOccurrences.get();
362
+ const stored = ( new Map(this._loadIgnoredOccurrences()));
363
+ for (const [sessionId, occurrence] of previous) {
364
+ if (!( next.has(sessionId)) && stored.get(sessionId)?.occurrenceId === occurrence.occurrenceId) {
365
+ stored.delete(sessionId);
366
+ }
367
+ }
368
+ for (const [sessionId, occurrence] of next) {
369
+ if (occurrence !== previous.get(sessionId)) {
370
+ stored.delete(sessionId);
371
+ stored.set(sessionId, occurrence);
372
+ }
373
+ }
374
+ const reconciled = ( new Map(next));
375
+ for (const sessionId of ( this._storedIgnoredOccurrences.keys())) {
376
+ reconciled.delete(sessionId);
377
+ }
378
+ for (const [sessionId, occurrence] of stored) {
379
+ reconciled.set(sessionId, occurrence);
380
+ }
381
+ this._storeIgnoredOccurrences(stored);
382
+ this._ignoredBlockOccurrences.set(reconciled, undefined);
383
+ }
384
+ _storeIgnoredOccurrences(occurrences) {
385
+ this._storedIgnoredOccurrences = ( new Map([...occurrences].slice(-MAX_STORED_IGNORED_SESSIONS)));
386
+ this._writingIgnoredOccurrences = true;
387
+ try {
388
+ if (this._storedIgnoredOccurrences.size === 0) {
389
+ this._storageService.remove(IGNORED_OCCURRENCES_STORAGE_KEY, StorageScope.PROFILE);
390
+ } else {
391
+ this._storageService.store(
392
+ IGNORED_OCCURRENCES_STORAGE_KEY,
393
+ JSON.stringify([...this._storedIgnoredOccurrences]),
394
+ StorageScope.PROFILE,
395
+ StorageTarget.MACHINE
396
+ );
397
+ }
398
+ } finally {
399
+ this._writingIgnoredOccurrences = false;
268
400
  }
269
401
  }
270
402
  _ignoreOccurrence(blocked, occurrenceId) {
271
403
  const next = ( new Map(this._ignoredBlockOccurrences.get()));
404
+ next.delete(blocked.session.sessionId);
272
405
  next.set(blocked.session.sessionId, {
273
406
  occurrenceId,
274
407
  reason: blocked.reason
275
408
  });
276
- this._ignoredBlockOccurrences.set(next, undefined);
409
+ this._setIgnoredOccurrences(next);
277
410
  this._logService.trace(`${LOG_PREFIX} ignoring ${blocked.session.sessionId} (${occurrenceId})`);
278
411
  }
279
412
  _isBlockIgnored(blocked, ignoredOccurrences, reader) {
@@ -315,6 +448,6 @@ let BlockedSessionsIndicatorModel = class BlockedSessionsIndicatorModel extends
315
448
  }
316
449
  }
317
450
  };
318
- BlockedSessionsIndicatorModel = ( __decorate([( __param(3, ISessionsService)), ( __param(4, IInstantiationService)), ( __param(5, IProductService)), ( __param(6, ILogService))], BlockedSessionsIndicatorModel));
451
+ BlockedSessionsIndicatorModel = ( __decorate([( __param(3, ISessionsService)), ( __param(4, IInstantiationService)), ( __param(5, IProductService)), ( __param(6, ILogService)), ( __param(7, IStorageService)), ( __param(8, ISessionsManagementService)), ( __param(9, IAgentHostFilterService))], BlockedSessionsIndicatorModel));
319
452
 
320
453
  export { BlockedSessionsIndicatorModel, RequiresInputKind };
@@ -23,7 +23,7 @@ function registerBlockedSessionsItemActions() {
23
23
  return combinedDisposable(MenuRegistry.appendMenuItem(Menus.BlockedSessionsItem, {
24
24
  command: {
25
25
  id: IGNORE_INPUT_NEEDED_COMMAND_ID,
26
- title: ( localize(4624, "Ignore Input Needed")),
26
+ title: ( localize(5757, "Ignore Needs Attention Alert")),
27
27
  icon: Codicon.bellSlash
28
28
  },
29
29
  group: "navigation",
@@ -32,7 +32,7 @@ function registerBlockedSessionsItemActions() {
32
32
  }), MenuRegistry.appendMenuItem(Menus.BlockedSessionsItem, {
33
33
  command: {
34
34
  id: IGNORE_CI_FAILURE_COMMAND_ID,
35
- title: ( localize(4625, "Ignore CI Failure")),
35
+ title: ( localize(5758, "Ignore CI Failure")),
36
36
  icon: Codicon.bellSlash
37
37
  },
38
38
  group: "navigation",
@@ -54,7 +54,7 @@ let BlockedSessionsList = class BlockedSessionsList extends Disposable {
54
54
  const element = append(container, $(".agent-sessions-blocked-list"));
55
55
  const header = append(element, $(".agent-sessions-blocked-list-header"));
56
56
  const title = append(header, $(".agent-sessions-blocked-list-title"));
57
- title.textContent = ( localize(4626, "Sessions requiring input"));
57
+ title.textContent = ( localize(5759, "Sessions needing attention"));
58
58
  const headerActions = append(header, $(".agent-sessions-blocked-list-header-actions"));
59
59
  this._register(
60
60
  instantiationService.createInstance(MenuWorkbenchToolBar, headerActions, Menus.BlockedSessionsHeader, {
@@ -64,7 +64,7 @@ let BlockedSessionsList = class BlockedSessionsList extends Disposable {
64
64
  showAllSessions: options.onShowAllSessions,
65
65
  ignoreAllSessions: () => {
66
66
  options.onIgnoreAllSessions();
67
- status(( localize(4627, "All current blocked sessions were ignored.")));
67
+ status(( localize(5760, "All current blocked sessions were ignored.")));
68
68
  },
69
69
  close: options.onClose
70
70
  }
@@ -84,12 +84,16 @@ let BlockedSessionsList = class BlockedSessionsList extends Disposable {
84
84
  ciFixModel: options.ciFixModel,
85
85
  approvalRowMaxLines: BLOCKED_LIST_APPROVAL_ROW_MAX_LINES,
86
86
  toolbarMenuId: Menus.BlockedSessionsItem,
87
+ toolbarTelemetrySource: "blockedSessionsList.row",
87
88
  onToolbarAction: (action, session) => {
88
89
  if (action.id !== IGNORE_INPUT_NEEDED_COMMAND_ID && action.id !== IGNORE_CI_FAILURE_COMMAND_ID) {
89
90
  return false;
90
91
  }
91
92
  options.onIgnoreSession(session);
92
- status(action.id === IGNORE_INPUT_NEEDED_COMMAND_ID ? ( localize(4628, "Input needed ignored until this session needs input again.")) : ( localize(4629, "CI failure ignored until this session has another CI failure.")));
93
+ status(action.id === IGNORE_INPUT_NEEDED_COMMAND_ID ? ( localize(
94
+ 5761,
95
+ "Needs attention alert ignored until this session needs attention again."
96
+ )) : ( localize(5762, "CI failure ignored until this session has another CI failure.")));
93
97
  return true;
94
98
  }
95
99
  })
@@ -69,6 +69,7 @@
69
69
  .automations-cards-state,
70
70
  .automations-cards-partial-state,
71
71
  .automations-templates,
72
+ .automations-history-state,
72
73
  .automations-history {
73
74
  width: 100%;
74
75
  max-width: 900px;
@@ -130,6 +131,7 @@
130
131
 
131
132
  /* Individual Card */
132
133
  .automations-card {
134
+ position: relative;
133
135
  display: flex;
134
136
  flex-direction: row;
135
137
  align-items: flex-start;
@@ -166,6 +168,7 @@
166
168
  font: inherit;
167
169
  text-align: left;
168
170
  cursor: pointer;
171
+ align-self: stretch;
169
172
  }
170
173
 
171
174
  .monaco-workbench .automations-card-main:focus {
@@ -178,24 +181,25 @@
178
181
  flex-direction: row;
179
182
  align-items: center;
180
183
  gap: 8px;
184
+ min-height: var(--vscode-spacing-size240);
185
+ padding-right: calc(2 * var(--vscode-spacing-size240) + var(--vscode-spacing-size40) + var(--vscode-spacing-size80));
181
186
  }
182
187
 
183
188
  .automations-card-name-text {
184
189
  flex: 1 1 0;
185
190
  min-width: 0;
186
- font-size: 13px;
187
- font-weight: 600;
191
+ font-size: var(--vscode-fontSize-heading3);
192
+ font-weight: var(--vscode-fontWeight-semiBold);
188
193
  color: var(--vscode-foreground);
189
194
  overflow: hidden;
190
195
  white-space: nowrap;
191
196
  text-overflow: ellipsis;
192
197
  }
193
198
 
194
- .automations-card-disabled-badge {
195
- font-size: 12px;
196
- font-weight: 400;
197
- font-style: italic;
198
- color: var(--vscode-descriptionForeground);
199
+ .automations-card.automation-disabled .automations-card-name-text,
200
+ .automations-card.automation-disabled .automations-card-prompt,
201
+ .automations-card.automation-disabled .automations-card-meta {
202
+ color: var(--vscode-disabledForeground);
199
203
  }
200
204
 
201
205
  /* Card Metadata */
@@ -204,12 +208,31 @@
204
208
  flex-direction: row;
205
209
  align-items: center;
206
210
  gap: 6px;
207
- font-size: 12px;
211
+ font-size: var(--vscode-fontSize-label1);
208
212
  color: var(--vscode-descriptionForeground);
209
213
  min-width: 0;
214
+ margin-top: auto;
215
+ padding-top: var(--vscode-spacing-size80);
216
+ }
217
+
218
+ .automations-card-meta-item {
219
+ display: flex;
220
+ align-items: center;
221
+ gap: var(--vscode-spacing-size60);
222
+ min-width: 0;
223
+ }
224
+
225
+ .automations-card-meta-item > .codicon {
226
+ font-size: var(--vscode-codiconFontSize);
227
+ color: inherit;
228
+ flex-shrink: 0;
210
229
  }
211
230
 
212
231
  .automations-card-folder {
232
+ flex: 1;
233
+ }
234
+
235
+ .automations-card-meta-label {
213
236
  min-width: 0;
214
237
  overflow: hidden;
215
238
  white-space: nowrap;
@@ -218,7 +241,6 @@
218
241
 
219
242
  .automations-card-meta-item + .automations-card-meta-item::before {
220
243
  content: '·';
221
- margin-right: 6px;
222
244
  opacity: 0.6;
223
245
  }
224
246
 
@@ -232,9 +254,10 @@
232
254
 
233
255
  /* Card Prompt */
234
256
  .automations-card-prompt {
235
- font-size: 12px;
257
+ font-size: var(--vscode-fontSize-body1);
236
258
  color: var(--vscode-descriptionForeground);
237
- margin-top: 2px;
259
+ margin-top: var(--vscode-spacing-size20);
260
+ line-height: 1.4;
238
261
  overflow: hidden;
239
262
  text-overflow: ellipsis;
240
263
  word-break: break-word;
@@ -245,6 +268,9 @@
245
268
 
246
269
  /* Card Action Buttons (icon-only, matching native pattern) */
247
270
  .automations-card-actions {
271
+ position: absolute;
272
+ top: var(--vscode-spacing-size120);
273
+ right: var(--vscode-spacing-size160);
248
274
  display: flex;
249
275
  flex-direction: row;
250
276
  gap: 4px;
@@ -296,8 +322,8 @@
296
322
  align-items: center;
297
323
  justify-content: center;
298
324
  text-align: center;
299
- padding: 48px 20px;
300
- gap: 8px;
325
+ padding: var(--vscode-spacing-size320) var(--vscode-spacing-size200);
326
+ gap: var(--vscode-spacing-size80);
301
327
  flex: 1;
302
328
  }
303
329
 
@@ -309,9 +335,9 @@
309
335
  }
310
336
 
311
337
  .automations-cards-empty-description {
312
- font-size: 12px;
338
+ font-size: var(--vscode-fontSize-body1);
313
339
  color: var(--vscode-descriptionForeground);
314
- margin: 0 0 12px;
340
+ margin: 0 0 var(--vscode-spacing-size80);
315
341
  max-width: 320px;
316
342
  line-height: 1.4;
317
343
  }
@@ -365,11 +391,29 @@
365
391
  max-width: 180px;
366
392
  }
367
393
 
394
+ .automations-cards-unavailable .automations-cards-state-description,
395
+ .automations-cards-partial-state-message {
396
+ white-space: pre-line;
397
+ }
398
+
399
+ .automations-unavailable-reasons {
400
+ margin: 0 auto;
401
+ padding: 0 0 0 var(--vscode-spacing-size200);
402
+ width: fit-content;
403
+ max-width: 100%;
404
+ box-sizing: border-box;
405
+ text-align: left;
406
+ }
407
+
408
+ .automations-unavailable-reasons > li + li {
409
+ margin-top: var(--vscode-spacing-size40);
410
+ }
411
+
368
412
  .automations-cards-partial-state {
369
413
  display: flex;
370
414
  align-items: center;
371
415
  gap: var(--vscode-spacing-size80);
372
- margin-bottom: var(--vscode-spacing-size120);
416
+ margin-top: var(--vscode-spacing-size120);
373
417
  padding: var(--vscode-spacing-size80) var(--vscode-spacing-size120);
374
418
  border: var(--vscode-strokeThickness) solid var(--vscode-editorWidget-border);
375
419
  border-radius: var(--vscode-cornerRadius-small);
@@ -526,8 +570,7 @@
526
570
 
527
571
  .automations-template-card-badge,
528
572
  .automations-template-card-source,
529
- .automations-template-card-schedule,
530
- .automations-template-card-prompt {
573
+ .automations-template-card-schedule {
531
574
  font-size: var(--vscode-fontSize-label1);
532
575
  color: var(--vscode-descriptionForeground);
533
576
  }
@@ -543,6 +586,8 @@
543
586
  }
544
587
 
545
588
  .automations-template-card-prompt {
589
+ font-size: var(--vscode-fontSize-body1);
590
+ color: var(--vscode-descriptionForeground);
546
591
  display: -webkit-box;
547
592
  overflow: hidden;
548
593
  margin-top: var(--vscode-spacing-size20);
@@ -553,6 +598,11 @@
553
598
  -webkit-box-orient: vertical;
554
599
  }
555
600
 
601
+ .automations-template-card-schedule {
602
+ margin-top: auto;
603
+ padding-top: var(--vscode-spacing-size80);
604
+ }
605
+
556
606
  /* Run History */
557
607
  .automations-history {
558
608
  margin-top: 32px;
@@ -601,21 +651,36 @@
601
651
  border-radius: 0;
602
652
  }
603
653
 
604
- .automations-history-group-runs .automations-temporary-run:not(:first-child),
605
- .automations-history-group-runs .automations-run-session-list:not(:empty) .monaco-list-row:not(:first-child),
606
- .automations-history-group-runs .automations-temporary-runs:not(:empty) + .automations-run-session-list:not(:empty) {
654
+ .automations-history-group-runs > :not(:first-child),
655
+ .automations-history-group-runs .automations-run-session-list:not(:empty) .monaco-list-row:not(:first-child) {
607
656
  border-top: var(--vscode-strokeThickness) solid var(--vscode-editorWidget-border);
608
657
  }
609
658
 
610
- .automations-temporary-runs:empty {
611
- display: none;
612
- }
613
-
614
659
  .automations-temporary-run {
615
660
  height: 54px;
616
661
  width: 100%;
617
662
  }
618
663
 
664
+ .automations-history-state {
665
+ margin-top: var(--vscode-spacing-size160);
666
+ color: var(--vscode-descriptionForeground);
667
+ font-size: var(--vscode-fontSize-label1);
668
+ }
669
+
670
+ .automations-temporary-run .automations-run-actions {
671
+ flex-shrink: 0;
672
+ margin-left: var(--vscode-spacing-size80);
673
+ opacity: 0;
674
+ pointer-events: none;
675
+ }
676
+
677
+ .automations-temporary-run:hover .automations-run-actions,
678
+ .automations-temporary-run:focus-within .automations-run-actions,
679
+ .agent-sessions-workbench.phone-layout .automations-temporary-run .automations-run-actions {
680
+ opacity: 1;
681
+ pointer-events: auto;
682
+ }
683
+
619
684
  .hc-black .automations-card,
620
685
  .hc-light .automations-card,
621
686
  .hc-black .automations-template-card,