@codingame/monaco-vscode-chat-service-override 36.2.7 → 37.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (725) hide show
  1. package/index.d.ts +1 -0
  2. package/index.js +92 -10
  3. package/package.json +5 -5
  4. package/vscode/src/vs/platform/agentHost/browser/agentHostConnectionsService.d.ts +10 -3
  5. package/vscode/src/vs/platform/agentHost/browser/agentHostConnectionsService.js +54 -17
  6. package/vscode/src/vs/platform/agentHost/browser/agentHostEnablementService.d.ts +14 -0
  7. package/vscode/src/vs/platform/agentHost/browser/agentHostEnablementService.js +46 -0
  8. package/vscode/src/vs/platform/agentHost/browser/agentHostIpcChannelTransport.d.ts +7 -2
  9. package/vscode/src/vs/platform/agentHost/browser/agentHostIpcChannelTransport.js +34 -2
  10. package/vscode/src/vs/platform/agentHost/browser/{remoteAgentHostProtocolClient.d.ts → agentHostProtocolClient.d.ts} +240 -60
  11. package/vscode/src/vs/platform/agentHost/browser/agentHostProtocolClient.js +1911 -0
  12. package/vscode/src/vs/platform/agentHost/browser/remoteAgentHostServiceImpl.d.ts +30 -33
  13. package/vscode/src/vs/platform/agentHost/browser/remoteAgentHostServiceImpl.js +381 -315
  14. package/vscode/src/vs/platform/agentHost/browser/webSocketClientTransport.d.ts +3 -1
  15. package/vscode/src/vs/platform/agentHost/browser/webSocketClientTransport.js +2 -0
  16. package/vscode/src/vs/platform/agentHost/common/agentHostClientInfo.d.ts +9 -0
  17. package/vscode/src/vs/platform/agentHost/common/agentHostClientInfo.js +20 -0
  18. package/vscode/src/vs/platform/agentHost/common/agentHostExtensionProtocol.d.ts +144 -0
  19. package/vscode/src/vs/platform/agentHost/common/agentHostExtensionProtocol.js +20 -0
  20. package/vscode/src/vs/platform/agentHost/common/agentHostFileSystemProvider.d.ts +14 -6
  21. package/vscode/src/vs/platform/agentHost/common/agentHostFileSystemProvider.js +14 -10
  22. package/vscode/src/vs/platform/agentHost/common/agentHostFileSystemService.js +1 -1
  23. package/vscode/src/vs/platform/agentHost/common/agentHostManagedRules.d.ts +47 -0
  24. package/vscode/src/vs/platform/agentHost/common/agentHostManagedRules.js +75 -0
  25. package/vscode/src/vs/platform/agentHost/common/agentHostManagedSettings.d.ts +68 -0
  26. package/vscode/src/vs/platform/agentHost/common/agentHostManagedSettings.js +161 -0
  27. package/vscode/src/vs/platform/agentHost/common/agentHostStarter.config.contribution.js +288 -45
  28. package/vscode/src/vs/platform/agentHost/common/agentMerge.d.ts +261 -0
  29. package/vscode/src/vs/platform/agentHost/common/agentMerge.js +67 -0
  30. package/vscode/src/vs/platform/agentHost/common/agentSdkSetup.d.ts +53 -0
  31. package/vscode/src/vs/platform/agentHost/common/agentSdkSetup.js +45 -0
  32. package/vscode/src/vs/platform/agentHost/common/changesetUri.d.ts +130 -0
  33. package/vscode/src/vs/platform/agentHost/common/changesetUri.js +27 -0
  34. package/vscode/src/vs/platform/agentHost/common/customAgents.d.ts +8 -2
  35. package/vscode/src/vs/platform/agentHost/common/customAgents.js +7 -0
  36. package/vscode/src/vs/platform/agentHost/common/meta/agentChatSurfaceMeta.d.ts +39 -0
  37. package/vscode/src/vs/platform/agentHost/common/meta/agentChatSurfaceMeta.js +25 -0
  38. package/vscode/src/vs/platform/agentHost/common/meta/agentCompletionAttachmentMeta.d.ts +110 -0
  39. package/vscode/src/vs/platform/agentHost/common/meta/agentCompletionAttachmentMeta.js +38 -0
  40. package/vscode/src/vs/platform/agentHost/common/meta/agentHostArtifactRemovalMeta.d.ts +4 -0
  41. package/vscode/src/vs/platform/agentHost/common/meta/clientPluginCustomizationMeta.d.ts +7 -0
  42. package/vscode/src/vs/platform/agentHost/common/meta/clientPluginCustomizationMeta.js +14 -0
  43. package/vscode/src/vs/platform/agentHost/common/sandboxConfigSchema.d.ts +3 -3
  44. package/vscode/src/vs/platform/agentHost/common/sandboxConfigSchema.js +16 -24
  45. package/vscode/src/vs/platform/agentHost/common/semanticSearchConstants.d.ts +8 -0
  46. package/vscode/src/vs/platform/agentHost/common/semanticSearchConstants.js +8 -0
  47. package/vscode/src/vs/platform/agentHost/common/sessionArtifacts.d.ts +75 -0
  48. package/vscode/src/vs/platform/agentHost/common/sessionArtifacts.js +84 -0
  49. package/vscode/src/vs/platform/agentHost/common/shellInitScript.d.ts +24 -0
  50. package/vscode/src/vs/platform/agentHost/common/shellInitScript.js +63 -0
  51. package/vscode/src/vs/platform/agentHost/common/state/agentSubscription.d.ts +71 -20
  52. package/vscode/src/vs/platform/agentHost/common/state/agentSubscription.js +187 -26
  53. package/vscode/src/vs/platform/agentHost/common/state/legacyProtocolCompatibility.d.ts +30 -0
  54. package/vscode/src/vs/platform/agentHost/common/state/legacyProtocolCompatibility.js +87 -0
  55. package/vscode/src/vs/platform/agentHost/common/state/protocol/channels-annotations/reducer.js +2 -2
  56. package/vscode/src/vs/platform/agentHost/common/state/protocol/channels-automation/reducer.d.ts +4 -0
  57. package/vscode/src/vs/platform/agentHost/common/state/protocol/channels-automation/reducer.js +37 -0
  58. package/vscode/src/vs/platform/agentHost/common/state/protocol/channels-automation-run/reducer.d.ts +4 -0
  59. package/vscode/src/vs/platform/agentHost/common/state/protocol/channels-automation-run/reducer.js +45 -0
  60. package/vscode/src/vs/platform/agentHost/common/state/protocol/channels-changeset/reducer.d.ts +5 -4
  61. package/vscode/src/vs/platform/agentHost/common/state/protocol/channels-changeset/reducer.js +100 -35
  62. package/vscode/src/vs/platform/agentHost/common/state/protocol/channels-chat/reducer.js +193 -49
  63. package/vscode/src/vs/platform/agentHost/common/state/protocol/channels-session/reducer.js +161 -40
  64. package/vscode/src/vs/platform/agentHost/common/state/protocol/channels-terminal/reducer.d.ts +1 -1
  65. package/vscode/src/vs/platform/agentHost/common/state/protocol/channels-terminal/reducer.js +5 -1
  66. package/vscode/src/vs/platform/agentHost/common/state/protocol/common/reducer-helpers.d.ts +2 -2
  67. package/vscode/src/vs/platform/agentHost/common/state/protocol/common/timestamps.d.ts +1 -0
  68. package/vscode/src/vs/platform/agentHost/common/state/protocol/common/timestamps.js +7 -0
  69. package/vscode/src/vs/platform/agentHost/common/state/protocol/version/registry.d.ts +1 -1
  70. package/vscode/src/vs/platform/agentHost/common/state/protocol/version/registry.js +114 -3
  71. package/vscode/src/vs/platform/agentHost/common/state/sessionActions.d.ts +28 -5
  72. package/vscode/src/vs/platform/agentHost/common/state/sessionActions.js +4 -2
  73. package/vscode/src/vs/platform/agentHost/common/state/sessionWorkingDirectories.d.ts +34 -0
  74. package/vscode/src/vs/platform/agentHost/common/state/sessionWorkingDirectories.js +28 -0
  75. package/vscode/src/vs/platform/agentHost/common/worktreePaths.d.ts +24 -0
  76. package/vscode/src/vs/platform/agentHost/common/worktreePaths.js +15 -0
  77. package/vscode/src/vs/platform/browserView/common/browserChatToolReferenceNames.d.ts +1 -1
  78. package/vscode/src/vs/platform/chat/common/aiAgentEnv.d.ts +18 -0
  79. package/vscode/src/vs/platform/chat/common/aiAgentEnv.js +6 -0
  80. package/vscode/src/vs/platform/networkFilter/common/domainMatcher.d.ts +5 -1
  81. package/vscode/src/vs/platform/networkFilter/common/domainMatcher.js +77 -5
  82. package/vscode/src/vs/platform/networkFilter/common/networkFilterService.d.ts +1 -1
  83. package/vscode/src/vs/platform/networkFilter/common/networkFilterService.js +9 -5
  84. package/vscode/src/vs/platform/networkFilter/common/settings.d.ts +1 -5
  85. package/vscode/src/vs/platform/networkFilter/common/settings.js +0 -4
  86. package/vscode/src/vs/platform/sandbox/common/terminalSandboxEngine.d.ts +19 -7
  87. package/vscode/src/vs/platform/sandbox/common/terminalSandboxEngine.js +49 -37
  88. package/vscode/src/vs/platform/sandbox/common/terminalSandboxReadAllowList.d.ts +2 -1
  89. package/vscode/src/vs/platform/sandbox/common/terminalSandboxReadAllowList.js +12 -0
  90. package/vscode/src/vs/platform/sandbox/common/terminalSandboxRuntimeConfigurationPerOperation.js +1 -2
  91. package/vscode/src/vs/platform/sandbox/common/terminalSandboxService.d.ts +1 -0
  92. package/vscode/src/vs/platform/terminal/common/autoApprove/autoApproveParseSafety.d.ts +5 -0
  93. package/vscode/src/vs/platform/terminal/common/autoApprove/autoApproveParseSafety.js +7 -0
  94. package/vscode/src/vs/platform/terminal/common/autoApprove/cmdDelayedExpansion.d.ts +5 -0
  95. package/vscode/src/vs/platform/terminal/common/autoApprove/cmdDelayedExpansion.js +8 -0
  96. package/vscode/src/vs/{workbench/contrib/terminalContrib/chatAgentTools/browser/commandParsers → platform/terminal/common/autoApprove}/sedFileWriteParser.d.ts +1 -2
  97. package/vscode/src/vs/workbench/browser/chatChangesPill.d.ts +29 -0
  98. package/vscode/src/vs/workbench/browser/chatChangesPill.js +84 -0
  99. package/vscode/src/vs/workbench/common/chatPullRequest.d.ts +19 -0
  100. package/vscode/src/vs/workbench/common/chatPullRequest.js +53 -0
  101. package/vscode/src/vs/workbench/contrib/agentsVoice/browser/agentsVoice.contribution.js +342 -155
  102. package/vscode/src/vs/workbench/contrib/agentsVoice/browser/agentsVoiceSessionsPicker.js +2 -2
  103. package/vscode/src/vs/workbench/contrib/agentsVoice/browser/agentsVoiceWidget.d.ts +25 -2
  104. package/vscode/src/vs/workbench/contrib/agentsVoice/browser/agentsVoiceWidget.js +150 -67
  105. package/vscode/src/vs/workbench/contrib/agentsVoice/browser/agentsVoiceWidgetBinding.js +5 -3
  106. package/vscode/src/vs/workbench/contrib/agentsVoice/browser/agentsVoiceWindowService.d.ts +5 -1
  107. package/vscode/src/vs/workbench/contrib/agentsVoice/browser/agentsVoiceWindowService.js +39 -9
  108. package/vscode/src/vs/workbench/contrib/agentsVoice/browser/components/confirmationComponent.d.ts +1 -1
  109. package/vscode/src/vs/workbench/contrib/agentsVoice/browser/components/confirmationComponent.js +3 -3
  110. package/vscode/src/vs/workbench/contrib/agentsVoice/browser/components/feedbackDialog.js +6 -6
  111. package/vscode/src/vs/workbench/contrib/agentsVoice/browser/components/headerComponent.d.ts +4 -2
  112. package/vscode/src/vs/workbench/contrib/agentsVoice/browser/components/headerComponent.js +54 -17
  113. package/vscode/src/vs/workbench/contrib/agentsVoice/browser/components/onboardingComponent.js +11 -11
  114. package/vscode/src/vs/workbench/contrib/agentsVoice/browser/components/sessionListComponent.d.ts +1 -1
  115. package/vscode/src/vs/workbench/contrib/agentsVoice/browser/components/sessionListComponent.js +9 -9
  116. package/vscode/src/vs/workbench/contrib/agentsVoice/browser/components/statusRowsComponent.d.ts +1 -1
  117. package/vscode/src/vs/workbench/contrib/agentsVoice/browser/components/statusRowsComponent.js +5 -5
  118. package/vscode/src/vs/workbench/contrib/agentsVoice/browser/components/tokens.d.ts +6 -0
  119. package/vscode/src/vs/workbench/contrib/agentsVoice/browser/components/tokens.js +5 -1
  120. package/vscode/src/vs/workbench/contrib/agentsVoice/browser/components/transcriptComponent.d.ts +1 -1
  121. package/vscode/src/vs/workbench/contrib/agentsVoice/browser/components/voiceBarComponent.d.ts +1 -1
  122. package/vscode/src/vs/workbench/contrib/agentsVoice/browser/components/voiceBarComponent.js +2 -2
  123. package/vscode/src/vs/workbench/contrib/agentsVoice/browser/media/voiceModeOnboarding.css +252 -0
  124. package/vscode/src/vs/workbench/contrib/agentsVoice/browser/transcriptsView/voiceTranscripts.contribution.js +13 -13
  125. package/vscode/src/vs/workbench/contrib/agentsVoice/browser/transcriptsView/voiceTranscriptsView.js +7 -7
  126. package/vscode/src/vs/workbench/contrib/agentsVoice/browser/voiceModeOnboarding.d.ts +146 -0
  127. package/vscode/src/vs/workbench/contrib/agentsVoice/browser/voiceModeOnboarding.js +889 -0
  128. package/vscode/src/vs/workbench/contrib/agentsVoice/common/voiceTranscriptStore.js +2 -2
  129. package/vscode/src/vs/workbench/contrib/chat/browser/accessibility/chatAccessibilityService.d.ts +2 -7
  130. package/vscode/src/vs/workbench/contrib/chat/browser/accessibility/chatAccessibilityService.js +3 -54
  131. package/vscode/src/vs/workbench/contrib/chat/browser/accessibility/chatResponseAccessibleView.d.ts +32 -3
  132. package/vscode/src/vs/workbench/contrib/chat/browser/accessibility/chatResponseAccessibleView.js +214 -161
  133. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatAccessibilityActions.js +10 -9
  134. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatAccessibilityHelp.d.ts +2 -1
  135. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatAccessibilityHelp.js +256 -72
  136. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatAgentRecommendationActions.js +1 -1
  137. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatClear.d.ts +2 -1
  138. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatClear.js +11 -12
  139. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatCodeblockActions.js +19 -15
  140. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatContextActions.js +30 -14
  141. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatCopyActions.js +19 -10
  142. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatDeveloperActions.js +9 -9
  143. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatFileTreeActions.js +2 -2
  144. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatFindActions.d.ts +6 -0
  145. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatFindActions.js +237 -0
  146. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatImportExport.js +7 -6
  147. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatLanguageModelActions.js +13 -13
  148. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatMoveActions.js +10 -10
  149. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatNewActions.d.ts +6 -0
  150. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatNewActions.js +68 -61
  151. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatOpenAgentDebugPanelAction.js +17 -21
  152. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatPluginActions.js +17 -21
  153. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatPromptNavigationActions.js +2 -2
  154. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatQueueActions.d.ts +5 -0
  155. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatQueueActions.js +68 -14
  156. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatQuickInputActions.js +9 -9
  157. package/vscode/src/vs/workbench/contrib/chat/browser/actions/codeBlockOperations.js +21 -19
  158. package/vscode/src/vs/workbench/contrib/chat/browser/actions/createPluginAction.d.ts +7 -2
  159. package/vscode/src/vs/workbench/contrib/chat/browser/actions/createPluginAction.js +222 -72
  160. package/vscode/src/vs/workbench/contrib/chat/browser/actions/exportAgentHostDebugLogsAction.d.ts +64 -17
  161. package/vscode/src/vs/workbench/contrib/chat/browser/actions/exportAgentHostDebugLogsAction.js +530 -305
  162. package/vscode/src/vs/workbench/contrib/chat/browser/actions/openAgentHostStateFileAction.d.ts +25 -0
  163. package/vscode/src/vs/workbench/contrib/chat/browser/actions/openAgentHostStateFileAction.js +63 -0
  164. package/vscode/src/vs/workbench/contrib/chat/browser/agentHostCompletionAction.d.ts +30 -0
  165. package/vscode/src/vs/workbench/contrib/chat/browser/agentHostCompletionAction.js +37 -0
  166. package/vscode/src/vs/workbench/contrib/chat/browser/agentPluginCommands.d.ts +6 -0
  167. package/vscode/src/vs/workbench/contrib/chat/browser/agentPluginCommands.js +95 -0
  168. package/vscode/src/vs/workbench/contrib/chat/browser/agentPluginEditor/agentPluginEditor.js +10 -6
  169. package/vscode/src/vs/workbench/contrib/chat/browser/agentPluginEditor/agentPluginEditorInput.js +2 -2
  170. package/vscode/src/vs/workbench/contrib/chat/browser/agentPluginEditor/agentPluginItems.d.ts +2 -1
  171. package/vscode/src/vs/workbench/contrib/chat/browser/agentPluginRepositoryService.d.ts +18 -1
  172. package/vscode/src/vs/workbench/contrib/chat/browser/agentPluginRepositoryService.js +86 -47
  173. package/vscode/src/vs/workbench/contrib/chat/browser/agentPluginsView.js +61 -47
  174. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostActiveClientService.d.ts +43 -24
  175. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostActiveClientService.js +326 -76
  176. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostCustomizationService.d.ts +112 -5
  177. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostCustomizationService.js +33 -7
  178. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostImportConversationStore.d.ts +20 -0
  179. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostImportConversationStore.js +26 -0
  180. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostLocalCustomizations.d.ts +28 -10
  181. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostLocalCustomizations.js +110 -126
  182. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostMcpServerSupport.d.ts +131 -0
  183. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostMcpServerSupport.js +638 -0
  184. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostMcpServerSupportScope.d.ts +41 -0
  185. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostMcpServerSupportScope.js +202 -0
  186. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostModeSynchronizer.d.ts +24 -1
  187. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostModeSynchronizer.js +26 -5
  188. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostPermissionUiContribution.js +10 -7
  189. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostProtectedResourcesService.d.ts +20 -0
  190. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostProtectedResourcesService.js +55 -0
  191. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostResponseFileChanges.d.ts +62 -0
  192. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostResponseFileChanges.js +40 -0
  193. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostSessionInputPills.d.ts +59 -0
  194. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostSessionInputPills.js +624 -0
  195. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostSessionWorkingDirectorySynchronizer.d.ts +90 -0
  196. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostSessionWorkingDirectorySynchronizer.js +207 -0
  197. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostShellInitSynchronizer.d.ts +31 -0
  198. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostShellInitSynchronizer.js +140 -0
  199. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostToolSetEnablementService.d.ts +4 -0
  200. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostToolSetEnablementService.js +5 -1
  201. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostToolUtils.js +5 -4
  202. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostUntitledProvisionalSessionService.d.ts +74 -5
  203. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostUntitledProvisionalSessionService.js +511 -171
  204. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/applyAgentHostSessionConfig.d.ts +32 -0
  205. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/applyAgentHostSessionConfig.js +48 -0
  206. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/syncedCustomizationBundler.d.ts +55 -6
  207. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/syncedCustomizationBundler.js +210 -20
  208. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessions.contribution.js +43 -24
  209. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsActions.d.ts +46 -10
  210. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsActions.js +216 -110
  211. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsPicker.d.ts +9 -4
  212. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsPicker.js +26 -17
  213. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/agentSessionProjection.js +1 -1
  214. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/agentSessionProjectionActions.js +4 -4
  215. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/agentSessionProjectionService.js +1 -1
  216. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/agentSessionsExperiments.contribution.js +4 -4
  217. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/agentTitleBarStatusWidget.js +30 -26
  218. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/media/agenttitlebarstatuswidget.css +5 -2
  219. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/media/unifiedQuickAccess.css +6 -6
  220. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/unifiedQuickAccess.js +17 -17
  221. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/unifiedQuickAccessActions.js +4 -4
  222. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/externalSessionsFilterMenu.d.ts +3 -0
  223. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/externalSessionsFilterMenu.js +62 -0
  224. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/media/sessionSummaryHover.css +104 -0
  225. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/sessionSummaryHover.d.ts +115 -0
  226. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/sessionSummaryHover.js +168 -0
  227. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/sessionSummaryHoverService.d.ts +24 -0
  228. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/sessionSummaryHoverService.js +32 -0
  229. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessionsConfiguration.js +56 -0
  230. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationIcons.d.ts +0 -4
  231. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationIcons.js +16 -17
  232. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationItemSource.d.ts +7 -3
  233. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationItemSource.js +1 -0
  234. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationItemsModel.d.ts +2 -0
  235. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationItemsModel.js +10 -1
  236. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationListWidget.d.ts +48 -1
  237. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationListWidget.js +913 -220
  238. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationManagement.contribution.d.ts +1 -1
  239. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationManagement.contribution.js +148 -84
  240. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationManagementEditor.d.ts +161 -17
  241. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationManagementEditor.js +2367 -247
  242. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationManagementEditorInput.d.ts +5 -2
  243. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationManagementEditorInput.js +21 -13
  244. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationManagementSectionRegistry.d.ts +26 -0
  245. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationManagementSectionRegistry.js +34 -0
  246. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationPresentation.d.ts +2 -0
  247. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationPresentation.js +23 -0
  248. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationWelcomePage.d.ts +15 -0
  249. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationWelcomePage.js +3 -0
  250. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationWelcomePagePromptLaunchers.d.ts +10 -2
  251. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationWelcomePagePromptLaunchers.js +143 -68
  252. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationWorkspaceService.d.ts +1 -0
  253. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationWorkspaceService.js +10 -5
  254. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/customizationCardList.d.ts +40 -0
  255. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/customizationCardList.js +302 -0
  256. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/customizationCreatorService.d.ts +1 -2
  257. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/customizationCreatorService.js +49 -8
  258. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/customizationGroupHeaderRenderer.js +3 -3
  259. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/customizationMigration.d.ts +38 -0
  260. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/customizationMigration.js +240 -0
  261. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/customizationMigrationAccessibility.d.ts +1 -0
  262. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/customizationMigrationAccessibility.js +53 -0
  263. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/customizationMigrationCategories.d.ts +82 -0
  264. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/customizationMigrationCategories.js +762 -0
  265. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/customizationMigrationDashboard.d.ts +80 -0
  266. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/customizationMigrationDashboard.js +279 -0
  267. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/customizationMigrationServiceImpl.d.ts +44 -0
  268. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/customizationMigrationServiceImpl.js +437 -0
  269. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/embeddedAgentPluginDetail.d.ts +85 -6
  270. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/embeddedAgentPluginDetail.js +697 -15
  271. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/embeddedExtensionToolsDetail.js +7 -7
  272. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/embeddedMcpServerDetail.d.ts +40 -10
  273. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/embeddedMcpServerDetail.js +164 -42
  274. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/galleryItemRenderer.js +6 -9
  275. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/mcpListWidget.d.ts +260 -31
  276. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/mcpListWidget.js +2097 -589
  277. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/mcpServerCustomizationMigration.d.ts +32 -0
  278. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/mcpServerCustomizationMigration.js +860 -0
  279. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/media/aiCustomizationManagement.css +2229 -1338
  280. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/media/aiCustomizationWelcomePromptLaunchers.css +79 -26
  281. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/media/customizationMigrationDashboard.css +354 -0
  282. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/pluginListWidget.d.ts +85 -9
  283. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/pluginListWidget.js +1550 -357
  284. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/promptsServiceCustomizationItemProvider.d.ts +2 -4
  285. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/promptsServiceCustomizationItemProvider.js +13 -27
  286. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/toolsListWidget.d.ts +38 -26
  287. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/toolsListWidget.js +637 -319
  288. package/vscode/src/vs/workbench/contrib/chat/browser/attachments/chatAttachmentResolveService.js +28 -10
  289. package/vscode/src/vs/workbench/contrib/chat/browser/attachments/chatPasteTargetService.d.ts +10 -0
  290. package/vscode/src/vs/workbench/contrib/chat/browser/attachments/chatPasteTargetService.js +22 -0
  291. package/vscode/src/vs/workbench/contrib/chat/browser/attachments/chatReferenceAttachmentWidget.contribution.d.ts +15 -0
  292. package/vscode/src/vs/workbench/contrib/chat/browser/attachments/chatReferenceAttachmentWidget.contribution.js +38 -0
  293. package/vscode/src/vs/workbench/contrib/chat/browser/attachments/transcriptContextAttachmentWidget.contribution.d.ts +8 -0
  294. package/vscode/src/vs/workbench/contrib/chat/browser/attachments/transcriptContextAttachmentWidget.contribution.js +38 -0
  295. package/vscode/src/vs/workbench/contrib/chat/browser/chat.contribution.js +4 -1
  296. package/vscode/src/vs/workbench/contrib/chat/browser/chat.shared.contribution.js +1675 -633
  297. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/agentHostChatDebugProvider.d.ts +93 -6
  298. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/agentHostChatDebugProvider.js +823 -52
  299. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/agentHostLogSources.d.ts +132 -0
  300. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/agentHostLogSources.js +446 -0
  301. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/agentHostUsageSidecar.d.ts +183 -0
  302. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/agentHostUsageSidecar.js +218 -0
  303. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatCustomizationDiscoveryRenderer.js +45 -42
  304. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugCacheExplorerView.d.ts +11 -0
  305. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugCacheExplorerView.js +163 -136
  306. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugCacheInsights.js +72 -72
  307. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugDetailPanel.js +7 -7
  308. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugEditor.d.ts +22 -2
  309. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugEditor.js +105 -14
  310. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugEditorInput.js +2 -2
  311. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugEnablement.d.ts +32 -0
  312. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugEnablement.js +49 -0
  313. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugEventDetailRenderer.js +20 -20
  314. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugEventList.js +7 -7
  315. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugFilters.js +4 -4
  316. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugFlowChartView.js +7 -7
  317. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugFlowGraph.js +27 -22
  318. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugHomeView.d.ts +6 -0
  319. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugHomeView.js +22 -23
  320. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugHookContentRenderer.js +17 -17
  321. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugLogsView.js +25 -25
  322. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugMessageContentRenderer.js +8 -8
  323. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugModelTurnContentRenderer.js +23 -23
  324. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugOverviewView.d.ts +7 -2
  325. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugOverviewView.js +76 -43
  326. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugToolCallContentRenderer.js +11 -11
  327. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugTypes.d.ts +3 -2
  328. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugTypes.js +1 -0
  329. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugWireLogView.d.ts +145 -0
  330. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugWireLogView.js +839 -0
  331. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/media/chatDebug.css +277 -3
  332. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingCodeEditorIntegration.js +1 -1
  333. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingEditorActions.d.ts +6 -6
  334. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingEditorActions.js +14 -14
  335. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingEditorOverlay.js +8 -8
  336. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingExplanationModelManager.js +3 -3
  337. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingExplanationWidget.js +16 -16
  338. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingModifiedDocumentEntry.d.ts +4 -4
  339. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingModifiedDocumentEntry.js +2 -2
  340. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingModifiedFileEntry.js +8 -4
  341. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingModifiedNotebookEntry.js +1 -1
  342. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingServiceImpl.d.ts +6 -3
  343. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingServiceImpl.js +35 -19
  344. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingSession.js +16 -9
  345. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingSessionStorage.js +4 -3
  346. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingTextModelChangeService.d.ts +4 -4
  347. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/media/chatEditingEditorOverlay.css +4 -0
  348. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/media/chatEditingExplanationWidget.css +7 -2
  349. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/notebook/chatEditingNotebookEditorIntegration.js +1 -1
  350. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/notebook/notebookCellChanges.d.ts +5 -5
  351. package/vscode/src/vs/workbench/contrib/chat/browser/chatImageCarouselService.js +3 -3
  352. package/vscode/src/vs/workbench/contrib/chat/browser/chatInputPills.d.ts +86 -0
  353. package/vscode/src/vs/workbench/contrib/chat/browser/chatInputPills.js +282 -0
  354. package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatManagement.contribution.js +14 -10
  355. package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatManagementEditorInput.js +2 -2
  356. package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatModelsViewModel.d.ts +5 -0
  357. package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatModelsViewModel.js +37 -25
  358. package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatModelsWidget.d.ts +7 -5
  359. package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatModelsWidget.js +135 -82
  360. package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/media/chatModelsWidget.css +22 -3
  361. package/vscode/src/vs/workbench/contrib/chat/browser/chatOutlineCreator.d.ts +17 -0
  362. package/vscode/src/vs/workbench/contrib/chat/browser/chatOutlineCreator.js +28 -0
  363. package/vscode/src/vs/workbench/contrib/chat/browser/chatOutputItemRenderer.js +5 -5
  364. package/vscode/src/vs/workbench/contrib/chat/browser/chatParticipant.contribution.js +32 -32
  365. package/vscode/src/vs/workbench/contrib/chat/browser/chatPetAchievementPreview.d.ts +7 -0
  366. package/vscode/src/vs/workbench/contrib/chat/browser/chatPetAchievementPreview.js +114 -0
  367. package/vscode/src/vs/workbench/contrib/chat/browser/chatPetAchievements.contribution.d.ts +45 -0
  368. package/vscode/src/vs/workbench/contrib/chat/browser/chatPetAchievements.contribution.js +326 -0
  369. package/vscode/src/vs/workbench/contrib/chat/browser/chatPetAchievementsEditor.d.ts +33 -0
  370. package/vscode/src/vs/workbench/contrib/chat/browser/chatPetAchievementsEditor.js +99 -0
  371. package/vscode/src/vs/workbench/contrib/chat/browser/chatPetAchievementsEditorInput.d.ts +17 -0
  372. package/vscode/src/vs/workbench/contrib/chat/browser/chatPetAchievementsEditorInput.js +46 -0
  373. package/vscode/src/vs/workbench/contrib/chat/browser/chatPetAchievementsWidget.d.ts +27 -0
  374. package/vscode/src/vs/workbench/contrib/chat/browser/chatPetAchievementsWidget.js +301 -0
  375. package/vscode/src/vs/workbench/contrib/chat/browser/chatPromoNotification.d.ts +22 -0
  376. package/vscode/src/vs/workbench/contrib/chat/browser/chatPromoNotification.js +103 -0
  377. package/vscode/src/vs/workbench/contrib/chat/browser/chatQuotaNotification.d.ts +9 -36
  378. package/vscode/src/vs/workbench/contrib/chat/browser/chatQuotaNotification.js +103 -196
  379. package/vscode/src/vs/workbench/contrib/chat/browser/chatRepoInfo.js +2 -2
  380. package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetupContributions.js +36 -30
  381. package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetupController.d.ts +2 -0
  382. package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetupController.js +51 -12
  383. package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetupGrowthSession.js +6 -6
  384. package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetupProviders.js +31 -27
  385. package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetupRunner.d.ts +65 -20
  386. package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetupRunner.js +291 -138
  387. package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/media/chatSetup.css +9 -0
  388. package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/media/microsoft-dark.svg +1 -0
  389. package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/media/microsoft-light.svg +1 -0
  390. package/vscode/src/vs/workbench/contrib/chat/browser/chatSideChat.d.ts +9 -0
  391. package/vscode/src/vs/workbench/contrib/chat/browser/chatSideChat.js +24 -0
  392. package/vscode/src/vs/workbench/contrib/chat/browser/chatSlashCommands.d.ts +2 -1
  393. package/vscode/src/vs/workbench/contrib/chat/browser/chatSlashCommands.js +59 -35
  394. package/vscode/src/vs/workbench/contrib/chat/browser/chatStatus/chatStatusDashboard.d.ts +7 -2
  395. package/vscode/src/vs/workbench/contrib/chat/browser/chatStatus/chatStatusDashboard.js +221 -145
  396. package/vscode/src/vs/workbench/contrib/chat/browser/chatStatus/chatStatusEntry.js +15 -29
  397. package/vscode/src/vs/workbench/contrib/chat/browser/chatStatus/media/chatStatus.css +21 -3
  398. package/vscode/src/vs/workbench/contrib/chat/browser/chatSubmitRequestHandlerService.d.ts +22 -0
  399. package/vscode/src/vs/workbench/contrib/chat/browser/chatSubmitRequestHandlerService.js +27 -0
  400. package/vscode/src/vs/workbench/contrib/chat/browser/chatTipCatalog.d.ts +9 -0
  401. package/vscode/src/vs/workbench/contrib/chat/browser/chatTipCatalog.js +23 -21
  402. package/vscode/src/vs/workbench/contrib/chat/browser/chatTipService.d.ts +6 -1
  403. package/vscode/src/vs/workbench/contrib/chat/browser/chatTipService.js +62 -6
  404. package/vscode/src/vs/workbench/contrib/chat/browser/chatWindowNotifier.d.ts +15 -1
  405. package/vscode/src/vs/workbench/contrib/chat/browser/chatWindowNotifier.js +97 -8
  406. package/vscode/src/vs/workbench/contrib/chat/browser/claudePluginRecommendations.js +2 -2
  407. package/vscode/src/vs/workbench/contrib/chat/browser/contextContrib/chatContext.contribution.js +6 -6
  408. package/vscode/src/vs/workbench/contrib/chat/browser/contextContrib/chatContextService.d.ts +11 -2
  409. package/vscode/src/vs/workbench/contrib/chat/browser/contextContrib/chatContextService.js +24 -16
  410. package/vscode/src/vs/workbench/contrib/chat/browser/defaultModelContribution.js +5 -5
  411. package/vscode/src/vs/workbench/contrib/chat/browser/enablementStatusWidget.js +2 -2
  412. package/vscode/src/vs/workbench/contrib/chat/browser/expNotification/chatExpNotificationConfig.d.ts +44 -0
  413. package/vscode/src/vs/workbench/contrib/chat/browser/expNotification/chatExpNotificationConfig.js +232 -0
  414. package/vscode/src/vs/workbench/contrib/chat/browser/expNotification/chatExpNotificationContribution.d.ts +36 -0
  415. package/vscode/src/vs/workbench/contrib/chat/browser/expNotification/chatExpNotificationContribution.js +127 -0
  416. package/vscode/src/vs/workbench/contrib/chat/browser/exploreAgentDefaultModel.js +1 -1
  417. package/vscode/src/vs/workbench/contrib/chat/browser/feedbackSurvey/chatModelFeedbackSurveyPromptContribution.d.ts +18 -0
  418. package/vscode/src/vs/workbench/contrib/chat/browser/feedbackSurvey/chatModelFeedbackSurveyPromptContribution.js +55 -0
  419. package/vscode/src/vs/workbench/contrib/chat/browser/hasByokModelsContribution.js +4 -3
  420. package/vscode/src/vs/workbench/contrib/chat/browser/languageModelsConfigurationService.js +1 -1
  421. package/vscode/src/vs/workbench/contrib/chat/browser/media/chatPetAchievements.css +236 -0
  422. package/vscode/src/vs/workbench/contrib/chat/browser/planAgentDefaultModel.js +1 -1
  423. package/vscode/src/vs/workbench/contrib/chat/browser/planReviewFeedback/planReviewFeedbackEditorOverlay.d.ts +9 -0
  424. package/vscode/src/vs/workbench/contrib/chat/browser/planReviewFeedback/planReviewFeedbackEditorOverlay.js +260 -0
  425. package/vscode/src/vs/workbench/contrib/chat/browser/planReviewFeedback/planReviewFeedbackService.d.ts +39 -5
  426. package/vscode/src/vs/workbench/contrib/chat/browser/planReviewFeedback/planReviewFeedbackService.js +155 -56
  427. package/vscode/src/vs/workbench/contrib/chat/browser/pluginAutoUpdate.d.ts +10 -14
  428. package/vscode/src/vs/workbench/contrib/chat/browser/pluginAutoUpdate.js +29 -14
  429. package/vscode/src/vs/workbench/contrib/chat/browser/pluginGitCommandService.d.ts +2 -0
  430. package/vscode/src/vs/workbench/contrib/chat/browser/pluginGitCommandService.js +76 -24
  431. package/vscode/src/vs/workbench/contrib/chat/browser/pluginInstallService.d.ts +1 -1
  432. package/vscode/src/vs/workbench/contrib/chat/browser/pluginInstallService.js +53 -32
  433. package/vscode/src/vs/workbench/contrib/chat/browser/pluginSources.d.ts +1 -1
  434. package/vscode/src/vs/workbench/contrib/chat/browser/pluginSources.js +17 -17
  435. package/vscode/src/vs/workbench/contrib/chat/browser/pluginUrlHandler.js +8 -7
  436. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/chatModeActions.d.ts +1 -1
  437. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/chatModeActions.js +29 -71
  438. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/hookActions.d.ts +3 -0
  439. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/hookActions.js +36 -40
  440. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/hookUtils.d.ts +3 -0
  441. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/hookUtils.js +5 -5
  442. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/promptCodingAgentActionOverlay.js +2 -2
  443. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/promptToolSetsCodeLensProvider.js +2 -2
  444. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/promptToolsCodeLensProvider.js +2 -2
  445. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/promptUrlHandler.js +8 -8
  446. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/runPromptAction.js +9 -16
  447. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/saveAsPromptFileActions.js +3 -3
  448. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/skillActions.js +5 -13
  449. package/vscode/src/vs/workbench/contrib/chat/browser/promptTimeline/media/promptTimeline.css +820 -0
  450. package/vscode/src/vs/workbench/contrib/chat/browser/promptTimeline/promptBucketing.d.ts +38 -0
  451. package/vscode/src/vs/workbench/contrib/chat/browser/promptTimeline/promptBucketing.js +100 -0
  452. package/vscode/src/vs/workbench/contrib/chat/browser/promptTimeline/promptTimeline.contribution.d.ts +1 -0
  453. package/vscode/src/vs/workbench/contrib/chat/browser/promptTimeline/promptTimeline.contribution.js +51 -0
  454. package/vscode/src/vs/workbench/contrib/chat/browser/promptTimeline/promptTimelineCard.d.ts +30 -0
  455. package/vscode/src/vs/workbench/contrib/chat/browser/promptTimeline/promptTimelineCard.js +113 -0
  456. package/vscode/src/vs/workbench/contrib/chat/browser/promptTimeline/promptTimelineGutterRail.d.ts +146 -0
  457. package/vscode/src/vs/workbench/contrib/chat/browser/promptTimeline/promptTimelineGutterRail.js +440 -0
  458. package/vscode/src/vs/workbench/contrib/chat/browser/promptTimeline/promptTimelineLayout.d.ts +16 -0
  459. package/vscode/src/vs/workbench/contrib/chat/browser/promptTimeline/promptTimelineLayout.js +5 -0
  460. package/vscode/src/vs/workbench/contrib/chat/browser/promptTimeline/promptTimelineModel.d.ts +194 -0
  461. package/vscode/src/vs/workbench/contrib/chat/browser/promptTimeline/promptTimelineModel.js +525 -0
  462. package/vscode/src/vs/workbench/contrib/chat/browser/promptTimeline/promptTimelineRail.d.ts +33 -0
  463. package/vscode/src/vs/workbench/contrib/chat/browser/promptTimeline/promptTimelineRulerRail.d.ts +128 -0
  464. package/vscode/src/vs/workbench/contrib/chat/browser/promptTimeline/promptTimelineRulerRail.js +460 -0
  465. package/vscode/src/vs/workbench/contrib/chat/browser/promptTimeline/promptTimelineStickyHeader.d.ts +38 -0
  466. package/vscode/src/vs/workbench/contrib/chat/browser/promptTimeline/promptTimelineStickyHeader.js +120 -0
  467. package/vscode/src/vs/workbench/contrib/chat/browser/promptTimeline/promptTimelineWidgetContrib.d.ts +53 -0
  468. package/vscode/src/vs/workbench/contrib/chat/browser/promptTimeline/promptTimelineWidgetContrib.js +160 -0
  469. package/vscode/src/vs/workbench/contrib/chat/browser/promptsDebugContribution.js +25 -22
  470. package/vscode/src/vs/workbench/contrib/chat/browser/sessionChatPillOptions.d.ts +13 -0
  471. package/vscode/src/vs/workbench/contrib/chat/browser/sessionChatPillOptions.js +52 -0
  472. package/vscode/src/vs/workbench/contrib/chat/browser/sessionPullRequestPill.d.ts +22 -0
  473. package/vscode/src/vs/workbench/contrib/chat/browser/sessionPullRequestPill.js +58 -0
  474. package/vscode/src/vs/workbench/contrib/chat/browser/speechToText/voiceCodeTranscriptionClient.d.ts +63 -0
  475. package/vscode/src/vs/workbench/contrib/chat/browser/speechToText/voiceCodeTranscriptionClient.js +361 -0
  476. package/vscode/src/vs/workbench/contrib/chat/browser/telemetry/chatEditorTopologyTelemetry.d.ts +35 -0
  477. package/vscode/src/vs/workbench/contrib/chat/browser/telemetry/chatEditorTopologyTelemetry.js +90 -0
  478. package/vscode/src/vs/workbench/contrib/chat/browser/tools/clientToolSetsContribution.js +25 -18
  479. package/vscode/src/vs/workbench/contrib/chat/browser/tools/languageModelToolsConfirmationService.d.ts +3 -1
  480. package/vscode/src/vs/workbench/contrib/chat/browser/tools/languageModelToolsConfirmationService.js +77 -41
  481. package/vscode/src/vs/workbench/contrib/chat/browser/tools/languageModelToolsService.js +60 -43
  482. package/vscode/src/vs/workbench/contrib/chat/browser/tools/renameTool.d.ts +4 -1
  483. package/vscode/src/vs/workbench/contrib/chat/browser/tools/renameTool.js +60 -16
  484. package/vscode/src/vs/workbench/contrib/chat/browser/tools/toolHelpers.d.ts +10 -8
  485. package/vscode/src/vs/workbench/contrib/chat/browser/tools/toolHelpers.js +13 -4
  486. package/vscode/src/vs/workbench/contrib/chat/browser/tools/usagesTool.d.ts +3 -1
  487. package/vscode/src/vs/workbench/contrib/chat/browser/tools/usagesTool.js +44 -24
  488. package/vscode/src/vs/workbench/contrib/chat/browser/utilityModelContribution.js +4 -4
  489. package/vscode/src/vs/workbench/contrib/chat/browser/viewsWelcome/chatViewsWelcomeHandler.js +5 -5
  490. package/vscode/src/vs/workbench/contrib/chat/browser/voiceClient/voiceClientService.d.ts +52 -6
  491. package/vscode/src/vs/workbench/contrib/chat/browser/voiceClient/voiceClientService.js +446 -79
  492. package/vscode/src/vs/workbench/contrib/chat/browser/voiceClient/voiceInputUtils.d.ts +11 -0
  493. package/vscode/src/vs/workbench/contrib/chat/browser/voiceClient/voiceInputUtils.js +13 -0
  494. package/vscode/src/vs/workbench/contrib/chat/browser/voiceInputMode/voiceInputMode.d.ts +66 -0
  495. package/vscode/src/vs/workbench/contrib/chat/browser/voiceInputMode/voiceInputMode.js +297 -0
  496. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatSubagentOpenChat.d.ts +137 -0
  497. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatSubagentOpenChat.js +714 -0
  498. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/media/chatSubagentOpenChat.css +379 -0
  499. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatFind/chatFindAccessibilityHelp.d.ts +10 -0
  500. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatFind/chatFindAccessibilityHelp.js +78 -0
  501. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatPetWidgetService.d.ts +36 -0
  502. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatPetWidgetService.js +172 -0
  503. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatWidgetService.d.ts +5 -1
  504. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatWidgetService.js +8 -1
  505. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatInputNoticeHub.d.ts +15 -0
  506. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatInputNoticeHub.js +30 -0
  507. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatQueuePickerActionItem.d.ts +11 -1
  508. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatQueuePickerActionItem.js +41 -13
  509. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/editor/agentHostInputCompletions.d.ts +5 -2
  510. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/editor/agentHostInputCompletions.js +133 -3
  511. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/editor/agentHostInputCompletionsBase.d.ts +3 -2
  512. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/editor/agentHostInputCompletionsBase.js +11 -2
  513. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/editor/chatEditorInputContentProvider.js +4 -4
  514. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/editor/chatInputCommandArgumentHint.d.ts +1 -0
  515. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/editor/chatInputCommandArgumentHint.js +96 -0
  516. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/editor/chatInputCompletionUtils.d.ts +12 -0
  517. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/editor/chatInputCompletionUtils.js +36 -1
  518. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/editor/chatInputCompletions.js +67 -17
  519. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/editor/chatInputEditorContrib.js +23 -37
  520. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/editor/chatInputEditorHover.d.ts +18 -0
  521. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/editor/chatInputEditorHover.js +72 -3
  522. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/editor/chatInputPlaceholderDecoration.d.ts +11 -0
  523. package/vscode/src/vs/workbench/contrib/{agentsVoice/common/agentsVoiceColors.js → chat/browser/widget/input/editor/chatInputPlaceholderDecoration.js} +17 -15
  524. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/editor/chatInputReferenceDecorations.d.ts +3 -0
  525. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/editor/chatInputReferenceDecorations.js +16 -0
  526. package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/chatQuick.js +2 -2
  527. package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/editor/chatEditor.d.ts +6 -4
  528. package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/editor/chatEditor.js +21 -13
  529. package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/viewPane/chatViewPane.d.ts +48 -8
  530. package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/viewPane/chatViewPane.js +457 -142
  531. package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/viewPane/chatViewTitleControl.d.ts +1 -1
  532. package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/viewPane/chatViewTitleControl.js +22 -14
  533. package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/viewPane/media/chatViewPane.css +6 -22
  534. package/vscode/src/vs/workbench/contrib/chat/common/automations/automationBlueprint.d.ts +22 -0
  535. package/vscode/src/vs/workbench/contrib/chat/common/automations/automationBlueprint.js +163 -0
  536. package/vscode/src/vs/workbench/contrib/chat/common/chatDebugServiceImpl.d.ts +27 -5
  537. package/vscode/src/vs/workbench/contrib/chat/common/chatDebugServiceImpl.js +79 -32
  538. package/vscode/src/vs/workbench/contrib/chat/common/chatNotification.d.ts +6 -0
  539. package/vscode/src/vs/workbench/contrib/chat/common/chatNotification.js +12 -0
  540. package/vscode/src/vs/workbench/contrib/chat/common/chatService/chatServiceImpl.d.ts +44 -11
  541. package/vscode/src/vs/workbench/contrib/chat/common/chatService/chatServiceImpl.js +404 -51
  542. package/vscode/src/vs/workbench/contrib/chat/common/chatService/chatServiceTelemetry.d.ts +64 -4
  543. package/vscode/src/vs/workbench/contrib/chat/common/chatService/chatServiceTelemetry.js +33 -2
  544. package/vscode/src/vs/workbench/contrib/chat/common/chatSideChatService.d.ts +68 -0
  545. package/vscode/src/vs/workbench/contrib/chat/common/chatSideChatService.js +70 -0
  546. package/vscode/src/vs/workbench/contrib/chat/common/model/chatModelStore.d.ts +5 -2
  547. package/vscode/src/vs/workbench/contrib/chat/common/model/chatSessionOperationLog.js +18 -5
  548. package/vscode/src/vs/workbench/contrib/chat/common/model/chatSessionStore.js +43 -14
  549. package/vscode/src/vs/workbench/contrib/chat/common/participants/chatSlashCommands.d.ts +4 -0
  550. package/vscode/src/vs/workbench/contrib/chat/common/plugins/agentPluginServiceImpl.d.ts +4 -9
  551. package/vscode/src/vs/workbench/contrib/chat/common/plugins/agentPluginServiceImpl.js +164 -71
  552. package/vscode/src/vs/workbench/contrib/chat/common/plugins/workspacePluginSettingsService.d.ts +1 -1
  553. package/vscode/src/vs/workbench/contrib/chat/common/plugins/workspacePluginSettingsService.js +1 -1
  554. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/chatPromptFilesContribution.js +18 -18
  555. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptCodeActions.js +12 -12
  556. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptHeaderAutocompletion.js +5 -5
  557. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptHovers.js +12 -12
  558. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptLinkProvider.d.ts +3 -1
  559. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptLinkProvider.js +19 -10
  560. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptValidator.d.ts +3 -1
  561. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptValidator.js +172 -159
  562. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/service/customizationMigrationService.d.ts +115 -0
  563. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/service/customizationMigrationService.js +69 -0
  564. package/vscode/src/vs/workbench/contrib/chat/common/sessionChatPills.d.ts +60 -0
  565. package/vscode/src/vs/workbench/contrib/chat/common/sessionChatPills.js +139 -0
  566. package/vscode/src/vs/workbench/contrib/chat/common/voiceChatService.js +1 -1
  567. package/vscode/src/vs/workbench/contrib/chat/common/voicePlaybackService.d.ts +5 -0
  568. package/vscode/src/vs/workbench/contrib/chat/common/voicePlaybackService.js +21 -1
  569. package/vscode/src/vs/workbench/contrib/chat/common/widget/chatResponseResourceFileSystemProvider.d.ts +25 -2
  570. package/vscode/src/vs/workbench/contrib/chat/common/widget/chatResponseResourceFileSystemProvider.js +55 -18
  571. package/vscode/src/vs/workbench/contrib/imageCarousel/browser/imageCarousel.contribution.js +10 -10
  572. package/vscode/src/vs/workbench/contrib/imageCarousel/browser/imageCarouselEditor.js +10 -10
  573. package/vscode/src/vs/workbench/contrib/imageCarousel/browser/imageCarouselEditorInput.js +1 -1
  574. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChat.contribution.js +1 -0
  575. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatActions.js +15 -15
  576. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatDefaultModel.js +2 -2
  577. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatEditReviewSession.d.ts +59 -0
  578. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatEditReviewSession.js +323 -0
  579. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatSessionResolver.d.ts +30 -0
  580. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatSessionResolver.js +79 -0
  581. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatSessionServiceImpl.d.ts +6 -2
  582. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatSessionServiceImpl.js +118 -13
  583. package/vscode/src/vs/workbench/contrib/mcp/browser/mcpPromptArgumentPick.js +14 -14
  584. package/vscode/src/vs/workbench/contrib/notebook/browser/contrib/chat/notebookChatUtils.js +1 -1
  585. package/vscode/src/vs/workbench/contrib/notebook/browser/controller/chat/cellChatActions.js +10 -10
  586. package/vscode/src/vs/workbench/contrib/notebook/browser/controller/chat/notebook.chat.contribution.js +5 -5
  587. package/vscode/src/vs/workbench/contrib/notebook/browser/controller/chat/notebookChatContext.js +1 -1
  588. package/vscode/src/vs/workbench/contrib/remoteCodingAgents/browser/remoteCodingAgents.contribution.js +8 -8
  589. package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminal.chat.contribution.js +1 -0
  590. package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChat.d.ts +81 -0
  591. package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChat.js +85 -0
  592. package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatAccessibilityHelp.js +17 -17
  593. package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatAccessibleView.js +1 -1
  594. package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatActions.js +23 -23
  595. package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatEnabler.js +1 -1
  596. package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatService.d.ts +17 -3
  597. package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatService.js +81 -7
  598. package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatSessionResolver.d.ts +30 -0
  599. package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatSessionResolver.js +86 -0
  600. package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatWidget.d.ts +10 -2
  601. package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatWidget.js +97 -18
  602. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/agentHostSandboxForwarder.d.ts +2 -22
  603. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/agentHostSandboxForwarder.js +10 -8
  604. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/largeOutputFileWriter.js +2 -1
  605. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/runInTerminalHelpers.d.ts +2 -0
  606. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/runInTerminalHelpers.js +42 -36
  607. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/runInTerminalToolTelemetry.d.ts +8 -0
  608. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/runInTerminalToolTelemetry.js +10 -0
  609. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/terminal.chatAgentTools.contribution.js +4 -4
  610. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/toolTerminalCreator.js +2 -1
  611. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/autoApprove/npmScriptAutoApprover.js +1 -1
  612. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/commandLineAutoApproveAnalyzer.js +25 -16
  613. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/commandLineFileWriteAnalyzer.js +4 -3
  614. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/consoleCompactor/consoleCompactor.d.ts +70 -0
  615. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/consoleCompactor/consoleCompactor.js +4316 -0
  616. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/getTerminalLastCommandTool.js +3 -3
  617. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/getTerminalOutputTool.js +3 -3
  618. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/getTerminalSelectionTool.js +3 -3
  619. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/killTerminalTool.js +3 -3
  620. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/monitoring/outputMonitor.d.ts +4 -4
  621. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/monitoring/outputMonitor.js +3 -3
  622. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/runInTerminalConfirmationTool.js +4 -4
  623. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/runInTerminalTool.d.ts +6 -1
  624. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/runInTerminalTool.js +188 -148
  625. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/sendToTerminalTool.js +10 -10
  626. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/task/createAndRunTaskTool.js +14 -14
  627. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/task/getTaskOutputTool.js +7 -7
  628. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/task/runTaskTool.js +14 -14
  629. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/task/taskHelpers.js +1 -1
  630. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/treeSitterCommandParser.d.ts +7 -0
  631. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/treeSitterCommandParser.js +82 -3
  632. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/common/sandboxSettingsReader.d.ts +5 -6
  633. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/common/sandboxSettingsReader.js +5 -42
  634. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/common/terminalOutput.d.ts +2 -0
  635. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/common/terminalOutput.js +8 -0
  636. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/common/terminalSandboxService.d.ts +1 -0
  637. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/common/terminalSandboxService.js +27 -8
  638. package/vscode/src/vs/workbench/services/accounts/browser/defaultAccount.d.ts +205 -0
  639. package/vscode/src/vs/workbench/services/accounts/browser/defaultAccount.js +1580 -0
  640. package/vscode/src/vs/workbench/services/agentEditorComments/browser/agentEditorCommentsOverlayWidget.d.ts +30 -0
  641. package/vscode/src/vs/workbench/services/agentEditorComments/browser/agentEditorCommentsOverlayWidget.js +175 -0
  642. package/vscode/src/vs/workbench/services/agentEditorComments/browser/media/agentEditorCommentsOverlayWidget.css +65 -0
  643. package/vscode/src/vs/workbench/services/agentHost/browser/agentSdkSetupService.d.ts +47 -0
  644. package/vscode/src/vs/workbench/services/agentHost/browser/agentSdkSetupService.js +129 -0
  645. package/vscode/src/vs/workbench/services/agentHost/browser/editorRemoteAgentHostServiceClient.d.ts +26 -8
  646. package/vscode/src/vs/workbench/services/agentHost/browser/editorRemoteAgentHostServiceClient.js +89 -27
  647. package/vscode/src/vs/workbench/services/agentHost/browser/webAgentHostEnablementService.d.ts +8 -0
  648. package/vscode/src/vs/workbench/services/agentHost/browser/webAgentHostEnablementService.js +28 -0
  649. package/vscode/src/vs/workbench/services/agentHost/common/agentHostFileSystemService.js +5 -1
  650. package/vscode/src/vs/workbench/services/agentHost/common/agentHostResourceService.d.ts +18 -18
  651. package/vscode/src/vs/workbench/services/agentHost/common/agentHostResourceService.js +159 -60
  652. package/vscode/src/vs/workbench/services/agentHost/common/editorRemoteAgentHostTransport.d.ts +47 -0
  653. package/vscode/src/vs/workbench/services/agentHost/common/editorRemoteAgentHostTransport.js +362 -0
  654. package/vscode/src/vs/platform/agentHost/browser/agentHost.config.contribution.d.ts +0 -1
  655. package/vscode/src/vs/platform/agentHost/browser/agentHost.config.contribution.js +0 -40
  656. package/vscode/src/vs/platform/agentHost/browser/remoteAgentHostProtocolClient.js +0 -1110
  657. package/vscode/src/vs/platform/agentHost/common/agentHost.config.contribution.js +0 -76
  658. package/vscode/src/vs/platform/agentHost/common/agentHostResourceService.d.ts +0 -63
  659. package/vscode/src/vs/platform/agentHost/common/agentHostResourceService.js +0 -25
  660. package/vscode/src/vs/platform/agentHost/common/agentHostSchema.d.ts +0 -254
  661. package/vscode/src/vs/platform/agentHost/common/agentHostSchema.js +0 -451
  662. package/vscode/src/vs/platform/agentHost/common/agentService.d.ts +0 -1294
  663. package/vscode/src/vs/platform/agentHost/common/agentService.js +0 -92
  664. package/vscode/src/vs/platform/agentHost/common/state/protocol/common/errors.d.ts +0 -186
  665. package/vscode/src/vs/platform/agentHost/common/state/protocol/common/errors.js +0 -10
  666. package/vscode/src/vs/platform/agentHost/common/state/sessionTransport.d.ts +0 -42
  667. package/vscode/src/vs/platform/agentHost/common/state/sessionTransport.js +0 -7
  668. package/vscode/src/vs/workbench/contrib/agentsVoice/common/agentsVoice.d.ts +0 -15
  669. package/vscode/src/vs/workbench/contrib/agentsVoice/common/agentsVoice.js +0 -15
  670. package/vscode/src/vs/workbench/contrib/agentsVoice/common/agentsVoiceColors.d.ts +0 -2
  671. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatForkActions.d.ts +0 -19
  672. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatForkActions.js +0 -243
  673. package/vscode/src/vs/workbench/contrib/chat/browser/actions/openCopilotCliStateFileAction.d.ts +0 -24
  674. package/vscode/src/vs/workbench/contrib/chat/browser/actions/openCopilotCliStateFileAction.js +0 -77
  675. package/vscode/src/vs/workbench/contrib/chat/browser/agentPluginActions.d.ts +0 -92
  676. package/vscode/src/vs/workbench/contrib/chat/browser/agentPluginActions.js +0 -224
  677. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostNewSessionFolderService.d.ts +0 -23
  678. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostNewSessionFolderService.js +0 -52
  679. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsQuickAccess.d.ts +0 -16
  680. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsQuickAccess.js +0 -96
  681. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/localAgentDisabledInputTipContribution.d.ts +0 -27
  682. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/localAgentDisabledInputTipContribution.js +0 -152
  683. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/automationsListWidget.d.ts +0 -87
  684. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/automationsListWidget.js +0 -772
  685. package/vscode/src/vs/workbench/contrib/chat/browser/chatResponseFileChangesService.d.ts +0 -30
  686. package/vscode/src/vs/workbench/contrib/chat/browser/chatResponseFileChangesService.js +0 -29
  687. package/vscode/src/vs/workbench/contrib/chat/browser/enablementActions.d.ts +0 -20
  688. package/vscode/src/vs/workbench/contrib/chat/browser/enablementActions.js +0 -40
  689. package/vscode/src/vs/workbench/contrib/chat/browser/planReviewFeedback/media/planReviewFeedback.css +0 -160
  690. package/vscode/src/vs/workbench/contrib/chat/browser/planReviewFeedback/planReviewFeedbackEditorActions.d.ts +0 -9
  691. package/vscode/src/vs/workbench/contrib/chat/browser/planReviewFeedback/planReviewFeedbackEditorActions.js +0 -123
  692. package/vscode/src/vs/workbench/contrib/chat/browser/planReviewFeedback/planReviewFeedbackEditorContribution.d.ts +0 -37
  693. package/vscode/src/vs/workbench/contrib/chat/browser/planReviewFeedback/planReviewFeedbackEditorContribution.js +0 -572
  694. package/vscode/src/vs/workbench/contrib/chat/browser/voiceClient/micCaptureService.d.ts +0 -125
  695. package/vscode/src/vs/workbench/contrib/chat/browser/voiceClient/micCaptureService.js +0 -399
  696. package/vscode/src/vs/workbench/contrib/chat/browser/voiceClient/voiceSessionController.d.ts +0 -321
  697. package/vscode/src/vs/workbench/contrib/chat/browser/voiceClient/voiceSessionController.js +0 -2117
  698. package/vscode/src/vs/workbench/contrib/chat/browser/voiceClient/voiceToolDispatchService.d.ts +0 -57
  699. package/vscode/src/vs/workbench/contrib/chat/browser/voiceClient/voiceToolDispatchService.js +0 -367
  700. package/vscode/src/vs/workbench/contrib/chat/common/automations/automation.d.ts +0 -78
  701. package/vscode/src/vs/workbench/contrib/chat/common/automations/automationDialogService.d.ts +0 -13
  702. package/vscode/src/vs/workbench/contrib/chat/common/automations/automationDialogService.service.d.ts +0 -11
  703. package/vscode/src/vs/workbench/contrib/chat/common/automations/automationDialogService.service.js +0 -6
  704. package/vscode/src/vs/workbench/contrib/chat/common/automations/automationRunner.service.d.ts +0 -16
  705. package/vscode/src/vs/workbench/contrib/chat/common/automations/automationRunner.service.js +0 -6
  706. package/vscode/src/vs/workbench/contrib/chat/common/automations/automationService.d.ts +0 -46
  707. package/vscode/src/vs/workbench/contrib/chat/common/automations/automationService.service.d.ts +0 -36
  708. package/vscode/src/vs/workbench/contrib/chat/common/automations/automationService.service.js +0 -6
  709. package/vscode/src/vs/workbench/contrib/chat/common/automations/automationsEnabled.d.ts +0 -12
  710. package/vscode/src/vs/workbench/contrib/chat/common/automations/automationsEnabled.js +0 -6
  711. package/vscode/src/vs/workbench/contrib/chat/common/automations/schedule.d.ts +0 -9
  712. package/vscode/src/vs/workbench/contrib/chat/common/automations/schedule.js +0 -6
  713. package/vscode/src/vs/workbench/contrib/chat/common/plugins/agentPluginEnablement.d.ts +0 -15
  714. package/vscode/src/vs/workbench/contrib/chat/common/plugins/agentPluginEnablement.js +0 -177
  715. package/vscode/src/vs/workbench/contrib/chat/common/plugins/fileBackedInstalledPluginsStore.d.ts +0 -67
  716. package/vscode/src/vs/workbench/contrib/chat/common/plugins/fileBackedInstalledPluginsStore.js +0 -195
  717. package/vscode/src/vs/workbench/contrib/chat/common/plugins/marketplaceReference.d.ts +0 -65
  718. package/vscode/src/vs/workbench/contrib/chat/common/plugins/marketplaceReference.js +0 -264
  719. package/vscode/src/vs/workbench/contrib/chat/common/plugins/pluginMarketplaceService.d.ts +0 -190
  720. package/vscode/src/vs/workbench/contrib/chat/common/plugins/pluginMarketplaceService.js +0 -865
  721. package/vscode/src/vs/workbench/contrib/chat/common/plugins/strictKnownMarketplaces.d.ts +0 -31
  722. package/vscode/src/vs/workbench/contrib/chat/common/plugins/strictKnownMarketplaces.js +0 -122
  723. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/commandParsers/commandFileWriteParser.d.ts +0 -24
  724. /package/vscode/src/vs/{workbench/contrib/terminalContrib/chatAgentTools/browser/commandParsers → platform/terminal/common/autoApprove}/sedFileWriteParser.js +0 -0
  725. /package/vscode/src/vs/{platform/agentHost/common/agentHost.config.contribution.d.ts → workbench/contrib/chat/browser/agentSessionsConfiguration.d.ts} +0 -0
