mirror of
https://github.com/google-gemini/gemini-cli.git
synced 2026-05-12 12:54:07 -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 originalName = 'my-agent';
|
||||||
const definition = { ...MOCK_AGENT_V1, name: originalName };
|
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);
|
await registry.testRegisterAgent(definition);
|
||||||
|
|
||||||
const registered = registry.getDefinition(originalName);
|
const registered = registry.getDefinition(originalName);
|
||||||
expect(registered).toBeDefined();
|
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]);
|
expect(registry.getAllAgentNames()).toEqual([originalName]);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
@@ -345,7 +345,18 @@ export class AgentRegistry {
|
|||||||
}
|
}
|
||||||
|
|
||||||
const mergedDefinition = this.applyOverrides(definition, settingsOverrides);
|
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.registerModelConfigs(mergedDefinition);
|
||||||
this.addAgentPolicy(mergedDefinition);
|
this.addAgentPolicy(mergedDefinition);
|
||||||
|
|||||||
Reference in New Issue
Block a user