From 64c50d32ace874b851e9397ee49a7976b9c25b4c Mon Sep 17 00:00:00 2001 From: Christian Gunderman Date: Sat, 14 Mar 2026 01:36:25 +0000 Subject: [PATCH] Fix issue where config was undefined. (#22397) --- .../core/src/agents/agent-scheduler.test.ts | 21 +++++++++++++++++++ packages/core/src/agents/agent-scheduler.ts | 11 +++++++++- packages/core/src/core/coreToolScheduler.ts | 2 +- 3 files changed, 32 insertions(+), 2 deletions(-) diff --git a/packages/core/src/agents/agent-scheduler.test.ts b/packages/core/src/agents/agent-scheduler.test.ts index 9551650507..2be2f033d9 100644 --- a/packages/core/src/agents/agent-scheduler.test.ts +++ b/packages/core/src/agents/agent-scheduler.test.ts @@ -120,4 +120,25 @@ describe('agent-scheduler', () => { expect(schedulerConfig.toolRegistry).toBe(agentRegistry); expect(schedulerConfig.toolRegistry).not.toBe(mainRegistry); }); + + it('should create an AgentLoopContext that has a defined .config property', async () => { + const mockConfig = { + messageBus: mockMessageBus, + toolRegistry: mockToolRegistry, + promptId: 'test-prompt', + } as unknown as Mocked; + + const options = { + schedulerId: 'subagent-1', + toolRegistry: mockToolRegistry as unknown as ToolRegistry, + signal: new AbortController().signal, + }; + + await scheduleAgentTools(mockConfig as unknown as Config, [], options); + + const schedulerContext = vi.mocked(Scheduler).mock.calls[0][0].context; + expect(schedulerContext.config).toBeDefined(); + expect(schedulerContext.config.promptId).toBe('test-prompt'); + expect(schedulerContext.toolRegistry).toBe(mockToolRegistry); + }); }); diff --git a/packages/core/src/agents/agent-scheduler.ts b/packages/core/src/agents/agent-scheduler.ts index 87fcde3f1c..d0f4d4004b 100644 --- a/packages/core/src/agents/agent-scheduler.ts +++ b/packages/core/src/agents/agent-scheduler.ts @@ -67,8 +67,17 @@ export async function scheduleAgentTools( configurable: true, }); + const schedulerContext = { + config: agentConfig, + promptId: config.promptId, + toolRegistry, + messageBus: toolRegistry.messageBus, + geminiClient: config.geminiClient, + sandboxManager: config.sandboxManager, + }; + const scheduler = new Scheduler({ - context: agentConfig, + context: schedulerContext, messageBus: toolRegistry.messageBus, getPreferredEditor: getPreferredEditor ?? (() => undefined), schedulerId, diff --git a/packages/core/src/core/coreToolScheduler.ts b/packages/core/src/core/coreToolScheduler.ts index 5004e63f25..1ecae4ef33 100644 --- a/packages/core/src/core/coreToolScheduler.ts +++ b/packages/core/src/core/coreToolScheduler.ts @@ -133,7 +133,7 @@ export class CoreToolScheduler { this.onAllToolCallsComplete = options.onAllToolCallsComplete; this.onToolCallsUpdate = options.onToolCallsUpdate; this.getPreferredEditor = options.getPreferredEditor; - this.toolExecutor = new ToolExecutor(this.context.config); + this.toolExecutor = new ToolExecutor(this.context); this.toolModifier = new ToolModificationHandler(); // Subscribe to message bus for ASK_USER policy decisions