fix: actually swap merge order so project is added before user
Previous fix only changed comments, not logic. Now project agents are added to the map before user agents, so project takes precedence.
This commit is contained in:
@@ -624,6 +624,13 @@ describe("resolveSubagentExecution", () => {
|
||||
|
||||
test("project agent takes precedence over user agent with same name", async () => {
|
||||
//#given
|
||||
const cacheSpy = spyOn(connectedProvidersCache, "readProviderModelsCache").mockReturnValue({
|
||||
models: { minimaxi: ["MiniMax-M2.7-highspeed", "claude-3-haiku"] },
|
||||
connected: ["minimaxi"],
|
||||
updatedAt: "2026-03-03T00:00:00.000Z",
|
||||
})
|
||||
const connectedSpy = spyOn(connectedProvidersCache, "readConnectedProvidersCache").mockReturnValue(["minimaxi"])
|
||||
|
||||
mockLoadUserAgents.mockReturnValue({
|
||||
"my-custom-agent": {
|
||||
description: "User agent",
|
||||
@@ -650,6 +657,10 @@ describe("resolveSubagentExecution", () => {
|
||||
//#then
|
||||
expect(result.error).toBeUndefined()
|
||||
expect(result.agentToUse).toBe("my-custom-agent")
|
||||
expect(result.categoryModel?.modelID).toBe("MiniMax-M2.7-highspeed")
|
||||
|
||||
cacheSpy.mockRestore()
|
||||
connectedSpy.mockRestore()
|
||||
})
|
||||
|
||||
test("filters out primary agents from user/project when resolving", async () => {
|
||||
|
||||
@@ -84,7 +84,7 @@ Create the work plan directly - that's your job as the planning agent.`,
|
||||
}))
|
||||
|
||||
// Merge user and project agents into the server's agent list
|
||||
// Server agents take precedence; user/project agents fill in gaps
|
||||
// Server agents take precedence; project agents override user agents
|
||||
const mergedAgentMap = new Map<string, AgentInfo>()
|
||||
|
||||
// First add server agents (they take precedence)
|
||||
@@ -92,15 +92,15 @@ Create the work plan directly - that's your job as the planning agent.`,
|
||||
mergedAgentMap.set(agent.name.toLowerCase(), agent)
|
||||
}
|
||||
|
||||
// Then add user agents (server/project agents win on collision)
|
||||
for (const agent of userAgentsList) {
|
||||
// Then add project agents (overrides user agents, server wins on collision)
|
||||
for (const agent of projectAgentsList) {
|
||||
if (!mergedAgentMap.has(agent.name.toLowerCase())) {
|
||||
mergedAgentMap.set(agent.name.toLowerCase(), agent)
|
||||
}
|
||||
}
|
||||
|
||||
// Then add project agents (overrides user agents, server wins on collision)
|
||||
for (const agent of projectAgentsList) {
|
||||
// Then add user agents (only if not already added by server or project)
|
||||
for (const agent of userAgentsList) {
|
||||
if (!mergedAgentMap.has(agent.name.toLowerCase())) {
|
||||
mergedAgentMap.set(agent.name.toLowerCase(), agent)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user