From 1e7a8b910423cc44bc606a047e3c43c1b3f1290e Mon Sep 17 00:00:00 2001 From: Rob Lourens Date: Tue, 25 Mar 2025 18:52:09 -0700 Subject: [PATCH] Don't show builtin agent tools in the picker --- .../contrib/chat/browser/actions/chatToolActions.ts | 2 +- .../workbench/contrib/chat/browser/chatSelectedTools.ts | 2 +- .../contrib/chat/common/languageModelToolsService.ts | 1 + .../chat/common/tools/languageModelToolsContribution.ts | 8 ++++++-- src/vs/workbench/contrib/mcp/common/mcpService.ts | 1 + 5 files changed, 10 insertions(+), 4 deletions(-) diff --git a/src/vs/workbench/contrib/chat/browser/actions/chatToolActions.ts b/src/vs/workbench/contrib/chat/browser/actions/chatToolActions.ts index bc7f8e2decde7..51bcae6885f91 100644 --- a/src/vs/workbench/contrib/chat/browser/actions/chatToolActions.ts +++ b/src/vs/workbench/contrib/chat/browser/actions/chatToolActions.ts @@ -158,7 +158,7 @@ export class AttachToolsAction extends Action2 { const toolBuckets = new Map(); for (const tool of toolsService.getTools()) { - if (!tool.canBeReferencedInPrompt) { + if (!tool.supportsToolPicker) { continue; } diff --git a/src/vs/workbench/contrib/chat/browser/chatSelectedTools.ts b/src/vs/workbench/contrib/chat/browser/chatSelectedTools.ts index e6799ca6b97d0..d4d614ef8d61d 100644 --- a/src/vs/workbench/contrib/chat/browser/chatSelectedTools.ts +++ b/src/vs/workbench/contrib/chat/browser/chatSelectedTools.ts @@ -51,7 +51,7 @@ export class ChatSelectedTools extends Disposable { const allTools = observableFromEvent( toolsService.onDidChangeTools, - () => Array.from(toolsService.getTools()).filter(t => t.canBeReferencedInPrompt) + () => Array.from(toolsService.getTools()).filter(t => t.supportsToolPicker) ); const disabledData = this._selectedTools.map(data => { diff --git a/src/vs/workbench/contrib/chat/common/languageModelToolsService.ts b/src/vs/workbench/contrib/chat/common/languageModelToolsService.ts index 3334f0e7e1bfd..fed7aa947f1e3 100644 --- a/src/vs/workbench/contrib/chat/common/languageModelToolsService.ts +++ b/src/vs/workbench/contrib/chat/common/languageModelToolsService.ts @@ -37,6 +37,7 @@ export interface IToolData { runsInWorkspace?: boolean; requiresConfirmation?: boolean; alwaysDisplayOutput?: boolean; + supportsToolPicker?: boolean; } export type ToolDataSource = diff --git a/src/vs/workbench/contrib/chat/common/tools/languageModelToolsContribution.ts b/src/vs/workbench/contrib/chat/common/tools/languageModelToolsContribution.ts index 75e85635433f4..9ef6290f15a22 100644 --- a/src/vs/workbench/contrib/chat/common/tools/languageModelToolsContribution.ts +++ b/src/vs/workbench/contrib/chat/common/tools/languageModelToolsContribution.ts @@ -195,6 +195,7 @@ export class LanguageModelToolsExtensionPointHandler implements IWorkbenchContri }; } + const isBuiltinTool = isProposedApiEnabled(extension.description, 'chatParticipantPrivate'); const tool: IToolData = { ...rawTool, source: { type: 'extension', extensionId: extension.description.identifier }, @@ -202,8 +203,11 @@ export class LanguageModelToolsExtensionPointHandler implements IWorkbenchContri id: rawTool.name, icon, when: rawTool.when ? ContextKeyExpr.deserialize(rawTool.when) : undefined, - requiresConfirmation: !isProposedApiEnabled(extension.description, 'chatParticipantPrivate'), - alwaysDisplayOutput: !isProposedApiEnabled(extension.description, 'chatParticipantPrivate'), + requiresConfirmation: !isBuiltinTool, + alwaysDisplayOutput: !isBuiltinTool, + supportsToolPicker: isBuiltinTool ? + false : + rawTool.canBeReferencedInPrompt }; const disposable = languageModelToolsService.registerToolData(tool); this._registrationDisposables.set(toToolKey(extension.description.identifier, rawTool.name), disposable); diff --git a/src/vs/workbench/contrib/mcp/common/mcpService.ts b/src/vs/workbench/contrib/mcp/common/mcpService.ts index d3c658e4e92f8..f11d066f50a81 100644 --- a/src/vs/workbench/contrib/mcp/common/mcpService.ts +++ b/src/vs/workbench/contrib/mcp/common/mcpService.ts @@ -104,6 +104,7 @@ export class McpService extends Disposable implements IMcpService { userDescription: tool.definition.description ?? '', inputSchema: tool.definition.inputSchema, canBeReferencedInPrompt: true, + supportsToolPicker: true, runsInWorkspace: collection?.scope === StorageScope.WORKSPACE || !!collection?.remoteAuthority, tags: ['mcp'], };