From 0cc2a1e7ef904294fff982a4d75bf098b5b262f7 Mon Sep 17 00:00:00 2001 From: Tommaso Sciortino Date: Tue, 19 Aug 2025 15:31:02 -0700 Subject: [PATCH] Remove unnecessary promiuse usage. (#6585) --- packages/cli/src/nonInteractiveCli.test.ts | 2 +- packages/cli/src/nonInteractiveCli.ts | 2 +- .../cli/src/ui/commands/mcpCommand.test.ts | 32 ++++++++--------- packages/cli/src/ui/commands/mcpCommand.ts | 6 ++-- .../cli/src/ui/commands/toolsCommand.test.ts | 11 +++--- packages/cli/src/ui/commands/toolsCommand.ts | 2 +- .../cli/src/ui/hooks/atCommandProcessor.ts | 2 +- .../cli/src/zed-integration/zedIntegration.ts | 5 ++- packages/core/src/config/config.ts | 4 +-- packages/core/src/core/client.test.ts | 2 +- packages/core/src/core/client.ts | 4 +-- .../core/src/core/coreToolScheduler.test.ts | 36 +++++++++---------- packages/core/src/core/coreToolScheduler.ts | 7 ++-- packages/core/src/core/geminiChat.ts | 2 +- packages/core/src/core/subagent.test.ts | 2 +- packages/core/src/core/subagent.ts | 5 ++- .../core/src/utils/environmentContext.test.ts | 2 +- packages/core/src/utils/environmentContext.ts | 2 +- 18 files changed, 61 insertions(+), 67 deletions(-) diff --git a/packages/cli/src/nonInteractiveCli.test.ts b/packages/cli/src/nonInteractiveCli.test.ts index 79ee2d0d..b08862f5 100644 --- a/packages/cli/src/nonInteractiveCli.test.ts +++ b/packages/cli/src/nonInteractiveCli.test.ts @@ -65,7 +65,7 @@ describe('runNonInteractive', () => { mockConfig = { initialize: vi.fn().mockResolvedValue(undefined), getGeminiClient: vi.fn().mockReturnValue(mockGeminiClient), - getToolRegistry: vi.fn().mockResolvedValue(mockToolRegistry), + getToolRegistry: vi.fn().mockReturnValue(mockToolRegistry), getMaxSessionTurns: vi.fn().mockReturnValue(10), getIdeMode: vi.fn().mockReturnValue(false), getFullContext: vi.fn().mockReturnValue(false), diff --git a/packages/cli/src/nonInteractiveCli.ts b/packages/cli/src/nonInteractiveCli.ts index b65bf15d..e6af6665 100644 --- a/packages/cli/src/nonInteractiveCli.ts +++ b/packages/cli/src/nonInteractiveCli.ts @@ -39,7 +39,7 @@ export async function runNonInteractive( }); const geminiClient = config.getGeminiClient(); - const toolRegistry: ToolRegistry = await config.getToolRegistry(); + const toolRegistry: ToolRegistry = config.getToolRegistry(); const abortController = new AbortController(); let currentMessages: Content[] = [ diff --git a/packages/cli/src/ui/commands/mcpCommand.test.ts b/packages/cli/src/ui/commands/mcpCommand.test.ts index 09b97bb0..8bf27291 100644 --- a/packages/cli/src/ui/commands/mcpCommand.test.ts +++ b/packages/cli/src/ui/commands/mcpCommand.test.ts @@ -83,7 +83,7 @@ describe('mcpCommand', () => { // Create mock config with all necessary methods mockConfig = { - getToolRegistry: vi.fn().mockResolvedValue({ + getToolRegistry: vi.fn().mockReturnValue({ getAllTools: vi.fn().mockReturnValue([]), }), getMcpServers: vi.fn().mockReturnValue({}), @@ -119,7 +119,7 @@ describe('mcpCommand', () => { }); it('should show an error if tool registry is not available', async () => { - mockConfig.getToolRegistry = vi.fn().mockResolvedValue(undefined); + mockConfig.getToolRegistry = vi.fn().mockReturnValue(undefined); const result = await mcpCommand.action!(mockContext, ''); @@ -133,7 +133,7 @@ describe('mcpCommand', () => { describe('no MCP servers configured', () => { beforeEach(() => { - mockConfig.getToolRegistry = vi.fn().mockResolvedValue({ + mockConfig.getToolRegistry = vi.fn().mockReturnValue({ getAllTools: vi.fn().mockReturnValue([]), }); mockConfig.getMcpServers = vi.fn().mockReturnValue({}); @@ -184,7 +184,7 @@ describe('mcpCommand', () => { ...mockServer3Tools, ]; - mockConfig.getToolRegistry = vi.fn().mockResolvedValue({ + mockConfig.getToolRegistry = vi.fn().mockReturnValue({ getAllTools: vi.fn().mockReturnValue(allTools), }); @@ -243,7 +243,7 @@ describe('mcpCommand', () => { createMockMCPTool('tool2', 'server1', 'This is tool 2 description'), ]; - mockConfig.getToolRegistry = vi.fn().mockResolvedValue({ + mockConfig.getToolRegistry = vi.fn().mockReturnValue({ getAllTools: vi.fn().mockReturnValue(mockServerTools), }); @@ -296,7 +296,7 @@ describe('mcpCommand', () => { createMockMCPTool('tool1', 'server1', 'This is tool 1 description'), ]; - mockConfig.getToolRegistry = vi.fn().mockResolvedValue({ + mockConfig.getToolRegistry = vi.fn().mockReturnValue({ getAllTools: vi.fn().mockReturnValue(mockServerTools), }); @@ -340,7 +340,7 @@ describe('mcpCommand', () => { // Mock tools - only server1 has tools const mockServerTools = [createMockMCPTool('server1_tool1', 'server1')]; - mockConfig.getToolRegistry = vi.fn().mockResolvedValue({ + mockConfig.getToolRegistry = vi.fn().mockReturnValue({ getAllTools: vi.fn().mockReturnValue(mockServerTools), }); @@ -386,7 +386,7 @@ describe('mcpCommand', () => { createMockMCPTool('server2_tool1', 'server2'), ]; - mockConfig.getToolRegistry = vi.fn().mockResolvedValue({ + mockConfig.getToolRegistry = vi.fn().mockReturnValue({ getAllTools: vi.fn().mockReturnValue(mockServerTools), }); @@ -523,7 +523,7 @@ describe('mcpCommand', () => { const mockServerTools = [tool1, tool2]; - mockConfig.getToolRegistry = vi.fn().mockResolvedValue({ + mockConfig.getToolRegistry = vi.fn().mockReturnValue({ getAllTools: vi.fn().mockReturnValue(mockServerTools), }); @@ -566,7 +566,7 @@ describe('mcpCommand', () => { createMockMCPTool('tool1', 'server1', 'Tool without schema'), ]; - mockConfig.getToolRegistry = vi.fn().mockResolvedValue({ + mockConfig.getToolRegistry = vi.fn().mockReturnValue({ getAllTools: vi.fn().mockReturnValue(mockServerTools), }); @@ -603,7 +603,7 @@ describe('mcpCommand', () => { createMockMCPTool('tool1', 'server1', 'Test tool'), ]; - mockConfig.getToolRegistry = vi.fn().mockResolvedValue({ + mockConfig.getToolRegistry = vi.fn().mockReturnValue({ getAllTools: vi.fn().mockReturnValue(mockServerTools), }); }); @@ -766,7 +766,7 @@ describe('mcpCommand', () => { }; mockConfig.getMcpServers = vi.fn().mockReturnValue(mockMcpServers); - mockConfig.getToolRegistry = vi.fn().mockResolvedValue({ + mockConfig.getToolRegistry = vi.fn().mockReturnValue({ getAllTools: vi.fn().mockReturnValue([]), }); @@ -787,7 +787,7 @@ describe('mcpCommand', () => { }; mockConfig.getMcpServers = vi.fn().mockReturnValue(mockMcpServers); - mockConfig.getToolRegistry = vi.fn().mockResolvedValue({ + mockConfig.getToolRegistry = vi.fn().mockReturnValue({ getAllTools: vi.fn().mockReturnValue([]), }); @@ -879,7 +879,7 @@ describe('mcpCommand', () => { oauth: { enabled: true }, }, }), - getToolRegistry: vi.fn().mockResolvedValue(mockToolRegistry), + getToolRegistry: vi.fn().mockReturnValue(mockToolRegistry), getGeminiClient: vi.fn().mockReturnValue(mockGeminiClient), getPromptRegistry: vi.fn().mockResolvedValue({ removePromptsByServer: vi.fn(), @@ -984,7 +984,7 @@ describe('mcpCommand', () => { config: { getMcpServers: vi.fn().mockReturnValue({ server1: {} }), getBlockedMcpServers: vi.fn().mockReturnValue([]), - getToolRegistry: vi.fn().mockResolvedValue(mockToolRegistry), + getToolRegistry: vi.fn().mockReturnValue(mockToolRegistry), getGeminiClient: vi.fn().mockReturnValue(mockGeminiClient), getPromptRegistry: vi.fn().mockResolvedValue({ getPromptsByServer: vi.fn().mockReturnValue([]), @@ -1040,7 +1040,7 @@ describe('mcpCommand', () => { }); it('should show an error if tool registry is not available', async () => { - mockConfig.getToolRegistry = vi.fn().mockResolvedValue(undefined); + mockConfig.getToolRegistry = vi.fn().mockReturnValue(undefined); const refreshCommand = mcpCommand.subCommands?.find( (cmd) => cmd.name === 'refresh', diff --git a/packages/cli/src/ui/commands/mcpCommand.ts b/packages/cli/src/ui/commands/mcpCommand.ts index 9e321937..67d66604 100644 --- a/packages/cli/src/ui/commands/mcpCommand.ts +++ b/packages/cli/src/ui/commands/mcpCommand.ts @@ -44,7 +44,7 @@ const getMcpStatus = async ( }; } - const toolRegistry = await config.getToolRegistry(); + const toolRegistry = config.getToolRegistry(); if (!toolRegistry) { return { type: 'message', @@ -400,7 +400,7 @@ const authCommand: SlashCommand = { ); // Trigger tool re-discovery to pick up authenticated server - const toolRegistry = await config.getToolRegistry(); + const toolRegistry = config.getToolRegistry(); if (toolRegistry) { context.ui.addItem( { @@ -485,7 +485,7 @@ const refreshCommand: SlashCommand = { }; } - const toolRegistry = await config.getToolRegistry(); + const toolRegistry = config.getToolRegistry(); if (!toolRegistry) { return { type: 'message', diff --git a/packages/cli/src/ui/commands/toolsCommand.test.ts b/packages/cli/src/ui/commands/toolsCommand.test.ts index 41c5196b..01399512 100644 --- a/packages/cli/src/ui/commands/toolsCommand.test.ts +++ b/packages/cli/src/ui/commands/toolsCommand.test.ts @@ -31,7 +31,7 @@ describe('toolsCommand', () => { const mockContext = createMockCommandContext({ services: { config: { - getToolRegistry: () => Promise.resolve(undefined), + getToolRegistry: () => undefined, }, }, }); @@ -52,8 +52,7 @@ describe('toolsCommand', () => { const mockContext = createMockCommandContext({ services: { config: { - getToolRegistry: () => - Promise.resolve({ getAllTools: () => [] as Tool[] }), + getToolRegistry: () => ({ getAllTools: () => [] as Tool[] }), }, }, }); @@ -73,8 +72,7 @@ describe('toolsCommand', () => { const mockContext = createMockCommandContext({ services: { config: { - getToolRegistry: () => - Promise.resolve({ getAllTools: () => mockTools }), + getToolRegistry: () => ({ getAllTools: () => mockTools }), }, }, }); @@ -92,8 +90,7 @@ describe('toolsCommand', () => { const mockContext = createMockCommandContext({ services: { config: { - getToolRegistry: () => - Promise.resolve({ getAllTools: () => mockTools }), + getToolRegistry: () => ({ getAllTools: () => mockTools }), }, }, }); diff --git a/packages/cli/src/ui/commands/toolsCommand.ts b/packages/cli/src/ui/commands/toolsCommand.ts index e993bab3..31ff8c27 100644 --- a/packages/cli/src/ui/commands/toolsCommand.ts +++ b/packages/cli/src/ui/commands/toolsCommand.ts @@ -24,7 +24,7 @@ export const toolsCommand: SlashCommand = { useShowDescriptions = true; } - const toolRegistry = await context.services.config?.getToolRegistry(); + const toolRegistry = context.services.config?.getToolRegistry(); if (!toolRegistry) { context.ui.addItem( { diff --git a/packages/cli/src/ui/hooks/atCommandProcessor.ts b/packages/cli/src/ui/hooks/atCommandProcessor.ts index 50b8fbbd..85ad6f6f 100644 --- a/packages/cli/src/ui/hooks/atCommandProcessor.ts +++ b/packages/cli/src/ui/hooks/atCommandProcessor.ts @@ -157,7 +157,7 @@ export async function handleAtCommand({ both: [], }; - const toolRegistry = await config.getToolRegistry(); + const toolRegistry = config.getToolRegistry(); const readManyFilesTool = toolRegistry.getTool('read_many_files'); const globTool = toolRegistry.getTool('glob'); diff --git a/packages/cli/src/zed-integration/zedIntegration.ts b/packages/cli/src/zed-integration/zedIntegration.ts index 51b1f170..9a10e1a8 100644 --- a/packages/cli/src/zed-integration/zedIntegration.ts +++ b/packages/cli/src/zed-integration/zedIntegration.ts @@ -10,7 +10,6 @@ import { AuthType, Config, GeminiChat, - ToolRegistry, logToolCall, ToolResult, convertToFunctionResponse, @@ -366,7 +365,7 @@ class Session { return errorResponse(new Error('Missing function name')); } - const toolRegistry: ToolRegistry = await this.config.getToolRegistry(); + const toolRegistry = this.config.getToolRegistry(); const tool = toolRegistry.getTool(fc.name as string); if (!tool) { @@ -531,7 +530,7 @@ class Session { const contentLabelsForDisplay: string[] = []; const ignoredPaths: string[] = []; - const toolRegistry = await this.config.getToolRegistry(); + const toolRegistry = this.config.getToolRegistry(); const readManyFilesTool = toolRegistry.getTool('read_many_files'); const globTool = toolRegistry.getTool('glob'); diff --git a/packages/core/src/config/config.ts b/packages/core/src/config/config.ts index c5f919c1..5ab39e83 100644 --- a/packages/core/src/config/config.ts +++ b/packages/core/src/config/config.ts @@ -482,8 +482,8 @@ export class Config { return this.workspaceContext; } - getToolRegistry(): Promise { - return Promise.resolve(this.toolRegistry); + getToolRegistry(): ToolRegistry { + return this.toolRegistry; } getPromptRegistry(): PromptRegistry { diff --git a/packages/core/src/core/client.test.ts b/packages/core/src/core/client.test.ts index 5afdba55..8e219f3c 100644 --- a/packages/core/src/core/client.test.ts +++ b/packages/core/src/core/client.test.ts @@ -183,7 +183,7 @@ describe('Gemini Client (client.ts)', () => { getContentGeneratorConfig: vi .fn() .mockReturnValue(contentGeneratorConfig), - getToolRegistry: vi.fn().mockResolvedValue(mockToolRegistry), + getToolRegistry: vi.fn().mockReturnValue(mockToolRegistry), getModel: vi.fn().mockReturnValue('test-model'), getEmbeddingModel: vi.fn().mockReturnValue('test-embedding-model'), getApiKey: vi.fn().mockReturnValue('test-key'), diff --git a/packages/core/src/core/client.ts b/packages/core/src/core/client.ts index 89c194a4..a77a4893 100644 --- a/packages/core/src/core/client.ts +++ b/packages/core/src/core/client.ts @@ -201,7 +201,7 @@ export class GeminiClient { } async setTools(): Promise { - const toolRegistry = await this.config.getToolRegistry(); + const toolRegistry = this.config.getToolRegistry(); const toolDeclarations = toolRegistry.getFunctionDeclarations(); const tools: Tool[] = [{ functionDeclarations: toolDeclarations }]; this.getChat().setTools(tools); @@ -225,7 +225,7 @@ export class GeminiClient { async startChat(extraHistory?: Content[]): Promise { this.forceFullIdeContext = true; const envParts = await getEnvironmentContext(this.config); - const toolRegistry = await this.config.getToolRegistry(); + const toolRegistry = this.config.getToolRegistry(); const toolDeclarations = toolRegistry.getFunctionDeclarations(); const tools: Tool[] = [{ functionDeclarations: toolDeclarations }]; const history: Content[] = [ diff --git a/packages/core/src/core/coreToolScheduler.test.ts b/packages/core/src/core/coreToolScheduler.test.ts index e0d7f65a..6eb0e5b9 100644 --- a/packages/core/src/core/coreToolScheduler.test.ts +++ b/packages/core/src/core/coreToolScheduler.test.ts @@ -31,7 +31,7 @@ describe('CoreToolScheduler', () => { const mockTool = new MockTool(); mockTool.shouldConfirm = true; const declarativeTool = mockTool; - const toolRegistry = { + const mockToolRegistry = { getTool: () => declarativeTool, getFunctionDeclarations: () => [], tools: new Map(), @@ -43,7 +43,7 @@ describe('CoreToolScheduler', () => { discoverTools: async () => {}, getAllTools: () => [], getToolsByServer: () => [], - }; + } as unknown as ToolRegistry; const onAllToolCallsComplete = vi.fn(); const onToolCallsUpdate = vi.fn(); @@ -61,7 +61,7 @@ describe('CoreToolScheduler', () => { const scheduler = new CoreToolScheduler({ config: mockConfig, - toolRegistry: Promise.resolve(toolRegistry as unknown as ToolRegistry), + toolRegistry: mockToolRegistry, onAllToolCallsComplete, onToolCallsUpdate, getPreferredEditor: () => 'vscode', @@ -91,7 +91,7 @@ describe('CoreToolScheduler with payload', () => { it('should update args and diff and execute tool when payload is provided', async () => { const mockTool = new MockModifiableTool(); const declarativeTool = mockTool; - const toolRegistry = { + const mockToolRegistry = { getTool: () => declarativeTool, getFunctionDeclarations: () => [], tools: new Map(), @@ -103,7 +103,7 @@ describe('CoreToolScheduler with payload', () => { discoverTools: async () => {}, getAllTools: () => [], getToolsByServer: () => [], - }; + } as unknown as ToolRegistry; const onAllToolCallsComplete = vi.fn(); const onToolCallsUpdate = vi.fn(); @@ -121,7 +121,7 @@ describe('CoreToolScheduler with payload', () => { const scheduler = new CoreToolScheduler({ config: mockConfig, - toolRegistry: Promise.resolve(toolRegistry as unknown as ToolRegistry), + toolRegistry: mockToolRegistry, onAllToolCallsComplete, onToolCallsUpdate, getPreferredEditor: () => 'vscode', @@ -391,7 +391,7 @@ describe('CoreToolScheduler edit cancellation', () => { it('should preserve diff when an edit is cancelled', async () => { const mockEditTool = new MockEditTool(); const declarativeTool = mockEditTool; - const toolRegistry = { + const mockToolRegistry = { getTool: () => declarativeTool, getFunctionDeclarations: () => [], tools: new Map(), @@ -403,7 +403,7 @@ describe('CoreToolScheduler edit cancellation', () => { discoverTools: async () => {}, getAllTools: () => [], getToolsByServer: () => [], - }; + } as unknown as ToolRegistry; const onAllToolCallsComplete = vi.fn(); const onToolCallsUpdate = vi.fn(); @@ -421,7 +421,7 @@ describe('CoreToolScheduler edit cancellation', () => { const scheduler = new CoreToolScheduler({ config: mockConfig, - toolRegistry: Promise.resolve(toolRegistry as unknown as ToolRegistry), + toolRegistry: mockToolRegistry, onAllToolCallsComplete, onToolCallsUpdate, getPreferredEditor: () => 'vscode', @@ -481,7 +481,7 @@ describe('CoreToolScheduler YOLO mode', () => { mockTool.shouldConfirm = true; const declarativeTool = mockTool; - const toolRegistry = { + const mockToolRegistry = { getTool: () => declarativeTool, getToolByName: () => declarativeTool, // Other properties are not needed for this test but are included for type consistency. @@ -494,7 +494,7 @@ describe('CoreToolScheduler YOLO mode', () => { discoverTools: async () => {}, getAllTools: () => [], getToolsByServer: () => [], - }; + } as unknown as ToolRegistry; const onAllToolCallsComplete = vi.fn(); const onToolCallsUpdate = vi.fn(); @@ -513,7 +513,7 @@ describe('CoreToolScheduler YOLO mode', () => { const scheduler = new CoreToolScheduler({ config: mockConfig, - toolRegistry: Promise.resolve(toolRegistry as unknown as ToolRegistry), + toolRegistry: mockToolRegistry, onAllToolCallsComplete, onToolCallsUpdate, getPreferredEditor: () => 'vscode', @@ -572,7 +572,7 @@ describe('CoreToolScheduler request queueing', () => { mockTool.executeFn.mockImplementation(() => firstCallPromise); const declarativeTool = mockTool; - const toolRegistry = { + const mockToolRegistry = { getTool: () => declarativeTool, getToolByName: () => declarativeTool, getFunctionDeclarations: () => [], @@ -584,7 +584,7 @@ describe('CoreToolScheduler request queueing', () => { discoverTools: async () => {}, getAllTools: () => [], getToolsByServer: () => [], - }; + } as unknown as ToolRegistry; const onAllToolCallsComplete = vi.fn(); const onToolCallsUpdate = vi.fn(); @@ -602,7 +602,7 @@ describe('CoreToolScheduler request queueing', () => { const scheduler = new CoreToolScheduler({ config: mockConfig, - toolRegistry: Promise.resolve(toolRegistry as unknown as ToolRegistry), + toolRegistry: mockToolRegistry, onAllToolCallsComplete, onToolCallsUpdate, getPreferredEditor: () => 'vscode', @@ -685,7 +685,7 @@ describe('CoreToolScheduler request queueing', () => { it('should handle two synchronous calls to schedule', async () => { const mockTool = new MockTool(); const declarativeTool = mockTool; - const toolRegistry = { + const mockToolRegistry = { getTool: () => declarativeTool, getToolByName: () => declarativeTool, getFunctionDeclarations: () => [], @@ -697,7 +697,7 @@ describe('CoreToolScheduler request queueing', () => { discoverTools: async () => {}, getAllTools: () => [], getToolsByServer: () => [], - }; + } as unknown as ToolRegistry; const onAllToolCallsComplete = vi.fn(); const onToolCallsUpdate = vi.fn(); @@ -715,7 +715,7 @@ describe('CoreToolScheduler request queueing', () => { const scheduler = new CoreToolScheduler({ config: mockConfig, - toolRegistry: Promise.resolve(toolRegistry as unknown as ToolRegistry), + toolRegistry: mockToolRegistry, onAllToolCallsComplete, onToolCallsUpdate, getPreferredEditor: () => 'vscode', diff --git a/packages/core/src/core/coreToolScheduler.ts b/packages/core/src/core/coreToolScheduler.ts index 1a031de5..7a1698c9 100644 --- a/packages/core/src/core/coreToolScheduler.ts +++ b/packages/core/src/core/coreToolScheduler.ts @@ -226,7 +226,7 @@ const createErrorResponse = ( }); interface CoreToolSchedulerOptions { - toolRegistry: Promise; + toolRegistry: ToolRegistry; outputUpdateHandler?: OutputUpdateHandler; onAllToolCallsComplete?: AllToolCallsCompleteHandler; onToolCallsUpdate?: ToolCallsUpdateHandler; @@ -236,7 +236,7 @@ interface CoreToolSchedulerOptions { } export class CoreToolScheduler { - private toolRegistry: Promise; + private toolRegistry: ToolRegistry; private toolCalls: ToolCall[] = []; private outputUpdateHandler?: OutputUpdateHandler; private onAllToolCallsComplete?: AllToolCallsCompleteHandler; @@ -534,11 +534,10 @@ export class CoreToolScheduler { ); } const requestsToProcess = Array.isArray(request) ? request : [request]; - const toolRegistry = await this.toolRegistry; const newToolCalls: ToolCall[] = requestsToProcess.map( (reqInfo): ToolCall => { - const toolInstance = toolRegistry.getTool(reqInfo.name); + const toolInstance = this.toolRegistry.getTool(reqInfo.name); if (!toolInstance) { return { status: 'error', diff --git a/packages/core/src/core/geminiChat.ts b/packages/core/src/core/geminiChat.ts index cef82d23..dfcf425a 100644 --- a/packages/core/src/core/geminiChat.ts +++ b/packages/core/src/core/geminiChat.ts @@ -428,7 +428,7 @@ export class GeminiChat { isSchemaDepthError(error.message) || isInvalidArgumentError(error.message) ) { - const tools = (await this.config.getToolRegistry()).getAllTools(); + const tools = this.config.getToolRegistry().getAllTools(); const cyclicSchemaTools: string[] = []; for (const tool of tools) { if ( diff --git a/packages/core/src/core/subagent.test.ts b/packages/core/src/core/subagent.test.ts index 889feb45..43b656c2 100644 --- a/packages/core/src/core/subagent.test.ts +++ b/packages/core/src/core/subagent.test.ts @@ -59,7 +59,7 @@ async function createMockConfig( ...toolRegistryMocks, } as unknown as ToolRegistry; - vi.spyOn(config, 'getToolRegistry').mockResolvedValue(mockToolRegistry); + vi.spyOn(config, 'getToolRegistry').mockReturnValue(mockToolRegistry); return { config, toolRegistry: mockToolRegistry }; } diff --git a/packages/core/src/core/subagent.ts b/packages/core/src/core/subagent.ts index e11a5209..10776f0e 100644 --- a/packages/core/src/core/subagent.ts +++ b/packages/core/src/core/subagent.ts @@ -284,7 +284,7 @@ export class SubAgentScope { outputConfig?: OutputConfig, ): Promise { if (toolConfig) { - const toolRegistry: ToolRegistry = await runtimeContext.getToolRegistry(); + const toolRegistry = runtimeContext.getToolRegistry(); const toolsToLoad: string[] = []; for (const tool of toolConfig.tools) { if (typeof tool === 'string') { @@ -349,8 +349,7 @@ export class SubAgentScope { } const abortController = new AbortController(); - const toolRegistry: ToolRegistry = - await this.runtimeContext.getToolRegistry(); + const toolRegistry = this.runtimeContext.getToolRegistry(); // Prepare the list of tools available to the subagent. const toolsList: FunctionDeclaration[] = []; diff --git a/packages/core/src/utils/environmentContext.test.ts b/packages/core/src/utils/environmentContext.test.ts index ff8c1d20..c81b7457 100644 --- a/packages/core/src/utils/environmentContext.test.ts +++ b/packages/core/src/utils/environmentContext.test.ts @@ -89,7 +89,7 @@ describe('getEnvironmentContext', () => { }), getFileService: vi.fn(), getFullContext: vi.fn().mockReturnValue(false), - getToolRegistry: vi.fn().mockResolvedValue(mockToolRegistry), + getToolRegistry: vi.fn().mockReturnValue(mockToolRegistry), }; vi.mocked(getFolderStructure).mockResolvedValue('Mock Folder Structure'); diff --git a/packages/core/src/utils/environmentContext.ts b/packages/core/src/utils/environmentContext.ts index 96bd60d9..a06c1800 100644 --- a/packages/core/src/utils/environmentContext.ts +++ b/packages/core/src/utils/environmentContext.ts @@ -68,7 +68,7 @@ ${directoryContext} `.trim(); const initialParts: Part[] = [{ text: context }]; - const toolRegistry = await config.getToolRegistry(); + const toolRegistry = config.getToolRegistry(); // Add full file context if the flag is set if (config.getFullContext()) {