@codingame/monaco-vscode-chat-service-override 37.2.0 → 37.3.1

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 (752) hide show
  1. package/common.d.ts +9 -0
  2. package/common.js +372 -0
  3. package/index.d.ts +4 -6
  4. package/index.js +20 -377
  5. package/package.json +12 -5
  6. package/session.d.ts +8 -0
  7. package/session.js +56 -0
  8. package/vscode/src/vs/platform/agentHost/browser/agentHostConnectionsService.js +5 -2
  9. package/vscode/src/vs/platform/agentHost/browser/agentHostEnablementService.js +1 -1
  10. package/vscode/src/vs/platform/agentHost/browser/agentHostIpcChannelTransport.d.ts +1 -1
  11. package/vscode/src/vs/platform/agentHost/browser/agentHostIpcChannelTransport.js +2 -2
  12. package/vscode/src/vs/platform/agentHost/browser/remoteAgentHostServiceImpl.js +35 -11
  13. package/vscode/src/vs/platform/agentHost/browser/webSocketClientTransport.d.ts +1 -1
  14. package/vscode/src/vs/platform/agentHost/browser/webSocketClientTransport.js +2 -2
  15. package/vscode/src/vs/platform/agentHost/common/agentHostCustomizationConfig.js +34 -18
  16. package/vscode/src/vs/platform/agentHost/common/agentHostFileSystemService.d.ts +1 -1
  17. package/vscode/src/vs/platform/agentHost/common/agentHostFileSystemService.js +1 -1
  18. package/vscode/src/vs/platform/agentHost/common/agentHostStarter.config.contribution.js +54 -54
  19. package/vscode/src/vs/platform/agentHost/common/agentModelPricing.js +20 -23
  20. package/vscode/src/vs/platform/agentHost/common/copilotConfigSlashCommands.js +8 -8
  21. package/vscode/src/vs/platform/agentHost/common/meta/clientPluginCustomizationMeta.js +3 -1
  22. package/vscode/src/vs/platform/agentHost/common/otlp/otlpLogEmitter.d.ts +198 -0
  23. package/vscode/src/vs/platform/agentHost/common/otlp/otlpLogEmitter.js +197 -0
  24. package/vscode/src/vs/platform/agentHost/common/sandboxConfigSchema.js +14 -14
  25. package/vscode/src/vs/platform/agentHost/common/state/sessionWorkingDirectories.d.ts +1 -1
  26. package/vscode/src/vs/platform/agentHost/common/wslRemoteAgentHost.d.ts +63 -0
  27. package/vscode/src/vs/platform/agentHost/common/wslRemoteAgentHost.js +7 -0
  28. package/vscode/src/vs/platform/agentHost/common/wslRemoteAgentHost.service.d.ts +51 -0
  29. package/vscode/src/vs/platform/agentHost/common/wslRemoteAgentHost.service.js +6 -0
  30. package/vscode/src/vs/platform/networkFilter/common/networkFilterService.js +3 -3
  31. package/vscode/src/vs/platform/sandbox/common/terminalSandboxEngine.d.ts +1 -1
  32. package/vscode/src/vs/platform/sandbox/common/terminalSandboxEngine.js +6 -6
  33. package/vscode/src/vs/sessions/browser/parts/mobile/contributions/media/mobileMultiDiffView.css +215 -0
  34. package/vscode/src/vs/sessions/browser/parts/mobile/contributions/mobileDiffHelpers.d.ts +28 -0
  35. package/vscode/src/vs/sessions/browser/parts/mobile/contributions/mobileDiffHelpers.js +429 -0
  36. package/vscode/src/vs/sessions/browser/parts/mobile/contributions/mobileDiffView.d.ts +100 -0
  37. package/vscode/src/vs/sessions/browser/parts/mobile/contributions/mobileDiffView.js +675 -0
  38. package/vscode/src/vs/sessions/browser/parts/mobile/contributions/mobileMultiDiffView.d.ts +86 -0
  39. package/vscode/src/vs/sessions/browser/parts/mobile/contributions/mobileMultiDiffView.js +860 -0
  40. package/vscode/src/vs/sessions/browser/parts/mobile/contributions/mobileMultiDiffVirtualizer.d.ts +35 -0
  41. package/vscode/src/vs/sessions/browser/parts/mobile/contributions/mobileMultiDiffVirtualizer.js +67 -0
  42. package/vscode/src/vs/sessions/contrib/chat/browser/agentHostDelegation.d.ts +1 -0
  43. package/vscode/src/vs/sessions/contrib/chat/browser/agentHostDelegation.js +41 -0
  44. package/vscode/src/vs/sessions/contrib/chat/browser/aiCustomizationWorkspaceService.d.ts +85 -0
  45. package/vscode/src/vs/sessions/contrib/chat/browser/aiCustomizationWorkspaceService.js +247 -0
  46. package/vscode/src/vs/sessions/contrib/chat/browser/branchChatSessionAction.d.ts +16 -0
  47. package/vscode/src/vs/sessions/contrib/chat/browser/branchChatSessionAction.js +71 -0
  48. package/vscode/src/vs/sessions/contrib/chat/browser/btwSlashCommand.contribution.d.ts +15 -0
  49. package/vscode/src/vs/sessions/contrib/chat/browser/btwSlashCommand.contribution.js +106 -0
  50. package/vscode/src/vs/sessions/contrib/chat/browser/chat.contribution.d.ts +1 -0
  51. package/vscode/src/vs/sessions/contrib/chat/browser/chat.contribution.js +438 -0
  52. package/vscode/src/vs/sessions/contrib/chat/browser/chatPetAchievements.d.ts +8 -0
  53. package/vscode/src/vs/sessions/contrib/chat/browser/chatPetAchievements.js +25 -0
  54. package/vscode/src/vs/sessions/contrib/chat/browser/customizationsDebugLog.contribution.d.ts +1 -0
  55. package/vscode/src/vs/sessions/contrib/chat/browser/customizationsDebugLog.contribution.js +173 -0
  56. package/vscode/src/vs/sessions/contrib/chat/browser/media/runScriptAction.css +186 -0
  57. package/vscode/src/vs/sessions/contrib/chat/browser/newSession.d.ts +9 -0
  58. package/vscode/src/vs/sessions/contrib/chat/browser/newSessionFolderQuickPickAction.d.ts +12 -0
  59. package/vscode/src/vs/sessions/contrib/chat/browser/newSessionFolderQuickPickAction.js +104 -0
  60. package/vscode/src/vs/sessions/contrib/chat/browser/nullInlineChatSessionService.d.ts +15 -0
  61. package/vscode/src/vs/sessions/contrib/chat/browser/nullInlineChatSessionService.js +23 -0
  62. package/vscode/src/vs/sessions/contrib/chat/browser/openSessionLinkOpener.contribution.d.ts +51 -0
  63. package/vscode/src/vs/sessions/contrib/chat/browser/openSessionLinkOpener.contribution.js +151 -0
  64. package/vscode/src/vs/sessions/contrib/chat/browser/promptsService.d.ts +32 -0
  65. package/vscode/src/vs/sessions/contrib/chat/browser/promptsService.js +85 -0
  66. package/vscode/src/vs/sessions/contrib/chat/browser/registerDefaultSessionTaskRunners.d.ts +14 -0
  67. package/vscode/src/vs/sessions/contrib/chat/browser/registerDefaultSessionTaskRunners.js +20 -0
  68. package/vscode/src/vs/sessions/contrib/chat/browser/requestOriginProvider.contribution.d.ts +1 -0
  69. package/vscode/src/vs/sessions/contrib/chat/browser/requestOriginProvider.contribution.js +34 -0
  70. package/vscode/src/vs/sessions/contrib/chat/browser/runScriptAction.d.ts +39 -0
  71. package/vscode/src/vs/sessions/contrib/chat/browser/runScriptAction.js +828 -0
  72. package/vscode/src/vs/sessions/contrib/chat/browser/runScriptCustomTaskWidget.d.ts +48 -0
  73. package/vscode/src/vs/sessions/contrib/chat/browser/runScriptCustomTaskWidget.js +215 -0
  74. package/vscode/src/vs/sessions/contrib/chat/browser/sessionTurnChanges.d.ts +27 -0
  75. package/vscode/src/vs/sessions/contrib/chat/browser/sessionTurnChanges.js +237 -0
  76. package/vscode/src/vs/sessions/contrib/chat/browser/sessionsChatAccessibilityHelp.d.ts +10 -0
  77. package/vscode/src/vs/sessions/contrib/chat/browser/sessionsChatAccessibilityHelp.js +348 -0
  78. package/vscode/src/vs/sessions/contrib/chat/browser/sessionsOpenerParticipant.d.ts +6 -0
  79. package/vscode/src/vs/sessions/contrib/chat/browser/sessionsOpenerParticipant.js +35 -0
  80. package/vscode/src/vs/sessions/contrib/chat/browser/sideChatProvider.contribution.d.ts +45 -0
  81. package/vscode/src/vs/sessions/contrib/chat/browser/sideChatProvider.contribution.js +189 -0
  82. package/vscode/src/vs/sessions/contrib/chat/browser/unifiedWorkspacePickerConfiguration.d.ts +3 -0
  83. package/vscode/src/vs/sessions/contrib/chat/browser/unifiedWorkspacePickerConfiguration.js +17 -0
  84. package/vscode/src/vs/sessions/contrib/chat/browser/voiceBridge.contribution.d.ts +14 -0
  85. package/vscode/src/vs/sessions/contrib/chat/browser/voiceBridge.contribution.js +381 -0
  86. package/vscode/src/vs/sessions/contrib/chat/browser/workbenchSessionTaskRunner.d.ts +23 -0
  87. package/vscode/src/vs/sessions/contrib/chat/browser/workbenchSessionTaskRunner.js +48 -0
  88. package/vscode/src/vs/sessions/contrib/chat/browser/worktreeCreatedTaskDispatcher.d.ts +40 -0
  89. package/vscode/src/vs/sessions/contrib/chat/browser/worktreeCreatedTaskDispatcher.js +116 -0
  90. package/vscode/src/vs/sessions/contrib/providers/agentHost/browser/agentHostAgentPicker.d.ts +1 -0
  91. package/vscode/src/vs/sessions/contrib/providers/agentHost/browser/agentHostAgentPicker.js +300 -0
  92. package/vscode/src/vs/sessions/contrib/providers/agentHost/browser/agentHostSettings.contribution.d.ts +1 -0
  93. package/vscode/src/vs/sessions/contrib/providers/agentHost/browser/agentHostSettings.contribution.js +74 -0
  94. package/vscode/src/vs/sessions/contrib/providers/agentHost/browser/agentHostSettingsFileSystemProvider.d.ts +55 -0
  95. package/vscode/src/vs/sessions/contrib/providers/agentHost/browser/agentHostSettingsFileSystemProvider.js +103 -0
  96. package/vscode/src/vs/sessions/contrib/providers/agentHost/browser/agentHostSettingsShared.d.ts +50 -0
  97. package/vscode/src/vs/sessions/contrib/providers/agentHost/browser/agentHostSettingsShared.js +72 -0
  98. package/vscode/src/vs/sessions/contrib/providers/agentHost/browser/agentSessionSettings.contribution.d.ts +1 -0
  99. package/vscode/src/vs/sessions/contrib/providers/agentHost/browser/agentSessionSettings.contribution.js +70 -0
  100. package/vscode/src/vs/sessions/contrib/providers/agentHost/browser/agentSessionSettingsFileSystemProvider.d.ts +69 -0
  101. package/vscode/src/vs/sessions/contrib/providers/agentHost/browser/agentSessionSettingsFileSystemProvider.js +151 -0
  102. package/vscode/src/vs/sessions/contrib/providers/agentHost/browser/openAgentHostStateFileAction.d.ts +17 -0
  103. package/vscode/src/vs/sessions/contrib/providers/agentHost/browser/openAgentHostStateFileAction.js +39 -0
  104. package/vscode/src/vs/sessions/contrib/providers/copilotChatSessions/browser/branchPicker.d.ts +31 -0
  105. package/vscode/src/vs/sessions/contrib/providers/copilotChatSessions/browser/branchPicker.js +150 -0
  106. package/vscode/src/vs/sessions/contrib/providers/copilotChatSessions/browser/copilotChatSessions.contribution.d.ts +1 -0
  107. package/vscode/src/vs/sessions/contrib/providers/copilotChatSessions/browser/copilotChatSessions.contribution.js +42 -0
  108. package/vscode/src/vs/sessions/contrib/providers/copilotChatSessions/browser/copilotChatSessionsActions.d.ts +19 -0
  109. package/vscode/src/vs/sessions/contrib/providers/copilotChatSessions/browser/copilotChatSessionsActions.js +199 -0
  110. package/vscode/src/vs/sessions/contrib/providers/copilotChatSessions/browser/copilotChatSessionsChangesets.d.ts +104 -0
  111. package/vscode/src/vs/sessions/contrib/providers/copilotChatSessions/browser/copilotChatSessionsChangesets.js +301 -0
  112. package/vscode/src/vs/sessions/contrib/providers/copilotChatSessions/browser/copilotChatSessionsProvider.d.ts +518 -0
  113. package/vscode/src/vs/sessions/contrib/providers/copilotChatSessions/browser/copilotChatSessionsProvider.js +3121 -0
  114. package/vscode/src/vs/sessions/contrib/providers/copilotChatSessions/browser/mobilePermissionPicker.contribution.d.ts +1 -0
  115. package/vscode/src/vs/sessions/contrib/providers/copilotChatSessions/browser/mobilePermissionPicker.contribution.js +37 -0
  116. package/vscode/src/vs/sessions/contrib/providers/copilotChatSessions/browser/mobilePermissionPicker.d.ts +25 -0
  117. package/vscode/src/vs/sessions/contrib/providers/copilotChatSessions/browser/mobilePermissionPicker.js +97 -0
  118. package/vscode/src/vs/sessions/contrib/providers/copilotChatSessions/browser/modePicker.d.ts +74 -0
  119. package/vscode/src/vs/sessions/contrib/providers/copilotChatSessions/browser/modePicker.js +355 -0
  120. package/vscode/src/vs/sessions/contrib/providers/copilotChatSessions/browser/permissionPicker.d.ts +135 -0
  121. package/vscode/src/vs/sessions/contrib/providers/copilotChatSessions/browser/permissionPicker.js +521 -0
  122. package/vscode/src/vs/sessions/contrib/providers/copilotChatSessions/browser/sandboxPicker.d.ts +26 -0
  123. package/vscode/src/vs/sessions/contrib/providers/copilotChatSessions/browser/sandboxPicker.js +86 -0
  124. package/vscode/src/vs/sessions/contrib/providers/remoteAgentHost/browser/cloudSandboxAgentHost.contribution.d.ts +1 -0
  125. package/vscode/src/vs/sessions/contrib/providers/remoteAgentHost/browser/cloudSandboxAgentHost.contribution.js +14 -0
  126. package/vscode/src/vs/sessions/contrib/providers/remoteAgentHost/browser/cloudSandboxAgentHostContribution.d.ts +166 -0
  127. package/vscode/src/vs/sessions/contrib/providers/remoteAgentHost/browser/cloudSandboxAgentHostContribution.js +586 -0
  128. package/vscode/src/vs/sessions/contrib/providers/remoteAgentHost/browser/cloudSandboxConnectionCustomization.d.ts +15 -0
  129. package/vscode/src/vs/sessions/contrib/providers/remoteAgentHost/browser/cloudSandboxConnectionCustomization.js +47 -0
  130. package/vscode/src/vs/sessions/contrib/providers/remoteAgentHost/browser/cloudSandboxReadOnlySessionHandler.d.ts +45 -0
  131. package/vscode/src/vs/sessions/contrib/providers/remoteAgentHost/browser/cloudSandboxReadOnlySessionHandler.js +109 -0
  132. package/vscode/src/vs/sessions/contrib/providers/remoteAgentHost/browser/cloudSandboxSessionsProvider.d.ts +49 -0
  133. package/vscode/src/vs/sessions/contrib/providers/remoteAgentHost/browser/cloudSandboxSessionsProvider.js +69 -0
  134. package/vscode/src/vs/sessions/contrib/providers/remoteAgentHost/browser/entryDrivenProviderContribution.d.ts +47 -0
  135. package/vscode/src/vs/sessions/contrib/providers/remoteAgentHost/browser/entryDrivenProviderContribution.js +109 -0
  136. package/vscode/src/vs/sessions/contrib/providers/remoteAgentHost/browser/hostFilter.contribution.d.ts +1 -0
  137. package/vscode/src/vs/sessions/contrib/providers/remoteAgentHost/browser/hostFilter.contribution.js +72 -0
  138. package/vscode/src/vs/sessions/contrib/providers/remoteAgentHost/browser/hostFilterActionViewItem.d.ts +79 -0
  139. package/vscode/src/vs/sessions/contrib/providers/remoteAgentHost/browser/hostFilterActionViewItem.js +353 -0
  140. package/vscode/src/vs/sessions/contrib/providers/remoteAgentHost/browser/manageRemoteAgentHosts.d.ts +1 -0
  141. package/vscode/src/vs/sessions/contrib/providers/remoteAgentHost/browser/manageRemoteAgentHosts.js +161 -0
  142. package/vscode/src/vs/sessions/contrib/providers/remoteAgentHost/browser/managedReconnectAgentHostContribution.d.ts +95 -0
  143. package/vscode/src/vs/sessions/contrib/providers/remoteAgentHost/browser/managedReconnectAgentHostContribution.js +172 -0
  144. package/vscode/src/vs/sessions/contrib/providers/remoteAgentHost/browser/media/hostFilter.css +259 -0
  145. package/vscode/src/vs/sessions/contrib/providers/remoteAgentHost/browser/media/hostPickerSheet.css +351 -0
  146. package/vscode/src/vs/sessions/contrib/providers/remoteAgentHost/browser/mobileHostFilterActionViewItem.d.ts +36 -0
  147. package/vscode/src/vs/sessions/contrib/providers/remoteAgentHost/browser/mobileHostFilterActionViewItem.js +236 -0
  148. package/vscode/src/vs/sessions/contrib/providers/remoteAgentHost/browser/remoteAgentHost.contribution.d.ts +80 -0
  149. package/vscode/src/vs/sessions/contrib/providers/remoteAgentHost/browser/remoteAgentHost.contribution.js +686 -0
  150. package/vscode/src/vs/sessions/contrib/providers/remoteAgentHost/browser/remoteAgentHostActions.d.ts +20 -0
  151. package/vscode/src/vs/sessions/contrib/providers/remoteAgentHost/browser/remoteAgentHostActions.js +1210 -0
  152. package/vscode/src/vs/sessions/contrib/providers/remoteAgentHost/browser/remoteAgentHostCustomizationHarness.d.ts +31 -0
  153. package/vscode/src/vs/sessions/contrib/providers/remoteAgentHost/browser/remoteAgentHostCustomizationHarness.js +136 -0
  154. package/vscode/src/vs/sessions/contrib/providers/remoteAgentHost/browser/remoteAgentHostLogForwarder.d.ts +103 -0
  155. package/vscode/src/vs/sessions/contrib/providers/remoteAgentHost/browser/remoteAgentHostLogForwarder.js +173 -0
  156. package/vscode/src/vs/sessions/contrib/providers/remoteAgentHost/browser/remoteAgentHostTerminal.contribution.d.ts +1 -0
  157. package/vscode/src/vs/sessions/contrib/providers/remoteAgentHost/browser/remoteAgentHostTerminal.contribution.js +51 -0
  158. package/vscode/src/vs/sessions/contrib/providers/remoteAgentHost/browser/tunnelAgentHost.contribution.d.ts +74 -0
  159. package/vscode/src/vs/sessions/contrib/providers/remoteAgentHost/browser/tunnelAgentHost.contribution.js +438 -0
  160. package/vscode/src/vs/sessions/contrib/providers/remoteAgentHost/browser/webSocketAgentHost.contribution.d.ts +14 -0
  161. package/vscode/src/vs/sessions/contrib/providers/remoteAgentHost/browser/webSocketAgentHost.contribution.js +52 -0
  162. package/vscode/src/vs/sessions/contrib/providers/remoteAgentHost/browser/wslAgentHost.contribution.d.ts +44 -0
  163. package/vscode/src/vs/sessions/contrib/providers/remoteAgentHost/browser/wslAgentHost.contribution.js +171 -0
  164. package/vscode/src/vs/sessions/contrib/sessions/browser/mobile/mobileOverlayContribution.d.ts +1 -0
  165. package/vscode/src/vs/sessions/contrib/sessions/browser/mobile/mobileOverlayContribution.js +98 -0
  166. package/vscode/src/vs/sessions/services/agentHost/browser/agentHostCustomizationService.d.ts +24 -0
  167. package/vscode/src/vs/sessions/services/agentHost/browser/agentHostCustomizationService.js +142 -0
  168. package/vscode/src/vs/workbench/api/browser/mainThreadChatAgents2.js +22 -22
  169. package/vscode/src/vs/workbench/api/browser/mainThreadChatCodeMapper.js +2 -2
  170. package/vscode/src/vs/workbench/api/browser/mainThreadChatContext.js +1 -1
  171. package/vscode/src/vs/workbench/api/browser/mainThreadChatDebug.js +7 -7
  172. package/vscode/src/vs/workbench/api/browser/mainThreadChatInputNotification.js +3 -3
  173. package/vscode/src/vs/workbench/api/browser/mainThreadChatSessions.js +14 -14
  174. package/vscode/src/vs/workbench/api/browser/mainThreadLanguageModelTools.js +2 -2
  175. package/vscode/src/vs/workbench/api/browser/mainThreadLanguageModels.js +9 -7
  176. package/vscode/src/vs/workbench/contrib/agentsVoice/browser/agentsVoice.contribution.js +35 -35
  177. package/vscode/src/vs/workbench/contrib/agentsVoice/browser/agentsVoiceSessionsPicker.js +4 -4
  178. package/vscode/src/vs/workbench/contrib/agentsVoice/browser/agentsVoiceWidget.d.ts +3 -3
  179. package/vscode/src/vs/workbench/contrib/agentsVoice/browser/agentsVoiceWidget.js +20 -20
  180. package/vscode/src/vs/workbench/contrib/agentsVoice/browser/agentsVoiceWidgetBinding.js +7 -7
  181. package/vscode/src/vs/workbench/contrib/agentsVoice/browser/agentsVoiceWindowService.js +3 -3
  182. package/vscode/src/vs/workbench/contrib/agentsVoice/browser/components/confirmationComponent.d.ts +1 -1
  183. package/vscode/src/vs/workbench/contrib/agentsVoice/browser/components/confirmationComponent.js +3 -3
  184. package/vscode/src/vs/workbench/contrib/agentsVoice/browser/components/feedbackDialog.js +6 -6
  185. package/vscode/src/vs/workbench/contrib/agentsVoice/browser/components/headerComponent.d.ts +1 -1
  186. package/vscode/src/vs/workbench/contrib/agentsVoice/browser/components/headerComponent.js +11 -11
  187. package/vscode/src/vs/workbench/contrib/agentsVoice/browser/components/onboardingComponent.js +11 -11
  188. package/vscode/src/vs/workbench/contrib/agentsVoice/browser/components/sessionListComponent.d.ts +1 -1
  189. package/vscode/src/vs/workbench/contrib/agentsVoice/browser/components/sessionListComponent.js +9 -9
  190. package/vscode/src/vs/workbench/contrib/agentsVoice/browser/components/statusRowsComponent.d.ts +1 -1
  191. package/vscode/src/vs/workbench/contrib/agentsVoice/browser/components/statusRowsComponent.js +5 -5
  192. package/vscode/src/vs/workbench/contrib/agentsVoice/browser/components/transcriptComponent.d.ts +1 -1
  193. package/vscode/src/vs/workbench/contrib/agentsVoice/browser/components/voiceBarComponent.d.ts +1 -1
  194. package/vscode/src/vs/workbench/contrib/agentsVoice/browser/components/voiceBarComponent.js +2 -2
  195. package/vscode/src/vs/workbench/contrib/agentsVoice/browser/transcriptsView/voiceTranscripts.contribution.js +14 -14
  196. package/vscode/src/vs/workbench/contrib/agentsVoice/browser/transcriptsView/voiceTranscriptsView.js +7 -7
  197. package/vscode/src/vs/workbench/contrib/agentsVoice/browser/voiceModeOnboarding.d.ts +2 -2
  198. package/vscode/src/vs/workbench/contrib/agentsVoice/browser/voiceModeOnboarding.js +40 -40
  199. package/vscode/src/vs/workbench/contrib/agentsVoice/common/voiceTranscriptStore.js +1 -1
  200. package/vscode/src/vs/workbench/contrib/chat/browser/accessibility/chatResponseAccessibleView.js +27 -31
  201. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatAccessibilityActions.js +8 -8
  202. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatAccessibilityHelp.d.ts +1 -1
  203. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatAccessibilityHelp.js +97 -97
  204. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatAgentRecommendationActions.js +5 -3
  205. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatCodeblockActions.d.ts +1 -1
  206. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatCodeblockActions.js +17 -17
  207. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatContextActions.js +11 -11
  208. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatCopyActions.js +8 -8
  209. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatDeveloperActions.js +11 -11
  210. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatFileTreeActions.js +2 -2
  211. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatFindActions.js +8 -8
  212. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatImportExport.js +3 -3
  213. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatLanguageModelActions.js +15 -15
  214. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatMoveActions.js +6 -6
  215. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatNewActions.js +13 -13
  216. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatOpenAgentDebugPanelAction.js +12 -12
  217. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatPluginActions.js +19 -19
  218. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatPromptNavigationActions.js +2 -2
  219. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatQueueActions.js +15 -15
  220. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatQuickInputActions.js +8 -8
  221. package/vscode/src/vs/workbench/contrib/chat/browser/actions/codeBlockOperations.d.ts +1 -1
  222. package/vscode/src/vs/workbench/contrib/chat/browser/actions/codeBlockOperations.js +20 -20
  223. package/vscode/src/vs/workbench/contrib/chat/browser/actions/createPluginAction.js +50 -42
  224. package/vscode/src/vs/workbench/contrib/chat/browser/actions/exportAgentHostDebugLogsAction.js +12 -12
  225. package/vscode/src/vs/workbench/contrib/chat/browser/actions/openAgentHostStateFileAction.js +9 -5
  226. package/vscode/src/vs/workbench/contrib/chat/browser/agentPluginCommands.js +7 -7
  227. package/vscode/src/vs/workbench/contrib/chat/browser/agentPluginEditor/agentPluginEditor.js +7 -7
  228. package/vscode/src/vs/workbench/contrib/chat/browser/agentPluginEditor/agentPluginEditorInput.d.ts +1 -1
  229. package/vscode/src/vs/workbench/contrib/chat/browser/agentPluginEditor/agentPluginEditorInput.js +3 -3
  230. package/vscode/src/vs/workbench/contrib/chat/browser/agentPluginRepositoryService.d.ts +1 -1
  231. package/vscode/src/vs/workbench/contrib/chat/browser/agentPluginRepositoryService.js +14 -14
  232. package/vscode/src/vs/workbench/contrib/chat/browser/agentPluginsView.d.ts +1 -1
  233. package/vscode/src/vs/workbench/contrib/chat/browser/agentPluginsView.js +21 -21
  234. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentCustomizationContentExpander.d.ts +1 -1
  235. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentCustomizationContentExpander.js +3 -3
  236. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentCustomizationItemProvider.d.ts +1 -1
  237. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentCustomizationItemProvider.js +8 -6
  238. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentCustomizationSyncProvider.d.ts +1 -1
  239. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHost.contribution.js +2 -7
  240. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostActiveClientService.d.ts +1 -1
  241. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostActiveClientService.js +4 -4
  242. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostAuth.js +2 -2
  243. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostChatContribution.js +7 -7
  244. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostCopilotCliSettingsContribution.js +1 -1
  245. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostCustomizationService.js +431 -19
  246. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostExistingSessionHarnessPickerEnablement.js +1 -1
  247. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostLanguageModelProvider.js +7 -7
  248. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostLocalCustomizations.d.ts +1 -1
  249. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostLocalCustomizations.js +3 -1
  250. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostMcpServerSupport.d.ts +1 -1
  251. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostMcpServerSupport.js +11 -11
  252. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostModeSynchronizer.js +1 -1
  253. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostPermissionUiContribution.js +6 -6
  254. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostPromptCacheNotification.d.ts +1 -1
  255. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostPromptCacheNotification.js +5 -5
  256. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostProtectedResourcesService.js +4 -2
  257. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostResponseFileChanges.d.ts +1 -1
  258. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostResponseFileChanges.js +3 -3
  259. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostRootConfigForwarder.d.ts +1 -1
  260. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostSessionHandler.js +83 -74
  261. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostSessionInputPills.d.ts +3 -3
  262. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostSessionInputPills.js +48 -43
  263. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostSessionListContribution.js +1 -1
  264. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostSessionListController.js +4 -4
  265. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostSessionListStore.d.ts +1 -1
  266. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostSessionListStore.js +2 -2
  267. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostSessionWorkingDirectorySynchronizer.d.ts +1 -1
  268. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostSessionWorkingDirectorySynchronizer.js +9 -4
  269. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostSettings.contribution.js +3 -3
  270. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostSettingsFileSystemProvider.js +4 -4
  271. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostShellInitSynchronizer.d.ts +1 -1
  272. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostShellInitSynchronizer.js +1 -1
  273. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostSignedOutModelsNotification.js +10 -8
  274. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostTerminalContribution.js +2 -2
  275. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostUntitledProvisionalSessionService.js +12 -3
  276. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentSessionSettings.contribution.js +5 -5
  277. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentSessionSettingsFileSystemProvider.d.ts +1 -1
  278. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentSessionSettingsFileSystemProvider.js +5 -5
  279. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/applyAgentHostSessionConfig.js +1 -1
  280. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/applyAgentHostSubmitConfig.js +1 -1
  281. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/openSessionLinkOpener.contribution.js +2 -2
  282. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/syncedCustomizationBundler.js +9 -9
  283. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessions.contribution.js +4 -4
  284. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsActions.d.ts +2 -2
  285. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsActions.js +56 -54
  286. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsPicker.d.ts +2 -2
  287. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsPicker.js +8 -8
  288. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsService.d.ts +1 -1
  289. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsService.js +1 -1
  290. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/agentSessionProjection.js +3 -3
  291. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/agentSessionProjectionActions.d.ts +1 -1
  292. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/agentSessionProjectionActions.js +5 -5
  293. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/agentSessionProjectionService.d.ts +1 -1
  294. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/agentSessionProjectionService.js +7 -7
  295. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/agentSessionsExperiments.contribution.js +5 -5
  296. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/agentTitleBarStatusWidget.js +26 -26
  297. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/unifiedQuickAccess.js +20 -20
  298. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/unifiedQuickAccessActions.js +4 -4
  299. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/localAgentSessionsController.js +5 -5
  300. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/sessionSummaryHoverService.d.ts +1 -1
  301. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/sessionSummaryHoverService.js +1 -1
  302. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessionsConfiguration.js +3 -3
  303. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationManagement.contribution.js +48 -48
  304. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/customizationHarnessService.d.ts +1 -1
  305. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/customizationHarnessService.js +1 -1
  306. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/customizationMigrationAccessibility.js +7 -7
  307. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/customizationMigrationServiceImpl.d.ts +1 -1
  308. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/customizationMigrationServiceImpl.js +26 -23
  309. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/mcpServerCustomizationMigration.d.ts +1 -1
  310. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/mcpServerCustomizationMigration.js +9 -9
  311. package/vscode/src/vs/workbench/contrib/chat/browser/attachments/chatAttachmentResolveService.js +10 -10
  312. package/vscode/src/vs/workbench/contrib/chat/browser/attachments/chatReferenceAttachmentWidget.contribution.js +1 -1
  313. package/vscode/src/vs/workbench/contrib/chat/browser/attachments/transcriptContextAttachmentWidget.contribution.js +1 -1
  314. package/vscode/src/vs/workbench/contrib/chat/browser/chat.contribution.js +2 -2
  315. package/vscode/src/vs/workbench/contrib/chat/browser/chat.shared.contribution.js +400 -426
  316. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/agentHostChatDebugProvider.js +42 -42
  317. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/agentHostLogSources.js +10 -10
  318. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/agentHostUsageSidecar.d.ts +1 -1
  319. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/agentHostUsageSidecar.js +1 -1
  320. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatCustomizationDiscoveryRenderer.js +36 -36
  321. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugCacheExplorerView.js +136 -136
  322. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugCacheInsights.js +75 -75
  323. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugDetailPanel.js +6 -6
  324. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugEditor.js +1 -1
  325. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugEditorInput.js +2 -2
  326. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugEnablement.js +3 -3
  327. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugEventDetailRenderer.js +20 -20
  328. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugEventList.js +7 -7
  329. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugFilters.js +4 -4
  330. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugFlowChartView.js +7 -7
  331. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugFlowGraph.js +26 -26
  332. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugFlowLayout.js +7 -7
  333. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugHomeView.js +12 -12
  334. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugHookContentRenderer.js +17 -17
  335. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugLogsView.js +27 -27
  336. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugMessageContentRenderer.js +8 -8
  337. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugModelTurnContentRenderer.js +23 -23
  338. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugOverviewView.js +35 -35
  339. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugToolCallContentRenderer.js +11 -11
  340. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugTypes.js +32 -36
  341. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugWireLogView.js +42 -42
  342. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingCheckpointTimelineImpl.js +13 -13
  343. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingCodeEditorIntegration.js +5 -5
  344. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingDeletedFileEntry.js +1 -1
  345. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingEditorActions.js +19 -19
  346. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingEditorOverlay.js +8 -8
  347. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingExplanationModelManager.js +12 -12
  348. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingExplanationWidget.js +15 -15
  349. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingModifiedDocumentEntry.js +8 -8
  350. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingModifiedFileEntry.js +3 -3
  351. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingModifiedNotebookEntry.d.ts +2 -2
  352. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingModifiedNotebookEntry.js +18 -18
  353. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingServiceImpl.js +10 -10
  354. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingSession.js +12 -12
  355. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingSessionStorage.js +4 -2
  356. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingTextModelChangeService.js +4 -4
  357. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/notebook/chatEditingModifiedNotebookSnapshot.js +6 -6
  358. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/notebook/chatEditingNotebookCellEntry.d.ts +1 -1
  359. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/notebook/chatEditingNotebookEditorIntegration.d.ts +1 -1
  360. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/notebook/chatEditingNotebookEditorIntegration.js +5 -5
  361. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/notebook/helpers.js +4 -4
  362. package/vscode/src/vs/workbench/contrib/chat/browser/chatImageCarouselService.js +10 -10
  363. package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatManagement.contribution.js +8 -8
  364. package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatManagementEditor.js +2 -2
  365. package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatManagementEditorInput.js +2 -2
  366. package/vscode/src/vs/workbench/contrib/chat/browser/chatOutputItemRenderer.js +4 -4
  367. package/vscode/src/vs/workbench/contrib/chat/browser/chatParticipant.contribution.js +36 -36
  368. package/vscode/src/vs/workbench/contrib/chat/browser/chatPetAchievements.contribution.js +18 -16
  369. package/vscode/src/vs/workbench/contrib/chat/browser/chatPetAchievementsEditor.js +1 -1
  370. package/vscode/src/vs/workbench/contrib/chat/browser/chatPetAchievementsEditorInput.js +1 -1
  371. package/vscode/src/vs/workbench/contrib/chat/browser/chatPetAchievementsWidget.js +39 -39
  372. package/vscode/src/vs/workbench/contrib/chat/browser/chatPromoNotification.js +2 -2
  373. package/vscode/src/vs/workbench/contrib/chat/browser/chatQuotaNotification.js +27 -27
  374. package/vscode/src/vs/workbench/contrib/chat/browser/chatRepoInfo.js +2 -2
  375. package/vscode/src/vs/workbench/contrib/chat/browser/chatSessions/chatSessionDescription.js +2 -2
  376. package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetupContributions.js +21 -21
  377. package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetupController.d.ts +1 -1
  378. package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetupController.js +11 -11
  379. package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetupGrowthSession.d.ts +2 -2
  380. package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetupGrowthSession.js +7 -7
  381. package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetupProviders.js +38 -38
  382. package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetupRunner.d.ts +1 -1
  383. package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetupRunner.js +60 -55
  384. package/vscode/src/vs/workbench/contrib/chat/browser/chatSlashCommands.js +39 -37
  385. package/vscode/src/vs/workbench/contrib/chat/browser/chatStatus/chatStatusEntry.js +15 -15
  386. package/vscode/src/vs/workbench/contrib/chat/browser/chatTipCatalog.js +19 -19
  387. package/vscode/src/vs/workbench/contrib/chat/browser/chatTipService.js +3 -3
  388. package/vscode/src/vs/workbench/contrib/chat/browser/chatWindowNotifier.js +9 -9
  389. package/vscode/src/vs/workbench/contrib/chat/browser/claudePluginRecommendations.js +2 -2
  390. package/vscode/src/vs/workbench/contrib/chat/browser/contextContrib/chatContext.contribution.js +5 -5
  391. package/vscode/src/vs/workbench/contrib/chat/browser/contextContrib/chatContextService.js +2 -2
  392. package/vscode/src/vs/workbench/contrib/chat/browser/defaultModelContribution.js +6 -6
  393. package/vscode/src/vs/workbench/contrib/chat/browser/enablementStatusWidget.js +2 -2
  394. package/vscode/src/vs/workbench/contrib/chat/browser/expNotification/chatExpNotificationConfig.d.ts +1 -1
  395. package/vscode/src/vs/workbench/contrib/chat/browser/expNotification/chatExpNotificationConfig.js +3 -3
  396. package/vscode/src/vs/workbench/contrib/chat/browser/expNotification/chatExpNotificationContribution.js +2 -2
  397. package/vscode/src/vs/workbench/contrib/chat/browser/githubRepoFetcher.js +2 -2
  398. package/vscode/src/vs/workbench/contrib/chat/browser/languageModelsConfigurationService.js +6 -6
  399. package/vscode/src/vs/workbench/contrib/chat/browser/planReviewFeedback/planReviewFeedbackEditorOverlay.js +7 -7
  400. package/vscode/src/vs/workbench/contrib/chat/browser/planReviewFeedback/planReviewFeedbackService.js +3 -3
  401. package/vscode/src/vs/workbench/contrib/chat/browser/pluginGitCommandService.js +6 -6
  402. package/vscode/src/vs/workbench/contrib/chat/browser/pluginInstallService.d.ts +1 -1
  403. package/vscode/src/vs/workbench/contrib/chat/browser/pluginInstallService.js +32 -32
  404. package/vscode/src/vs/workbench/contrib/chat/browser/pluginSources.d.ts +1 -1
  405. package/vscode/src/vs/workbench/contrib/chat/browser/pluginSources.js +22 -18
  406. package/vscode/src/vs/workbench/contrib/chat/browser/pluginUrlHandler.js +8 -8
  407. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/chatModeActions.js +2 -2
  408. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/promptCodingAgentActionOverlay.js +2 -2
  409. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/promptFileActions.js +3 -3
  410. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/promptToolSetsCodeLensProvider.js +5 -5
  411. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/promptToolsCodeLensProvider.js +4 -4
  412. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/promptUrlHandler.js +10 -10
  413. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/runPromptAction.js +8 -8
  414. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/saveAsPromptFileActions.js +5 -5
  415. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/skillActions.js +4 -4
  416. package/vscode/src/vs/workbench/contrib/chat/browser/promptTimeline/promptBucketing.js +5 -2
  417. package/vscode/src/vs/workbench/contrib/chat/browser/promptTimeline/promptTimeline.contribution.js +6 -6
  418. package/vscode/src/vs/workbench/contrib/chat/browser/promptTimeline/promptTimelineCard.js +4 -4
  419. package/vscode/src/vs/workbench/contrib/chat/browser/promptTimeline/promptTimelineGutterRail.js +5 -5
  420. package/vscode/src/vs/workbench/contrib/chat/browser/promptTimeline/promptTimelineModel.js +12 -12
  421. package/vscode/src/vs/workbench/contrib/chat/browser/promptTimeline/promptTimelineRulerRail.js +4 -4
  422. package/vscode/src/vs/workbench/contrib/chat/browser/promptTimeline/promptTimelineStickyHeader.js +4 -4
  423. package/vscode/src/vs/workbench/contrib/chat/browser/promptTimeline/promptTimelineWidgetContrib.js +1 -1
  424. package/vscode/src/vs/workbench/contrib/chat/browser/promptsDebugContribution.js +36 -29
  425. package/vscode/src/vs/workbench/contrib/chat/browser/telemetry/chatEditorTopologyTelemetry.js +3 -3
  426. package/vscode/src/vs/workbench/contrib/chat/browser/tools/clientToolSetsContribution.js +10 -10
  427. package/vscode/src/vs/workbench/contrib/chat/browser/tools/languageModelToolsConfirmationService.js +46 -42
  428. package/vscode/src/vs/workbench/contrib/chat/browser/tools/languageModelToolsService.js +34 -34
  429. package/vscode/src/vs/workbench/contrib/chat/browser/tools/renameTool.js +9 -9
  430. package/vscode/src/vs/workbench/contrib/chat/browser/tools/toolHelpers.js +2 -2
  431. package/vscode/src/vs/workbench/contrib/chat/browser/tools/toolResultCompressorService.js +68 -4
  432. package/vscode/src/vs/workbench/contrib/chat/browser/tools/usagesTool.js +11 -11
  433. package/vscode/src/vs/workbench/contrib/chat/browser/utilityModelContribution.js +2 -2
  434. package/vscode/src/vs/workbench/contrib/chat/browser/viewsWelcome/chatViewsWelcomeHandler.js +6 -6
  435. package/vscode/src/vs/workbench/contrib/chat/browser/voiceClient/voiceClientService.d.ts +1 -1
  436. package/vscode/src/vs/workbench/contrib/chat/browser/voiceClient/voiceClientService.js +10 -10
  437. package/vscode/src/vs/workbench/contrib/chat/browser/voiceInputMode/voiceInputMode.js +3 -3
  438. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatMarkdownAnchorService.d.ts +1 -1
  439. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatSubagentOpenChat.js +25 -25
  440. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatFind/chatFindAccessibilityHelp.js +15 -15
  441. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatPetWidgetService.d.ts +1 -1
  442. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatPetWidgetService.js +2 -2
  443. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatInputNoticeHub.d.ts +1 -1
  444. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatInputNoticeHub.js +1 -1
  445. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatQueuePickerActionItem.js +13 -13
  446. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/editor/agentHostInputCompletions.d.ts +1 -1
  447. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/editor/agentHostInputCompletions.js +5 -5
  448. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/editor/chatInputCommandArgumentHint.js +3 -3
  449. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/editor/chatInputCompletions.js +99 -95
  450. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/editor/chatInputEditorContrib.js +5 -5
  451. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/editor/chatInputEditorHover.js +5 -5
  452. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/editor/editorHoverWrapper.js +1 -1
  453. package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/chatQuick.js +2 -2
  454. package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/editor/chatEditor.js +1 -1
  455. package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/viewPane/chatViewPane.d.ts +3 -3
  456. package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/viewPane/chatViewPane.js +19 -19
  457. package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/viewPane/chatViewTitleControl.js +3 -3
  458. package/vscode/src/vs/workbench/contrib/chat/common/chatDebugService.js +4 -4
  459. package/vscode/src/vs/workbench/contrib/chat/common/chatDebugServiceImpl.js +2 -2
  460. package/vscode/src/vs/workbench/contrib/chat/common/chatService/chatServiceImpl.d.ts +1 -1
  461. package/vscode/src/vs/workbench/contrib/chat/common/chatService/chatServiceImpl.js +28 -26
  462. package/vscode/src/vs/workbench/contrib/chat/common/chatService/chatServiceTelemetry.js +2 -2
  463. package/vscode/src/vs/workbench/contrib/chat/common/model/chatModelStore.js +4 -4
  464. package/vscode/src/vs/workbench/contrib/chat/common/model/chatSessionOperationLog.js +5 -2
  465. package/vscode/src/vs/workbench/contrib/chat/common/model/chatSessionStore.js +14 -14
  466. package/vscode/src/vs/workbench/contrib/chat/common/model/objectMutationLog.js +1 -1
  467. package/vscode/src/vs/workbench/contrib/chat/common/participants/chatSlashCommands.js +1 -1
  468. package/vscode/src/vs/workbench/contrib/chat/common/plugins/agentPluginServiceImpl.d.ts +2 -2
  469. package/vscode/src/vs/workbench/contrib/chat/common/plugins/agentPluginServiceImpl.js +21 -21
  470. package/vscode/src/vs/workbench/contrib/chat/common/plugins/workspacePluginSettingsService.d.ts +1 -1
  471. package/vscode/src/vs/workbench/contrib/chat/common/plugins/workspacePluginSettingsService.js +3 -3
  472. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/chatPromptFilesContribution.js +20 -20
  473. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/computeAutomaticInstructions.js +14 -14
  474. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptCodeActions.js +13 -13
  475. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptHeaderAutocompletion.js +18 -12
  476. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptHovers.js +12 -12
  477. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptValidator.js +157 -157
  478. package/vscode/src/vs/workbench/contrib/chat/common/tools/builtinTools/confirmationTool.js +2 -2
  479. package/vscode/src/vs/workbench/contrib/chat/common/tools/builtinTools/manageTodoListTool.js +17 -17
  480. package/vscode/src/vs/workbench/contrib/chat/common/tools/builtinTools/reviewPlanTool.js +7 -7
  481. package/vscode/src/vs/workbench/contrib/chat/common/tools/builtinTools/runSubagentTool.js +5 -5
  482. package/vscode/src/vs/workbench/contrib/chat/common/tools/builtinTools/setArtifactRulesTool.js +3 -3
  483. package/vscode/src/vs/workbench/contrib/chat/common/tools/builtinTools/setArtifactsTool.js +4 -4
  484. package/vscode/src/vs/workbench/contrib/chat/common/tools/builtinTools/tools.js +1 -1
  485. package/vscode/src/vs/workbench/contrib/chat/common/tools/chatArtifactsService.js +1 -1
  486. package/vscode/src/vs/workbench/contrib/chat/common/tools/languageModelToolsContribution.js +26 -26
  487. package/vscode/src/vs/workbench/contrib/chat/common/tools/toolResultCompressor.js +5 -1
  488. package/vscode/src/vs/workbench/contrib/chat/common/voiceChatService.js +6 -6
  489. package/vscode/src/vs/workbench/contrib/chat/common/widget/chatResponseResourceFileSystemProvider.js +1 -1
  490. package/vscode/src/vs/workbench/contrib/imageCarousel/browser/imageCarousel.contribution.js +13 -13
  491. package/vscode/src/vs/workbench/contrib/imageCarousel/browser/imageCarouselEditor.js +10 -10
  492. package/vscode/src/vs/workbench/contrib/imageCarousel/browser/imageCarouselEditorInput.js +1 -1
  493. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatAccessibilityHelp.js +1 -1
  494. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatActions.js +16 -16
  495. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatDefaultModel.js +3 -3
  496. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatEditReviewSession.js +3 -3
  497. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatSessionServiceImpl.d.ts +1 -1
  498. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatSessionServiceImpl.js +5 -5
  499. package/vscode/src/vs/workbench/contrib/mcp/browser/mcpPromptArgumentPick.js +29 -25
  500. package/vscode/src/vs/workbench/contrib/notebook/browser/contrib/chat/notebookChatUtils.js +1 -1
  501. package/vscode/src/vs/workbench/contrib/notebook/browser/controller/chat/cellChatActions.js +13 -13
  502. package/vscode/src/vs/workbench/contrib/notebook/browser/controller/chat/notebook.chat.contribution.js +10 -10
  503. package/vscode/src/vs/workbench/contrib/notebook/browser/controller/chat/notebookChatContext.js +1 -1
  504. package/vscode/src/vs/workbench/contrib/notebook/browser/diff/inlineDiff/notebookModifiedCellDecorator.d.ts +1 -1
  505. package/vscode/src/vs/workbench/contrib/notebook/browser/diff/inlineDiff/notebookModifiedCellDecorator.js +2 -2
  506. package/vscode/src/vs/workbench/contrib/remoteCodingAgents/browser/remoteCodingAgents.contribution.js +7 -7
  507. package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChat.js +22 -22
  508. package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatAccessibilityHelp.js +16 -16
  509. package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatActions.js +21 -21
  510. package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatService.js +4 -2
  511. package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatWidget.js +4 -4
  512. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/agentHostSandboxForwarder.js +1 -1
  513. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/runInTerminalHelpers.js +15 -15
  514. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/runInTerminalToolTelemetry.js +2 -2
  515. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/taskHelpers.js +7 -7
  516. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/terminal.chatAgentTools.contribution.js +5 -5
  517. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/toolTerminalCreator.js +1 -1
  518. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/autoApprove/npmScriptAutoApprover.js +1 -1
  519. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/commandLineAutoApproveAnalyzer.js +18 -18
  520. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/commandLineFileWriteAnalyzer.js +9 -9
  521. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/consoleCompactor/consoleCompactor.js +28 -25
  522. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/getTerminalLastCommandTool.js +4 -4
  523. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/getTerminalOutputTool.js +4 -4
  524. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/getTerminalSelectionTool.js +4 -4
  525. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/killTerminalTool.js +4 -4
  526. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/monitoring/outputMonitor.js +4 -4
  527. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/runInTerminalConfirmationTool.js +5 -5
  528. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/runInTerminalTool.js +79 -79
  529. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/sandboxOutputAnalyzer.js +1 -1
  530. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/sendToTerminalTool.js +11 -11
  531. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/task/createAndRunTaskTool.js +16 -16
  532. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/task/getTaskOutputTool.js +9 -9
  533. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/task/runTaskTool.js +16 -16
  534. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/task/taskHelpers.js +1 -1
  535. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/terminalCommandArtifactCollector.js +1 -1
  536. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/terminalCommandParser.js +3 -3
  537. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/terminalOutputCache.d.ts +1 -1
  538. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/terminalOutputCache.js +1 -1
  539. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/terminalOutputCompressor.js +1 -1
  540. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/treeSitterCommandParser.js +3 -3
  541. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/common/sandboxSettingsReader.js +1 -1
  542. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/common/terminalSandboxService.js +7 -7
  543. package/vscode/src/vs/workbench/services/agentEditorComments/browser/agentEditorCommentsOverlayWidget.js +4 -4
  544. package/vscode/src/vs/workbench/services/agentHost/browser/editorRemoteAgentHostServiceClient.d.ts +3 -3
  545. package/vscode/src/vs/workbench/services/agentHost/browser/editorRemoteAgentHostServiceClient.js +4 -4
  546. package/vscode/src/vs/workbench/services/agentHost/common/agentHostFileSystemService.d.ts +1 -1
  547. package/vscode/src/vs/workbench/services/agentHost/common/agentHostFileSystemService.js +1 -1
  548. package/vscode/src/vs/workbench/services/agentHost/common/agentHostResourceService.js +6 -6
  549. package/vscode/src/vs/workbench/services/agentHost/common/editorRemoteAgentHostTransport.js +25 -25
  550. package/vscode/src/vs/platform/agentHost/browser/agentHostProtocolClient.d.ts +0 -603
  551. package/vscode/src/vs/platform/agentHost/browser/agentHostProtocolClient.js +0 -1911
  552. package/vscode/src/vs/platform/agentHost/common/agentHostClientInfo.d.ts +0 -9
  553. package/vscode/src/vs/platform/agentHost/common/agentHostClientInfo.js +0 -20
  554. package/vscode/src/vs/platform/agentHost/common/agentHostExtensionProtocol.d.ts +0 -144
  555. package/vscode/src/vs/platform/agentHost/common/agentHostExtensionProtocol.js +0 -20
  556. package/vscode/src/vs/platform/agentHost/common/agentHostFileSystemProvider.d.ts +0 -204
  557. package/vscode/src/vs/platform/agentHost/common/agentHostFileSystemProvider.js +0 -440
  558. package/vscode/src/vs/platform/agentHost/common/agentHostManagedRules.d.ts +0 -47
  559. package/vscode/src/vs/platform/agentHost/common/agentHostManagedRules.js +0 -75
  560. package/vscode/src/vs/platform/agentHost/common/agentHostManagedSettings.d.ts +0 -68
  561. package/vscode/src/vs/platform/agentHost/common/agentHostManagedSettings.js +0 -161
  562. package/vscode/src/vs/platform/agentHost/common/agentHostWorkingDirectories.d.ts +0 -16
  563. package/vscode/src/vs/platform/agentHost/common/agentHostWorkingDirectories.js +0 -14
  564. package/vscode/src/vs/platform/agentHost/common/agentMerge.d.ts +0 -261
  565. package/vscode/src/vs/platform/agentHost/common/agentMerge.js +0 -67
  566. package/vscode/src/vs/platform/agentHost/common/ahpJsonlLogger.d.ts +0 -39
  567. package/vscode/src/vs/platform/agentHost/common/ahpJsonlLogger.js +0 -169
  568. package/vscode/src/vs/platform/agentHost/common/changesetUri.d.ts +0 -130
  569. package/vscode/src/vs/platform/agentHost/common/changesetUri.js +0 -41
  570. package/vscode/src/vs/platform/agentHost/common/customAgents.d.ts +0 -42
  571. package/vscode/src/vs/platform/agentHost/common/customAgents.js +0 -20
  572. package/vscode/src/vs/platform/agentHost/common/meta/agentCompletionAttachmentMeta.d.ts +0 -110
  573. package/vscode/src/vs/platform/agentHost/common/meta/agentCompletionAttachmentMeta.js +0 -79
  574. package/vscode/src/vs/platform/agentHost/common/meta/agentHostArtifactRemovalMeta.d.ts +0 -4
  575. package/vscode/src/vs/platform/agentHost/common/resourceReadLogging.d.ts +0 -1
  576. package/vscode/src/vs/platform/agentHost/common/resourceReadLogging.js +0 -26
  577. package/vscode/src/vs/platform/agentHost/common/sessionArtifacts.d.ts +0 -75
  578. package/vscode/src/vs/platform/agentHost/common/sessionArtifacts.js +0 -84
  579. package/vscode/src/vs/platform/agentHost/common/state/agentSubscription.d.ts +0 -461
  580. package/vscode/src/vs/platform/agentHost/common/state/agentSubscription.js +0 -803
  581. package/vscode/src/vs/platform/agentHost/common/state/protocol/channels-annotations/reducer.d.ts +0 -18
  582. package/vscode/src/vs/platform/agentHost/common/state/protocol/channels-annotations/reducer.js +0 -89
  583. package/vscode/src/vs/platform/agentHost/common/state/protocol/channels-automation/reducer.d.ts +0 -4
  584. package/vscode/src/vs/platform/agentHost/common/state/protocol/channels-automation/reducer.js +0 -37
  585. package/vscode/src/vs/platform/agentHost/common/state/protocol/channels-automation-run/reducer.d.ts +0 -4
  586. package/vscode/src/vs/platform/agentHost/common/state/protocol/channels-automation-run/reducer.js +0 -45
  587. package/vscode/src/vs/platform/agentHost/common/state/protocol/channels-changeset/reducer.d.ts +0 -13
  588. package/vscode/src/vs/platform/agentHost/common/state/protocol/channels-changeset/reducer.js +0 -147
  589. package/vscode/src/vs/platform/agentHost/common/state/protocol/channels-chat/reducer.d.ts +0 -6
  590. package/vscode/src/vs/platform/agentHost/common/state/protocol/channels-chat/reducer.js +0 -544
  591. package/vscode/src/vs/platform/agentHost/common/state/protocol/channels-root/reducer.d.ts +0 -6
  592. package/vscode/src/vs/platform/agentHost/common/state/protocol/channels-root/reducer.js +0 -30
  593. package/vscode/src/vs/platform/agentHost/common/state/protocol/channels-session/reducer.d.ts +0 -6
  594. package/vscode/src/vs/platform/agentHost/common/state/protocol/channels-session/reducer.js +0 -430
  595. package/vscode/src/vs/platform/agentHost/common/state/protocol/channels-terminal/reducer.d.ts +0 -6
  596. package/vscode/src/vs/platform/agentHost/common/state/protocol/channels-terminal/reducer.js +0 -114
  597. package/vscode/src/vs/platform/agentHost/common/state/protocol/common/reducer-helpers.d.ts +0 -17
  598. package/vscode/src/vs/platform/agentHost/common/state/protocol/common/reducer-helpers.js +0 -9
  599. package/vscode/src/vs/platform/agentHost/common/state/protocol/common/timestamps.d.ts +0 -1
  600. package/vscode/src/vs/platform/agentHost/common/state/protocol/common/timestamps.js +0 -7
  601. package/vscode/src/vs/platform/agentHost/common/state/protocol/version/registry.d.ts +0 -67
  602. package/vscode/src/vs/platform/agentHost/common/state/protocol/version/registry.js +0 -117
  603. package/vscode/src/vs/platform/agentHost/common/state/sessionActions.d.ts +0 -106
  604. package/vscode/src/vs/platform/agentHost/common/state/sessionActions.js +0 -23
  605. package/vscode/src/vs/platform/agentHost/common/transportConstants.d.ts +0 -15
  606. package/vscode/src/vs/platform/agentHost/common/transportConstants.js +0 -6
  607. package/vscode/src/vs/platform/agentHost/common/worktreePaths.d.ts +0 -24
  608. package/vscode/src/vs/platform/agentHost/common/worktreePaths.js +0 -15
  609. package/vscode/src/vs/platform/domWidget/browser/domWidget.d.ts +0 -52
  610. package/vscode/src/vs/platform/domWidget/browser/domWidget.js +0 -53
  611. package/vscode/src/vs/platform/networkFilter/common/domainMatcher.d.ts +0 -54
  612. package/vscode/src/vs/platform/networkFilter/common/domainMatcher.js +0 -210
  613. package/vscode/src/vs/platform/networkFilter/common/settings.d.ts +0 -8
  614. package/vscode/src/vs/platform/networkFilter/common/settings.js +0 -10
  615. package/vscode/src/vs/workbench/browser/chatChangesPill.d.ts +0 -29
  616. package/vscode/src/vs/workbench/browser/chatChangesPill.js +0 -84
  617. package/vscode/src/vs/workbench/common/chatPullRequest.d.ts +0 -19
  618. package/vscode/src/vs/workbench/common/chatPullRequest.js +0 -53
  619. package/vscode/src/vs/workbench/contrib/chat/browser/agentHostCompletionAction.d.ts +0 -30
  620. package/vscode/src/vs/workbench/contrib/chat/browser/agentHostCompletionAction.js +0 -37
  621. package/vscode/src/vs/workbench/contrib/chat/browser/agentPluginEditor/agentPluginItems.d.ts +0 -30
  622. package/vscode/src/vs/workbench/contrib/chat/browser/agentPluginEditor/agentPluginItems.js +0 -9
  623. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostDownloadProgress.d.ts +0 -35
  624. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostDownloadProgress.js +0 -73
  625. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostToolSetEnablementService.d.ts +0 -51
  626. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostToolSetEnablementService.js +0 -167
  627. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/externalSessionsFilterMenu.d.ts +0 -3
  628. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/externalSessionsFilterMenu.js +0 -62
  629. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/media/sessionSummaryHover.css +0 -104
  630. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/sessionSummaryHover.d.ts +0 -115
  631. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/sessionSummaryHover.js +0 -168
  632. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationDebugPanel.d.ts +0 -35
  633. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationDebugPanel.js +0 -294
  634. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationIcons.d.ts +0 -66
  635. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationIcons.js +0 -23
  636. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationItemSource.d.ts +0 -147
  637. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationItemSource.js +0 -31
  638. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationItemsModel.d.ts +0 -83
  639. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationItemsModel.js +0 -55
  640. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationListWidget.d.ts +0 -278
  641. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationListWidget.js +0 -2036
  642. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationListWidgetUtils.d.ts +0 -22
  643. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationListWidgetUtils.js +0 -18
  644. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationManagementEditor.d.ts +0 -397
  645. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationManagementEditor.js +0 -4127
  646. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationManagementEditorInput.d.ts +0 -37
  647. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationManagementEditorInput.js +0 -93
  648. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationManagementSectionRegistry.d.ts +0 -26
  649. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationManagementSectionRegistry.js +0 -34
  650. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationPresentation.d.ts +0 -2
  651. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationPresentation.js +0 -23
  652. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationWelcomePage.d.ts +0 -57
  653. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationWelcomePage.js +0 -48
  654. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationWelcomePagePromptLaunchers.d.ts +0 -40
  655. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationWelcomePagePromptLaunchers.js +0 -369
  656. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/customizationCardList.d.ts +0 -40
  657. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/customizationCardList.js +0 -302
  658. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/customizationCreatorService.d.ts +0 -70
  659. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/customizationCreatorService.js +0 -74
  660. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/customizationGroupHeaderRenderer.d.ts +0 -43
  661. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/customizationGroupHeaderRenderer.js +0 -63
  662. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/customizationMigration.d.ts +0 -38
  663. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/customizationMigration.js +0 -240
  664. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/customizationMigrationCategories.d.ts +0 -82
  665. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/customizationMigrationCategories.js +0 -762
  666. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/customizationMigrationDashboard.d.ts +0 -80
  667. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/customizationMigrationDashboard.js +0 -279
  668. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/embeddedAgentPluginDetail.d.ts +0 -109
  669. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/embeddedAgentPluginDetail.js +0 -743
  670. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/embeddedExtensionToolsDetail.d.ts +0 -42
  671. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/embeddedExtensionToolsDetail.js +0 -130
  672. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/embeddedMcpServerDetail.d.ts +0 -62
  673. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/embeddedMcpServerDetail.js +0 -217
  674. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/galleryItemRenderer.d.ts +0 -46
  675. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/galleryItemRenderer.js +0 -91
  676. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/mcpListWidget.d.ts +0 -357
  677. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/mcpListWidget.js +0 -2656
  678. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/media/aiCustomizationManagement.css +0 -3742
  679. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/media/aiCustomizationWelcomePromptLaunchers.css +0 -301
  680. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/media/customizationMigrationDashboard.css +0 -354
  681. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/pluginListWidget.d.ts +0 -197
  682. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/pluginListWidget.js +0 -2205
  683. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/promptsServiceCustomizationItemProvider.d.ts +0 -27
  684. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/promptsServiceCustomizationItemProvider.js +0 -317
  685. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/toolsListWidget.d.ts +0 -132
  686. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/toolsListWidget.js +0 -1216
  687. package/vscode/src/vs/workbench/contrib/chat/browser/chatInputPills.d.ts +0 -86
  688. package/vscode/src/vs/workbench/contrib/chat/browser/chatInputPills.js +0 -282
  689. package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatModelsViewModel.d.ts +0 -118
  690. package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatModelsViewModel.js +0 -540
  691. package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatModelsWidget.d.ts +0 -82
  692. package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatModelsWidget.js +0 -1448
  693. package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/media/chatModelsWidget.css +0 -329
  694. package/vscode/src/vs/workbench/contrib/chat/browser/chatPetAchievementPreview.d.ts +0 -7
  695. package/vscode/src/vs/workbench/contrib/chat/browser/chatPetAchievementPreview.js +0 -114
  696. package/vscode/src/vs/workbench/contrib/chat/browser/chatStatus/chatStatus.d.ts +0 -2
  697. package/vscode/src/vs/workbench/contrib/chat/browser/chatStatus/chatStatus.js +0 -9
  698. package/vscode/src/vs/workbench/contrib/chat/browser/chatStatus/chatStatusDashboard.d.ts +0 -99
  699. package/vscode/src/vs/workbench/contrib/chat/browser/chatStatus/chatStatusDashboard.js +0 -1268
  700. package/vscode/src/vs/workbench/contrib/chat/browser/chatStatus/media/chatStatus.css +0 -552
  701. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/hookActions.d.ts +0 -31
  702. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/hookActions.js +0 -676
  703. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/hookUtils.d.ts +0 -68
  704. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/hookUtils.js +0 -225
  705. package/vscode/src/vs/workbench/contrib/chat/browser/sessionChatPillOptions.d.ts +0 -13
  706. package/vscode/src/vs/workbench/contrib/chat/browser/sessionChatPillOptions.js +0 -52
  707. package/vscode/src/vs/workbench/contrib/chat/browser/sessionPullRequestPill.d.ts +0 -22
  708. package/vscode/src/vs/workbench/contrib/chat/browser/sessionPullRequestPill.js +0 -58
  709. package/vscode/src/vs/workbench/contrib/chat/browser/voiceClient/voiceInputUtils.d.ts +0 -11
  710. package/vscode/src/vs/workbench/contrib/chat/browser/voiceClient/voiceInputUtils.js +0 -13
  711. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/editor/agentHostInputCompletionsBase.d.ts +0 -73
  712. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/editor/agentHostInputCompletionsBase.js +0 -65
  713. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/editor/chatInputCompletionUtils.d.ts +0 -31
  714. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/editor/chatInputCompletionUtils.js +0 -110
  715. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/editor/chatInputPlaceholderDecoration.d.ts +0 -11
  716. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/editor/chatInputPlaceholderDecoration.js +0 -28
  717. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/editor/chatInputReferenceDecorations.d.ts +0 -3
  718. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/editor/chatInputReferenceDecorations.js +0 -16
  719. package/vscode/src/vs/workbench/contrib/chat/common/automations/automationBlueprint.d.ts +0 -22
  720. package/vscode/src/vs/workbench/contrib/chat/common/automations/automationBlueprint.js +0 -163
  721. package/vscode/src/vs/workbench/contrib/chat/common/chatNotification.d.ts +0 -6
  722. package/vscode/src/vs/workbench/contrib/chat/common/chatNotification.js +0 -12
  723. package/vscode/src/vs/workbench/contrib/chat/common/customizationHarnessService.d.ts +0 -300
  724. package/vscode/src/vs/workbench/contrib/chat/common/customizationHarnessService.js +0 -272
  725. package/vscode/src/vs/workbench/contrib/chat/common/plugins/agentPluginEnablement.d.ts +0 -25
  726. package/vscode/src/vs/workbench/contrib/chat/common/plugins/agentPluginEnablement.js +0 -178
  727. package/vscode/src/vs/workbench/contrib/chat/common/plugins/agentPluginService.d.ts +0 -78
  728. package/vscode/src/vs/workbench/contrib/chat/common/plugins/agentPluginService.js +0 -51
  729. package/vscode/src/vs/workbench/contrib/chat/common/plugins/fileBackedInstalledPluginsStore.d.ts +0 -67
  730. package/vscode/src/vs/workbench/contrib/chat/common/plugins/fileBackedInstalledPluginsStore.js +0 -195
  731. package/vscode/src/vs/workbench/contrib/chat/common/plugins/marketplaceReference.d.ts +0 -67
  732. package/vscode/src/vs/workbench/contrib/chat/common/plugins/marketplaceReference.js +0 -294
  733. package/vscode/src/vs/workbench/contrib/chat/common/plugins/pluginMarketplaceService.d.ts +0 -212
  734. package/vscode/src/vs/workbench/contrib/chat/common/plugins/pluginMarketplaceService.js +0 -955
  735. package/vscode/src/vs/workbench/contrib/chat/common/plugins/strictKnownMarketplaces.d.ts +0 -31
  736. package/vscode/src/vs/workbench/contrib/chat/common/plugins/strictKnownMarketplaces.js +0 -122
  737. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/hookClaudeCompat.d.ts +0 -50
  738. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/hookClaudeCompat.js +0 -78
  739. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/hookCompatibility.d.ts +0 -77
  740. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/hookCompatibility.js +0 -120
  741. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/hookCopilotCliCompat.d.ts +0 -10
  742. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/hookCopilotCliCompat.js +0 -23
  743. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/service/customizationMigrationService.d.ts +0 -115
  744. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/service/customizationMigrationService.js +0 -69
  745. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/service/extensionPromptFileService.d.ts +0 -92
  746. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/service/extensionPromptFileService.js +0 -335
  747. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/service/promptsServiceImpl.d.ts +0 -235
  748. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/service/promptsServiceImpl.js +0 -1673
  749. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/utils/promptFilesLocator.d.ts +0 -202
  750. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/utils/promptFilesLocator.js +0 -872
  751. package/vscode/src/vs/workbench/contrib/chat/common/sessionChatPills.d.ts +0 -60
  752. package/vscode/src/vs/workbench/contrib/chat/common/sessionChatPills.js +0 -139