@@ -1,13 +1,12 @@
1
1
 
2
2
  import { registerCss } from '@codingame/monaco-vscode-api/css';
3
3
  import { __decorate, __param } from '@codingame/monaco-vscode-api/external/tslib/tslib.es6';
4
- import { $ as $$1, addStandardDisposableListener, EventType, addDisposableListener, append, createTextNode, clearNode, isAncestor, EventHelper, getWindow } from '@codingame/monaco-vscode-api/vscode/vs/base/browser/dom';
4
+ import { $ as $$1, addDisposableGenericMouseDownListener, EventHelper, append, addDisposableListener, EventType, createTextNode, clearNode, isAncestor, getActiveElement, addStandardDisposableListener, scheduleAtNextAnimationFrame, getWindow } from '@codingame/monaco-vscode-api/vscode/vs/base/browser/dom';
5
5
  import { Button } from '@codingame/monaco-vscode-api/vscode/vs/base/browser/ui/button/button';
6
6
  import { HighlightedLabel } from '@codingame/monaco-vscode-api/vscode/vs/base/browser/ui/highlightedlabel/highlightedLabel';
7
7
  import { InputBox } from '@codingame/monaco-vscode-api/vscode/vs/base/browser/ui/inputbox/inputBox';
8
8
  import { DomScrollableElement } from '@codingame/monaco-vscode-api/vscode/vs/base/browser/ui/scrollbar/scrollableElement';
