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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (324) hide show
  1. package/common.js +2 -0
  2. package/index.js +9 -10
  3. package/package.json +10 -10
  4. package/session.js +45 -42
  5. package/vscode/src/vs/platform/agentHost/common/sessionComparisonPrompts.d.ts +1 -0
  6. package/vscode/src/vs/platform/agentHost/common/sessionComparisonPrompts.js +12 -0
  7. package/vscode/src/vs/sessions/browser/{singlePaneWorkbench.d.ts → desktopWorkbench.d.ts} +6 -5
  8. package/vscode/src/vs/sessions/browser/{singlePaneWorkbench.js → desktopWorkbench.js} +23 -25
  9. package/vscode/src/vs/sessions/browser/dockedAuxiliaryBarController.d.ts +5 -2
  10. package/vscode/src/vs/sessions/browser/dockedAuxiliaryBarController.js +41 -3
  11. package/vscode/src/vs/sessions/browser/layoutActions.js +25 -41
  12. package/vscode/src/vs/sessions/browser/mobileWorkbench.d.ts +4 -0
  13. package/vscode/src/vs/sessions/browser/mobileWorkbench.js +10 -0
  14. package/vscode/src/vs/sessions/browser/parts/chatCompositeBar.d.ts +10 -5
  15. package/vscode/src/vs/sessions/browser/parts/chatCompositeBar.js +138 -34
  16. package/vscode/src/vs/sessions/browser/parts/chatGroupDropTarget.d.ts +2 -0
  17. package/vscode/src/vs/sessions/browser/parts/chatGroupDropTarget.js +13 -5
  18. package/vscode/src/vs/sessions/browser/parts/chatGroupView.d.ts +27 -5
  19. package/vscode/src/vs/sessions/browser/parts/chatGroupView.js +129 -28
  20. package/vscode/src/vs/sessions/browser/parts/chatGroupsView.d.ts +22 -7
  21. package/vscode/src/vs/sessions/browser/parts/chatGroupsView.js +260 -21
  22. package/vscode/src/vs/sessions/browser/parts/chatHeader.d.ts +25 -0
  23. package/vscode/src/vs/sessions/browser/parts/chatHeader.js +42 -0
  24. package/vscode/src/vs/sessions/browser/parts/customViewGridPart.js +9 -1
  25. package/vscode/src/vs/sessions/browser/parts/customViewNode.js +1 -1
  26. package/vscode/src/vs/sessions/browser/parts/{singlePaneAuxiliaryBarPart.d.ts → desktopAuxiliaryBarPart.d.ts} +4 -4
  27. package/vscode/src/vs/sessions/browser/parts/desktopAuxiliaryBarPart.js +26 -0
  28. package/vscode/src/vs/sessions/browser/parts/{singlePaneEditorPart.d.ts → desktopEditorPart.d.ts} +8 -6
  29. package/vscode/src/vs/sessions/browser/parts/{singlePaneEditorPart.js → desktopEditorPart.js} +25 -5
  30. package/vscode/src/vs/sessions/browser/parts/editorPart.js +16 -4
  31. package/vscode/src/vs/sessions/browser/parts/editorParts.d.ts +1 -1
  32. package/vscode/src/vs/sessions/browser/parts/editorParts.js +7 -6
  33. package/vscode/src/vs/sessions/browser/parts/gridGap.d.ts +14 -0
  34. package/vscode/src/vs/sessions/browser/parts/gridGap.js +69 -0
  35. package/vscode/src/vs/sessions/browser/parts/media/chatCompositeBar.css +132 -4
  36. package/vscode/src/vs/sessions/browser/parts/media/chatGroupsView.css +10 -0
  37. package/vscode/src/vs/sessions/browser/parts/media/editorPart.css +46 -2
  38. package/vscode/src/vs/sessions/browser/parts/media/sessionReadOnlyBanner.css +3 -3
  39. package/vscode/src/vs/sessions/browser/parts/media/sessionView.css +45 -48
  40. package/vscode/src/vs/sessions/browser/parts/media/sessionsPart.css +15 -0
  41. package/vscode/src/vs/sessions/browser/parts/menubar.contribution.js +8 -8
  42. package/vscode/src/vs/sessions/browser/parts/mobile/mobileSessionsPart.js +1 -1
  43. package/vscode/src/vs/sessions/browser/parts/remoteHostUnavailableEmptyState.d.ts +9 -1
  44. package/vscode/src/vs/sessions/browser/parts/remoteHostUnavailableEmptyState.js +21 -3
  45. package/vscode/src/vs/sessions/browser/parts/sessionBarStyles.js +1 -1
  46. package/vscode/src/vs/sessions/browser/parts/sessionDropTarget.d.ts +4 -3
  47. package/vscode/src/vs/sessions/browser/parts/sessionDropTarget.js +29 -15
  48. package/vscode/src/vs/sessions/browser/parts/sessionGridLayout.d.ts +67 -0
  49. package/vscode/src/vs/sessions/browser/parts/sessionGridLayout.js +598 -0
  50. package/vscode/src/vs/sessions/browser/parts/sessionHeader.d.ts +11 -84
  51. package/vscode/src/vs/sessions/browser/parts/sessionHeader.js +37 -317
  52. package/vscode/src/vs/sessions/browser/parts/sessionHeaderBar.d.ts +103 -0
  53. package/vscode/src/vs/sessions/browser/parts/sessionHeaderBar.js +391 -0
  54. package/vscode/src/vs/sessions/browser/parts/sessionReadOnlyBanner.d.ts +6 -4
  55. package/vscode/src/vs/sessions/browser/parts/sessionReadOnlyBanner.js +58 -28
  56. package/vscode/src/vs/sessions/browser/parts/sessionRemoteConnection.d.ts +4 -0
  57. package/vscode/src/vs/sessions/browser/parts/sessionRemoteConnection.js +66 -23
  58. package/vscode/src/vs/sessions/browser/parts/sessionView.d.ts +24 -5
  59. package/vscode/src/vs/sessions/browser/parts/sessionView.js +143 -33
  60. package/vscode/src/vs/sessions/browser/parts/sessionsPart.d.ts +25 -19
  61. package/vscode/src/vs/sessions/browser/parts/sessionsPart.js +157 -58
  62. package/vscode/src/vs/sessions/browser/parts/sessionsParts.d.ts +12 -3
  63. package/vscode/src/vs/sessions/browser/parts/sessionsParts.js +17 -2
  64. package/vscode/src/vs/sessions/browser/sessionWorkspace.d.ts +6 -3
  65. package/vscode/src/vs/sessions/browser/sessionWorkspace.js +2 -2
  66. package/vscode/src/vs/sessions/browser/sessionsSetUpService.js +66 -20
  67. package/vscode/src/vs/sessions/browser/sessionsSignInDialog.d.ts +1 -0
  68. package/vscode/src/vs/sessions/browser/sessionsSignInDialog.js +5 -4
  69. package/vscode/src/vs/sessions/browser/workbenchFactory.d.ts +12 -0
  70. package/vscode/src/vs/sessions/browser/workbenchFactory.js +17 -0
  71. package/vscode/src/vs/sessions/contrib/accountMenu/browser/account.contribution.d.ts +85 -1
  72. package/vscode/src/vs/sessions/contrib/accountMenu/browser/account.contribution.js +118 -100
  73. package/vscode/src/vs/sessions/contrib/accountMenu/browser/chatPetAchievementBadges.d.ts +3 -2
  74. package/vscode/src/vs/sessions/contrib/accountMenu/browser/chatPetAchievementBadges.js +39 -34
  75. package/vscode/src/vs/sessions/contrib/accountMenu/browser/media/accountTitleBarWidget.css +6 -0
  76. package/vscode/src/vs/sessions/contrib/agentFeedback/browser/nullAgentFeedbackService.contribution.d.ts +3 -0
  77. package/vscode/src/vs/sessions/contrib/agentFeedback/browser/nullAgentFeedbackService.contribution.js +6 -0
  78. package/vscode/src/vs/sessions/contrib/aiCustomizationTreeView/browser/aiCustomizationTreeView.contribution.js +18 -18
  79. package/vscode/src/vs/sessions/contrib/aiCustomizationTreeView/browser/aiCustomizationTreeViewViews.js +12 -12
  80. package/vscode/src/vs/sessions/contrib/applyCommitsToParentRepo/browser/applyChangesToParentRepo.js +7 -7
  81. package/vscode/src/vs/sessions/contrib/aquarium/browser/aquarium.contribution.js +12 -12
  82. package/vscode/src/vs/sessions/contrib/aquarium/browser/aquariumOverlay.js +10 -10
  83. package/vscode/src/vs/sessions/contrib/automations/browser/automationDialog.d.ts +78 -8
  84. package/vscode/src/vs/sessions/contrib/automations/browser/automationDialog.js +1166 -202
  85. package/vscode/src/vs/sessions/contrib/automations/browser/automationDialogService.d.ts +11 -1
  86. package/vscode/src/vs/sessions/contrib/automations/browser/automationDialogService.js +190 -69
  87. package/vscode/src/vs/sessions/contrib/automations/browser/automationRunner.d.ts +11 -9
  88. package/vscode/src/vs/sessions/contrib/automations/browser/automationRunner.js +122 -233
  89. package/vscode/src/vs/sessions/contrib/automations/browser/automationTelemetry.d.ts +22 -0
  90. package/vscode/src/vs/sessions/contrib/automations/browser/automationTelemetry.js +62 -0
  91. package/vscode/src/vs/sessions/contrib/automations/browser/automationTools.d.ts +7 -2
  92. package/vscode/src/vs/sessions/contrib/automations/browser/automationTools.js +172 -84
  93. package/vscode/src/vs/sessions/contrib/automations/browser/automations.contribution.js +17 -7
  94. package/vscode/src/vs/sessions/contrib/automations/browser/media/automationDialog.css +242 -60
  95. package/vscode/src/vs/sessions/contrib/automations/browser/providerAutomationService.d.ts +24 -36
  96. package/vscode/src/vs/sessions/contrib/automations/browser/providerAutomationService.js +104 -420
  97. package/vscode/src/vs/sessions/contrib/changes/browser/changes.contribution.js +15 -14
  98. package/vscode/src/vs/sessions/contrib/changes/browser/changesActions.d.ts +13 -3
  99. package/vscode/src/vs/sessions/contrib/changes/browser/changesActions.js +66 -43
  100. package/vscode/src/vs/sessions/contrib/changes/browser/changesMultiDiffSourceResolver.js +2 -7
  101. package/vscode/src/vs/sessions/contrib/changes/browser/changesViewActions.js +54 -59
  102. package/vscode/src/vs/sessions/contrib/changes/browser/changesetReviewActions.js +7 -7
  103. package/vscode/src/vs/sessions/contrib/changes/browser/media/changesActions.css +6 -0
  104. package/vscode/src/vs/sessions/contrib/changes/browser/sessionSyncChanges.js +25 -21
  105. package/vscode/src/vs/sessions/contrib/changes/browser/sessionsChangesAccessibilityHelp.js +21 -27
  106. package/vscode/src/vs/sessions/contrib/chat/browser/sessionChatInputToolbarDebug.js +17 -17
  107. package/vscode/src/vs/sessions/contrib/chat/browser/sessionTaskRunner.d.ts +5 -5
  108. package/vscode/src/vs/sessions/contrib/chat/browser/sessionTaskRunner.js +2 -2
  109. package/vscode/src/vs/sessions/contrib/chatDebug/browser/chatDebug.contribution.js +2 -2
  110. package/vscode/src/vs/sessions/contrib/codeReview/browser/codeReview.contributions.js +9 -16
  111. package/vscode/src/vs/sessions/contrib/customViewTest/browser/customViewTest.contribution.js +7 -7
  112. package/vscode/src/vs/sessions/contrib/editor/browser/addTabActions.js +15 -13
  113. package/vscode/src/vs/sessions/contrib/editor/browser/editor.contribution.d.ts +13 -1
  114. package/vscode/src/vs/sessions/contrib/editor/browser/editor.contribution.js +104 -117
  115. package/vscode/src/vs/sessions/contrib/editor/browser/emptyFileEditor.contribution.js +8 -7
  116. package/vscode/src/vs/sessions/contrib/editor/browser/emptyFileEditor.js +5 -5
  117. package/vscode/src/vs/sessions/contrib/editor/browser/emptyFileEditorInput.js +1 -1
  118. package/vscode/src/vs/sessions/contrib/editor/browser/media/editorBreadcrumbs.css +0 -1
  119. package/vscode/src/vs/sessions/contrib/editor/browser/media/editorHeader.css +1 -1
  120. package/vscode/src/vs/sessions/contrib/files/browser/files.contribution.d.ts +7 -0
  121. package/vscode/src/vs/sessions/contrib/files/browser/files.contribution.js +77 -13
  122. package/vscode/src/vs/sessions/contrib/files/browser/filesView.d.ts +2 -1
  123. package/vscode/src/vs/sessions/contrib/files/browser/filesView.js +14 -4
  124. package/vscode/src/vs/sessions/contrib/layout/browser/baseSessionLayoutController.d.ts +45 -10
  125. package/vscode/src/vs/sessions/contrib/layout/browser/baseSessionLayoutController.js +527 -96
  126. package/vscode/src/vs/sessions/contrib/layout/browser/chatLayoutOwnerKeys.d.ts +18 -0
  127. package/vscode/src/vs/sessions/contrib/layout/browser/chatLayoutOwnerKeys.js +95 -0
  128. package/vscode/src/vs/sessions/contrib/layout/browser/{singlePane/singlePaneDetailPanelCoordinator.d.ts → desktop/desktopDetailPanelCoordinator.d.ts} +5 -4
  129. package/vscode/src/vs/sessions/contrib/layout/browser/{singlePane/singlePaneDetailPanelCoordinator.js → desktop/desktopDetailPanelCoordinator.js} +10 -7
  130. package/vscode/src/vs/sessions/contrib/layout/browser/{singlePane/singlePaneDockedTabsCoordinator.d.ts → desktop/desktopDockedTabsCoordinator.d.ts} +15 -12
  131. package/vscode/src/vs/sessions/contrib/layout/browser/{singlePane/singlePaneDockedTabsCoordinator.js → desktop/desktopDockedTabsCoordinator.js} +91 -44
  132. package/vscode/src/vs/sessions/contrib/layout/browser/{singlePane/singlePaneDraftSessionStrategy.d.ts → desktop/desktopDraftSessionStrategy.d.ts} +10 -5
  133. package/vscode/src/vs/sessions/contrib/layout/browser/{singlePane/singlePaneDraftSessionStrategy.js → desktop/desktopDraftSessionStrategy.js} +95 -22
  134. package/vscode/src/vs/sessions/contrib/layout/browser/{singlePane/singlePaneExistingSessionStrategy.d.ts → desktop/desktopExistingSessionStrategy.d.ts} +13 -11
  135. package/vscode/src/vs/sessions/contrib/layout/browser/{singlePane/singlePaneExistingSessionStrategy.js → desktop/desktopExistingSessionStrategy.js} +137 -57
  136. package/vscode/src/vs/sessions/contrib/layout/browser/{singlePane/singlePaneLayoutStrategy.d.ts → desktop/desktopLayoutStrategy.d.ts} +22 -13
  137. package/vscode/src/vs/sessions/contrib/layout/browser/{singlePane/singlePaneLayoutStrategy.js → desktop/desktopLayoutStrategy.js} +2 -2
  138. package/vscode/src/vs/sessions/contrib/layout/browser/desktop/desktopOwnerCompositionStore.d.ts +22 -0
  139. package/vscode/src/vs/sessions/contrib/layout/browser/desktop/desktopOwnerCompositionStore.js +136 -0
  140. package/vscode/src/vs/sessions/contrib/layout/browser/{singlePane/singlePaneSharedHelpers.d.ts → desktop/desktopSharedHelpers.d.ts} +9 -2
  141. package/vscode/src/vs/sessions/contrib/layout/browser/desktop/desktopSharedHelpers.js +56 -0
  142. package/vscode/src/vs/sessions/contrib/layout/browser/{singlePane/singlePaneVisibilityProfileStore.d.ts → desktop/desktopVisibilityProfileStore.d.ts} +3 -2
  143. package/vscode/src/vs/sessions/contrib/layout/browser/{singlePane/singlePaneVisibilityProfileStore.js → desktop/desktopVisibilityProfileStore.js} +10 -9
  144. package/vscode/src/vs/sessions/contrib/layout/browser/desktopLayoutController.d.ts +71 -0
  145. package/vscode/src/vs/sessions/contrib/layout/browser/desktopLayoutController.js +201 -0
  146. package/vscode/src/vs/sessions/contrib/layout/browser/sessions.layout.contribution.d.ts +8 -1
  147. package/vscode/src/vs/sessions/contrib/layout/browser/sessions.layout.contribution.js +35 -35
  148. package/vscode/src/vs/sessions/contrib/layout/common/sessionEditorWorkingSet.d.ts +39 -0
  149. package/vscode/src/vs/sessions/contrib/layout/common/sessionEditorWorkingSet.js +73 -0
  150. package/vscode/src/vs/sessions/contrib/onboardingTours/browser/newSessionTourContribution.d.ts +42 -1
  151. package/vscode/src/vs/sessions/contrib/onboardingTours/browser/newSessionTourContribution.js +14 -10
  152. package/vscode/src/vs/sessions/contrib/onboardingTours/browser/newSessionViewTourContribution.js +3 -4
  153. package/vscode/src/vs/sessions/contrib/onboardingTours/browser/newSessionViewTourTrigger.d.ts +2 -2
  154. package/vscode/src/vs/sessions/contrib/onboardingTours/browser/newSessionViewTourTrigger.js +13 -9
  155. package/vscode/src/vs/sessions/contrib/onboardingTours/browser/newSessionViewV2TourContribution.js +20 -5
  156. package/vscode/src/vs/sessions/contrib/onboardingTours/browser/newSessionViewV2TourVariation.d.ts +8 -0
  157. package/vscode/src/vs/sessions/contrib/onboardingTours/browser/newSessionViewV2TourVariation.js +19 -0
  158. package/vscode/src/vs/sessions/contrib/onboardingTours/browser/newSessionViewV3Prompt.js +21 -20
  159. package/vscode/src/vs/sessions/contrib/onboardingTours/browser/tours/newSessionTour.js +10 -5
  160. package/vscode/src/vs/sessions/contrib/onboardingTours/browser/tours/newSessionViewTour.js +12 -8
  161. package/vscode/src/vs/sessions/contrib/onboardingTours/browser/tours/newSessionViewTourShared.d.ts +3 -1
  162. package/vscode/src/vs/sessions/contrib/onboardingTours/browser/tours/newSessionViewTourShared.js +12 -7
  163. package/vscode/src/vs/sessions/contrib/onboardingTours/browser/tours/newSessionViewV2Tour.d.ts +9 -1
  164. package/vscode/src/vs/sessions/contrib/onboardingTours/browser/tours/newSessionViewV2Tour.js +46 -19
  165. package/vscode/src/vs/sessions/contrib/onboardingTours/browser/tours/newSessionViewV3Tour.js +2 -0
  166. package/vscode/src/vs/sessions/contrib/policyBlocked/browser/media/sessionsPolicyBlocked.css +33 -0
  167. package/vscode/src/vs/sessions/contrib/policyBlocked/browser/policyBlocked.contribution.d.ts +4 -2
  168. package/vscode/src/vs/sessions/contrib/policyBlocked/browser/policyBlocked.contribution.js +29 -8
  169. package/vscode/src/vs/sessions/contrib/policyBlocked/browser/sessionsPolicyBlocked.d.ts +15 -2
  170. package/vscode/src/vs/sessions/contrib/policyBlocked/browser/sessionsPolicyBlocked.js +169 -32
  171. package/vscode/src/vs/sessions/contrib/providers/agentHost/browser/agentHostForkActions.js +30 -8
  172. package/vscode/src/vs/sessions/contrib/providers/agentHost/browser/agentHostSessionBranchActions.js +8 -34
  173. package/vscode/src/vs/sessions/contrib/providers/agentHost/browser/agentMergeActions.js +63 -49
  174. package/vscode/src/vs/sessions/contrib/providers/agentHost/browser/exportDebugLogsAction.js +1 -1
  175. package/vscode/src/vs/sessions/contrib/providers/agentHost/browser/mobile/mobileChatInputConfigPicker.js +31 -17
  176. package/vscode/src/vs/sessions/contrib/providers/remoteAgentHost/browser/connectionDiagnostics.contribution.d.ts +32 -0
  177. package/vscode/src/vs/sessions/contrib/providers/remoteAgentHost/browser/connectionDiagnostics.contribution.js +250 -0
  178. package/vscode/src/vs/sessions/contrib/providers/remoteAgentHost/browser/connectionDiagnosticsLogs.d.ts +6 -0
  179. package/vscode/src/vs/sessions/contrib/providers/remoteAgentHost/browser/connectionDiagnosticsLogs.js +52 -0
  180. package/vscode/src/vs/sessions/contrib/providers/remoteAgentHost/browser/connectionDiagnosticsReport.d.ts +51 -0
  181. package/vscode/src/vs/sessions/contrib/providers/remoteAgentHost/browser/connectionDiagnosticsReport.js +439 -0
  182. package/vscode/src/vs/sessions/contrib/providers/remoteAgentHost/browser/connectionDiagnosticsService.d.ts +45 -0
  183. package/vscode/src/vs/sessions/contrib/providers/remoteAgentHost/browser/connectionDiagnosticsService.js +595 -0
  184. package/vscode/src/vs/sessions/contrib/providers/remoteAgentHost/browser/devContainerAgentHostService.d.ts +20 -3
  185. package/vscode/src/vs/sessions/contrib/providers/remoteAgentHost/browser/devContainerAgentHostService.js +360 -46
  186. package/vscode/src/vs/sessions/contrib/providers/remoteAgentHost/browser/devContainerSource.d.ts +9 -0
  187. package/vscode/src/vs/sessions/contrib/providers/remoteAgentHost/browser/devContainerSource.js +59 -0
  188. package/vscode/src/vs/sessions/contrib/providers/remoteAgentHost/browser/media/connectionDiagnostics.css +201 -0
  189. package/vscode/src/vs/sessions/contrib/remoteSessions/browser/getRemoteSessionTool.d.ts +10 -0
  190. package/vscode/src/vs/sessions/contrib/remoteSessions/browser/getRemoteSessionTool.js +70 -0
  191. package/vscode/src/vs/sessions/contrib/remoteSessions/browser/remoteSessionChatService.d.ts +20 -0
  192. package/vscode/src/vs/sessions/contrib/remoteSessions/browser/remoteSessionChatService.js +104 -0
  193. package/vscode/src/vs/sessions/contrib/remoteSessions/browser/remoteSessionInspector.d.ts +15 -0
  194. package/vscode/src/vs/sessions/contrib/remoteSessions/browser/remoteSessionInspector.js +152 -0
  195. package/vscode/src/vs/sessions/contrib/remoteSessions/browser/remoteSessionMessageRouter.d.ts +49 -0
  196. package/vscode/src/vs/sessions/contrib/remoteSessions/browser/remoteSessionMessageRouter.js +340 -0
  197. package/vscode/src/vs/sessions/contrib/remoteSessions/browser/remoteSessionService.d.ts +41 -0
  198. package/vscode/src/vs/sessions/contrib/remoteSessions/browser/remoteSessionService.js +400 -0
  199. package/vscode/src/vs/sessions/contrib/remoteSessions/browser/remoteSessionSource.d.ts +28 -0
  200. package/vscode/src/vs/sessions/contrib/remoteSessions/browser/remoteSessionSource.js +178 -0
  201. package/vscode/src/vs/sessions/contrib/remoteSessions/browser/remoteSessionTools.d.ts +17 -0
  202. package/vscode/src/vs/sessions/contrib/remoteSessions/browser/remoteSessionTools.js +206 -0
  203. package/vscode/src/vs/sessions/contrib/remoteSessions/browser/remoteSessions.contribution.d.ts +1 -0
  204. package/vscode/src/vs/sessions/contrib/remoteSessions/browser/remoteSessions.contribution.js +58 -0
  205. package/vscode/src/vs/sessions/contrib/remoteSessions/browser/sendRemoteMessageTool.d.ts +10 -0
  206. package/vscode/src/vs/sessions/contrib/remoteSessions/browser/sendRemoteMessageTool.js +90 -0
  207. package/vscode/src/vs/sessions/contrib/remoteSessions/common/remoteSessionInspection.d.ts +38 -0
  208. package/vscode/src/vs/sessions/contrib/remoteSessions/common/remoteSessionInspection.js +58 -0
  209. package/vscode/src/vs/sessions/contrib/search/browser/search.contribution.js +4 -5
  210. package/vscode/src/vs/sessions/contrib/search/browser/searchEditorEmptyState.contribution.js +1 -1
  211. package/vscode/src/vs/sessions/contrib/sessionComparison/browser/sessionComparison.contribution.d.ts +1 -0
  212. package/vscode/src/vs/sessions/contrib/sessionComparison/browser/sessionComparison.contribution.js +33 -0
  213. package/vscode/src/vs/sessions/contrib/sessionComparison/browser/sessionComparisonGridController.d.ts +30 -0
  214. package/vscode/src/vs/sessions/contrib/sessionComparison/browser/sessionComparisonGridController.js +190 -0
  215. package/vscode/src/vs/sessions/contrib/sessionComparison/browser/sessionComparisonTool.d.ts +31 -0
  216. package/vscode/src/vs/sessions/contrib/sessionComparison/browser/sessionComparisonTool.js +559 -0
  217. package/vscode/src/vs/sessions/contrib/sessionComparison/browser/sessionComparisonViewService.d.ts +12 -0
  218. package/vscode/src/vs/sessions/contrib/sessionComparison/browser/sessionComparisonViewService.js +38 -0
  219. package/vscode/src/vs/sessions/contrib/sessions/browser/blockedSessionsIndicatorModel.d.ts +13 -4
  220. package/vscode/src/vs/sessions/contrib/sessions/browser/blockedSessionsIndicatorModel.js +155 -22
  221. package/vscode/src/vs/sessions/contrib/sessions/browser/blockedSessionsList.js +9 -5
  222. package/vscode/src/vs/sessions/contrib/sessions/browser/media/automationsCards.css +90 -25
  223. package/vscode/src/vs/sessions/contrib/sessions/browser/media/sessionsTitleBarWidget.css +21 -4
  224. package/vscode/src/vs/sessions/contrib/sessions/browser/sessionDetailsAction.d.ts +2 -1
  225. package/vscode/src/vs/sessions/contrib/sessions/browser/sessionDetailsAction.js +11 -7
  226. package/vscode/src/vs/sessions/contrib/sessions/browser/sessions.contribution.d.ts +116 -1
  227. package/vscode/src/vs/sessions/contrib/sessions/browser/sessions.contribution.js +126 -30
  228. package/vscode/src/vs/sessions/contrib/sessions/browser/sessionsAccountTelemetry.d.ts +26 -0
  229. package/vscode/src/vs/sessions/contrib/sessions/browser/sessionsAccountTelemetry.js +160 -0
  230. package/vscode/src/vs/sessions/contrib/sessions/browser/sessionsActions.d.ts +14 -6
  231. package/vscode/src/vs/sessions/contrib/sessions/browser/sessionsActions.js +555 -151
  232. package/vscode/src/vs/sessions/contrib/sessions/browser/sessionsLifecycleTracker.d.ts +192 -0
  233. package/vscode/src/vs/sessions/contrib/sessions/browser/sessionsLifecycleTracker.js +510 -0
  234. package/vscode/src/vs/sessions/contrib/sessions/browser/sessionsTelemetry.contribution.d.ts +6 -7
  235. package/vscode/src/vs/sessions/contrib/sessions/browser/sessionsTelemetry.contribution.js +64 -57
  236. package/vscode/src/vs/sessions/contrib/sessions/browser/sessionsTitleBarWidget.d.ts +5 -3
  237. package/vscode/src/vs/sessions/contrib/sessions/browser/sessionsTitleBarWidget.js +83 -51
  238. package/vscode/src/vs/sessions/contrib/sessions/browser/sessionsWindowNotifier.d.ts +5 -1
  239. package/vscode/src/vs/sessions/contrib/sessions/browser/sessionsWindowNotifier.js +33 -12
  240. package/vscode/src/vs/sessions/contrib/sessions/browser/views/automationCataloguePresentation.d.ts +3 -0
  241. package/vscode/src/vs/sessions/contrib/sessions/browser/views/automationCataloguePresentation.js +53 -0
  242. package/vscode/src/vs/sessions/contrib/sessions/browser/views/automationTemplates.js +10 -10
  243. package/vscode/src/vs/sessions/contrib/sessions/browser/views/automationsAccessibility.d.ts +2 -2
  244. package/vscode/src/vs/sessions/contrib/sessions/browser/views/automationsAccessibility.js +103 -55
  245. package/vscode/src/vs/sessions/contrib/sessions/browser/views/automationsView.d.ts +7 -1
  246. package/vscode/src/vs/sessions/contrib/sessions/browser/views/automationsView.js +679 -325
  247. package/vscode/src/vs/sessions/contrib/sessions/browser/views/sessionsViewActions.d.ts +27 -1
  248. package/vscode/src/vs/sessions/contrib/sessions/browser/views/sessionsViewActions.js +508 -163
  249. package/vscode/src/vs/sessions/contrib/terminal/browser/agentHostSessionTaskRunner.d.ts +20 -2
  250. package/vscode/src/vs/sessions/contrib/terminal/browser/agentHostSessionTaskRunner.js +100 -17
  251. package/vscode/src/vs/sessions/contrib/terminal/browser/sessionsTerminalContribution.d.ts +5 -1
  252. package/vscode/src/vs/sessions/contrib/terminal/browser/sessionsTerminalContribution.js +108 -30
  253. package/vscode/src/vs/sessions/contrib/workspace/browser/workspaceFolderManagement.d.ts +5 -3
  254. package/vscode/src/vs/sessions/contrib/workspace/browser/workspaceFolderManagement.js +47 -35
  255. package/vscode/src/vs/sessions/services/agentHostFilter/browser/agentHostFilterService.d.ts +9 -4
  256. package/vscode/src/vs/sessions/services/agentHostFilter/browser/agentHostFilterService.js +75 -25
  257. package/vscode/src/vs/sessions/services/customView/browser/customViewService.d.ts +11 -4
  258. package/vscode/src/vs/sessions/services/customView/browser/customViewService.js +17 -9
  259. package/vscode/src/vs/sessions/services/sessions/browser/closedItemHistory.d.ts +5 -0
  260. package/vscode/src/vs/sessions/services/sessions/browser/closedItemHistory.js +20 -2
  261. package/vscode/src/vs/sessions/services/sessions/browser/sessionComparisonService.d.ts +75 -0
  262. package/vscode/src/vs/sessions/services/sessions/browser/sessionComparisonService.js +1135 -0
  263. package/vscode/src/vs/sessions/services/sessions/browser/sessionGridState.d.ts +17 -0
  264. package/vscode/src/vs/sessions/services/sessions/browser/sessionGridState.js +99 -0
  265. package/vscode/src/vs/sessions/services/sessions/browser/sessionGroupsService.d.ts +4 -0
  266. package/vscode/src/vs/sessions/services/sessions/browser/sessionGroupsService.js +88 -23
  267. package/vscode/src/vs/sessions/services/sessions/browser/sessionNavigation.d.ts +19 -26
  268. package/vscode/src/vs/sessions/services/sessions/browser/sessionNavigation.js +115 -74
  269. package/vscode/src/vs/sessions/services/sessions/browser/sessionsListModelService.js +1 -1
  270. package/vscode/src/vs/sessions/services/sessions/browser/sessionsManagementService.d.ts +22 -7
  271. package/vscode/src/vs/sessions/services/sessions/browser/sessionsManagementService.js +278 -60
  272. package/vscode/src/vs/sessions/services/sessions/browser/sessionsRecencyHistory.d.ts +17 -20
  273. package/vscode/src/vs/sessions/services/sessions/browser/sessionsRecencyHistory.js +33 -22
  274. package/vscode/src/vs/sessions/services/sessions/browser/sessionsService.d.ts +28 -8
  275. package/vscode/src/vs/sessions/services/sessions/browser/sessionsService.js +673 -160
  276. package/vscode/src/vs/sessions/services/sessions/browser/visibleSessions.d.ts +13 -4
  277. package/vscode/src/vs/sessions/services/sessions/browser/visibleSessions.js +105 -15
  278. package/vscode/src/vs/sessions/services/sessions/common/sessionContextKeys.js +53 -34
  279. package/vscode/src/vs/sessions/services/workspaceFolderLabel/browser/workspaceFolderLabelService.js +1 -1
  280. package/vscode/src/vs/workbench/browser/layout.d.ts +46 -70
  281. package/vscode/src/vs/workbench/browser/layout.js +243 -44
  282. package/vscode/src/vs/workbench/browser/workbench.d.ts +1 -3
  283. package/vscode/src/vs/workbench/browser/workbench.js +26 -24
  284. package/vscode/src/vs/workbench/contrib/chat/common/automations/schedule.d.ts +6 -0
  285. package/vscode/src/vs/workbench/contrib/chat/common/automations/schedule.js +41 -0
  286. package/vscode/src/vs/workbench/contrib/chat/common/chatUsage.d.ts +15 -0
  287. package/vscode/src/vs/workbench/contrib/chat/common/chatUsage.js +56 -0
  288. package/vscode/src/vs/platform/agentHost/common/meta/agentCheckoutOperationMeta.d.ts +0 -18
  289. package/vscode/src/vs/platform/agentHost/common/meta/agentCheckoutOperationMeta.js +0 -27
  290. package/vscode/src/vs/sessions/browser/parts/singlePaneAuxiliaryBarPart.js +0 -36
  291. package/vscode/src/vs/sessions/contrib/automations/browser/automationLeaderElection.d.ts +0 -37
  292. package/vscode/src/vs/sessions/contrib/automations/browser/automationLeaderElection.js +0 -126
  293. package/vscode/src/vs/sessions/contrib/automations/browser/automationScheduler.d.ts +0 -59
  294. package/vscode/src/vs/sessions/contrib/automations/browser/automationScheduler.js +0 -232
  295. package/vscode/src/vs/sessions/contrib/automations/browser/automationStorageService.d.ts +0 -13
  296. package/vscode/src/vs/sessions/contrib/automations/browser/automationStorageService.js +0 -22
  297. package/vscode/src/vs/sessions/contrib/blockedSessions/browser/blockedSessions.d.ts +0 -45
  298. package/vscode/src/vs/sessions/contrib/blockedSessions/browser/blockedSessions.js +0 -110
  299. package/vscode/src/vs/sessions/contrib/layout/browser/desktopSessionLayoutController.d.ts +0 -112
  300. package/vscode/src/vs/sessions/contrib/layout/browser/desktopSessionLayoutController.js +0 -444
  301. package/vscode/src/vs/sessions/contrib/layout/browser/singlePane/singlePaneSharedHelpers.js +0 -43
  302. package/vscode/src/vs/sessions/contrib/layout/browser/singlePaneLayoutController.d.ts +0 -55
  303. package/vscode/src/vs/sessions/contrib/layout/browser/singlePaneLayoutController.js +0 -91
  304. package/vscode/src/vs/sessions/contrib/providers/agentHost/browser/agentHostClaudePermissionModePicker.d.ts +0 -26
  305. package/vscode/src/vs/sessions/contrib/providers/agentHost/browser/agentHostClaudePermissionModePicker.js +0 -98
  306. package/vscode/src/vs/sessions/contrib/providers/agentHost/browser/agentHostCodexApprovalsPicker.d.ts +0 -33
  307. package/vscode/src/vs/sessions/contrib/providers/agentHost/browser/agentHostCodexApprovalsPicker.js +0 -98
  308. package/vscode/src/vs/sessions/contrib/providers/agentHost/browser/agentHostModeIcon.d.ts +0 -2
  309. package/vscode/src/vs/sessions/contrib/providers/agentHost/browser/agentHostModeIcon.js +0 -13
  310. package/vscode/src/vs/sessions/contrib/providers/agentHost/browser/agentHostModePicker.d.ts +0 -122
  311. package/vscode/src/vs/sessions/contrib/providers/agentHost/browser/agentHostModePicker.js +0 -464
  312. package/vscode/src/vs/sessions/contrib/providers/agentHost/browser/agentHostPermissionPickerActionItem.d.ts +0 -35
  313. package/vscode/src/vs/sessions/contrib/providers/agentHost/browser/agentHostPermissionPickerActionItem.js +0 -90
  314. package/vscode/src/vs/sessions/contrib/providers/agentHost/browser/agentHostPermissionPickerDelegate.d.ts +0 -84
  315. package/vscode/src/vs/sessions/contrib/providers/agentHost/browser/agentHostPermissionPickerDelegate.js +0 -328
  316. package/vscode/src/vs/sessions/contrib/providers/agentHost/browser/agentHostSessionConfigPicker.d.ts +0 -174
  317. package/vscode/src/vs/sessions/contrib/providers/agentHost/browser/agentHostSessionConfigPicker.js +0 -1390
  318. package/vscode/src/vs/sessions/contrib/providers/agentHost/browser/media/agentHostSessionConfigPicker.css +0 -44
  319. package/vscode/src/vs/sessions/contrib/providers/agentHost/browser/mobile/mobileAgentHostModePicker.d.ts +0 -30
  320. package/vscode/src/vs/sessions/contrib/providers/agentHost/browser/mobile/mobileAgentHostModePicker.js +0 -78
  321. package/vscode/src/vs/sessions/contrib/providers/agentHost/browser/mobile/mobileChatPhoneInputTarget.d.ts +0 -11
  322. package/vscode/src/vs/sessions/contrib/providers/agentHost/browser/mobile/mobileChatPhoneInputTarget.js +0 -26
  323. package/vscode/src/vs/sessions/contrib/providers/remoteAgentHost/browser/remoteAgentHostConnectionCustomization.d.ts +0 -27
  324. package/vscode/src/vs/sessions/contrib/providers/remoteAgentHost/browser/remoteAgentHostConnectionCustomization.js +0 -26
