refactor(core): migrate web search tool to tool-names (#10782)

This commit is contained in:
Abhi
2025-10-10 15:51:24 -04:00
committed by GitHub
parent 0a7ee67707
commit ab3804d823
4 changed files with 13 additions and 11 deletions
+7 -6
View File
@@ -4,10 +4,11 @@
* SPDX-License-Identifier: Apache-2.0 * SPDX-License-Identifier: Apache-2.0
*/ */
import { WEB_SEARCH_TOOL_NAME } from '../packages/core/src/tools/tool-names.js';
import { describe, it, expect } from 'vitest'; import { describe, it, expect } from 'vitest';
import { TestRig, printDebugInfo, validateModelOutput } from './test-helper.js'; import { TestRig, printDebugInfo, validateModelOutput } from './test-helper.js';
describe('google_web_search', () => { describe(WEB_SEARCH_TOOL_NAME, () => {
it('should be able to search the web', async () => { it('should be able to search the web', async () => {
const rig = new TestRig(); const rig = new TestRig();
await rig.setup('should be able to search the web'); await rig.setup('should be able to search the web');
@@ -30,7 +31,7 @@ describe('google_web_search', () => {
throw error; // Re-throw if not a network error throw error; // Re-throw if not a network error
} }
const foundToolCall = await rig.waitForToolCall('google_web_search'); const foundToolCall = await rig.waitForToolCall(WEB_SEARCH_TOOL_NAME);
// Add debugging information // Add debugging information
if (!foundToolCall) { if (!foundToolCall) {
@@ -39,11 +40,11 @@ describe('google_web_search', () => {
// Check if the tool call failed due to network issues // Check if the tool call failed due to network issues
const failedSearchCalls = allTools.filter( const failedSearchCalls = allTools.filter(
(t) => (t) =>
t.toolRequest.name === 'google_web_search' && !t.toolRequest.success, t.toolRequest.name === WEB_SEARCH_TOOL_NAME && !t.toolRequest.success,
); );
if (failedSearchCalls.length > 0) { if (failedSearchCalls.length > 0) {
console.warn( console.warn(
'google_web_search tool was called but failed, possibly due to network issues', `${WEB_SEARCH_TOOL_NAME} tool was called but failed, possibly due to network issues`,
); );
console.warn( console.warn(
'Failed calls:', 'Failed calls:',
@@ -55,7 +56,7 @@ describe('google_web_search', () => {
expect( expect(
foundToolCall, foundToolCall,
'Expected to find a call to google_web_search', `Expected to find a call to ${WEB_SEARCH_TOOL_NAME}`,
).toBeTruthy(); ).toBeTruthy();
// Validate model output - will throw if no output, warn if missing expected content // Validate model output - will throw if no output, warn if missing expected content
@@ -69,7 +70,7 @@ describe('google_web_search', () => {
if (!hasExpectedContent) { if (!hasExpectedContent) {
const searchCalls = rig const searchCalls = rig
.readToolLogs() .readToolLogs()
.filter((t) => t.toolRequest.name === 'google_web_search'); .filter((t) => t.toolRequest.name === WEB_SEARCH_TOOL_NAME);
if (searchCalls.length > 0) { if (searchCalls.length > 0) {
console.warn( console.warn(
'Search queries used:', 'Search queries used:',
+3 -4
View File
@@ -20,14 +20,13 @@ import { executeToolCall } from '../core/nonInteractiveToolExecutor.js';
import { ToolRegistry } from '../tools/tool-registry.js'; import { ToolRegistry } from '../tools/tool-registry.js';
import type { ToolCallRequestInfo } from '../core/turn.js'; import type { ToolCallRequestInfo } from '../core/turn.js';
import { getDirectoryContextString } from '../utils/environmentContext.js'; import { getDirectoryContextString } from '../utils/environmentContext.js';
import { GlobTool } from '../tools/glob.js';
import { GrepTool } from '../tools/grep.js'; import { GrepTool } from '../tools/grep.js';
import { RipGrepTool } from '../tools/ripGrep.js'; import { RipGrepTool } from '../tools/ripGrep.js';
import { LSTool } from '../tools/ls.js'; import { LSTool } from '../tools/ls.js';
import { MemoryTool } from '../tools/memoryTool.js'; import { MemoryTool } from '../tools/memoryTool.js';
import { ReadFileTool } from '../tools/read-file.js'; import { ReadFileTool } from '../tools/read-file.js';
import { ReadManyFilesTool } from '../tools/read-many-files.js'; import { ReadManyFilesTool } from '../tools/read-many-files.js';
import { WebSearchTool } from '../tools/web-search.js'; import { GLOB_TOOL_NAME, WEB_SEARCH_TOOL_NAME } from '../tools/tool-names.js';
import { promptIdContext } from '../utils/promptIdContext.js'; import { promptIdContext } from '../utils/promptIdContext.js';
import { logAgentStart, logAgentFinish } from '../telemetry/loggers.js'; import { logAgentStart, logAgentFinish } from '../telemetry/loggers.js';
import { AgentStartEvent, AgentFinishEvent } from '../telemetry/types.js'; import { AgentStartEvent, AgentFinishEvent } from '../telemetry/types.js';
@@ -713,10 +712,10 @@ Important Rules:
ReadFileTool.Name, ReadFileTool.Name,
GrepTool.Name, GrepTool.Name,
RipGrepTool.Name, RipGrepTool.Name,
GlobTool.Name, GLOB_TOOL_NAME,
ReadManyFilesTool.Name, ReadManyFilesTool.Name,
MemoryTool.Name, MemoryTool.Name,
WebSearchTool.Name, WEB_SEARCH_TOOL_NAME,
]); ]);
for (const tool of toolRegistry.getAllTools()) { for (const tool of toolRegistry.getAllTools()) {
if (!allowlist.has(tool.name)) { if (!allowlist.has(tool.name)) {
+1
View File
@@ -11,6 +11,7 @@
export const GLOB_TOOL_NAME = 'glob'; export const GLOB_TOOL_NAME = 'glob';
export const WRITE_TODOS_TOOL_NAME = 'write_todos'; export const WRITE_TODOS_TOOL_NAME = 'write_todos';
export const WRITE_FILE_TOOL_NAME = 'write_file'; export const WRITE_FILE_TOOL_NAME = 'write_file';
export const WEB_SEARCH_TOOL_NAME = 'google_web_search';
// TODO: Migrate other tool names here to follow this pattern and prevent future circular dependencies. // TODO: Migrate other tool names here to follow this pattern and prevent future circular dependencies.
// Candidates for migration: // Candidates for migration:
+2 -1
View File
@@ -4,6 +4,7 @@
* SPDX-License-Identifier: Apache-2.0 * SPDX-License-Identifier: Apache-2.0
*/ */
import { WEB_SEARCH_TOOL_NAME } from './tool-names.js';
import type { GroundingMetadata } from '@google/genai'; import type { GroundingMetadata } from '@google/genai';
import type { ToolInvocation, ToolResult } from './tools.js'; import type { ToolInvocation, ToolResult } from './tools.js';
import { BaseDeclarativeTool, BaseToolInvocation, Kind } from './tools.js'; import { BaseDeclarativeTool, BaseToolInvocation, Kind } from './tools.js';
@@ -184,7 +185,7 @@ export class WebSearchTool extends BaseDeclarativeTool<
WebSearchToolParams, WebSearchToolParams,
WebSearchToolResult WebSearchToolResult
> { > {
static readonly Name: string = 'google_web_search'; static readonly Name: string = WEB_SEARCH_TOOL_NAME;
constructor(private readonly config: Config) { constructor(private readonly config: Config) {
super( super(