9
9
  import { TriStateCheckbox, Checkbox } from '@codingame/monaco-vscode-api/vscode/vs/base/browser/ui/toggle/toggle';
10
- import { StandardMouseEvent } from '@codingame/monaco-vscode-api/vscode/vs/base/browser/mouseEvent';
11
10
  import { Action } from '@codingame/monaco-vscode-api/vscode/vs/base/common/actions';
12
11
  import { Delayer } from '@codingame/monaco-vscode-api/vscode/vs/base/common/async';
13
12
  import { CancellationTokenSource } from '@codingame/monaco-vscode-api/vscode/vs/base/common/cancellation';
@@ -15,9 +14,10 @@ import { Codicon } from '@codingame/monaco-vscode-api/vscode/vs/base/common/codi
15
14
  import { Emitter } from '@codingame/monaco-vscode-api/vscode/vs/base/common/event';
16
15
  import { matchesContiguousSubString } from '@codingame/monaco-vscode-api/vscode/vs/base/common/filters';
17
16
  import { KeyCode } from '@codingame/monaco-vscode-api/vscode/vs/base/common/keyCodes';
18
- import { Disposable, DisposableStore, toDisposable } from '@codingame/monaco-vscode-api/vscode/vs/base/common/lifecycle';
17
+ import { DisposableStore, Disposable, MutableDisposable, toDisposable } from '@codingame/monaco-vscode-api/vscode/vs/base/common/lifecycle';
19
18
  import '@codingame/monaco-vscode-api/vscode/vs/base/common/observableInternal/index';