@@ -0,0 +1,559 @@
1
+
2
+ import { __decorate, __param } from '@codingame/monaco-vscode-api/external/tslib/tslib.es6';
3
+ import { Codicon } from '@codingame/monaco-vscode-api/vscode/vs/base/common/codicons';
4
+ import { Disposable, DisposableStore } from '@codingame/monaco-vscode-api/vscode/vs/base/common/lifecycle';
5
+ import '@codingame/monaco-vscode-api/vscode/vs/base/common/observableInternal/index';
6
+ import { isEqual } from '@codingame/monaco-vscode-api/vscode/vs/base/common/resources';
7
+ import { localize } from '@codingame/monaco-vscode-api/vscode/vs/nls';
8
+ import { IConfigurationService } from '@codingame/monaco-vscode-api/vscode/vs/platform/configuration/common/configuration.service';
9
+ import { ContextKeyExpr } from '@codingame/monaco-vscode-api/vscode/vs/platform/contextkey/common/contextkey';
10
+ import { IInstantiationService } from '@codingame/monaco-vscode-api/vscode/vs/platform/instantiation/common/instantiation';
11
+ import { observableConfigValue } from '@codingame/monaco-vscode-api/vscode/vs/platform/observable/common/platformObservableUtils';
12
+ import { ReasoningEffortConfigKey } from '@codingame/monaco-vscode-api/vscode/vs/platform/agentHost/common/reasoningEffort';
13
+ import { ChatContextKeys } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/actions/chatContextKeys';
14
+ import { isIChatSessionFileChange2 } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/chatSessionsService';
15
+ import { ToolDataSource } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/tools/languageModelToolsService';
16
+ import { ILanguageModelToolsService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/tools/languageModelToolsService.service';
17
+ import { SessionStatus } from '@codingame/monaco-vscode-api/vscode/vs/sessions/services/sessions/common/session';
18
+ import { ISessionsManagementService } from '@codingame/monaco-vscode-api/vscode/vs/sessions/services/sessions/common/sessionsManagement.service';
19
+ import { SessionComparisonParticipantRole, getSessionComparisonAttemptLabel, COMPARE_AGENTS_ENABLED_SETTING, SessionComparisonValidationState, SessionComparisonValidationSource, SESSION_COMPARISON_MANIFEST_LIST_MAX_ITEMS, getBoundedSessionComparisonManifestList, getBoundedSessionComparisonManifestText } from '@codingame/monaco-vscode-api/vscode/vs/sessions/services/sessions/common/sessionComparison';
20
+ import { ISessionComparisonService } from '@codingame/monaco-vscode-api/vscode/vs/sessions/services/sessions/common/sessionComparison.service';
21
+ import { hashSessionIdForTelemetry } from '@codingame/monaco-vscode-api/vscode/vs/sessions/common/sessionsTelemetry';
22
+ import { autorun } from '@codingame/monaco-vscode-api/vscode/vs/base/common/observableInternal/reactions/autorun';
23
+
24
+ const CompleteSessionComparisonToolId = "vscode_completeAttemptComparison";
25
+ const ReadSessionComparisonToolId = "vscode_readAttemptComparison";
26
+ const MaxExplanationLength = 240;
27
+ const MaxRationalePointLength = 180;
28
+ let ReadSessionComparisonTool = class ReadSessionComparisonTool {
29
+ constructor(comparisonService, sessionsManagementService) {
30
+ this.comparisonService = comparisonService;
31
+ this.sessionsManagementService = sessionsManagementService;
32
+ }
33
+ getToolData() {
34
+ return {
35
+ id: ReadSessionComparisonToolId,
36
+ toolReferenceName: "readAttemptComparison",
37
+ canBeReferencedInPrompt: true,
38
+ icon: Codicon.compareChanges,
39
+ displayName: ( localize(5651, "Read Attempt Comparison")),
40
+ userDescription: ( localize(5652, "Read the attempts and evidence for an active comparison")),
41
+ modelDescription: "Read the bounded manifest for an active implementation-attempt comparison. Use this when judging or synthesizing that comparison, before inspecting individual transcripts. It returns the original task, every attempt with a semantic lifecycle status, changed-file evidence status, change summaries, authoritative worktree locations, exact targets for get_session_context, the Judge verdict mapped to attempt numbers when available, and any additional synthesis instructions. Attempt status is one of untitled, inProgress, needsInput, completed, error, or unavailable; only completed means the attempt finished successfully. Terminal commands start in the Judge or synthesis worktree, so explicitly cd to an attempt's listed workingDirectory in every command that inspects or validates it. Read implementation code only from the listed worktrees; transcripts are for rationale or validation evidence. A Judge must review every attempt diff, use get_session_context to identify validation the attempt already completed, never rerun a validation category with a clear reported result, and run only missing targeted validation when needed. If dependencies or build artifacts are unavailable, it must record validation as unavailable without installing dependencies or substituting another validation category. A synthesis agent must resolve the verdict's conflicts and treat additional synthesis instructions as user requirements. It does not return full transcripts or submit a verdict.",
42
+ source: ToolDataSource.Internal,
43
+ when: ( ContextKeyExpr.and(ChatContextKeys.enabled)),
44
+ runsInWorkspace: false,
45
+ inputSchema: {
46
+ type: "object",
47
+ properties: {
48
+ comparisonId: {
49
+ type: "string",
50
+ description: "The comparison ID supplied in the Judge or synthesis prompt."
51
+ }
52
+ },
53
+ required: ["comparisonId"],
54
+ additionalProperties: false
55
+ }
56
+ };
57
+ }
58
+ async prepareToolInvocation(_context, _token) {
59
+ return {
60
+ invocationMessage: ( localize(5653, "Reading attempt comparison")),
61
+ pastTenseMessage: ( localize(5654, "Read attempt comparison"))
62
+ };
63
+ }
64
+ async invoke(invocation, _countTokens, _progress, _token) {
65
+ const input = parseReadInput(invocation.parameters);
66
+ if (!input) {
67
+ return toolError("The comparison manifest input is invalid.");
68
+ }
69
+ const comparison = resolveComparison(this.comparisonService, input.comparisonId);
70
+ if (!comparison) {
71
+ return toolError(`Comparison '${input.comparisonId}' does not exist.`);
72
+ }
73
+ if (!isInvokingParticipant(comparison, invocation, [
74
+ SessionComparisonParticipantRole.Judge,
75
+ SessionComparisonParticipantRole.Synthesis
76
+ ])) {
77
+ return toolError(
78
+ "Only the Judge or synthesis session for this comparison can read its manifest."
79
+ );
80
+ }
81
+ const invokingSession = invocation.context?.sessionResource ? this.sessionsManagementService.getSession(invocation.context.sessionResource) : undefined;
82
+ const allAttemptParticipants = comparison.participants.filter(
83
+ participant => participant.role === SessionComparisonParticipantRole.Attempt
84
+ );
85
+ const attemptNumbers = ( new Map(
86
+ allAttemptParticipants.map((participant, index) => [participant.id, index + 1])
87
+ ));
88
+ const attemptParticipants = allAttemptParticipants.filter(participant => participant.sessionResource);
89
+ const attempts = attemptParticipants.map(participant => {
90
+ const session = this.sessionsManagementService.getSession(participant.sessionResource);
91
+ const changes = session?.mainChat.get().changes.get() ?? [];
92
+ const changedFiles = changes.slice(0, 200).map(change => ({
93
+ resource: ( (isIChatSessionFileChange2(change) ? change.uri : change.modifiedUri).toString()),
94
+ insertions: change.insertions,
95
+ deletions: change.deletions
96
+ }));
97
+ const workspace = session?.workspace.get();
98
+ const changesSummary = session?.changesSummary?.get();
99
+ const sessionContextTarget = session && invokingSession && invokingSession.providerId === session.providerId ? this.sessionsManagementService.getSessionContextReference(session.mainChat.get().resource) : undefined;
100
+ const reasoningEffort = participant.harness.modelConfiguration?.[ReasoningEffortConfigKey];
101
+ const attemptNumber = attemptNumbers.get(participant.id);
102
+ return {
103
+ attemptNumber,
104
+ label: getSessionComparisonAttemptLabel(participant, attemptNumber),
105
+ harness: {
106
+ agent: participant.harness.label,
107
+ model: participant.harness.modelLabel ?? "Default",
108
+ reasoningEffort: typeof reasoningEffort === "string" ? reasoningEffort : "default",
109
+ permissions: {
110
+ id: participant.harness.permissionId ?? "default",
111
+ label: participant.harness.permissionLabel ?? "Default"
112
+ }
113
+ },
114
+ status: getManifestSessionStatus(session?.status.get()),
115
+ launchError: participant.launchError,
116
+ sessionContextTarget,
117
+ sessionContextUnavailableReason: session && !sessionContextTarget ? "Transcript follow-up is unavailable from this Judge host; use the manifest and worktree evidence." : undefined,
118
+ worktree: workspace ? {
119
+ workingDirectory: workspace.folders[0]?.workingDirectory.fsPath,
120
+ folders: workspace.folders.map(folder => folder.workingDirectory.fsPath)
121
+ } : undefined,
122
+ changesSummary,
123
+ changedFiles,
124
+ changedFilesStatus: changes.length > 0 ? "available" : changesSummary?.files === 0 ? "noChanges" : "unavailable",
125
+ changedFilesTruncated: changes.length > changedFiles.length
126
+ };
127
+ });
128
+ const synthesisPlan = comparison.synthesisPlan ? {
129
+ instructions: comparison.synthesisPlan.instructions
130
+ } : undefined;
131
+ return toolResult(JSON.stringify({
132
+ comparisonId: comparison.id,
133
+ originalTask: comparison.prompt,
134
+ baseBranch: comparison.branch,
135
+ attempts,
136
+ verdict: comparison.verdict ? toManifestVerdict(comparison.verdict, attemptNumbers) : undefined,
137
+ synthesisPlan,
138
+ next: "Review every completed attempt diff in its authoritative worktree and treat error as failed and inProgress or needsInput as unfinished. Terminal commands start in this Judge or synthesis worktree, not an attempt worktree: explicitly cd to the exact attempt worktree.workingDirectory in every command that inspects or validates it. When changedFilesStatus is unavailable, read the Git diff from that worktree instead. Use get_session_context with an exact attempt sessionContextTarget to identify validation the attempt already completed and for rationale or other non-code evidence; never recover implementation code or paths from a transcript. Do not rerun a validation category with a clear reported result. Run only missing targeted validation when needed. If required dependencies or build artifacts are unavailable, record validation as unavailable without installing or building dependencies or substituting another validation category. Record each validation category as a consistent state and source pair. Submit verdict references using the manifest attemptNumber values; do not copy participant or session UUIDs. During synthesis, resolve every reported conflict and treat synthesisPlan instructions as explicit user requirements. Resolve dependencies coherently rather than copying hunks mechanically. Do not modify any attempt, inspect another checkout, discover sessions, guess references, or create sessions."
139
+ }));
140
+ }
141
+ };
142
+ ReadSessionComparisonTool = ( __decorate([( __param(0, ISessionComparisonService)), ( __param(1, ISessionsManagementService))], ReadSessionComparisonTool));
143
+ let CompleteSessionComparisonTool = class CompleteSessionComparisonTool {
144
+ constructor(comparisonService) {
145
+ this.comparisonService = comparisonService;
146
+ }
147
+ getToolData() {
148
+ return {
149
+ id: CompleteSessionComparisonToolId,
150
+ toolReferenceName: "completeAttemptComparison",
151
+ canBeReferencedInPrompt: true,
152
+ icon: Codicon.compareChanges,
153
+ displayName: ( localize(5655, "Complete Attempt Comparison")),
154
+ userDescription: ( localize(5656, "Submit the judge's structured attempt comparison")),
155
+ modelDescription: "Submit the final structured verdict for an active implementation-attempt comparison. Use this after reviewing every referenced attempt diff and running any missing targeted validation needed for a reliable recommendation. Reference attempts only by the attemptNumber values returned by readAttemptComparison; do not use participant or session UUIDs. Keep explanation to one concise sentence. Provide exactly one concise rationale point in this order: comparison, validation, codeQuality, and solution. Each point must cite concrete evidence and stay within the schema length limit. For each validation category, provide one consistent state and source evidence pair. Known passed or failed results must come from the attempt report or a Judge run; unavailable evidence cannot claim a known result. This persists an advisory verdict; synthesis only starts through an explicit user action. If invalid input is rejected, correct the reported fields and retry; do not submit again after success.",
156
+ source: ToolDataSource.Internal,
157
+ when: ( ContextKeyExpr.and(ChatContextKeys.enabled)),
158
+ runsInWorkspace: false,
159
+ inputSchema: {
160
+ type: "object",
161
+ properties: {
162
+ comparisonId: {
163
+ type: "string",
164
+ description: "The comparison ID supplied in the judge prompt."
165
+ },
166
+ recommendedAttemptNumber: {
167
+ type: "integer",
168
+ minimum: 1,
169
+ description: "The attemptNumber of the strongest attempt from readAttemptComparison."
170
+ },
171
+ explanation: {
172
+ type: "string",
173
+ minLength: 1,
174
+ maxLength: MaxExplanationLength,
175
+ description: "One concise sentence summarizing why the winning attempt is strongest."
176
+ },
177
+ rationale: {
178
+ type: "object",
179
+ description: "Four categorized, concise reasons why the recommended attempt won.",
180
+ properties: {
181
+ comparison: rationalePointSchema("The decisive advantage over the other attempts."),
182
+ validation: rationalePointSchema("The strongest concrete validation evidence."),
183
+ codeQuality: rationalePointSchema("Why the implementation is well scoped and maintainable."),
184
+ solution: rationalePointSchema("What the solution gets right.")
185
+ },
186
+ required: ["comparison", "validation", "codeQuality", "solution"],
187
+ additionalProperties: false
188
+ },
189
+ conflicts: {
190
+ type: "array",
191
+ description: "Cross-attempt conflicts or incompatible design choices that synthesis must resolve.",
192
+ items: {
193
+ type: "string"
194
+ }
195
+ },
196
+ attempts: {
197
+ type: "array",
198
+ description: "One structured verdict for each attempt.",
199
+ items: {
200
+ type: "object",
201
+ properties: {
202
+ attemptNumber: {
203
+ type: "integer",
204
+ minimum: 1,
205
+ description: "The attemptNumber from readAttemptComparison."
206
+ },
207
+ summary: {
208
+ type: "string"
209
+ },
210
+ validation: {
211
+ type: "object",
212
+ properties: {
213
+ tests: validationEvidenceSchema(),
214
+ build: validationEvidenceSchema(),
215
+ lint: validationEvidenceSchema(),
216
+ diagnostics: validationEvidenceSchema()
217
+ },
218
+ required: ["tests", "build", "lint", "diagnostics"],
219
+ additionalProperties: false
220
+ },
221
+ unresolvedIssues: {
222
+ type: "array",
223
+ items: {
224
+ type: "string"
225
+ }
226
+ },
227
+ notableDifferences: {
228
+ type: "array",
229
+ description: "The strongest reusable points from this attempt, especially when it is not recommended.",
230
+ items: {
231
+ type: "string"
232
+ }
233
+ }
234
+ },
235
+ required: [
236
+ "attemptNumber",
237
+ "summary",
238
+ "validation",
239
+ "unresolvedIssues",
240
+ "notableDifferences"
241
+ ],
242
+ additionalProperties: false
243
+ }
244
+ }
245
+ },
246
+ required: [
247
+ "comparisonId",
248
+ "recommendedAttemptNumber",
249
+ "explanation",
250
+ "rationale",
251
+ "conflicts",
252
+ "attempts"
253
+ ],
254
+ additionalProperties: false
255
+ }
256
+ };
257
+ }
258
+ async prepareToolInvocation(_context, _token) {
259
+ return {
260
+ invocationMessage: ( localize(5657, "Submitting attempt comparison")),
261
+ pastTenseMessage: ( localize(5658, "Submitted attempt comparison"))
262
+ };
263
+ }
264
+ async invoke(invocation, _countTokens, _progress, _token) {
265
+ const input = parseInput(invocation.parameters);
266
+ if (!input) {
267
+ return toolError(
268
+ "The comparison verdict input is invalid. Keep explanation to one sentence, provide concise comparison, validation, codeQuality, and solution rationale points, and use a consistent state and source pair for every validation category."
269
+ );
270
+ }
271
+ const comparison = resolveComparison(this.comparisonService, input.comparisonId);
272
+ if (!comparison) {
273
+ return toolError(`Comparison '${input.comparisonId}' does not exist.`);
274
+ }
275
+ if (!isInvokingParticipant(comparison, invocation, [SessionComparisonParticipantRole.Judge])) {
276
+ return toolError("Only the judge session for this comparison can submit its verdict.");
277
+ }
278
+ const allAttemptParticipants = comparison.participants.filter(
279
+ participant => participant.role === SessionComparisonParticipantRole.Attempt
280
+ );
281
+ const attemptParticipantsByNumber = ( new Map());
282
+ for (const [index, participant] of allAttemptParticipants.entries()) {
283
+ if (participant.sessionResource) {
284
+ attemptParticipantsByNumber.set(index + 1, participant);
285
+ }
286
+ }
287
+ const attemptParticipants = [...( attemptParticipantsByNumber.values())];
288
+ const validAttemptNumbers = ( new Set(( attemptParticipantsByNumber.keys())));
289
+ if (!Number.isInteger(input.recommendedAttemptNumber) || !( validAttemptNumbers.has(input.recommendedAttemptNumber)) || input.attempts.length !== attemptParticipants.length || ( input.attempts.some(attempt => !Number.isInteger(attempt.attemptNumber) || !( validAttemptNumbers.has(attempt.attemptNumber)))) || ( new Set(input.attempts.map(attempt => attempt.attemptNumber))).size !== input.attempts.length) {
290
+ return toolError(
291
+ "The verdict must recommend an attemptNumber and include exactly one finding for every attemptNumber returned by readAttemptComparison."
292
+ );
293
+ }
294
+ const verdict = {
295
+ recommendedParticipantId: attemptParticipantsByNumber.get(input.recommendedAttemptNumber).id,
296
+ explanation: input.explanation,
297
+ rationale: input.rationale,
298
+ conflicts: input.conflicts,
299
+ attempts: input.attempts.map(attempt => {
300
+ const {
301
+ attemptNumber,
302
+ ...finding
303
+ } = attempt;
304
+ return {
305
+ participantId: attemptParticipantsByNumber.get(attemptNumber).id,
306
+ ...finding
307
+ };
308
+ })
309
+ };
310
+ this.comparisonService.submitVerdict(comparison.id, verdict);
311
+ const result = toolResult(JSON.stringify({
312
+ status: "submitted",
313
+ comparisonId: comparison.id
314
+ }));
315
+ result.toolResultMessage = ( localize(5659, "Submitted attempt comparison"));
316
+ return result;
317
+ }
318
+ };
319
+ CompleteSessionComparisonTool = ( __decorate([( __param(0, ISessionComparisonService))], CompleteSessionComparisonTool));
320
+ let SessionComparisonToolContribution = class SessionComparisonToolContribution extends Disposable {
321
+ static {
322
+ this.ID = "sessions.contrib.sessionComparisonTool";
323
+ }
324
+ constructor(
325
+ toolsService,
326
+ instantiationService,
327
+ comparisonService,
328
+ configurationService
329
+ ) {
330
+ super();
331
+ this._toolRegistrations = this._register(( new DisposableStore()));
332
+ this._toolsRegistered = false;
333
+ const enabled = observableConfigValue(COMPARE_AGENTS_ENABLED_SETTING, false, configurationService);
334
+ this._register(autorun(reader => {
335
+ const shouldRegister = enabled.read(reader) || ( comparisonService.comparisons.read(reader).some(comparison => comparison.archivedAt === undefined));
336
+ if (shouldRegister === this._toolsRegistered) {
337
+ return;
338
+ }
339
+ this._toolsRegistered = shouldRegister;
340
+ this._toolRegistrations.clear();
341
+ if (shouldRegister) {
342
+ this._registerComparisonTools(toolsService, instantiationService);
343
+ }
344
+ }));
345
+ }
346
+ _registerComparisonTools(toolsService, instantiationService) {
347
+ const toolSet = this._toolRegistrations.add(toolsService.createToolSet(
348
+ ToolDataSource.Internal,
349
+ "vscode_sessionComparison",
350
+ "sessionComparison",
351
+ {
352
+ icon: Codicon.compareChanges,
353
+ description: ( localize(5660, "Compare implementation attempts")),
354
+ hiddenInToolsPicker: true
355
+ }
356
+ ));
357
+ const readTool = instantiationService.createInstance(ReadSessionComparisonTool);
358
+ const readToolData = readTool.getToolData();
359
+ this._toolRegistrations.add(toolsService.registerTool(readToolData, readTool));
360
+ this._toolRegistrations.add(toolSet.addTool(readToolData));
361
+ const tool = instantiationService.createInstance(CompleteSessionComparisonTool);
362
+ const toolData = tool.getToolData();
363
+ this._toolRegistrations.add(toolsService.registerTool(toolData, tool));
364
+ this._toolRegistrations.add(toolSet.addTool(toolData));
365
+ }
366
+ };
367
+ SessionComparisonToolContribution = ( __decorate([( __param(0, ILanguageModelToolsService)), ( __param(1, IInstantiationService)), ( __param(2, ISessionComparisonService)), ( __param(3, IConfigurationService))], SessionComparisonToolContribution));
368
+ function parseReadInput(value) {
369
+ return isRecord(value) && typeof value.comparisonId === "string" ? {
370
+ comparisonId: value.comparisonId
371
+ } : undefined;
372
+ }
373
+ function isInvokingParticipant(comparison, invocation, roles) {
374
+ const invokingSession = invocation.context?.sessionResource;
375
+ return !!invokingSession && ( comparison.participants.some(
376
+ participant => roles.includes(participant.role) && !!participant.sessionResource && isEqual(invokingSession, participant.sessionResource)
377
+ ));
378
+ }
379
+ function parseInput(value) {
380
+ const rationale = isRecord(value) ? parseRationale(value.rationale) : undefined;
381
+ if (!isRecord(value) || typeof value.comparisonId !== "string" || typeof value.recommendedAttemptNumber !== "number" || !isConciseText(value.explanation, MaxExplanationLength) || !rationale || !isStringArray(value.conflicts) || !Array.isArray(value.attempts) || Object.hasOwn(value, "decisionSections")) {
382
+ return undefined;
383
+ }
384
+ const attempts = [];
385
+ for (const attempt of value.attempts) {
386
+ if (!isRecord(attempt) || typeof attempt.attemptNumber !== "number" || typeof attempt.summary !== "string" || !isRecord(attempt.validation) || !isValidationEvidence(attempt.validation.tests) || !isValidationEvidence(attempt.validation.build) || !isValidationEvidence(attempt.validation.lint) || !isValidationEvidence(attempt.validation.diagnostics) || !isStringArray(attempt.unresolvedIssues) || !isStringArray(attempt.notableDifferences)) {
387
+ return undefined;
388
+ }
389
+ attempts.push({
390
+ attemptNumber: attempt.attemptNumber,
391
+ summary: attempt.summary,
392
+ validation: {
393
+ tests: attempt.validation.tests,
394
+ build: attempt.validation.build,
395
+ lint: attempt.validation.lint,
396
+ diagnostics: attempt.validation.diagnostics
397
+ },
398
+ unresolvedIssues: attempt.unresolvedIssues,
399
+ notableDifferences: attempt.notableDifferences
400
+ });
401
+ }
402
+ return {
403
+ comparisonId: value.comparisonId,
404
+ recommendedAttemptNumber: value.recommendedAttemptNumber,
405
+ explanation: value.explanation,
406
+ rationale,
407
+ conflicts: value.conflicts,
408
+ attempts
409
+ };
410
+ }
411
+ function parseRationale(value) {
412
+ if (!isRecord(value) || !isConciseText(value.comparison, MaxRationalePointLength) || !isConciseText(value.validation, MaxRationalePointLength) || !isConciseText(value.codeQuality, MaxRationalePointLength) || !isConciseText(value.solution, MaxRationalePointLength)) {
413
+ return undefined;
414
+ }
415
+ return {
416
+ comparison: value.comparison,
417
+ validation: value.validation,
418
+ codeQuality: value.codeQuality,
419
+ solution: value.solution
420
+ };
421
+ }
422
+ function isConciseText(value, maxLength) {
423
+ return typeof value === "string" && value.trim().length > 0 && value.length <= maxLength && !value.includes("\n");
424
+ }
425
+ function rationalePointSchema(description) {
426
+ return {
427
+ type: "string",
428
+ minLength: 1,
429
+ maxLength: MaxRationalePointLength,
430
+ description
431
+ };
432
+ }
433
+ function getManifestSessionStatus(status) {
434
+ switch (status) {
435
+ case SessionStatus.Untitled:
436
+ return "untitled";
437
+ case SessionStatus.InProgress:
438
+ return "inProgress";
439
+ case SessionStatus.NeedsInput:
440
+ return "needsInput";
441
+ case SessionStatus.Completed:
442
+ return "completed";
443
+ case SessionStatus.Error:
444
+ return "error";
445
+ case undefined:
446
+ return "unavailable";
447
+ }
448
+ }
449
+ function validationEvidenceSchema() {
450
+ return {
451
+ description: "A consistent validation state and evidence source pair.",
452
+ oneOf: [validationEvidenceVariant([
453
+ SessionComparisonValidationState.Passed,
454
+ SessionComparisonValidationState.Failed
455
+ ], [
456
+ SessionComparisonValidationSource.AttemptReport,
457
+ SessionComparisonValidationSource.JudgeRun
458
+ ]), validationEvidenceVariant([
459
+ SessionComparisonValidationState.NotRun,
460
+ SessionComparisonValidationState.Unknown
461
+ ], [
462
+ SessionComparisonValidationSource.AttemptReport,
463
+ SessionComparisonValidationSource.JudgeRun,
464
+ SessionComparisonValidationSource.Unavailable
465
+ ]), validationEvidenceVariant(
466
+ [SessionComparisonValidationState.NotApplicable],
467
+ [SessionComparisonValidationSource.NotApplicable]
468
+ )]
469
+ };
470
+ }
471
+ function validationEvidenceVariant(states, sources) {
472
+ return {
473
+ type: "object",
474
+ properties: {
475
+ state: {
476
+ type: "string",
477
+ enum: [...states]
478
+ },
479
+ source: {
480
+ type: "string",
481
+ enum: [...sources]
482
+ }
483
+ },
484
+ required: ["state", "source"],
485
+ additionalProperties: false
486
+ };
487
+ }
488
+ function isRecord(value) {
489
+ return typeof value === "object" && value !== null;
490
+ }
491
+ function isStringArray(value) {
492
+ return Array.isArray(value) && value.every(item => typeof item === "string");
493
+ }
494
+ function isValidationEvidence(value) {
495
+ if (!isRecord(value)) {
496
+ return false;
497
+ }
498
+ switch (value.state) {
499
+ case SessionComparisonValidationState.Passed:
500
+ case SessionComparisonValidationState.Failed:
501
+ return value.source === SessionComparisonValidationSource.AttemptReport || value.source === SessionComparisonValidationSource.JudgeRun;
502
+ case SessionComparisonValidationState.NotRun:
503
+ case SessionComparisonValidationState.Unknown:
504
+ return value.source === SessionComparisonValidationSource.AttemptReport || value.source === SessionComparisonValidationSource.JudgeRun || value.source === SessionComparisonValidationSource.Unavailable;
505
+ case SessionComparisonValidationState.NotApplicable:
506
+ return value.source === SessionComparisonValidationSource.NotApplicable;
507
+ default:
508
+ return false;
509
+ }
510
+ }
511
+ function toManifestVerdict(verdict, attemptNumbers) {
512
+ const recommendedAttemptNumber = attemptNumbers.get(verdict.recommendedParticipantId);
513
+ if (!recommendedAttemptNumber) {
514
+ return undefined;
515
+ }
516
+ return {
517
+ recommendedAttemptNumber,
518
+ explanation: getBoundedSessionComparisonManifestText(verdict.explanation),
519
+ rationale: verdict.rationale,
520
+ conflicts: getBoundedSessionComparisonManifestList(verdict.conflicts),
521
+ attempts: verdict.attempts.slice(0, SESSION_COMPARISON_MANIFEST_LIST_MAX_ITEMS).flatMap(attempt => {
522
+ const attemptNumber = attemptNumbers.get(attempt.participantId);
523
+ return attemptNumber ? [{
524
+ attemptNumber,
525
+ summary: getBoundedSessionComparisonManifestText(attempt.summary),
526
+ validation: attempt.validation,
527
+ unresolvedIssues: getBoundedSessionComparisonManifestList(attempt.unresolvedIssues),
528
+ notableDifferences: getBoundedSessionComparisonManifestList(attempt.notableDifferences)
529
+ }] : [];
530
+ })
531
+ };
532
+ }
533
+ function toolResult(value) {
534
+ return {
535
+ content: [{
536
+ kind: "text",
537
+ value
538
+ }]
539
+ };
540
+ }
541
+ function toolError(message) {
542
+ return {
543
+ content: [{
544
+ kind: "text",
545
+ value: message
546
+ }],
547
+ toolResultError: message,
548
+ toolResultMessage: ( localize(5661, "Attempt comparison submission failed"))
549
+ };
550
+ }
551
+ function resolveComparison(comparisonService, comparisonId) {
552
+ const direct = comparisonService.getComparison(comparisonId);
553
+ if (direct) {
554
+ return direct;
555
+ }
556
+ return comparisonService.comparisons.get().find(comparison => hashSessionIdForTelemetry(comparison.id) === comparisonId);
557
+ }
558
+
559
+ export { CompleteSessionComparisonTool, ReadSessionComparisonTool, SessionComparisonToolContribution };
@@ -0,0 +1,12 @@
1
+ import { ISessionsService } from "@codingame/monaco-vscode-api/vscode/vs/sessions/services/sessions/browser/sessionsService.service";
2
+ import { ISessionComparisonService } from "@codingame/monaco-vscode-api/vscode/vs/sessions/services/sessions/common/sessionComparison.service";
3
+ import { ISessionsManagementService } from "@codingame/monaco-vscode-api/vscode/vs/sessions/services/sessions/common/sessionsManagement.service";
4
+ import { ISessionComparisonViewService } from "@codingame/monaco-vscode-api/vscode/vs/sessions/contrib/sessionComparison/browser/sessionComparisonViewService.service";
5
+ export declare class SessionComparisonViewService implements ISessionComparisonViewService {
6
+ private readonly comparisonService;
7
+ private readonly managementService;
8
+ private readonly sessionsService;
9
+ readonly _serviceBrand: undefined;
10
+ constructor(comparisonService: ISessionComparisonService, managementService: ISessionsManagementService, sessionsService: ISessionsService);
11
+ open(comparisonId: string): Promise<void>;
12
+ }
@@ -0,0 +1,38 @@
1
+
2
+ import { __decorate, __param } from '@codingame/monaco-vscode-api/external/tslib/tslib.es6';
3
+ import { localize } from '@codingame/monaco-vscode-api/vscode/vs/nls';
4
+ import { ISessionsService } from '@codingame/monaco-vscode-api/vscode/vs/sessions/services/sessions/browser/sessionsService.service';
5
+ import { getSessionComparisonParticipantsInDisplayOrder, SessionComparisonParticipantRole } from '@codingame/monaco-vscode-api/vscode/vs/sessions/services/sessions/common/sessionComparison';
6
+ import { ISessionComparisonService } from '@codingame/monaco-vscode-api/vscode/vs/sessions/services/sessions/common/sessionComparison.service';
7
+ import { ISessionsManagementService } from '@codingame/monaco-vscode-api/vscode/vs/sessions/services/sessions/common/sessionsManagement.service';
8
+
9
+ let SessionComparisonViewService = class SessionComparisonViewService {
10
+ constructor(comparisonService, managementService, sessionsService) {
11
+ this.comparisonService = comparisonService;
12
+ this.managementService = managementService;
13
+ this.sessionsService = sessionsService;
14
+ }
15
+ async open(comparisonId) {
16
+ const comparison = this.comparisonService.getComparison(comparisonId);
17
+ if (!comparison) {
18
+ throw ( new Error(( localize(5662, "This comparison is no longer available."))));
19
+ }
20
+ const availableAttempts = getSessionComparisonParticipantsInDisplayOrder(comparison.participants).flatMap(participant => {
21
+ if (participant.role !== SessionComparisonParticipantRole.Attempt) {
22
+ return [];
23
+ }
24
+ if (!participant.sessionResource) {
25
+ return [];
26
+ }
27
+ const session = this.managementService.getSession(participant.sessionResource);
28
+ return session ? [session] : [];
29
+ });
30
+ if (!availableAttempts.length) {
31
+ throw ( new Error(( localize(5663, "No comparison attempts are available to open."))));
32
+ }
33
+ await this.sessionsService.openSessionsInGrid(availableAttempts);
34
+ }
35
+ };
36
+ SessionComparisonViewService = ( __decorate([( __param(0, ISessionComparisonService)), ( __param(1, ISessionsManagementService)), ( __param(2, ISessionsService))], SessionComparisonViewService));
37
+
38
+ export { SessionComparisonViewService };