diff --git a/extensions/copilot/src/extension/agents/claude/common/toolInvocationFormatter.ts b/extensions/copilot/src/extension/agents/claude/common/toolInvocationFormatter.ts index 3bf1cc7bc19..4926d6003d8 100644 --- a/extensions/copilot/src/extension/agents/claude/common/toolInvocationFormatter.ts +++ b/extensions/copilot/src/extension/agents/claude/common/toolInvocationFormatter.ts @@ -75,7 +75,7 @@ function formatGlobInvocation(invocation: ChatToolInvocationPart, toolUse: Anthr function formatGrepInvocation(invocation: ChatToolInvocationPart, toolUse: Anthropic.ToolUseBlock): void { const pattern: string = (toolUse.input as any)?.pattern ?? ''; - invocation.invocationMessage = new MarkdownString(l10n.t("Searched text for `{0}`", pattern)); + invocation.invocationMessage = new MarkdownString(l10n.t("Searched for regex `{0}`", pattern)); } function formatLSInvocation(invocation: ChatToolInvocationPart, toolUse: Anthropic.ToolUseBlock): void { diff --git a/extensions/copilot/src/extension/chatSessions/vscode-node/test/__snapshots__/claudeChatSessionContentProvider.spec.ts.snap b/extensions/copilot/src/extension/chatSessions/vscode-node/test/__snapshots__/claudeChatSessionContentProvider.spec.ts.snap index 5d18ae78079..883c5212460 100644 --- a/extensions/copilot/src/extension/chatSessions/vscode-node/test/__snapshots__/claudeChatSessionContentProvider.spec.ts.snap +++ b/extensions/copilot/src/extension/chatSessions/vscode-node/test/__snapshots__/claudeChatSessionContentProvider.spec.ts.snap @@ -30,7 +30,7 @@ exports[`ChatSessionContentProvider > loads real fixture file with tool invocati { "parts": [ { - "invocationMessage": "Searched text for \`ClaudeAgentManager\`", + "invocationMessage": "Searched for regex \`ClaudeAgentManager\`", "isError": undefined, "toolCallId": "toolu_01FqdrDGdxXUWRRLziM7gS2R", "toolName": "Grep", diff --git a/extensions/copilot/src/extension/tools/node/findTextInFilesTool.tsx b/extensions/copilot/src/extension/tools/node/findTextInFilesTool.tsx index 3fa737f6a96..84064f56f5b 100644 --- a/extensions/copilot/src/extension/tools/node/findTextInFilesTool.tsx +++ b/extensions/copilot/src/extension/tools/node/findTextInFilesTool.tsx @@ -95,16 +95,28 @@ export class FindTextInFilesTool implements ICopilotTool, token: vscode.CancellationToken): vscode.ProviderResult { + const isRegExp = options.input.isRegexp ?? true; + const query = this.formatQueryString(options.input); return { - invocationMessage: new MarkdownString(l10n.t`Searching text for ${this.formatQueryString(options.input)}`), + invocationMessage: isRegExp ? + new MarkdownString(l10n.t`Searching for regex ${query}`) : + new MarkdownString(l10n.t`Searching for text ${query}`), }; } diff --git a/extensions/copilot/src/extension/tools/node/test/findTextInFilesTool.spec.tsx b/extensions/copilot/src/extension/tools/node/test/findTextInFilesTool.spec.tsx index a89458b4fe1..e2df02420ea 100644 --- a/extensions/copilot/src/extension/tools/node/test/findTextInFilesTool.spec.tsx +++ b/extensions/copilot/src/extension/tools/node/test/findTextInFilesTool.spec.tsx @@ -89,7 +89,15 @@ suite('FindTextInFiles', () => { const tool = accessor.get(IInstantiationService).createInstance(FindTextInFilesTool); const prepared = await tool.prepareInvocation({ input: { query: 'hello `world`' }, }, CancellationToken.None); - expect((prepared?.invocationMessage as any as MarkdownString).value).toMatchInlineSnapshot(`"Searching text for \`\` hello \`world\` \`\`"`); + expect((prepared?.invocationMessage as any as MarkdownString).value).toMatchInlineSnapshot(`"Searching for regex \`\` hello \`world\` \`\`"`); + }); + + test('prepares invocation message with text for literal search', async () => { + setup(new RelativePattern(URI.file(workspaceFolder), ''), false); + + const tool = accessor.get(IInstantiationService).createInstance(FindTextInFilesTool); + const prepared = await tool.prepareInvocation({ input: { query: 'hello', isRegexp: false }, }, CancellationToken.None); + expect((prepared?.invocationMessage as any as MarkdownString).value).toMatchInlineSnapshot(`"Searching for text \`hello\`"`); }); test('retries with plain text when regex yields no results', async () => {