20
19
  import { ScrollbarVisibility } from '@codingame/monaco-vscode-api/vscode/vs/base/common/scrollable';
20
+ import { ThemeIcon } from '@codingame/monaco-vscode-api/vscode/vs/base/common/themables';
21
21
  import { URI } from '@codingame/monaco-vscode-api/vscode/vs/base/common/uri';
22
22
  import { localize } from '@codingame/monaco-vscode-api/vscode/vs/nls';
23
23
  import { ExtensionIdentifier } from '@codingame/monaco-vscode-api/vscode/vs/platform/extensions/common/extensions';
@@ -25,8 +25,9 @@ import { IContextViewService, IContextMenuService } from '@codingame/monaco-vsco
25
25
  import { IDialogService } from '@codingame/monaco-vscode-api/vscode/vs/platform/dialogs/common/dialogs.service';
26
26
  import { IInstantiationService } from '@codingame/monaco-vscode-api/vscode/vs/platform/instantiation/common/instantiation';
27
27
  import { WorkbenchList } from '@codingame/monaco-vscode-api/vscode/vs/platform/list/browser/listService';
28
+ import { setupCollapsibleSection, layoutVirtualizedSections, getVirtualizedSectionMinimumHeight, layoutVirtualizedSectionList } from './customizationCardList.js';
28
29
  import { IOpenerService } from '@codingame/monaco-vscode-api/vscode/vs/platform/opener/common/opener.service';
