mirror of
https://github.com/google-gemini/gemini-cli.git
synced 2026-03-10 14:10:37 -07:00
fix(a2a): correctly index agents by overridden name and prevent collisions
This commit is contained in:
@@ -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]);
|
||||
});
|
||||
|
||||
|
||||
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user