diff --git a/packages/core/src/agents/registry.test.ts b/packages/core/src/agents/registry.test.ts index 24a8cf65c3..8518efb5b8 100644 --- a/packages/core/src/agents/registry.test.ts +++ b/packages/core/src/agents/registry.test.ts @@ -942,28 +942,14 @@ describe('AgentRegistry', () => { ); }); - it('should maintain registration under canonical name even if overrides are applied', async () => { + it('should maintain registration under canonical name', async () => { const originalName = 'my-agent'; const definition = { ...MOCK_AGENT_V1, name: originalName }; - // Mock overrides in settings - vi.spyOn(mockConfig, 'getAgentsSettings').mockReturnValue({ - overrides: { - [originalName]: { - enabled: true, - modelConfig: { model: 'overridden-model' }, - }, - }, - }); - await registry.testRegisterAgent(definition); const registered = registry.getDefinition(originalName); expect(registered).toBeDefined(); - expect((registered as LocalAgentDefinition).modelConfig.model).toBe( - 'overridden-model', - ); - // Ensure it is NOT registered under some other key expect(registry.getAllAgentNames()).toEqual([originalName]); }); diff --git a/packages/core/src/agents/registry.ts b/packages/core/src/agents/registry.ts index 3b33539f2d..537b8040c1 100644 --- a/packages/core/src/agents/registry.ts +++ b/packages/core/src/agents/registry.ts @@ -345,7 +345,18 @@ export class AgentRegistry { } const mergedDefinition = this.applyOverrides(definition, settingsOverrides); - this.agents.set(definition.name, mergedDefinition); + + // Ensure we don't accidentally overwrite an existing agent with a different canonical name + if ( + mergedDefinition.name !== definition.name && + this.agents.has(mergedDefinition.name) + ) { + throw new Error( + `Cannot register agent '${definition.name}' as '${mergedDefinition.name}': Name collision with an already registered agent.`, + ); + } + + this.agents.set(mergedDefinition.name, mergedDefinition); this.registerModelConfigs(mergedDefinition); this.addAgentPolicy(mergedDefinition);