29
- import { defaultInputBoxStyles, defaultButtonStyles, defaultCheckboxStyles } from '@codingame/monaco-vscode-api/vscode/vs/platform/theme/browser/defaultStyles';
30
+ import { defaultCheckboxStyles, defaultInputBoxStyles, defaultButtonStyles } from '@codingame/monaco-vscode-api/vscode/vs/platform/theme/browser/defaultStyles';
30
31
  import { IExtensionManifestPropertiesService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/services/extensions/common/extensionManifestPropertiesService.service';
31
32
  import { IWorkbenchEnvironmentService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/services/environment/common/environmentService.service';
32
33
  import { ExtensionState } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/extensions/common/extensions';
@@ -34,7 +35,7 @@ import { IExtensionsWorkbenchService } from '@codingame/monaco-vscode-api/vscode
34
35
  import { GalleryItemInstallState, GalleryItemRenderer } from './galleryItemRenderer.js';
35
36
  import { ToolDataSource } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/tools/languageModelToolsService';
36
37
  import { ILanguageModelToolsService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/tools/languageModelToolsService.service';
37
- import { countEnabledCustomizationTools, getToolSetTriState, isToolEnabledInSet } from '../agentSessions/agentHost/agentHostToolSetEnablementService.js';
38
+ import { getToolSetTriState, isToolEnabledInSet, countEnabledCustomizationTools } from '../agentSessions/agentHost/agentHostToolSetEnablementService.js';
38
39
  import { IAgentHostToolSetEnablementService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostToolSetEnablementService.service';
39
40
  import * as aiCustomizationManagement from './media/aiCustomizationManagement.css';
40
41
  import { observableValue } from '@codingame/monaco-vscode-api/vscode/vs/base/common/observableInternal/observables/observableValue';
@@ -44,6 +45,231 @@ import { derived } from '@codingame/monaco-vscode-api/vscode/vs/base/common/obse
44
45
 
45
46
  registerCss(aiCustomizationManagement);
46
47
  const $ = $$1;
48
+ const TOOLS_SET_ROW_TEMPLATE_ID = "toolsSetRow";
49
+ const TOOLS_TOOL_ROW_TEMPLATE_ID = "toolsToolRow";
50
+ const TOOLS_SET_ROW_PADDING = 16;
51
+ const TOOLS_TOOL_ROW_PADDING = 12;
52
+ const TOOLS_ROW_LABEL_HEIGHT = 18;
53
+ const TOOLS_ROW_SUBTEXT_HEIGHT = 14;
54
+ const TOOLS_SECTION_MAX_HEIGHT = 320;
55
+ function computeToolsRowHeight(entry) {
56
+ if (entry.kind === "set") {
57
+ return TOOLS_SET_ROW_PADDING + TOOLS_ROW_LABEL_HEIGHT + (entry.vm.detail ? TOOLS_ROW_SUBTEXT_HEIGHT : 0);
58
+ }
59
+ const description = entry.toolVm.tool.userDescription ?? entry.toolVm.tool.modelDescription;
60
+ return TOOLS_TOOL_ROW_PADDING + TOOLS_ROW_LABEL_HEIGHT + (description ? TOOLS_ROW_SUBTEXT_HEIGHT : 0);
61
+ }
62
+ class ToolsRowDelegate {
63
+ getHeight(entry) {
64
+ return computeToolsRowHeight(entry);
65
+ }
66
+ getTemplateId(entry) {
67
+ return entry.kind === "set" ? TOOLS_SET_ROW_TEMPLATE_ID : TOOLS_TOOL_ROW_TEMPLATE_ID;
68
+ }
69
+ }
70
+ class ToolsSetRowRenderer {
71
+ constructor(
72
+ _sessionType,
73
+ _enablementService,
74
+ _isExpanded,
75
+ _toggleExpand,
76
+ _resolveExtension,
77
+ _showExtensionMenu
78
+ ) {
79
+ this._sessionType = _sessionType;
80
+ this._enablementService = _enablementService;
81
+ this._isExpanded = _isExpanded;
82
+ this._toggleExpand = _toggleExpand;
83
+ this._resolveExtension = _resolveExtension;
84
+ this._showExtensionMenu = _showExtensionMenu;
85
+ this.templateId = TOOLS_SET_ROW_TEMPLATE_ID;
86
+ this._templates = ( new Set());
87
+ this._focusedIndex = -1;
88
+ }
89
+ renderTemplate(container) {
90
+ container.classList.add("tools-list-setrow");
91
+ const templateDisposables = ( new DisposableStore());
92
+ const checkbox = templateDisposables.add(( new TriStateCheckbox("", false, defaultCheckboxStyles)));
93
+ checkbox.domNode.tabIndex = -1;
94
+ container.appendChild(checkbox.domNode);
95
+ templateDisposables.add(
96
+ addDisposableGenericMouseDownListener(checkbox.domNode, event => EventHelper.stop(event, true))
97
+ );
98
+ const main = append(container, $(".tools-list-row-main"));
99
+ const text = append(main, $(".tools-list-row-text"));
100
+ const labelEl = append(text, $("span.tools-list-row-label"));
101
+ const label = templateDisposables.add(( new HighlightedLabel(labelEl)));
102
+ const subtext = append(text, $("span.tools-list-row-subtext"));
103
+ const count = append(container, $("span.tools-list-row-count"));
104
+ const alwaysAvailable = append(container, $("span.tools-list-always-available"));
105
+ alwaysAvailable.textContent = ( localize(7028, "Always Available"));
106
+ const moreButton = append(container, $("button.tools-list-more-action"));
107
+ moreButton.type = "button";
108
+ moreButton.tabIndex = -1;
109
+ moreButton.classList.add(...ThemeIcon.asClassNameArray(Codicon.ellipsis));
110
+ templateDisposables.add(
111
+ addDisposableGenericMouseDownListener(moreButton, event => EventHelper.stop(event, true))
112
+ );
113
+ const chevron = append(container, $("a.tools-list-chevron.codicon"));
114
+ chevron.setAttribute("aria-hidden", "true");
115
+ const template = {
116
+ container,
117
+ checkbox,
118
+ label,
119
+ subtext,
120
+ count,
121
+ alwaysAvailable,
122
+ moreButton,
123
+ chevron,
124
+ templateDisposables,
125
+ elementDisposables: templateDisposables.add(( new DisposableStore())),
126
+ currentIndex: -1
127
+ };
128
+ this._templates.add(template);
129
+ return template;
130
+ }
131
+ renderElement(entry, index, data) {
132
+ data.elementDisposables.clear();
133
+ data.currentIndex = index;
134
+ data.container.removeAttribute("aria-selected");
135
+ const vm = entry.vm;
136
+ const ts = vm.toolSet;
137
+ const setName = ts.description ?? ts.referenceName;
138
+ data.label.set(setName, vm.nameMatches);
139
+ data.subtext.style.display = vm.detail ? "" : "none";
140
+ data.subtext.textContent = vm.detail ?? "";
141
+ data.alwaysAvailable.style.display = vm.readOnly ? "" : "none";
142
+ data.checkbox.domNode.style.display = vm.readOnly ? "none" : "";
143
+ if (!vm.readOnly) {
144
+ data.checkbox.setTitle(( localize(7029, "Enable {0}", setName)));
145
+ data.elementDisposables.add(data.checkbox.onChange(() => {
146
+ this._enablementService.setToolSetEnabled(this._sessionType, ts.id, vm.allToolIds, data.checkbox.checked === true);
147
+ }));
148
+ }
149
+ data.elementDisposables.add(autorun(reader => {
150
+ const state = this._enablementService.observe(this._sessionType).read(reader);
151
+ const triState = getToolSetTriState(state, ts.id, vm.allToolIds);
152
+ if (!vm.readOnly) {
153
+ data.checkbox.checked = triState;
154
+ data.container.setAttribute("aria-checked", triState === "mixed" ? "mixed" : String(triState));
155
+ } else {
156
+ data.container.removeAttribute("aria-checked");
157
+ }
158
+ const enabledCount = vm.allToolIds.reduce((n, id) => n + (isToolEnabledInSet(state, ts.id, id) ? 1 : 0), 0);
159
+ data.count.textContent = `${enabledCount}/${vm.allToolIds.length}`;
160
+ data.count.setAttribute("aria-label", ( localize(7030, "{0} of {1} tools enabled", enabledCount, vm.allToolIds.length)));
161
+ }));
162
+ data.elementDisposables.add(autorun(reader => {
163
+ const expanded = this._isExpanded(vm, reader);
164
+ data.chevron.classList.toggle("codicon-chevron-down-compact", expanded);
165
+ data.chevron.classList.toggle("codicon-chevron-right-compact", !expanded);
166
+ data.container.setAttribute("aria-expanded", String(expanded));
167
+ }));
168
+ const extension = this._resolveExtension(ts);
169
+ data.moreButton.style.display = extension ? "" : "none";
170
+ data.moreButton.tabIndex = extension && index === this._focusedIndex ? 0 : -1;
171
+ if (extension) {
172
+ const moreLabel = ( localize(7031, "More actions for {0}", setName));
173
+ data.moreButton.setAttribute("aria-label", moreLabel);
174
+ data.moreButton.title = moreLabel;
175
+ data.elementDisposables.add(addDisposableListener(data.moreButton, "click", e => {
176
+ EventHelper.stop(e, true);
177
+ this._showExtensionMenu(data.moreButton, extension);
178
+ }));
179
+ }
180
+ data.elementDisposables.add(addDisposableListener(data.container, "click", e => {
181
+ if (data.checkbox.domNode.contains(e.target) || data.moreButton.contains(e.target)) {
182
+ return;
183
+ }
184
+ this._toggleExpand(ts.id);
185
+ }));
186
+ }
187
+ setFocusedIndex(index) {
188
+ this._focusedIndex = index;
189
+ for (const template of this._templates) {
190
+ template.moreButton.tabIndex = template.moreButton.style.display !== "none" && template.currentIndex === index ? 0 : -1;
191
+ }
192
+ }
193
+ disposeTemplate(data) {
194
+ this._templates.delete(data);
195
+ data.templateDisposables.dispose();
196
+ }
197
+ }
198
+ class ToolsToolRowRenderer {
199
+ constructor(_sessionType, _enablementService) {
200
+ this._sessionType = _sessionType;
201
+ this._enablementService = _enablementService;
202
+ this.templateId = TOOLS_TOOL_ROW_TEMPLATE_ID;
203
+ }
204
+ renderTemplate(container) {
205
+ container.classList.add("tools-list-toolrow");
206
+ const templateDisposables = ( new DisposableStore());
207
+ const checkbox = templateDisposables.add(( new Checkbox("", false, defaultCheckboxStyles)));
208
+ checkbox.domNode.tabIndex = -1;
209
+ container.appendChild(checkbox.domNode);
210
+ templateDisposables.add(
211
+ addDisposableGenericMouseDownListener(checkbox.domNode, event => EventHelper.stop(event, true))
212
+ );
213
+ const text = append(container, $(".tools-list-row-text"));
214
+ const labelEl = append(text, $("span.tools-list-row-label"));
215
+ const label = templateDisposables.add(( new HighlightedLabel(labelEl)));
216
+ const subtext = append(text, $("span.tools-list-row-subtext"));
217
+ const alwaysAvailable = append(container, $("span.tools-list-always-available"));
218
+ alwaysAvailable.textContent = ( localize(7028, "Always Available"));
219
+ return {
220
+ container,
221
+ checkbox,
222
+ label,
223
+ subtext,
224
+ alwaysAvailable,
225
+ templateDisposables,
226
+ elementDisposables: templateDisposables.add(( new DisposableStore()))
227
+ };
228
+ }
229
+ renderElement(entry, _index, data) {
230
+ data.elementDisposables.clear();
231
+ data.container.removeAttribute("aria-selected");
232
+ const {
233
+ setVm,
234
+ toolVm
235
+ } = entry;
236
+ const tool = toolVm.tool;
237
+ const toolName = tool.displayName ?? tool.id;
238
+ data.container.classList.toggle("readonly", setVm.readOnly);
239
+ data.label.set(toolName, toolVm.nameMatches);
240
+ const description = tool.userDescription ?? tool.modelDescription;
241
+ data.subtext.style.display = description ? "" : "none";
242
+ data.subtext.textContent = description ?? "";
243
+ data.alwaysAvailable.style.display = setVm.readOnly ? "" : "none";
244
+ data.checkbox.domNode.style.display = setVm.readOnly ? "none" : "";
245
+ if (!setVm.readOnly) {
246
+ data.checkbox.setTitle(( localize(7032, "Enable {0}", toolName)));
247
+ data.elementDisposables.add(data.checkbox.onChange(() => {
248
+ this._enablementService.setToolEnabled(this._sessionType, setVm.toolSet.id, tool.id, data.checkbox.checked);
249
+ }));
250
+ data.elementDisposables.add(autorun(reader => {
251
+ const enabled = isToolEnabledInSet(
252
+ this._enablementService.observe(this._sessionType).read(reader),
253
+ setVm.toolSet.id,
254
+ tool.id
255
+ );
256
+ data.checkbox.checked = enabled;
257
+ data.container.setAttribute("aria-checked", String(enabled));
258
+ }));
259
+ data.elementDisposables.add(addDisposableListener(data.container, "click", e => {
260
+ if (data.checkbox.domNode.contains(e.target)) {
261
+ return;
262
+ }
263
+ this._enablementService.setToolEnabled(this._sessionType, setVm.toolSet.id, tool.id, !data.checkbox.checked);
264
+ }));
265
+ } else {
266
+ data.container.removeAttribute("aria-checked");
267
+ }
268
+ }
269
+ disposeTemplate(data) {
270
+ data.templateDisposables.dispose();
271
+ }
272
+ }
47
273
  const TOOLS_MARKETPLACE_QUERY = "language model tools";
48
274
  const TOOLS_GALLERY_ITEM_HEIGHT = 62;
49
275
  const TOOLS_GALLERY_ITEM_TEMPLATE_ID = "toolsGalleryItem";
@@ -120,6 +346,7 @@ let ToolsListWidget = class ToolsListWidget extends Disposable {
120
346
  this._onDidSelectExtension = this._register(( new Emitter()));
121
347
  this.onDidSelectExtension = this._onDidSelectExtension.event;
122
348
  this._rowStore = this._register(( new DisposableStore()));
349
+ this._pendingSectionLayout = this._register(( new MutableDisposable()));
123
350
  this._searchQuery = observableValue("toolsSearchQuery", "");
124
351
  this._expanded = observableValue("toolsExpanded", ( new Set()));
125
352
  this._delayedSearch = this._register(( new Delayer(200)));
@@ -127,32 +354,29 @@ let ToolsListWidget = class ToolsListWidget extends Disposable {
127
354
  this._browseMode = false;
128
355
  this._lastHeight = 0;
129
356
  this._lastWidth = 0;
130
- this._rows = [];
131
- this._rowByElement = ( new Map());
357
+ this._sectionLists = [];
358
+ this._collapsedSections = ( new Set());
359
+ this._sectionScrollPositions = ( new Map());
132
360
  this._staticReadOnlySets = this._createStaticReadOnlySets();
133
361
  this.element = $(".tools-list-widget");
134
362
  this._createHeader();
135
363
  this._createSearchRow();
136
- this._treeContainer = $(".tools-list-tree");
137
- this._treeContainer.setAttribute("role", "tree");
138
- this._treeContainer.setAttribute("aria-label", ( localize(6129, "Tool groups")));
139
- this._register(
140
- addStandardDisposableListener(this._treeContainer, EventType.KEY_DOWN, e => this._onTreeKeyDown(e))
141
- );
142
- this._register(
143
- addDisposableListener(this._treeContainer, EventType.FOCUS_IN, e => {
144
- const row = this._rowFromTarget(e.target);
145
- if (row) {
146
- this._setRovingRow(row);
147
- }
148
- })
149
- );
150
- this._treeScrollable = this._register(( new DomScrollableElement(this._treeContainer, {
364
+ const treeScrollContainer = $(".tools-list-scroll-container");
365
+ this._treeContainer = append(treeScrollContainer, $(".tools-list-tree.distributed-section-layout"));
366
+ const treeScrollable = this._register(( new DomScrollableElement(treeScrollContainer, {
151
367
  horizontal: ScrollbarVisibility.Hidden,
152
368
  vertical: ScrollbarVisibility.Auto,
153
369
  useShadows: false
154
370
  })));
155
- const treeScrollableNode = this._treeScrollable.getDomNode();
371
+ this._treeScrollable = treeScrollable;
372
+ this._register(
373
+ addDisposableListener(treeScrollContainer, EventType.SCROLL, () => {
374
+ treeScrollable.setScrollPosition({
375
+ scrollTop: treeScrollContainer.scrollTop
376
+ });
377
+ })
378
+ );
379
+ const treeScrollableNode = treeScrollable.getDomNode();
156
380
  treeScrollableNode.classList.add("tools-list-tree-scrollable");
157
381
  this.element.appendChild(treeScrollableNode);
158
382
  this._createGallery();
@@ -161,6 +385,10 @@ let ToolsListWidget = class ToolsListWidget extends Disposable {
161
385
  this._register(autorun(reader => {
162
386
  this._render(viewModel.read(reader));
163
387
  }));
388
+ this._register(autorun(reader => {
389
+ this._expanded.read(reader);
390
+ this._refreshAllSectionEntries();
391
+ }));
164
392
  this._register(autorun(reader => {
165
393
  const count = countEnabledCustomizationTools(this._toolsService.toolSets.read(reader), this._readState(reader), reader);
166
394
  if (count !== this._lastCount) {
@@ -171,15 +399,15 @@ let ToolsListWidget = class ToolsListWidget extends Disposable {
171
399
  }
172
400
  _createHeader() {
173
401
  this._header = append(this.element, $(".section-title-header"));
174
- append(append(this._header, $(".section-title-row")), $("h2.section-title")).textContent = ( localize(6130, "Tools"));
402
+ append(append(this._header, $(".section-title-row")), $("h2.section-title")).textContent = ( localize(7033, "Tools"));
175
403
  const description = append(this._header, $("p.section-title-description"));
176
404
  append(description, $("span.section-title-description-text")).textContent = ( localize(
177
- 6131,
178
- "Enable or disable the tools available to chat. Disabled tools are not advertised to the agent. Tools other than Copilot CLI run on the client and require it to be connected."
405
+ 7034,
406
+ "Enable or disable the tools available to chat. Disabled tools are not advertised to the agent. Tools other than Copilot's built-in tools run on the client and require it to be connected."
179
407
  ));
180
408
  description.appendChild(createTextNode(" "));
181
409
  const learnMore = append(description, $("a.section-title-link"));
182
- learnMore.textContent = ( localize(6132, "Learn more about tools"));
410
+ learnMore.textContent = ( localize(7035, "Learn more about tools"));
183
411
  learnMore.href = "https://code.visualstudio.com/docs/agent-customization/tools?referrer=in-product";
184
412
  this._register(addDisposableListener(learnMore, "click", e => {
185
413
  e.preventDefault();
@@ -190,9 +418,9 @@ let ToolsListWidget = class ToolsListWidget extends Disposable {
190
418
  this._searchRow = append(this.element, $(".tools-list-search-and-button-container"));
191
419
  const searchContainer = append(this._searchRow, $(".tools-list-search-container"));
192
420
  this._searchInput = this._register(( new InputBox(searchContainer, this._contextViewService, {
193
- placeholder: ( localize(6133, "Type to search...")),
421
+ placeholder: ( localize(7036, "Type to search...")),
194
422
  inputBoxStyles: defaultInputBoxStyles,
195
- ariaLabel: ( localize(6134, "Search tools"))
423
+ ariaLabel: ( localize(7037, "Search tools"))
196
424
  })));
197
425
  this._register(this._searchInput.onDidChange(() => {
198
426
  this._delayedSearch.trigger(() => {
@@ -203,20 +431,7 @@ let ToolsListWidget = class ToolsListWidget extends Disposable {
203
431
  }
204
432
  }).catch(() => {});
205
433
  }));
206
- if (!this._environmentService.isSessionsWindow) {
207
- const browseLabel = ( localize(6135, "Browse Marketplace"));
208
- this._browseButtonContainer = append(this._searchRow, $(".tools-list-browse-button-container"));
209
- const browseButton = this._register(( new Button(this._browseButtonContainer, {
210
- ...defaultButtonStyles,
211
- secondary: true,
212
- supportIcons: true,
213
- title: browseLabel,
214
- ariaLabel: browseLabel
215
- })));
216
- browseButton.label = `$(${Codicon.library.id}) ${browseLabel}`;
217
- this._register(browseButton.onDidClick(() => this._setBrowseMode(true)));
218
- }
219
- const backLabel = ( localize(6136, "Back"));
434
+ const backLabel = ( localize(7038, "Back"));
220
435
  this._backButtonContainer = append(this._searchRow, $(".tools-list-browse-button-container"));
221
436
  this._backButtonContainer.style.display = "none";
222
437
  const backButton = this._register(( new Button(this._backButtonContainer, {
@@ -232,6 +447,9 @@ let ToolsListWidget = class ToolsListWidget extends Disposable {
232
447
  _createGallery() {
233
448
  this._galleryContainer = append(this.element, $(".tools-gallery-container"));
234
449
  this._galleryContainer.style.display = "none";
450
+ const header = append(this._galleryContainer, $(".tools-marketplace-header"));
451
+ append(header, $("h3.tools-marketplace-title")).textContent = ( localize(7039, "Marketplace Tools"));
452
+ append(header, $("p.tools-marketplace-description")).textContent = ( localize(7040, "Install extensions that contribute additional tools."));
235
453
  this._galleryEmpty = append(this._galleryContainer, $(".list-empty-state"));
236
454
  this._galleryEmpty.style.display = "none";
237
455
  this._galleryListContainer = append(this._galleryContainer, $(".tools-gallery-list"));
@@ -246,7 +464,7 @@ let ToolsListWidget = class ToolsListWidget extends Disposable {
246
464
  horizontalScrolling: false,
247
465
  accessibilityProvider: {
248
466
  getAriaLabel: extension => extension.displayName,
249
- getWidgetAriaLabel: () => ( localize(6137, "Tool extensions"))
467
+ getWidgetAriaLabel: () => ( localize(7041, "Tool extensions"))
250
468
  },
251
469
  identityProvider: {
252
470
  getId: extension => extension.identifier.id
@@ -276,8 +494,8 @@ let ToolsListWidget = class ToolsListWidget extends Disposable {
276
494
  referenceName: "copilotCli",
277
495
  icon: Codicon.copilot,
278
496
  source: ToolDataSource.Internal,
279
- description: ( localize(6138, "Copilot CLI")),
280
- detail: ( localize(6139, "Built-in tools the Copilot CLI agent runs inside its own runtime.")),
497
+ description: ( localize(7042, "Copilot")),
498
+ detail: ( localize(7043, "Built-in tools the Copilot agent runs inside its own runtime.")),
281
499
  getTools: () => tools
282
500
  };
283
501
  return [copilotCliSet];
@@ -347,14 +565,19 @@ let ToolsListWidget = class ToolsListWidget extends Disposable {
347
565
  visibleTools,
348
566
  nameMatches,
349
567
  forceExpanded: query !== "",
350
- readOnly: ts.id === "copilot-cli"
568
+ readOnly: ts.id === "copilot-cli",
569
+ detail: this._resolveSetDetail(ts)
351
570
  };
352
571
  }
353
572
  layout(height, width) {
354
573
  this._lastHeight = height;
355
574
  this._lastWidth = width;
575
+ if (this.element.parentElement?.style.display === "none") {
576
+ return;
577
+ }
578
+ this.element.classList.toggle("narrow-layout", width < 500);
356
579
  this._searchInput.layout();
357
- this._treeScrollable.scanDomNode();
580
+ this._scheduleSectionListLayout();
358
581
  const galleryOffset = this._galleryContainer.getBoundingClientRect().top - this.element.getBoundingClientRect().top;
359
582
  this._galleryList.layout(Math.max(0, height - galleryOffset), width);
360
583
  }
@@ -368,11 +591,8 @@ let ToolsListWidget = class ToolsListWidget extends Disposable {
368
591
  this._browseMode = browse;
369
592
  this._treeScrollable.getDomNode().style.display = browse ? "none" : "";
370
593
  this._galleryContainer.style.display = browse ? "" : "none";
371
- if (this._browseButtonContainer) {
372
- this._browseButtonContainer.style.display = browse ? "none" : "";
373
- }
374
594
  this._backButtonContainer.style.display = browse ? "" : "none";
375
- this._searchInput.setPlaceHolder(browse ? ( localize(6140, "Search the Marketplace...")) : ( localize(6133, "Type to search...")));
595
+ this._searchInput.setPlaceHolder(browse ? ( localize(7044, "Search the Marketplace...")) : ( localize(7036, "Type to search...")));
376
596
  this._searchInput.value = "";
377
597
  if (browse) {
378
598
  void this._queryGallery();
@@ -392,7 +612,7 @@ let ToolsListWidget = class ToolsListWidget extends Disposable {
392
612
  const cts = this._galleryCts = ( new CancellationTokenSource());
393
613
  const userText = this._searchInput.value.trim();
394
614
  const text = userText ? `${TOOLS_MARKETPLACE_QUERY} ${userText}` : TOOLS_MARKETPLACE_QUERY;
395
- this._setGalleryMessage(( localize(6141, "Loading marketplace...")));
615
+ this._setGalleryMessage(( localize(7045, "Loading marketplace...")));
396
616
  try {
397
617
  const pager = await this._extensionsWorkbenchService.queryGallery({
398
618
  text
@@ -407,10 +627,10 @@ let ToolsListWidget = class ToolsListWidget extends Disposable {
407
627
  }
408
628
  if (filteredItems.length === 0) {
409
629
  this._setGalleryMessage(( localize(
410
- 6142,
630
+ 7046,
411
631
  "No tool extensions match '{0}'",
412
632
  userText || TOOLS_MARKETPLACE_QUERY
413
- )), ( localize(6143, "Try a different search term")));
633
+ )), ( localize(7047, "Try a different search term")));
414
634
  return;
415
635
  }
416
636
  this._galleryEmpty.style.display = "none";
@@ -418,7 +638,7 @@ let ToolsListWidget = class ToolsListWidget extends Disposable {
418
638
  this._galleryList.splice(0, this._galleryList.length, filteredItems);
419
639
  } catch {
420
640
  if (!cts.token.isCancellationRequested) {
421
- this._setGalleryMessage(( localize(6144, "Unable to load marketplace")), ( localize(6145, "Check your connection and try again")));
641
+ this._setGalleryMessage(( localize(7048, "Unable to load marketplace")), ( localize(7049, "Check your connection and try again")));
422
642
  }
423
643
  }
424
644
  }
@@ -462,276 +682,285 @@ let ToolsListWidget = class ToolsListWidget extends Disposable {
462
682
  this._onDidChangeItemCount.fire(this._lastCount === -1 ? 0 : this._lastCount);
463
683
  }
464
684
  _render(model) {
465
- const hadFocus = isAncestor(this._treeContainer.ownerDocument.activeElement, this._treeContainer);
685
+ const focusedSection = this._sectionLists.find(
686
+ s => isAncestor(getActiveElement(this._treeContainer.ownerDocument), s.container)
687
+ );
688
+ const focusedRowId = focusedSection ? this._currentFocusedRowId(focusedSection) : undefined;
689
+ for (const section of this._sectionLists) {
690
+ this._sectionScrollPositions.set(section.label, section.list.scrollTop);
691
+ }
466
692
  this._rowStore.clear();
467
- this._rows = [];
468
- this._rowByElement.clear();
693
+ this._sectionLists = [];
469
694
  clearNode(this._treeContainer);
470
- if (model.length === 0) {
695
+ const query = this._searchQuery.get().trim();
696
+ if (model.length === 0 && query) {
471
697
  const emptyState = append(this._treeContainer, $(".list-empty-state"));
472
698
  const header = append(emptyState, $(".empty-state-header"));
473
699
  const text = append(header, $(".empty-state-text"));
474
700
  const subtext = append(emptyState, $(".empty-state-subtext"));
475
- const query = this._searchQuery.get().trim();
476
- if (query) {
477
- text.textContent = ( localize(6146, "No tools match '{0}'", query));
478
- subtext.textContent = ( localize(6143, "Try a different search term"));
479
- } else {
480
- text.textContent = ( localize(6147, "No tools available."));
481
- }
701
+ text.textContent = ( localize(7050, "No tools match '{0}'", query));
702
+ subtext.textContent = ( localize(7047, "Try a different search term"));
482
703
  this._treeScrollable.scanDomNode();
483
704
  return;
484
705
  }
485
- for (const vm of model) {
486
- const setRow = this._renderToolSet(vm);
487
- this._addRow(setRow);
488
- for (const child of setRow.children) {
489
- this._addRow(child);
490
- }
706
+ const builtIn = model.filter(
707
+ vm => vm.toolSet.source.type === "internal" || vm.toolSet.source.type === "external"
708
+ );
709
+ const connected = model.filter(
710
+ vm => vm.toolSet.source.type === "mcp" || vm.toolSet.source.type === "user"
711
+ );
712
+ const installed = model.filter(vm => vm.toolSet.source.type === "extension");
713
+ this._renderToolSection(( localize(7051, "Built-in Tools")), ( localize(7052, "Tools provided by the active agent and VS Code.")), ( localize(7053, "No built-in tool sets are available.")), builtIn, query);
714
+ this._renderToolSection(( localize(7054, "Connected Sources")), ( localize(7055, "Tool sets provided by MCP servers and user configuration.")), ( localize(7056, "No connected tool sources are available.")), connected, query, undefined, false);
715
+ this._renderToolSection(( localize(7057, "Extension Tools")), ( localize(7058, "Tool sets contributed by installed extensions.")), ( localize(7059, "No extension tools are installed.")), installed, query, !this._environmentService.isSessionsWindow ? sectionHeader => {
716
+ const actions = append(sectionHeader, $(".tools-inventory-section-actions"));
717
+ const browseLabel = ( localize(7060, "Browse Marketplace"));
718
+ const browseButton = this._rowStore.add(( new Button(actions, {
719
+ ...defaultButtonStyles,
720
+ secondary: true,
721
+ supportIcons: true,
722
+ title: browseLabel,
723
+ ariaLabel: browseLabel
724
+ })));
725
+ browseButton.label = `$(${Codicon.library.id}) ${browseLabel}`;
726
+ this._rowStore.add(browseButton.onDidClick(() => this._setBrowseMode(true)));
727
+ } : undefined);
728
+ this._scheduleSectionListLayout();
729
+ if (focusedRowId) {
730
+ this._restoreFocus(focusedRowId);
491
731
  }
492
- this._initRovingTabIndex(hadFocus);
493
- this._treeScrollable.scanDomNode();
494
732
  }
495
- _addRow(row) {
496
- this._rows.push(row);
497
- this._rowByElement.set(row.element, row);
498
- }
499
- _renderToolSet(vm) {
500
- const ts = vm.toolSet;
501
- const row = append(this._treeContainer, $(".tools-list-setrow"));
502
- row.setAttribute("role", "treeitem");
503
- row.setAttribute("aria-level", "1");
504
- row.tabIndex = -1;
505
- const setName = ts.description ?? ts.referenceName;
506
- const toggleExpand = () => this._toggleCollapsed(ts.id);
507
- const checkbox = this._rowStore.add(( new TriStateCheckbox(( localize(6148, "Enable {0}", setName)), getToolSetTriState(this._currentState(), ts.id, vm.allToolIds), defaultCheckboxStyles)));
508
- checkbox.domNode.tabIndex = -1;
509
- row.appendChild(checkbox.domNode);
510
- if (vm.readOnly) {
511
- checkbox.disable();
512
- checkbox.setTitle(( localize(6149, "These are the agent's built-in tools and cannot be changed.")));
733
+ _renderToolSection(
734
+ title,
735
+ description,
736
+ emptyMessage,
737
+ model,
738
+ query,
739
+ renderActions,
740
+ showWhenEmpty = true
741
+ ) {
742
+ if (model.length === 0 && (query || !showWhenEmpty)) {
743
+ return;
744
+ }
745
+ const section = append(this._treeContainer, $(".tools-inventory-section"));
746
+ const header = append(section, $(".tools-inventory-section-header"));
747
+ const text = append(header, $(".tools-inventory-section-text"));
748
+ const headingRow = append(text, $(".tools-inventory-section-heading-row"));
749
+ append(headingRow, $("h3.tools-inventory-section-title")).textContent = title;
750
+ append(headingRow, $("span.tools-inventory-section-count")).textContent = String(model.length);
751
+ append(text, $("p.tools-inventory-section-description")).textContent = description;
752
+ renderActions?.(header);
753
+ let inventory;
754
+ if (model.length === 0) {
755
+ inventory = append(section, $(".tools-inventory-list"));
756
+ append(inventory, $(".plugin-inventory-empty")).textContent = emptyMessage;
513
757
  } else {
514
- this._rowStore.add(checkbox.onChange(() => {
515
- const enabled = checkbox.checked === true;
516
- this._enablementService.setToolSetEnabled(this._sessionType, ts.id, vm.allToolIds, enabled);
517
- }));
758
+ inventory = this._createToolsSectionList(section, title, model).container;
518
759
  }
519
- const main = append(row, $(".tools-list-row-main"));
520
- const text = append(main, $(".tools-list-row-text"));
521
- const label = append(text, $("span.tools-list-row-label"));
522
- const labelHighlight = this._rowStore.add(( new HighlightedLabel(label)));
523
- labelHighlight.set(setName, vm.nameMatches);
524
- const detail = this._resolveSetDetail(ts);
525
- if (detail) {
526
- append(text, $("span.tools-list-row-subtext")).textContent = detail;
527
- }
528
- const count = append(row, $("span.tools-list-row-count"));
529
- const chevron = append(row, $("a.tools-list-chevron.codicon"));
530
- chevron.setAttribute("aria-hidden", "true");
531
- this._rowStore.add(addDisposableListener(row, "click", e => {
532
- if (checkbox.domNode.contains(e.target)) {
533
- return;
534
- }
535
- row.focus();
536
- toggleExpand();
537
- }));
538
- this._rowStore.add(addDisposableListener(row, "contextmenu", e => {
539
- const extension = this._resolveExtensionForToolSet(ts);
540
- if (!extension) {
541
- return;
760
+ const collapsedSections = this._collapsedSections ??= ( new Set());
761
+ setupCollapsibleSection(headingRow, inventory, title, this._rowStore, ( collapsedSections.has(title)), collapsed => {
762
+ if (collapsed) {
763
+ collapsedSections.add(title);
764
+ } else {
765
+ collapsedSections.delete(title);
542
766
  }
543
- EventHelper.stop(e, true);
544
- const anchor = e.button === 2 ? ( new StandardMouseEvent(getWindow(row), e)) : row;
545
- this._showExtensionContextMenu(anchor, extension);
546
- }));
547
- const group = append(this._treeContainer, $(".tools-list-children"));
548
- group.id = `tools-group-${ts.id}`;
549
- group.setAttribute("role", "group");
550
- group.setAttribute("aria-label", setName);
551
- row.setAttribute("aria-owns", group.id);
552
- const setRow = {
553
- kind: "set",
554
- rowId: `set:${ts.id}`,
555
- toolSetId: ts.id,
556
- element: row,
557
- toggleNode: checkbox.domNode,
558
- group,
559
- children: []
767
+ this._scheduleSectionListLayout();
768
+ });
769
+ }
770
+ _createToolsSectionList(sectionEl, label, setVms) {
771
+ const listContainer = append(sectionEl, $(".tools-inventory-list"));
772
+ const setRenderer = ( new ToolsSetRowRenderer(
773
+ this._sessionType,
774
+ this._enablementService,
775
+ (vm, reader) => vm.forceExpanded || ( this._expanded.read(reader).has(vm.toolSet.id)),
776
+ setId => this._toggleCollapsed(setId),
777
+ ts => this._resolveExtensionForToolSet(ts),
778
+ (anchor, extension) => this._showExtensionContextMenu(anchor, extension)
779
+ ));
780
+ const list = this._rowStore.add(
781
+ this._instantiationService.createInstance(WorkbenchList, "ToolsSectionList", listContainer, ( new ToolsRowDelegate()), [setRenderer, ( new ToolsToolRowRenderer(this._sessionType, this._enablementService))], {
782
+ multipleSelectionSupport: false,
783
+ horizontalScrolling: false,
784
+ accessibilityProvider: {
785
+ getWidgetAriaLabel: () => label,
786
+ getWidgetRole: () => "tree",
787
+ getRole: () => "treeitem",
788
+ getAriaLevel: entry => entry.kind === "set" ? 1 : 2,
789
+ getAriaLabel: () => null
790
+ },
791
+ identityProvider: {
792
+ getId: entry => this._entryRowId(entry)
793
+ }
794
+ })
795
+ );
796
+ const section = {
797
+ list,
798
+ entries: this._computeSectionEntries(setVms),
799
+ setVms,
800
+ container: listContainer,
801
+ label
560
802
  };
561
- for (const tool of vm.visibleTools) {
562
- setRow.children.push(this._renderTool(group, setRow, vm, tool));
803
+ if (section.entries.length > 0) {
804
+ listContainer.style.height = `${computeToolsRowHeight(section.entries[0])}px`;
563
805
  }
564
- this._rowStore.add(autorun(reader => {
565
- const state = this._readState(reader);
566
- const triState = getToolSetTriState(state, ts.id, vm.allToolIds);
567
- checkbox.checked = triState;
568
- this._updateRowAriaChecked(row, triState);
569
- const enabledCount = vm.allToolIds.reduce((n, id) => n + (isToolEnabledInSet(state, ts.id, id) ? 1 : 0), 0);
570
- count.textContent = `${enabledCount}/${vm.allToolIds.length}`;
571
- count.setAttribute("aria-label", ( localize(6150, "{0} of {1} tools enabled", enabledCount, vm.allToolIds.length)));
572
- }));
573
- this._rowStore.add(autorun(reader => {
574
- const expanded = vm.forceExpanded || ( this._expanded.read(reader).has(ts.id));
575
- group.style.display = expanded ? "" : "none";
576
- chevron.classList.toggle("codicon-chevron-down", expanded);
577
- chevron.classList.toggle("codicon-chevron-right", !expanded);
578
- row.setAttribute("aria-expanded", String(expanded));
579
- this._treeScrollable.scanDomNode();
806
+ list.splice(0, list.length, section.entries);
807
+ list.scrollTop = this._sectionScrollPositions.get(label) ?? 0;
808
+ this._rowStore.add(list.onDidChangeSelection(event => {
809
+ if (event.indexes.length > 0) {
810
+ list.setSelection([]);
811
+ }
580
812
  }));
581
- return setRow;
813
+ this._rowStore.add(
814
+ list.onDidChangeFocus(event => setRenderer.setFocusedIndex(event.indexes[0] ?? -1))
815
+ );
816
+ let focusBeforeKeyDown;
817
+ this._rowStore.add(
818
+ addStandardDisposableListener(listContainer, EventType.KEY_DOWN, () => {
819
+ focusBeforeKeyDown = list.getFocus()[0];
820
+ }, true)
821
+ );
822
+ this._rowStore.add(
823
+ addStandardDisposableListener(list.getHTMLElement(), EventType.KEY_DOWN, e => {
824
+ this._onSectionKeyDown(section, e, () => focusBeforeKeyDown);
825
+ })
826
+ );
827
+ this._sectionLists.push(section);
828
+ return section;
582
829
  }
583
- _renderTool(group, parent, vm, toolVm) {
584
- const tool = toolVm.tool;
585
- const enabled = isToolEnabledInSet(this._currentState(), vm.toolSet.id, tool.id);
586
- const toolName = tool.displayName ?? tool.id;
587
- const row = append(group, $(".tools-list-toolrow"));
588
- row.classList.toggle("readonly", vm.readOnly);
589
- row.setAttribute("role", "treeitem");
590
- row.setAttribute("aria-level", "2");
591
- row.tabIndex = -1;
592
- const checkbox = this._rowStore.add(( new Checkbox(( localize(6151, "Enable {0}", toolName)), enabled, defaultCheckboxStyles)));
593
- checkbox.domNode.tabIndex = -1;
594
- row.appendChild(checkbox.domNode);
595
- this._updateRowAriaChecked(row, enabled);
596
- if (vm.readOnly) {
597
- checkbox.disable();
598
- checkbox.setTitle(( localize(6149, "These are the agent's built-in tools and cannot be changed.")));
599
- } else {
600
- this._rowStore.add(checkbox.onChange(() => {
601
- this._enablementService.setToolEnabled(this._sessionType, vm.toolSet.id, tool.id, checkbox.checked);
602
- }));
603
- this._rowStore.add(addDisposableListener(row, "click", e => {
604
- if (checkbox.domNode.contains(e.target)) {
605
- return;
830
+ _computeSectionEntries(setVms) {
831
+ const entries = [];
832
+ for (const vm of setVms) {
833
+ entries.push({
834
+ kind: "set",
835
+ vm
836
+ });
837
+ if (this._isRowExpanded(vm)) {
838
+ for (const toolVm of vm.visibleTools) {
839
+ entries.push({
840
+ kind: "tool",
841
+ setVm: vm,
842
+ toolVm
843
+ });
606
844
  }
607
- row.focus();
608
- this._enablementService.setToolEnabled(this._sessionType, vm.toolSet.id, tool.id, !checkbox.checked);
609
- }));
610
- this._rowStore.add(autorun(reader => {
611
- const toolEnabled = isToolEnabledInSet(this._readState(reader), vm.toolSet.id, tool.id);
612
- checkbox.checked = toolEnabled;
613
- this._updateRowAriaChecked(row, toolEnabled);
614
- }));
615
- }
616
- const text = append(row, $(".tools-list-row-text"));
617
- const label = append(text, $("span.tools-list-row-label"));
618
- const labelHighlight = this._rowStore.add(( new HighlightedLabel(label)));
619
- labelHighlight.set(toolName, toolVm.nameMatches);
620
- const description = tool.userDescription ?? tool.modelDescription;
621
- if (description) {
622
- const subtext = append(text, $("span.tools-list-row-subtext"));
623
- subtext.textContent = description;
845
+ }
624
846
  }
625
- return {
626
- kind: "tool",
627
- rowId: `tool:${vm.toolSet.id}:${tool.id}`,
628
- toolSetId: vm.toolSet.id,
629
- element: row,
630
- toggleNode: checkbox.domNode,
631
- parent
632
- };
847
+ return entries;
633
848
  }
634
- _resolveSetDetail(ts) {
635
- if (ts.detail) {
636
- return ts.detail;
637
- }
638
- if (ts.source.type !== "extension") {
639
- return undefined;
640
- }
641
- const source = ts.source;
642
- const extension = this._extensionsWorkbenchService.local.find(e => ExtensionIdentifier.equals(e.identifier.id, source.extensionId));
643
- return extension?.description || ( localize(6152, "Tools contributed by {0}", source.label));
849
+ _isRowExpanded(vm) {
850
+ return vm.forceExpanded || ( this._expanded.get().has(vm.toolSet.id));
644
851
  }
645
- _updateRowAriaChecked(element, state) {
646
- element.setAttribute("aria-checked", state === "mixed" ? "mixed" : String(state));
852
+ _entryRowId(entry) {
853
+ return entry.kind === "set" ? `set:${entry.vm.toolSet.id}` : `tool:${entry.setVm.toolSet.id}:${entry.toolVm.tool.id}`;
647
854
  }
648
- _toggleCollapsed(toolSetId) {
649
- const next = ( new Set(this._expanded.get()));
650
- if (( next.has(toolSetId))) {
651
- next.delete(toolSetId);
652
- } else {
653
- next.add(toolSetId);
654
- }
655
- this._expanded.set(next, undefined);
855
+ _currentFocusedRowId(section) {
856
+ const index = section.list.getFocus()[0];
857
+ const entry = index !== undefined ? section.entries[index] : undefined;
858
+ return entry ? this._entryRowId(entry) : undefined;
656
859
  }
657
- _setExpanded(toolSetId, expanded) {
658
- const next = ( new Set(this._expanded.get()));
659
- if (expanded === ( next.has(toolSetId))) {
660
- return;
860
+ _refreshAllSectionEntries() {
861
+ for (const section of this._sectionLists) {
862
+ this._refreshSectionEntries(section);
661
863
  }
662
- if (expanded) {
663
- next.add(toolSetId);
664
- } else {
665
- next.delete(toolSetId);
666
- }
667
- this._expanded.set(next, undefined);
668
- }
669
- _isExpanded(setRow) {
670
- return setRow.group.style.display !== "none";
671
864
  }
672
- _visibleRows() {
673
- return this._rows.filter(r => r.kind === "set" || this._isExpanded(r.parent));
674
- }
675
- _setRovingRow(row) {
676
- for (const r of this._rows) {
677
- r.element.tabIndex = r === row ? 0 : -1;
865
+ _refreshSectionEntries(section) {
866
+ const focusedRowId = this._currentFocusedRowId(section);
867
+ const nextEntries = this._computeSectionEntries(section.setVms);
868
+ section.entries = nextEntries;
869
+ section.list.splice(0, section.list.length, nextEntries);
870
+ if (focusedRowId) {
871
+ const index = nextEntries.findIndex(e => this._entryRowId(e) === focusedRowId);
872
+ if (index !== -1) {
873
+ section.list.setFocus([index]);
874
+ section.list.domFocus();
875
+ }
678
876
  }
679
- this._activeRowId = row.rowId;
877
+ this._scheduleSectionListLayout();
680
878
  }
681
- _focusRow(row) {
682
- this._setRovingRow(row);
683
- row.element.focus();
684
- }
685
- _rowFromTarget(target) {
686
- for (let el = target; el && el !== this._treeContainer; el = el.parentElement) {
687
- const row = this._rowByElement.get(el);
688
- if (row) {
689
- return row;
879
+ _restoreFocus(rowId) {
880
+ for (const section of this._sectionLists) {
881
+ if (section.container.hidden) {
882
+ continue;
883
+ }
884
+ const index = section.entries.findIndex(e => this._entryRowId(e) === rowId);
885
+ if (index !== -1) {
886
+ section.list.setFocus([index]);
887
+ section.list.reveal(index);
888
+ section.list.domFocus();
889
+ return;
690
890
  }
691
891
  }
692
- return undefined;
892
+ this._focusFirstOverall();
693
893
  }
694
- _initRovingTabIndex(refocus = false) {
695
- let active = this._activeRowId ? this._rows.find(r => r.rowId === this._activeRowId) : undefined;
696
- if (!active || (active.kind === "tool" && !this._isExpanded(active.parent))) {
697
- active = this._visibleRows()[0];
698
- }
699
- for (const r of this._rows) {
700
- r.element.tabIndex = r === active ? 0 : -1;
701
- }
702
- this._activeRowId = active?.rowId;
703
- if (refocus && active) {
704
- active.element.focus();
894
+ _layoutSectionLists() {
895
+ const heights = layoutVirtualizedSections(this._treeContainer, ( this._sectionLists.map(section => ({
896
+ container: section.container,
897
+ contentHeight: section.entries.reduce((sum, entry) => sum + computeToolsRowHeight(entry), 0),
898
+ minimumHeight: getVirtualizedSectionMinimumHeight(section.entries, computeToolsRowHeight)
899
+ }))));
900
+ for (let index = 0; index < this._sectionLists.length; index++) {
901
+ this._layoutSection(this._sectionLists[index], heights[index]);
705
902
  }
706
903
  }
707
- _onTreeKeyDown(e) {
708
- const row = this._rowFromTarget(e.target);
709
- if (!row) {
904
+ _scheduleSectionListLayout() {
905
+ this._pendingSectionLayout.value = scheduleAtNextAnimationFrame(getWindow(this.element), () => {
906
+ this._layoutSectionLists();
907
+ this._treeScrollable.scanDomNode();
908
+ });
909
+ }
910
+ _layoutSection(section, allocatedHeight) {
911
+ const contentHeight = section.entries.reduce((sum, e) => sum + computeToolsRowHeight(e), 0);
912
+ const height = allocatedHeight ?? Math.min(contentHeight, TOOLS_SECTION_MAX_HEIGHT);
913
+ layoutVirtualizedSectionList(
914
+ section.list,
915
+ section.container,
916
+ height,
917
+ section.container.clientWidth || this._lastWidth || undefined
918
+ );
919
+ }
920
+ _onSectionKeyDown(section, e, getFocusBeforeKeyDown) {
921
+ const entries = section.entries;
922
+ if (entries.length === 0) {
710
923
  return;
711
924
  }
925
+ const focusIndex = section.list.getFocus()[0];
926
+ const entry = entries[focusIndex ?? 0];
712
927
  let handled = true;
713
928
  switch (e.keyCode) {
714
929
  case KeyCode.DownArrow:
715
- this._focusRelative(row, 1);
716
- break;
930
+ {
931
+ const before = getFocusBeforeKeyDown();
932
+ handled = before !== undefined && before === entries.length - 1;
933
+ if (handled) {
934
+ this._focusAdjacentSection(section, 1);
935
+ }
936
+ break;
937
+ }
717
938
  case KeyCode.UpArrow:
718
- this._focusRelative(row, -1);
719
- break;
939
+ {
940
+ const before = getFocusBeforeKeyDown();
941
+ handled = before !== undefined && before === 0;
942
+ if (handled) {
943
+ this._focusAdjacentSection(section, -1);
944
+ }
945
+ break;
946
+ }
720
947
  case KeyCode.RightArrow:
721
- handled = this._onExpandKey(row);
948
+ handled = this._onExpandKey(section, entry);
722
949
  break;
723
950
  case KeyCode.LeftArrow:
724
- handled = this._onCollapseKey(row);
951
+ handled = this._onCollapseKey(section, entry);
725
952
  break;
726
953
  case KeyCode.Home:
727
- this._focusEdge(true);
954
+ this._focusFirstOverall();
728
955
  break;
729
956
  case KeyCode.End:
730
- this._focusEdge(false);
957
+ this._focusLastOverall();
731
958
  break;
732
959
  case KeyCode.Space:
960
+ this._onActivateKey(entry, false);
961
+ break;
733
962
  case KeyCode.Enter:
734
- row.toggleNode.click();
963
+ this._onActivateKey(entry, true);
735
964
  break;
736
965
  default:
737
966
  handled = false;
@@ -741,40 +970,129 @@ let ToolsListWidget = class ToolsListWidget extends Disposable {
741
970
  e.stopPropagation();
742
971
  }
743
972
  }
744
- _focusRelative(row, delta) {
745
- const rows = this._visibleRows();
746
- const index = rows.indexOf(row);
747
- const next = index === -1 ? undefined : rows[index + delta];
748
- if (next) {
749
- this._focusRow(next);
973
+ _onActivateKey(entry, viaEnter) {
974
+ const readOnly = entry.kind === "set" ? entry.vm.readOnly : entry.setVm.readOnly;
975
+ if (readOnly) {
976
+ if (viaEnter && entry.kind === "set") {
977
+ this._toggleCollapsed(entry.vm.toolSet.id);
978
+ }
979
+ return;
980
+ }
981
+ if (entry.kind === "set") {
982
+ const vm = entry.vm;
983
+ const current = getToolSetTriState(this._currentState(), vm.toolSet.id, vm.allToolIds);
984
+ this._enablementService.setToolSetEnabled(this._sessionType, vm.toolSet.id, vm.allToolIds, current !== true);
985
+ } else {
986
+ const {
987
+ setVm,
988
+ toolVm
989
+ } = entry;
990
+ const current = isToolEnabledInSet(this._currentState(), setVm.toolSet.id, toolVm.tool.id);
991
+ this._enablementService.setToolEnabled(this._sessionType, setVm.toolSet.id, toolVm.tool.id, !current);
750
992
  }
751
993
  }
752
- _focusEdge(first) {
753
- const rows = this._visibleRows();
754
- this._focusRow(first ? rows[0] : rows[rows.length - 1]);
755
- }
756
- _onExpandKey(row) {
757
- if (row.kind !== "set") {
994
+ _onExpandKey(section, entry) {
995
+ if (entry.kind !== "set") {
758
996
  return false;
759
997
  }
760
- if (!this._isExpanded(row)) {
761
- this._setExpanded(row.toolSetId, true);
762
- } else if (row.children.length) {
763
- this._focusRow(row.children[0]);
998
+ const vm = entry.vm;
999
+ if (!this._isRowExpanded(vm)) {
1000
+ this._setExpanded(vm.toolSet.id, true);
1001
+ } else if (vm.visibleTools.length) {
1002
+ this._focusEntryInSection(section, `tool:${vm.toolSet.id}:${vm.visibleTools[0].tool.id}`);
764
1003
  }
765
1004
  return true;
766
1005
  }
767
- _onCollapseKey(row) {
768
- if (row.kind === "set") {
769
- if (this._isExpanded(row)) {
770
- this._setExpanded(row.toolSetId, false);
1006
+ _onCollapseKey(section, entry) {
1007
+ if (entry.kind === "set") {
1008
+ if (this._isRowExpanded(entry.vm)) {
1009
+ this._setExpanded(entry.vm.toolSet.id, false);
771
1010
  return true;
772
1011
  }
773
1012
  return false;
774
1013
  }
775
- this._focusRow(row.parent);
1014
+ this._focusEntryInSection(section, `set:${entry.setVm.toolSet.id}`);
776
1015
  return true;
777
1016
  }
1017
+ _focusEntryInSection(section, rowId) {
1018
+ const index = section.entries.findIndex(e => this._entryRowId(e) === rowId);
1019
+ if (index === -1) {
1020
+ return;
1021
+ }
1022
+ section.list.setFocus([index]);
1023
+ section.list.reveal(index);
1024
+ section.list.domFocus();
1025
+ }
1026
+ _focusAdjacentSection(from, delta) {
1027
+ let targetIndex = this._sectionLists.indexOf(from) + delta;
1028
+ while (this._sectionLists[targetIndex]?.container.hidden) {
1029
+ targetIndex += delta;
1030
+ }
1031
+ const target = this._sectionLists[targetIndex];
1032
+ if (!target) {
1033
+ return;
1034
+ }
1035
+ if (target.entries.length === 0) {
1036
+ this._focusAdjacentSection(target, delta);
1037
+ return;
1038
+ }
1039
+ const index = delta === 1 ? 0 : target.entries.length - 1;
1040
+ target.list.setFocus([index]);
1041
+ target.list.reveal(index);
1042
+ target.list.domFocus();
1043
+ }
1044
+ _focusFirstOverall() {
1045
+ const section = this._sectionLists.find(s => !s.container.hidden && s.entries.length > 0);
1046
+ if (section) {
1047
+ section.list.setFocus([0]);
1048
+ section.list.reveal(0);
1049
+ section.list.domFocus();
1050
+ }
1051
+ }
1052
+ _focusLastOverall() {
1053
+ for (let i = this._sectionLists.length - 1; i >= 0; i--) {
1054
+ const section = this._sectionLists[i];
1055
+ if (!section.container.hidden && section.entries.length > 0) {
1056
+ const index = section.entries.length - 1;
1057
+ section.list.setFocus([index]);
1058
+ section.list.reveal(index);
1059
+ section.list.domFocus();
1060
+ return;
1061
+ }
1062
+ }
1063
+ }
1064
+ _resolveSetDetail(ts) {
1065
+ if (ts.detail) {
1066
+ return ts.detail;
1067
+ }
1068
+ if (ts.source.type !== "extension") {
1069
+ return undefined;
1070
+ }
1071
+ const source = ts.source;
1072
+ const extension = this._extensionsWorkbenchService.local.find(e => ExtensionIdentifier.equals(e.identifier.id, source.extensionId));
1073
+ return extension?.description || ( localize(7061, "Tools contributed by {0}", source.label));
1074
+ }
1075
+ _toggleCollapsed(toolSetId) {
1076
+ const next = ( new Set(this._expanded.get()));
1077
+ if (( next.has(toolSetId))) {
1078
+ next.delete(toolSetId);
1079
+ } else {
1080
+ next.add(toolSetId);
1081
+ }
1082
+ this._expanded.set(next, undefined);
1083
+ }
1084
+ _setExpanded(toolSetId, expanded) {
1085
+ const next = ( new Set(this._expanded.get()));
1086
+ if (expanded === ( next.has(toolSetId))) {
1087
+ return;
1088
+ }
1089
+ if (expanded) {
1090
+ next.add(toolSetId);
1091
+ } else {
1092
+ next.delete(toolSetId);
1093
+ }
1094
+ this._expanded.set(next, undefined);
1095
+ }
778
1096
  _currentState() {
779
1097
  return this._enablementService.getState(this._sessionType);
780
1098
  }
@@ -798,7 +1116,7 @@ let ToolsListWidget = class ToolsListWidget extends Disposable {
798
1116
  }
799
1117
  _showExtensionContextMenu(anchor, extension) {
800
1118
  const disposables = ( new DisposableStore());
801
- const uninstallAction = disposables.add(( new Action("toolsList.uninstallExtension", ( localize(6153, "Uninstall Extension")), undefined, true, () => this._uninstallExtension(extension))));
1119
+ const uninstallAction = disposables.add(( new Action("toolsList.uninstallExtension", ( localize(7062, "Uninstall Extension")), undefined, true, () => this._uninstallExtension(extension))));
802
1120
  this._contextMenuService.showContextMenu({
803
1121
  getAnchor: () => anchor,
804
1122
  getActions: () => [uninstallAction],
@@ -808,15 +1126,15 @@ let ToolsListWidget = class ToolsListWidget extends Disposable {
808
1126
  async _uninstallExtension(extension) {
809
1127
  const result = await this._dialogService.confirm({
810
1128
  message: ( localize(
811
- 6154,
1129
+ 7063,
812
1130
  "Do you want to uninstall the extension '{0}'?",
813
1131
  extension.displayName
814
1132
  )),
815
1133
  detail: ( localize(
816
- 6155,
1134
+ 7064,
817
1135
  "This extension may contribute more than tools. Uninstalling it removes all of its contributions."
818
1136
  )),
819
- primaryButton: ( localize(6156, "Uninstall Extension")),
1137
+ primaryButton: ( localize(7065, "Uninstall Extension")),
820
1138
  type: "question"
821
1139
  });
822
1140
  if (result.confirmed) {
@@ -828,58 +1146,58 @@ ToolsListWidget = ( __decorate([( __param(1, ILanguageModelToolsService)), ( __p
828
1146
  const COPILOT_CLI_TOOLS = [
829
1147
  {
830
1148
  name: "bash / powershell",
831
- description: ( localize(6157, "Execute commands"))
1149
+ description: ( localize(7066, "Execute commands"))
832
1150
  }, {
833
1151
  name: "list_bash / list_powershell",
834
- description: ( localize(6158, "List active shell sessions"))
1152
+ description: ( localize(7067, "List active shell sessions"))
835
1153
  }, {
836
1154
  name: "read_bash / read_powershell",
837
- description: ( localize(6159, "Read output from a shell session"))
1155
+ description: ( localize(7068, "Read output from a shell session"))
838
1156
  }, {
839
1157
  name: "stop_bash / stop_powershell",
840
- description: ( localize(6160, "Terminate a shell session"))
1158
+ description: ( localize(7069, "Terminate a shell session"))
841
1159
  }, {
842
1160
  name: "write_bash / write_powershell",
843
- description: ( localize(6161, "Send input to a shell session"))
1161
+ description: ( localize(7070, "Send input to a shell session"))
844
1162
  },
845
1163
  {
846
1164
  name: "apply_patch",
847
- description: ( localize(6162, "Apply patches (used by some models instead of edit/create)"))
1165
+ description: ( localize(7071, "Apply patches (used by some models instead of edit/create)"))
848
1166
  }, {
849
1167
  name: "create",
850
- description: ( localize(6163, "Create new files"))
1168
+ description: ( localize(7072, "Create new files"))
851
1169
  }, {
852
1170
  name: "edit",
853
- description: ( localize(6164, "Edit files via string replacement"))
1171
+ description: ( localize(7073, "Edit files via string replacement"))
854
1172
  }, {
855
1173
  name: "view",
856
- description: ( localize(6165, "Read files or directories"))
1174
+ description: ( localize(7074, "Read files or directories"))
857
1175
  },
858
1176
  {
859
1177
  name: "list_agents",
860
- description: ( localize(6166, "List available agents"))
1178
+ description: ( localize(7075, "List available agents"))
861
1179
  }, {
862
1180
  name: "read_agent",
863
- description: ( localize(6167, "Check background agent status"))
1181
+ description: ( localize(7076, "Check background agent status"))
864
1182
  }, {
865
1183
  name: "task",
866
- description: ( localize(6168, "Run subagents"))
1184
+ description: ( localize(7077, "Run subagents"))
867
1185
  },
868
1186
  {
869
1187
  name: "ask_user",
870
- description: ( localize(6169, "Ask the user a question"))
1188
+ description: ( localize(7078, "Ask the user a question"))
871
1189
  }, {
872
1190
  name: "glob",
873
- description: ( localize(6170, "Find files matching patterns"))
1191
+ description: ( localize(7079, "Find files matching patterns"))
874
1192
  }, {
875
1193
  name: "grep (or rg)",
876
- description: ( localize(6171, "Search for text in files"))
1194
+ description: ( localize(7080, "Search for text in files"))
877
1195
  }, {
878
1196
  name: "skill",
879
- description: ( localize(6172, "Invoke custom skills"))
1197
+ description: ( localize(7081, "Invoke custom skills"))
880
1198
  }, {
881
1199
  name: "web_fetch",
882
- description: ( localize(6173, "Fetch and parse web content"))
1200
+ description: ( localize(7082, "Fetch and parse web content"))
883
1201
  }];
884
1202
  const CUSTOM_TOOL_SET_ORDER = {
885
1203
  "copilot-cli": 0,