@@ -0,0 +1,1210 @@
1
+
2
+ import { localize2, localize } from '@codingame/monaco-vscode-api/vscode/vs/nls';
3
+ import { registerAction2, Action2 } from '@codingame/monaco-vscode-api/vscode/vs/platform/actions/common/actions';
4
+ import { Action } from '@codingame/monaco-vscode-api/vscode/vs/base/common/actions';
5
+ import { Codicon } from '@codingame/monaco-vscode-api/vscode/vs/base/common/codicons';
6
+ import { isCancellationError } from '@codingame/monaco-vscode-api/vscode/vs/base/common/errors';
7
+ import { toErrorMessage } from '@codingame/monaco-vscode-api/vscode/vs/base/common/errorMessage';
8
+ import { DisposableStore } from '@codingame/monaco-vscode-api/vscode/vs/base/common/lifecycle';
9
+ import { StopWatch } from '@codingame/monaco-vscode-api/vscode/vs/base/common/stopwatch';
10
+ import { ThemeIcon } from '@codingame/monaco-vscode-api/vscode/vs/base/common/themables';
11
+ import { URI } from '@codingame/monaco-vscode-api/vscode/vs/base/common/uri';
12
+ import { ICommandService } from '@codingame/monaco-vscode-api/vscode/vs/platform/commands/common/commands.service';
13
+ import { IDialogService } from '@codingame/monaco-vscode-api/vscode/vs/platform/dialogs/common/dialogs.service';
14
+ import { IFileService } from '@codingame/monaco-vscode-api/vscode/vs/platform/files/common/files.service';
15
+ import { isCodeEditor } from '@codingame/monaco-vscode-api/vscode/vs/editor/browser/editorBrowser';
16
+ import { EndOfLinePreference } from '@codingame/monaco-vscode-api/vscode/vs/editor/common/model';
17
+ import { Range } from '@codingame/monaco-vscode-api/vscode/vs/editor/common/core/range';
18
+ import { SnippetController2 } from '@codingame/monaco-vscode-api/vscode/vs/editor/contrib/snippet/browser/snippetController2';
19
+ import { IEditorService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/services/editor/common/editorService.service';
20
+ import { IOpenerService } from '@codingame/monaco-vscode-api/vscode/vs/platform/opener/common/opener.service';
21
+ import { ILogService } from '@codingame/monaco-vscode-api/vscode/vs/platform/log/common/log.service';
22
+ import { RemoteAgentHostsEnabledSettingId, parseRemoteAgentHostInput, RemoteAgentHostInputValidationError, addWebSocketRemoteAgentHostEntry, RemoteAgentHostEntryType, RemoteAgentHostConnectionStatus } from '@codingame/monaco-vscode-api/vscode/vs/platform/agentHost/common/remoteAgentHostService';
23
+ import { IRemoteAgentHostService } from '@codingame/monaco-vscode-api/vscode/vs/platform/agentHost/common/remoteAgentHostService.service';
24
+ import { IConfigurationService } from '@codingame/monaco-vscode-api/vscode/vs/platform/configuration/common/configuration.service';
25
+ import { SSHAuthMethod, isSSHHostKeyDeniedError } from '@codingame/monaco-vscode-api/vscode/vs/platform/agentHost/common/sshRemoteAgentHost';
26
+ import { ISSHRemoteAgentHostService } from '@codingame/monaco-vscode-api/vscode/vs/platform/agentHost/common/sshRemoteAgentHost.service';
27
+ import { isTunnelHosted, TUNNEL_ADDRESS_PREFIX } from '@codingame/monaco-vscode-api/vscode/vs/platform/agentHost/common/tunnelAgentHost';
28
+ import { ITunnelAgentHostService } from '@codingame/monaco-vscode-api/vscode/vs/platform/agentHost/common/tunnelAgentHost.service';
29
+ import { WSL_INSTALL_DOCS_URL } from '../../../../../platform/agentHost/common/wslRemoteAgentHost.js';
30
+ import { IWSLRemoteAgentHostService } from '../../../../../platform/agentHost/common/wslRemoteAgentHost.service.js';
31
+ import { ContextKeyExpr } from '@codingame/monaco-vscode-api/vscode/vs/platform/contextkey/common/contextkey';
32
+ import { IInstantiationService } from '@codingame/monaco-vscode-api/vscode/vs/platform/instantiation/common/instantiation';
33
+ import '@codingame/monaco-vscode-api/vscode/vs/platform/notification/common/notification';
34
+ import { INotificationService } from '@codingame/monaco-vscode-api/vscode/vs/platform/notification/common/notification.service';
35
+ import { IQuickInputService } from '@codingame/monaco-vscode-api/vscode/vs/platform/quickinput/common/quickInput.service';
36
+ import { IRemoteTunnelService } from '@codingame/monaco-vscode-api/vscode/vs/platform/remoteTunnel/common/remoteTunnel.service';
37
+ import { IAuthenticationService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/services/authentication/common/authentication.service';
38
+ import { IProductService } from '@codingame/monaco-vscode-api/vscode/vs/platform/product/common/productService.service';
39
+ import { ITelemetryService } from '@codingame/monaco-vscode-api/vscode/vs/platform/telemetry/common/telemetry.service';
40
+ import { SessionsCategories } from '@codingame/monaco-vscode-api/vscode/vs/sessions/common/categories';
41
+ import { logSSHConnectAttempt, categorizeSSHConnectError } from '@codingame/monaco-vscode-api/vscode/vs/sessions/common/sessionsTelemetry';
42
+ import { SessionWorkspacePickerGroupContext } from '@codingame/monaco-vscode-api/vscode/vs/sessions/common/contextkeys';
43
+ import { Menus } from '@codingame/monaco-vscode-api/vscode/vs/sessions/browser/menus';
44
+ import { ISessionsService } from '@codingame/monaco-vscode-api/vscode/vs/sessions/services/sessions/browser/sessionsService.service';
45
+ import { ISessionsProvidersService } from '@codingame/monaco-vscode-api/vscode/vs/sessions/services/sessions/browser/sessionsProvidersService.service';
46
+ import { isAgentHostProvider } from '@codingame/monaco-vscode-api/vscode/vs/sessions/common/agentHostSessionsProvider';
47
+ import { runServerUpgrade } from '@codingame/monaco-vscode-api/vscode/vs/sessions/contrib/providers/remoteAgentHost/browser/remoteHostOptions';
48
+ import { SESSION_WORKSPACE_GROUP_REMOTE } from '@codingame/monaco-vscode-api/vscode/vs/sessions/services/sessions/common/session';
49
+ import { ISessionsPartService } from '@codingame/monaco-vscode-api/vscode/vs/sessions/services/sessions/browser/sessionsPartService.service';
50
+ import Severity from '@codingame/monaco-vscode-api/vscode/vs/base/common/severity';
51
+
52
+ const RemoteAgentHostCommandIds = {
53
+ addRemoteAgentHost: "sessions.remoteAgentHost.add",
54
+ connectViaSSH: "workbench.action.sessions.connectViaSSH",
55
+ addNewSSHHost: "workbench.action.sessions.addNewSSHHost",
56
+ configureSSHHosts: "workbench.action.sessions.configureSSHHosts",
57
+ connectViaTunnel: "workbench.action.sessions.connectViaTunnel",
58
+ connectViaWSL: "workbench.action.sessions.connectViaWSL",
59
+ manageRemoteAgentHosts: "workbench.action.sessions.manageRemoteAgentHosts",
60
+ updateRemoteAgentHost: "workbench.action.sessions.updateRemoteAgentHost"
61
+ };
62
+ registerAction2(class extends Action2 {
63
+ constructor() {
64
+ super({
65
+ id: RemoteAgentHostCommandIds.addRemoteAgentHost,
66
+ title: ( localize2(4323, "Add Remote Agent Host...")),
67
+ category: SessionsCategories.Sessions,
68
+ f1: true,
69
+ precondition: ( ContextKeyExpr.equals(`config.${RemoteAgentHostsEnabledSettingId}`, true))
70
+ });
71
+ }
72
+ async run(accessor) {
73
+ const remoteAgentHostService = accessor.get(IRemoteAgentHostService);
74
+ const quickInputService = accessor.get(IQuickInputService);
75
+ const notificationService = accessor.get(INotificationService);
76
+ const configurationService = accessor.get(IConfigurationService);
77
+ const address = await quickInputService.input({
78
+ title: ( localize(4324, "Add Remote Agent Host")),
79
+ prompt: ( localize(
80
+ 4325,
81
+ "Paste a host, host:port, or WebSocket URL. Example: {0}",
82
+ "ws://127.0.0.1:8089"
83
+ )),
84
+ placeHolder: "ws://127.0.0.1:8080?tkn=abc-123",
85
+ ignoreFocusLost: true,
86
+ validateInput: async value => {
87
+ const result = parseRemoteAgentHostInput(value);
88
+ if (result.error === RemoteAgentHostInputValidationError.Empty) {
89
+ return localize(4326, "Enter a remote agent host address.");
90
+ }
91
+ if (result.error === RemoteAgentHostInputValidationError.Invalid) {
92
+ return localize(4327, "Enter a valid host, host:port, or WebSocket URL.");
93
+ }
94
+ return undefined;
95
+ }
96
+ });
97
+ if (!address) {
98
+ return;
99
+ }
100
+ const parsed = parseRemoteAgentHostInput(address);
101
+ if (!parsed.parsed) {
102
+ return;
103
+ }
104
+ const defaultName = parsed.parsed.suggestedName;
105
+ const name = await quickInputService.input({
106
+ title: ( localize(4328, "Name Remote Agent Host")),
107
+ prompt: ( localize(4329, "Enter a display name for this remote agent host.")),
108
+ placeHolder: ( localize(4330, "My Remote")),
109
+ value: defaultName,
110
+ valueSelection: [0, defaultName.length],
111
+ ignoreFocusLost: true,
112
+ validateInput: async value => value.trim() ? undefined : ( localize(4331, "Enter a name for this remote agent host."))
113
+ });
114
+ if (!name?.trim()) {
115
+ return;
116
+ }
117
+ try {
118
+ await addWebSocketRemoteAgentHostEntry(configurationService, {
119
+ name: name.trim(),
120
+ connectionToken: parsed.parsed.connectionToken,
121
+ connection: {
122
+ type: RemoteAgentHostEntryType.WebSocket,
123
+ address: parsed.parsed.address
124
+ }
125
+ });
126
+ await remoteAgentHostService.waitForConnection(parsed.parsed.address);
127
+ } catch {
128
+ notificationService.error(( localize(4332, "Failed to connect to remote agent host {0}.", parsed.parsed.address)));
129
+ }
130
+ }
131
+ });
132
+ function parseSSHHostInput(value) {
133
+ const trimmed = value.trim();
134
+ if (!trimmed) {
135
+ return undefined;
136
+ }
137
+ const atIdx = trimmed.indexOf("@");
138
+ if (atIdx === 0 || atIdx === trimmed.length - 1) {
139
+ return undefined;
140
+ }
141
+ let username;
142
+ let hostPart;
143
+ if (atIdx !== -1) {
144
+ username = trimmed.substring(0, atIdx);
145
+ hostPart = trimmed.substring(atIdx + 1);
146
+ } else {
147
+ hostPart = trimmed;
148
+ }
149
+ if (!hostPart) {
150
+ return undefined;
151
+ }
152
+ let host;
153
+ let port;
154
+ const colonIdx = hostPart.lastIndexOf(":");
155
+ if (colonIdx !== -1) {
156
+ host = hostPart.substring(0, colonIdx);
157
+ const portStr = hostPart.substring(colonIdx + 1);
158
+ if (!host) {
159
+ return undefined;
160
+ }
161
+ if (portStr) {
162
+ const portNum = Number(portStr);
163
+ if (!Number.isInteger(portNum) || portNum <= 0 || portNum > 65535) {
164
+ return undefined;
165
+ }
166
+ port = portNum;
167
+ }
168
+ } else {
169
+ host = hostPart;
170
+ }
171
+ if (!host) {
172
+ return undefined;
173
+ }
174
+ return {
175
+ host,
176
+ username,
177
+ port
178
+ };
179
+ }
180
+ function validateSSHHostInput(value) {
181
+ const v = value.trim();
182
+ if (!v) {
183
+ return localize(4333, "Enter an SSH host.");
184
+ }
185
+ const atIdx = v.indexOf("@");
186
+ if (atIdx === 0) {
187
+ return localize(4334, "Enter a username before '@'.");
188
+ }
189
+ if (atIdx === v.length - 1) {
190
+ return localize(4335, "Enter a host name after '@'.");
191
+ }
192
+ const hostPart = atIdx !== -1 ? v.substring(atIdx + 1) : v;
193
+ if (!hostPart) {
194
+ return localize(4335, "Enter a host name after '@'.");
195
+ }
196
+ const colonIdx = hostPart.lastIndexOf(":");
197
+ if (colonIdx !== -1) {
198
+ const hostName = hostPart.substring(0, colonIdx);
199
+ const portStr = hostPart.substring(colonIdx + 1);
200
+ if (!hostName) {
201
+ return localize(4335, "Enter a host name after '@'.");
202
+ }
203
+ if (portStr) {
204
+ const portNum = Number(portStr);
205
+ if (!Number.isInteger(portNum) || portNum <= 0 || portNum > 65535) {
206
+ return localize(4336, "Enter a valid port number.");
207
+ }
208
+ }
209
+ }
210
+ return undefined;
211
+ }
212
+ async function promptToConnectViaSSH(accessor, options = {}) {
213
+ const sshService = accessor.get(ISSHRemoteAgentHostService);
214
+ const quickInputService = accessor.get(IQuickInputService);
215
+ const notificationService = accessor.get(INotificationService);
216
+ const instantiationService = accessor.get(IInstantiationService);
217
+ const commandService = accessor.get(ICommandService);
218
+ const configHosts = await sshService.listSSHConfigHosts().catch(() => []);
219
+ const aliasItems = configHosts.map(h => ({
220
+ kind: "alias",
221
+ hostAlias: h,
222
+ label: h
223
+ }));
224
+ const addHostItem = {
225
+ kind: "add-config",
226
+ label: "$(plus) " + ( localize(4337, "Add New SSH Host...")),
227
+ alwaysShow: true
228
+ };
229
+ const configureHostsItem = {
230
+ kind: "configure",
231
+ label: ( localize(4338, "Configure SSH Hosts...")),
232
+ alwaysShow: true
233
+ };
234
+ const newHostItem = {
235
+ kind: "new-host",
236
+ hostInput: "",
237
+ label: "",
238
+ alwaysShow: true
239
+ };
240
+ const result = await ( new Promise(resolve => {
241
+ const store = ( new DisposableStore());
242
+ const picker = store.add(quickInputService.createQuickPick());
243
+ picker.title = ( localize(4339, "Connect via SSH"));
244
+ picker.placeholder = ( localize(4340, "Select configured SSH host or enter user@host"));
245
+ picker.ignoreFocusOut = true;
246
+ picker.matchOnDescription = true;
247
+ if (options.showBackButton) {
248
+ picker.buttons = [quickInputService.backButton];
249
+ }
250
+ let newHostVisible = false;
251
+ const updateItems = () => {
252
+ const items = [...aliasItems];
253
+ if (newHostVisible) {
254
+ items.push(newHostItem);
255
+ }
256
+ items.push(addHostItem);
257
+ items.push(configureHostsItem);
258
+ picker.items = items;
259
+ };
260
+ updateItems();
261
+ store.add(picker.onDidChangeValue(value => {
262
+ const parsed = parseSSHHostInput(value);
263
+ if (parsed) {
264
+ newHostItem.hostInput = value.trim();
265
+ newHostItem.label = `\u27a4 ${value.trim()}`;
266
+ if (!newHostVisible) {
267
+ newHostVisible = true;
268
+ updateItems();
269
+ } else {
270
+ picker.items = picker.items;
271
+ }
272
+ } else if (newHostVisible) {
273
+ newHostVisible = false;
274
+ updateItems();
275
+ }
276
+ }));
277
+ store.add(picker.onDidTriggerButton(button => {
278
+ if (button === quickInputService.backButton) {
279
+ resolve("back");
280
+ picker.hide();
281
+ }
282
+ }));
283
+ store.add(picker.onDidAccept(() => {
284
+ const selected = picker.selectedItems[0];
285
+ resolve(selected);
286
+ picker.hide();
287
+ }));
288
+ store.add(picker.onDidHide(() => {
289
+ resolve(undefined);
290
+ store.dispose();
291
+ }));
292
+ picker.show();
293
+ }));
294
+ if (result === "back") {
295
+ return "back";
296
+ }
297
+ if (!result) {
298
+ return;
299
+ }
300
+ if (result.kind === "add-config" || result.kind === "configure") {
301
+ const cmdId = result.kind === "add-config" ? RemoteAgentHostCommandIds.addNewSSHHost : RemoteAgentHostCommandIds.configureSSHHosts;
302
+ const onBackToSSH = () => instantiationService.invokeFunction(a => promptToConnectViaSSH(a, options));
303
+ await commandService.executeCommand(cmdId, onBackToSSH);
304
+ return;
305
+ }
306
+ if (result.kind === "alias") {
307
+ await instantiationService.invokeFunction(accessor => connectToConfiguredSSHHost(accessor, result.hostAlias));
308
+ return;
309
+ }
310
+ const newHost = result;
311
+ const parsed = parseSSHHostInput(newHost.hostInput);
312
+ if (!parsed) {
313
+ notificationService.error(validateSSHHostInput(newHost.hostInput) ?? ( localize(4341, "Invalid SSH host.")));
314
+ return;
315
+ }
316
+ await instantiationService.invokeFunction(
317
+ accessor => promptForCredentialsAndConnect(accessor, parsed.host, parsed.username, parsed.port)
318
+ );
319
+ }
320
+ async function connectToConfiguredSSHHost(accessor, hostAlias) {
321
+ const sshService = accessor.get(ISSHRemoteAgentHostService);
322
+ const notificationService = accessor.get(INotificationService);
323
+ const instantiationService = accessor.get(IInstantiationService);
324
+ let resolvedConfig;
325
+ try {
326
+ resolvedConfig = await sshService.resolveSSHConfig(hostAlias);
327
+ } catch (err) {
328
+ notificationService.error(( localize(4342, "Failed to resolve SSH config for {0}: {1}", hostAlias, String(err))));
329
+ return;
330
+ }
331
+ const host = resolvedConfig.hostname;
332
+ const username = resolvedConfig.user;
333
+ const port = resolvedConfig.port !== 22 ? resolvedConfig.port : undefined;
334
+ const suggestedName = hostAlias;
335
+ const defaultKeyPath = resolvedConfig.identityFile[0];
336
+ if (username) {
337
+ const config = {
338
+ host,
339
+ port,
340
+ username,
341
+ authMethod: SSHAuthMethod.Agent,
342
+ privateKeyPath: defaultKeyPath,
343
+ identityAgent: resolvedConfig.identityAgent,
344
+ agentForward: resolvedConfig.forwardAgent || undefined,
345
+ name: suggestedName,
346
+ sshConfigHost: hostAlias
347
+ };
348
+ const connection = await instantiationService.invokeFunction(accessor => connectWithProgress(accessor, config, suggestedName));
349
+ if (connection) {
350
+ await instantiationService.invokeFunction(accessor => promptForRemoteFolder(accessor, connection));
351
+ }
352
+ return;
353
+ }
354
+ await instantiationService.invokeFunction(accessor => promptForCredentialsAndConnect(
355
+ accessor,
356
+ host,
357
+ undefined,
358
+ port,
359
+ suggestedName,
360
+ defaultKeyPath,
361
+ resolvedConfig.identityAgent
362
+ ));
363
+ }
364
+ async function promptForCredentialsAndConnect(
365
+ accessor,
366
+ host,
367
+ username,
368
+ port,
369
+ suggestedName,
370
+ defaultKeyPath,
371
+ identityAgent
372
+ ) {
373
+ const quickInputService = accessor.get(IQuickInputService);
374
+ const instantiationService = accessor.get(IInstantiationService);
375
+ if (!username) {
376
+ const usernameInput = await quickInputService.input({
377
+ title: ( localize(4343, "SSH Username")),
378
+ prompt: ( localize(4344, "Enter the username for {0}.", host)),
379
+ placeHolder: "root",
380
+ ignoreFocusLost: true,
381
+ validateInput: async value => value.trim() ? undefined : ( localize(4345, "Enter a username."))
382
+ });
383
+ if (!usernameInput) {
384
+ return;
385
+ }
386
+ username = usernameInput.trim();
387
+ }
388
+ const authPicks = [{
389
+ method: SSHAuthMethod.Agent,
390
+ label: ( localize(4346, "SSH Agent")),
391
+ description: ( localize(4347, "Use the running SSH agent for authentication"))
392
+ }, {
393
+ method: SSHAuthMethod.KeyFile,
394
+ label: ( localize(4348, "Private Key File")),
395
+ description: ( localize(4349, "Authenticate with a private key file"))
396
+ }, {
397
+ method: SSHAuthMethod.Password,
398
+ label: ( localize(4350, "Password")),
399
+ description: ( localize(4351, "Authenticate with a password"))
400
+ }];
401
+ const authPicked = await quickInputService.pick(authPicks, {
402
+ title: ( localize(4352, "Authentication Method")),
403
+ placeHolder: ( localize(4353, "Choose how to authenticate with {0}", host))
404
+ });
405
+ if (!authPicked) {
406
+ return;
407
+ }
408
+ const authMethod = authPicked.method;
409
+ let privateKeyPath;
410
+ let password;
411
+ if (authMethod === SSHAuthMethod.KeyFile) {
412
+ const keyPath = await quickInputService.input({
413
+ title: ( localize(4354, "Private Key Path")),
414
+ prompt: ( localize(4355, "Enter the path to your SSH private key.")),
415
+ placeHolder: "~/.ssh/id_rsa",
416
+ value: defaultKeyPath ?? "~/.ssh/id_rsa",
417
+ ignoreFocusLost: true,
418
+ validateInput: async value => value.trim() ? undefined : ( localize(4356, "Enter a key file path."))
419
+ });
420
+ if (!keyPath) {
421
+ return;
422
+ }
423
+ privateKeyPath = keyPath.trim();
424
+ } else if (authMethod === SSHAuthMethod.Password) {
425
+ const pw = await quickInputService.input({
426
+ title: ( localize(4357, "SSH Password")),
427
+ prompt: ( localize(4358, "Enter the password for {0}@{1}.", username, host)),
428
+ password: true,
429
+ ignoreFocusLost: true,
430
+ validateInput: async value => value ? undefined : ( localize(4359, "Enter a password."))
431
+ });
432
+ if (!pw) {
433
+ return;
434
+ }
435
+ password = pw;
436
+ }
437
+ const defaultName = suggestedName ?? `${username}@${host}`;
438
+ const name = await quickInputService.input({
439
+ title: ( localize(4360, "Name Remote")),
440
+ prompt: ( localize(4361, "Enter a display name for this SSH remote.")),
441
+ placeHolder: ( localize(4362, "My Remote")),
442
+ value: defaultName,
443
+ valueSelection: [0, defaultName.length],
444
+ ignoreFocusLost: true,
445
+ validateInput: async value => value.trim() ? undefined : ( localize(4363, "Enter a name."))
446
+ });
447
+ if (!name) {
448
+ return;
449
+ }
450
+ const config = {
451
+ host,
452
+ port,
453
+ username,
454
+ authMethod,
455
+ privateKeyPath,
456
+ identityAgent,
457
+ password,
458
+ name: name.trim()
459
+ };
460
+ const connection = await instantiationService.invokeFunction(accessor => connectWithProgress(accessor, config, host));
461
+ if (connection) {
462
+ await instantiationService.invokeFunction(accessor => promptForRemoteFolder(accessor, connection));
463
+ }
464
+ }
465
+ async function connectWithProgress(accessor, config, displayHost) {
466
+ const sshService = accessor.get(ISSHRemoteAgentHostService);
467
+ const notificationService = accessor.get(INotificationService);
468
+ const telemetryService = accessor.get(ITelemetryService);
469
+ const stopwatch = StopWatch.create(false);
470
+ const handle = notificationService.notify({
471
+ severity: Severity.Info,
472
+ message: ( localize(4364, "Connecting to {0} via SSH...", displayHost)),
473
+ progress: {
474
+ infinite: true
475
+ }
476
+ });
477
+ const expectedKey = config.sshConfigHost ? `ssh:${config.sshConfigHost}` : `${config.username}@${config.host}:${config.port ?? 22}`;
478
+ const progressListener = sshService.onDidReportConnectProgress?.(progress => {
479
+ if (progress.connectionKey === expectedKey) {
480
+ handle.updateMessage(progress.message);
481
+ }
482
+ });
483
+ try {
484
+ const connection = await sshService.connect(config);
485
+ logSSHConnectAttempt(telemetryService, {
486
+ operation: "connect",
487
+ userInitiated: config.userInitiated ?? true,
488
+ attempt: 1,
489
+ durationMs: stopwatch.elapsed(),
490
+ success: true,
491
+ willRetry: false
492
+ });
493
+ handle.close();
494
+ return connection;
495
+ } catch (err) {
496
+ logSSHConnectAttempt(telemetryService, {
497
+ operation: "connect",
498
+ userInitiated: config.userInitiated ?? true,
499
+ attempt: 1,
500
+ durationMs: stopwatch.elapsed(),
501
+ success: false,
502
+ willRetry: false,
503
+ errorCategory: categorizeSSHConnectError(err)
504
+ });
505
+ handle.close();
506
+ if (isCancellationError(err) || isSSHHostKeyDeniedError(err)) {
507
+ return undefined;
508
+ }
509
+ notificationService.error(( localize(4365, "Failed to connect via SSH to {0}: {1}", displayHost, String(err))));
510
+ return undefined;
511
+ } finally {
512
+ progressListener?.dispose();
513
+ }
514
+ }
515
+ async function promptForRemoteFolder(accessor, connection) {
516
+ const sessionsProvidersService = accessor.get(ISessionsProvidersService);
517
+ const sessionsService = accessor.get(ISessionsService);
518
+ const sessionsPartService = accessor.get(ISessionsPartService);
519
+ const provider = sessionsProvidersService.getProviders().find(p => isAgentHostProvider(p) && p.remoteAddress === connection.localAddress);
520
+ if (!provider) {
521
+ return;
522
+ }
523
+ const browseAction = provider.browseActions[0];
524
+ if (!browseAction) {
525
+ return;
526
+ }
527
+ const workspace = await browseAction.run();
528
+ if (!workspace) {
529
+ return;
530
+ }
531
+ const folderUri = workspace.folders[0]?.root;
532
+ if (!folderUri) {
533
+ return;
534
+ }
535
+ sessionsService.openNewSession();
536
+ sessionsPartService.getSessionView(sessionsService.activeSession.get()?.sessionId)?.selectWorkspace(folderUri);
537
+ }
538
+ registerAction2(class extends Action2 {
539
+ constructor() {
540
+ super({
541
+ id: RemoteAgentHostCommandIds.connectViaSSH,
542
+ title: ( localize2(4366, "Connect to Remote Agent Host via SSH")),
543
+ shortTitle: ( localize2(4367, "SSH")),
544
+ category: SessionsCategories.Sessions,
545
+ f1: true,
546
+ icon: Codicon.remote,
547
+ precondition: ( ContextKeyExpr.equals(`config.${RemoteAgentHostsEnabledSettingId}`, true)),
548
+ menu: {
549
+ id: Menus.SessionWorkspaceManage,
550
+ order: 20,
551
+ when: ( SessionWorkspacePickerGroupContext.isEqualTo(SESSION_WORKSPACE_GROUP_REMOTE))
552
+ }
553
+ });
554
+ }
555
+ async run(accessor, onBack) {
556
+ const result = await promptToConnectViaSSH(accessor, {
557
+ showBackButton: !!onBack
558
+ });
559
+ if (result === "back") {
560
+ onBack?.();
561
+ }
562
+ }
563
+ });
564
+ registerAction2(class extends Action2 {
565
+ constructor() {
566
+ super({
567
+ id: RemoteAgentHostCommandIds.addNewSSHHost,
568
+ title: ( localize2(4368, "Add New SSH Host...")),
569
+ category: SessionsCategories.Sessions,
570
+ f1: true,
571
+ precondition: ( ContextKeyExpr.equals(`config.${RemoteAgentHostsEnabledSettingId}`, true))
572
+ });
573
+ }
574
+ async run(accessor) {
575
+ const sshService = accessor.get(ISSHRemoteAgentHostService);
576
+ const editorService = accessor.get(IEditorService);
577
+ const fileService = accessor.get(IFileService);
578
+ const notificationService = accessor.get(INotificationService);
579
+ let configUri;
580
+ try {
581
+ configUri = await sshService.ensureUserSSHConfig();
582
+ } catch (err) {
583
+ notificationService.error(( localize(4369, "Failed to create SSH config file: {0}", String(err))));
584
+ return;
585
+ }
586
+ const editorPane = await editorService.openEditor({
587
+ resource: configUri,
588
+ options: {
589
+ pinned: true
590
+ }
591
+ });
592
+ if (!editorPane) {
593
+ return;
594
+ }
595
+ const control = editorPane.getControl();
596
+ if (!isCodeEditor(control) || !control.hasModel()) {
597
+ return;
598
+ }
599
+ const editor = control;
600
+ const model = editor.getModel();
601
+ if (!model) {
602
+ return;
603
+ }
604
+ let appendNewline = false;
605
+ try {
606
+ const stat = await fileService.stat(configUri);
607
+ if (stat.size > 0) {
608
+ const content = model.getValueInRange(model.getFullModelRange(), EndOfLinePreference.LF);
609
+ appendNewline = content.length > 0 && !content.endsWith("\n");
610
+ }
611
+ } catch {}
612
+ const lastLine = model.getLineCount();
613
+ const lastCol = model.getLineMaxColumn(lastLine);
614
+ editor.setSelection(( new Range(lastLine, lastCol, lastLine, lastCol)));
615
+ const snippet = (appendNewline ? "\n" : "") + "Host ${1:alias}\n HostName ${2:hostname}\n User ${3:user}\n";
616
+ SnippetController2.get(editor)?.insert(snippet);
617
+ editor.focus();
618
+ }
619
+ });
620
+ registerAction2(class extends Action2 {
621
+ constructor() {
622
+ super({
623
+ id: RemoteAgentHostCommandIds.configureSSHHosts,
624
+ title: ( localize2(4370, "Configure SSH Hosts...")),
625
+ category: SessionsCategories.Sessions,
626
+ f1: true,
627
+ precondition: ( ContextKeyExpr.equals(`config.${RemoteAgentHostsEnabledSettingId}`, true))
628
+ });
629
+ }
630
+ async run(accessor, onBack) {
631
+ const sshService = accessor.get(ISSHRemoteAgentHostService);
632
+ const editorService = accessor.get(IEditorService);
633
+ const quickInputService = accessor.get(IQuickInputService);
634
+ const notificationService = accessor.get(INotificationService);
635
+ let configFiles;
636
+ try {
637
+ configFiles = await sshService.listSSHConfigFiles();
638
+ } catch (err) {
639
+ notificationService.error(( localize(4371, "Failed to list SSH config files: {0}", String(err))));
640
+ return;
641
+ }
642
+ if (configFiles.length === 0) {
643
+ try {
644
+ const uri = await sshService.ensureUserSSHConfig();
645
+ await editorService.openEditor({
646
+ resource: uri,
647
+ options: {
648
+ pinned: true
649
+ }
650
+ });
651
+ } catch (err) {
652
+ notificationService.error(( localize(4372, "Failed to open SSH config file: {0}", String(err))));
653
+ }
654
+ return;
655
+ }
656
+ const userConfigUri = configFiles[0];
657
+ const items = configFiles.map((uri, index) => ({
658
+ label: uri.fsPath,
659
+ uri,
660
+ isUserConfig: index === 0
661
+ }));
662
+ if (items.length === 1 && !onBack) {
663
+ const picked = items[0];
664
+ try {
665
+ const uri = picked.isUserConfig ? await sshService.ensureUserSSHConfig().catch(() => userConfigUri) : picked.uri;
666
+ await editorService.openEditor({
667
+ resource: uri,
668
+ options: {
669
+ pinned: true
670
+ }
671
+ });
672
+ } catch (err) {
673
+ notificationService.error(( localize(4372, "Failed to open SSH config file: {0}", String(err))));
674
+ }
675
+ return;
676
+ }
677
+ const picked = await ( new Promise(resolve => {
678
+ const store = ( new DisposableStore());
679
+ const picker = store.add(quickInputService.createQuickPick());
680
+ picker.title = ( localize(4373, "Select SSH configuration file to edit"));
681
+ picker.placeholder = ( localize(4374, "Select an SSH configuration file"));
682
+ picker.items = items;
683
+ if (onBack) {
684
+ picker.buttons = [quickInputService.backButton];
685
+ }
686
+ store.add(picker.onDidTriggerButton(button => {
687
+ if (button === quickInputService.backButton) {
688
+ resolve("back");
689
+ picker.hide();
690
+ }
691
+ }));
692
+ store.add(picker.onDidAccept(() => {
693
+ resolve(picker.selectedItems[0]);
694
+ picker.hide();
695
+ }));
696
+ store.add(picker.onDidHide(() => {
697
+ resolve(undefined);
698
+ store.dispose();
699
+ }));
700
+ picker.show();
701
+ }));
702
+ if (picked === "back") {
703
+ onBack?.();
704
+ return;
705
+ }
706
+ if (!picked) {
707
+ return;
708
+ }
709
+ try {
710
+ const uri = picked.isUserConfig ? await sshService.ensureUserSSHConfig().catch(() => userConfigUri) : picked.uri;
711
+ await editorService.openEditor({
712
+ resource: uri,
713
+ options: {
714
+ pinned: true
715
+ }
716
+ });
717
+ } catch (err) {
718
+ notificationService.error(( localize(4372, "Failed to open SSH config file: {0}", String(err))));
719
+ }
720
+ }
721
+ });
722
+ function sortTunnelsByName(tunnels) {
723
+ return [...tunnels].sort((a, b) => a.name.localeCompare(b.name));
724
+ }
725
+ async function promptToConnectViaTunnel(accessor, options = {}) {
726
+ const tunnelService = accessor.get(ITunnelAgentHostService);
727
+ const quickInputService = accessor.get(IQuickInputService);
728
+ const notificationService = accessor.get(INotificationService);
729
+ const authenticationService = accessor.get(IAuthenticationService);
730
+ const instantiationService = accessor.get(IInstantiationService);
731
+ const productService = accessor.get(IProductService);
732
+ const dialogService = accessor.get(IDialogService);
733
+ const remoteTunnelService = accessor.get(IRemoteTunnelService);
734
+ const store = ( new DisposableStore());
735
+ let remoteTunnelStatus = {
736
+ type: "uninitialized"
737
+ };
738
+ let hasReceivedRemoteTunnelStatus = false;
739
+ let tunnels = [];
740
+ let tunnelPicker;
741
+ const deleteTunnelButton = {
742
+ iconClass: ThemeIcon.asClassName(Codicon.trash),
743
+ tooltip: ( localize(4375, "Delete Dev Tunnel"))
744
+ };
745
+ const isHostedTunnel = tunnel => isTunnelHosted(
746
+ remoteTunnelStatus.type === "connected" ? remoteTunnelStatus.info : undefined,
747
+ tunnel
748
+ );
749
+ const toTunnelPickItems = tunnelInfos => sortTunnelsByName(tunnelInfos).filter(tunnel => !isHostedTunnel(tunnel)).map(tunnel => ({
750
+ label: tunnel.name,
751
+ description: tunnel.hostConnectionCount > 0 ? ( localize(4376, "{0} · Online", tunnel.tunnelId)) : ( localize(4377, "{0} · Offline", tunnel.tunnelId)),
752
+ buttons: tunnelService.canDeleteTunnels ? [deleteTunnelButton] : undefined,
753
+ tunnel
754
+ }));
755
+ const updateTunnelPickerItems = () => {
756
+ if (tunnelPicker) {
757
+ tunnelPicker.items = toTunnelPickItems(tunnels);
758
+ }
759
+ };
760
+ store.add(remoteTunnelService.onDidChangeTunnelStatus(status => {
761
+ hasReceivedRemoteTunnelStatus = true;
762
+ remoteTunnelStatus = status;
763
+ updateTunnelPickerItems();
764
+ }));
765
+ const initialRemoteTunnelStatus = await remoteTunnelService.getTunnelStatus();
766
+ if (!hasReceivedRemoteTunnelStatus) {
767
+ remoteTunnelStatus = initialRemoteTunnelStatus;
768
+ }
769
+ const authProvider = "github";
770
+ const scopes = productService.tunnelApplicationConfig?.authenticationProviders?.[authProvider]?.scopes ?? [];
771
+ try {
772
+ if (!(await authenticationService.getSessions(authProvider, scopes)).length) {
773
+ await authenticationService.createSession(authProvider, scopes, {
774
+ activateImmediate: true
775
+ });
776
+ }
777
+ } catch {
778
+ store.dispose();
779
+ notificationService.error(( localize(4378, "Authentication failed. Please try again.")));
780
+ return;
781
+ }
782
+ tunnelPicker = store.add(quickInputService.createQuickPick());
783
+ tunnelPicker.title = ( localize(4379, "Connect via Dev Tunnel"));
784
+ tunnelPicker.placeholder = ( localize(4380, "Select a dev tunnel to connect to"));
785
+ tunnelPicker.busy = true;
786
+ if (options.showBackButton) {
787
+ tunnelPicker.buttons = [quickInputService.backButton];
788
+ }
789
+ tunnelPicker.show();
790
+ try {
791
+ tunnels = await tunnelService.listTunnels();
792
+ } catch (err) {
793
+ store.dispose();
794
+ notificationService.error(( localize(
795
+ 4381,
796
+ "Failed to list dev tunnels: {0}",
797
+ err instanceof Error ? err.message : String(err)
798
+ )));
799
+ return;
800
+ }
801
+ if (tunnels.length === 0) {
802
+ store.dispose();
803
+ notificationService.info(( localize(
804
+ 4382,
805
+ "No dev tunnels with agent host support were found. Start a tunnel with 'code tunnel' on another machine."
806
+ )));
807
+ return;
808
+ }
809
+ if (toTunnelPickItems(tunnels).length === 0) {
810
+ store.dispose();
811
+ notificationService.info(( localize(4383, "This machine is already hosting the only available dev tunnel.")));
812
+ return;
813
+ }
814
+ updateTunnelPickerItems();
815
+ tunnelPicker.busy = false;
816
+ const picked = await ( new Promise(resolve => {
817
+ let isDeleting = false;
818
+ store.add(tunnelPicker.onDidTriggerButton(button => {
819
+ if (button === quickInputService.backButton) {
820
+ resolve("back");
821
+ tunnelPicker.hide();
822
+ }
823
+ }));
824
+ store.add(tunnelPicker.onDidAccept(() => {
825
+ if (isDeleting) {
826
+ return;
827
+ }
828
+ const picked = tunnelPicker.selectedItems[0];
829
+ if (picked && isHostedTunnel(picked.tunnel)) {
830
+ updateTunnelPickerItems();
831
+ return;
832
+ }
833
+ resolve(picked);
834
+ tunnelPicker.hide();
835
+ }));
836
+ store.add(tunnelPicker.onDidTriggerItemButton(async event => {
837
+ if (event.button !== deleteTunnelButton || isDeleting) {
838
+ return;
839
+ }
840
+ if (isHostedTunnel(event.item.tunnel)) {
841
+ updateTunnelPickerItems();
842
+ return;
843
+ }
844
+ const previousIgnoreFocusOut = tunnelPicker.ignoreFocusOut;
845
+ isDeleting = true;
846
+ tunnelPicker.ignoreFocusOut = true;
847
+ let keepOpen = true;
848
+ try {
849
+ const confirmation = await dialogService.confirm({
850
+ type: "warning",
851
+ message: ( localize(
852
+ 4384,
853
+ "Are you sure you want to delete dev tunnel '{0}'?",
854
+ event.item.tunnel.name
855
+ )),
856
+ detail: ( localize(4385, "The tunnel may be recreated if a machine starts hosting it again.")),
857
+ primaryButton: ( localize(4386, "&&Delete"))
858
+ });
859
+ if (!confirmation.confirmed) {
860
+ return;
861
+ }
862
+ if (isHostedTunnel(event.item.tunnel)) {
863
+ updateTunnelPickerItems();
864
+ return;
865
+ }
866
+ tunnelPicker.busy = true;
867
+ await tunnelService.deleteTunnel(event.item.tunnel);
868
+ tunnels = await tunnelService.listTunnels();
869
+ if (toTunnelPickItems(tunnels).length === 0) {
870
+ keepOpen = false;
871
+ notificationService.info(( localize(
872
+ 4387,
873
+ "No dev tunnels with agent host support were found. Start a tunnel with 'code tunnel' on another machine."
874
+ )));
875
+ return;
876
+ }
877
+ updateTunnelPickerItems();
878
+ } catch (err) {
879
+ notificationService.error(( localize(
880
+ 4388,
881
+ "Failed to delete dev tunnel '{0}': {1}",
882
+ event.item.tunnel.name,
883
+ err instanceof Error ? err.message : String(err)
884
+ )));
885
+ } finally {
886
+ tunnelPicker.busy = false;
887
+ tunnelPicker.ignoreFocusOut = previousIgnoreFocusOut;
888
+ isDeleting = false;
889
+ if (keepOpen) {
890
+ tunnelPicker.show();
891
+ } else {
892
+ resolve(undefined);
893
+ tunnelPicker.hide();
894
+ store.dispose();
895
+ }
896
+ }
897
+ }));
898
+ store.add(tunnelPicker.onDidHide(() => {
899
+ if (isDeleting) {
900
+ return;
901
+ }
902
+ resolve(undefined);
903
+ store.dispose();
904
+ }));
905
+ }));
906
+ if (picked === "back") {
907
+ return "back";
908
+ }
909
+ if (!picked) {
910
+ return;
911
+ }
912
+ const handle = notificationService.notify({
913
+ severity: Severity.Info,
914
+ message: ( localize(4389, "Connecting to tunnel '{0}'...", picked.tunnel.name)),
915
+ progress: {
916
+ infinite: true
917
+ }
918
+ });
919
+ try {
920
+ tunnelService.clearTunnelDismissal(picked.tunnel.tunnelId);
921
+ await tunnelService.connect(picked.tunnel, authProvider, {
922
+ userInitiated: true
923
+ });
924
+ handle.close();
925
+ } catch (err) {
926
+ handle.close();
927
+ notificationService.error(( localize(
928
+ 4390,
929
+ "Failed to connect to tunnel '{0}': {1}",
930
+ picked.tunnel.name,
931
+ err instanceof Error ? err.message : String(err)
932
+ )));
933
+ return;
934
+ }
935
+ await instantiationService.invokeFunction(accessor => promptForTunnelFolder(accessor, picked.tunnel));
936
+ }
937
+ async function promptForTunnelFolder(accessor, tunnel) {
938
+ const sessionsProvidersService = accessor.get(ISessionsProvidersService);
939
+ const sessionsService = accessor.get(ISessionsService);
940
+ const sessionsPartService = accessor.get(ISessionsPartService);
941
+ const tunnelAddress = `${TUNNEL_ADDRESS_PREFIX}${tunnel.tunnelId}`;
942
+ const provider = sessionsProvidersService.getProviders().find(p => isAgentHostProvider(p) && p.remoteAddress === tunnelAddress);
943
+ if (!provider) {
944
+ return;
945
+ }
946
+ const browseAction = provider.browseActions[0];
947
+ if (!browseAction) {
948
+ return;
949
+ }
950
+ const workspace = await browseAction.run();
951
+ if (!workspace) {
952
+ return;
953
+ }
954
+ const folderUri = workspace.folders[0]?.root;
955
+ if (!folderUri) {
956
+ return;
957
+ }
958
+ sessionsService.openNewSession();
959
+ sessionsPartService.getSessionView(sessionsService.activeSession.get()?.sessionId)?.selectWorkspace(folderUri, {
960
+ providerId: provider.id
961
+ });
962
+ }
963
+ registerAction2(class extends Action2 {
964
+ constructor() {
965
+ super({
966
+ id: RemoteAgentHostCommandIds.connectViaTunnel,
967
+ title: ( localize2(4391, "Connect to Remote Agent Host via Dev Tunnel")),
968
+ shortTitle: ( localize2(4392, "Tunnels")),
969
+ category: SessionsCategories.Sessions,
970
+ f1: true,
971
+ icon: Codicon.cloud,
972
+ precondition: ( ContextKeyExpr.equals(`config.${RemoteAgentHostsEnabledSettingId}`, true)),
973
+ menu: {
974
+ id: Menus.SessionWorkspaceManage,
975
+ order: 10,
976
+ when: ( SessionWorkspacePickerGroupContext.isEqualTo(SESSION_WORKSPACE_GROUP_REMOTE))
977
+ }
978
+ });
979
+ }
980
+ async run(accessor, onBack) {
981
+ const result = await promptToConnectViaTunnel(accessor, {
982
+ showBackButton: !!onBack
983
+ });
984
+ if (result === "back") {
985
+ onBack?.();
986
+ }
987
+ }
988
+ });
989
+ async function promptToConnectViaWSL(accessor, options = {}) {
990
+ const wslService = accessor.get(IWSLRemoteAgentHostService);
991
+ const notificationService = accessor.get(INotificationService);
992
+ const quickInputService = accessor.get(IQuickInputService);
993
+ const openerService = accessor.get(IOpenerService);
994
+ const instantiationService = accessor.get(IInstantiationService);
995
+ const logService = accessor.get(ILogService);
996
+ const installAction = ( new Action("wsl.openDocs", ( localize(4393, "Install WSL")), undefined, true, () => openerService.open(( URI.parse(WSL_INSTALL_DOCS_URL)))));
997
+ if (!(await wslService.isWSLAvailable())) {
998
+ notificationService.notify({
999
+ severity: Severity.Info,
1000
+ message: ( localize(4394, "Windows Subsystem for Linux is not installed or not enabled.")),
1001
+ actions: {
1002
+ primary: [installAction]
1003
+ }
1004
+ });
1005
+ return;
1006
+ }
1007
+ let distros;
1008
+ try {
1009
+ distros = await wslService.listDistros();
1010
+ } catch (err) {
1011
+ logService.error("[WSL] listDistros failed", err);
1012
+ notificationService.error(( localize(4395, "Failed to list WSL distributions: {0}", toErrorMessage(err))));
1013
+ return;
1014
+ }
1015
+ if (distros.length === 0) {
1016
+ notificationService.notify({
1017
+ severity: Severity.Info,
1018
+ message: ( localize(4396, "No WSL 2 distributions are installed.")),
1019
+ actions: {
1020
+ primary: [installAction]
1021
+ }
1022
+ });
1023
+ return;
1024
+ }
1025
+ const items = distros.map(d => ({
1026
+ label: d.name,
1027
+ description: d.isRunning ? ( localize(4397, "Running")) : ( localize(4398, "Stopped")),
1028
+ detail: d.isDefault ? ( localize(4399, "Default distribution")) : undefined,
1029
+ distro: d
1030
+ }));
1031
+ let picked;
1032
+ if (items.length === 1 && !options.showBackButton) {
1033
+ picked = items[0];
1034
+ } else {
1035
+ const result = await ( new Promise(resolve => {
1036
+ const store = ( new DisposableStore());
1037
+ const picker = store.add(quickInputService.createQuickPick());
1038
+ picker.title = ( localize(4400, "Connect via WSL"));
1039
+ picker.placeholder = ( localize(4401, "Select a WSL distribution to connect to"));
1040
+ picker.items = items;
1041
+ if (options.showBackButton) {
1042
+ picker.buttons = [quickInputService.backButton];
1043
+ }
1044
+ store.add(picker.onDidTriggerButton(button => {
1045
+ if (button === quickInputService.backButton) {
1046
+ resolve("back");
1047
+ picker.hide();
1048
+ }
1049
+ }));
1050
+ store.add(picker.onDidAccept(() => {
1051
+ resolve(picker.selectedItems[0]);
1052
+ picker.hide();
1053
+ }));
1054
+ store.add(picker.onDidHide(() => {
1055
+ resolve(undefined);
1056
+ store.dispose();
1057
+ }));
1058
+ picker.show();
1059
+ }));
1060
+ if (result === "back") {
1061
+ return "back";
1062
+ }
1063
+ if (!result) {
1064
+ return;
1065
+ }
1066
+ picked = result;
1067
+ }
1068
+ const handle = notificationService.notify({
1069
+ severity: Severity.Info,
1070
+ message: ( localize(4402, "Connecting to WSL distribution '{0}'...", picked.distro.name)),
1071
+ progress: {
1072
+ infinite: true
1073
+ }
1074
+ });
1075
+ const expectedKey = `wsl:${picked.distro.name}`;
1076
+ const progressListener = wslService.onDidReportConnectProgress?.(progress => {
1077
+ if (progress.connectionKey === expectedKey) {
1078
+ handle.updateMessage(progress.message);
1079
+ }
1080
+ });
1081
+ try {
1082
+ await wslService.connect({
1083
+ distro: picked.distro.name,
1084
+ name: picked.distro.name
1085
+ });
1086
+ handle.close();
1087
+ } catch (err) {
1088
+ handle.close();
1089
+ if (isCancellationError(err)) {
1090
+ return;
1091
+ }
1092
+ logService.error(`[WSL] Connect to '${picked.distro.name}' failed`, err);
1093
+ notificationService.error(( localize(
1094
+ 4403,
1095
+ "Failed to connect to WSL distribution '{0}': {1}",
1096
+ picked.distro.name,
1097
+ toErrorMessage(err)
1098
+ )));
1099
+ return;
1100
+ } finally {
1101
+ progressListener?.dispose();
1102
+ }
1103
+ await instantiationService.invokeFunction(accessor => promptForWSLFolder(accessor, picked.distro.name));
1104
+ }
1105
+ async function promptForWSLFolder(accessor, distro) {
1106
+ const sessionsProvidersService = accessor.get(ISessionsProvidersService);
1107
+ const sessionsService = accessor.get(ISessionsService);
1108
+ const sessionsPartService = accessor.get(ISessionsPartService);
1109
+ const wslAddress = `wsl:${distro}`;
1110
+ const provider = sessionsProvidersService.getProviders().find(p => isAgentHostProvider(p) && p.remoteAddress === wslAddress);
1111
+ if (!provider) {
1112
+ return;
1113
+ }
1114
+ const browseAction = provider.browseActions[0];
1115
+ if (!browseAction) {
1116
+ return;
1117
+ }
1118
+ const workspace = await browseAction.run();
1119
+ if (!workspace) {
1120
+ return;
1121
+ }
1122
+ const folderUri = workspace.folders[0]?.root;
1123
+ if (!folderUri) {
1124
+ return;
1125
+ }
1126
+ sessionsService.openNewSession();
1127
+ sessionsPartService.getSessionView(sessionsService.activeSession.get()?.sessionId)?.selectWorkspace(folderUri, {
1128
+ providerId: provider.id
1129
+ });
1130
+ }
1131
+ registerAction2(class extends Action2 {
1132
+ constructor() {
1133
+ super({
1134
+ id: RemoteAgentHostCommandIds.connectViaWSL,
1135
+ title: ( localize2(4404, "Connect to Remote Agent Host via WSL")),
1136
+ shortTitle: ( localize2(4405, "WSL...")),
1137
+ category: SessionsCategories.Sessions,
1138
+ f1: true,
1139
+ icon: Codicon.terminalLinux,
1140
+ precondition: ( ContextKeyExpr.and(( ContextKeyExpr.equals("isWindows", true)), ( ContextKeyExpr.equals(`config.${RemoteAgentHostsEnabledSettingId}`, true)))),
1141
+ menu: {
1142
+ id: Menus.SessionWorkspaceManage,
1143
+ order: 15,
1144
+ when: ( ContextKeyExpr.and(( ContextKeyExpr.equals("isWindows", true)), ( SessionWorkspacePickerGroupContext.isEqualTo(SESSION_WORKSPACE_GROUP_REMOTE))))
1145
+ }
1146
+ });
1147
+ }
1148
+ async run(accessor, onBack) {
1149
+ const result = await promptToConnectViaWSL(accessor, {
1150
+ showBackButton: !!onBack
1151
+ });
1152
+ if (result === "back") {
1153
+ onBack?.();
1154
+ }
1155
+ }
1156
+ });
1157
+ registerAction2(class extends Action2 {
1158
+ constructor() {
1159
+ super({
1160
+ id: RemoteAgentHostCommandIds.updateRemoteAgentHost,
1161
+ title: ( localize2(4406, "Update Remote Agent Host Server...")),
1162
+ category: SessionsCategories.Sessions,
1163
+ f1: true,
1164
+ precondition: ( ContextKeyExpr.equals(`config.${RemoteAgentHostsEnabledSettingId}`, true))
1165
+ });
1166
+ }
1167
+ async run(accessor) {
1168
+ const sessionsProvidersService = accessor.get(ISessionsProvidersService);
1169
+ const quickInputService = accessor.get(IQuickInputService);
1170
+ const notificationService = accessor.get(INotificationService);
1171
+ const instantiationService = accessor.get(IInstantiationService);
1172
+ const remoteHosts = sessionsProvidersService.getProviders().filter(isAgentHostProvider).filter(provider => !!provider.remoteAddress);
1173
+ let incompatibleCount = 0;
1174
+ const upgradable = remoteHosts.map(provider => {
1175
+ const status = provider.connectionStatus?.get();
1176
+ if (!RemoteAgentHostConnectionStatus.isIncompatible(status)) {
1177
+ return undefined;
1178
+ }
1179
+ incompatibleCount++;
1180
+ return status.vscodeUpgradeMethod ? {
1181
+ provider,
1182
+ method: status.vscodeUpgradeMethod
1183
+ } : undefined;
1184
+ }).filter(entry => !!entry);
1185
+ if (upgradable.length === 0) {
1186
+ notificationService.info(incompatibleCount > 0 ? ( localize(
1187
+ 4407,
1188
+ "No remote agent hosts can be updated from here. Incompatible hosts must be updated manually, then reconnected."
1189
+ )) : ( localize(4408, "No remote agent hosts need updating.")));
1190
+ return;
1191
+ }
1192
+ let target = upgradable[0];
1193
+ if (upgradable.length > 1) {
1194
+ const picked = await quickInputService.pick(upgradable.map(entry => ({
1195
+ label: entry.provider.label,
1196
+ description: entry.provider.remoteAddress,
1197
+ entry
1198
+ })), {
1199
+ placeHolder: ( localize(4409, "Select a remote agent host to update"))
1200
+ });
1201
+ if (!picked) {
1202
+ return;
1203
+ }
1204
+ target = picked.entry;
1205
+ }
1206
+ await instantiationService.invokeFunction(runServerUpgrade, target.provider, target.method);
1207
+ }
1208
+ });
1209
+
1210
+ export { RemoteAgentHostCommandIds, parseSSHHostInput };