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:
trafgals
2026-04-03 11:51:22 +10:00
parent 2266f28f75
commit 64408823ae
2 changed files with 16 additions and 5 deletions
@@ -624,6 +624,13 @@ describe("resolveSubagentExecution", () => {
test("project agent takes precedence over user agent with same name", async () => { test("project agent takes precedence over user agent with same name", async () => {
//#given //#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({ mockLoadUserAgents.mockReturnValue({
"my-custom-agent": { "my-custom-agent": {
description: "User agent", description: "User agent",
@@ -650,6 +657,10 @@ describe("resolveSubagentExecution", () => {
//#then //#then
expect(result.error).toBeUndefined() expect(result.error).toBeUndefined()
expect(result.agentToUse).toBe("my-custom-agent") 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 () => { test("filters out primary agents from user/project when resolving", async () => {
+5 -5
View File
@@ -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 // 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>() const mergedAgentMap = new Map<string, AgentInfo>()
// First add server agents (they take precedence) // 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) mergedAgentMap.set(agent.name.toLowerCase(), agent)
} }
// Then add user agents (server/project agents win on collision) // Then add project agents (overrides user agents, server wins on collision)
for (const agent of userAgentsList) { for (const agent of projectAgentsList) {
if (!mergedAgentMap.has(agent.name.toLowerCase())) { if (!mergedAgentMap.has(agent.name.toLowerCase())) {
mergedAgentMap.set(agent.name.toLowerCase(), agent) mergedAgentMap.set(agent.name.toLowerCase(), agent)
} }
} }
// Then add project agents (overrides user agents, server wins on collision) // Then add user agents (only if not already added by server or project)
for (const agent of projectAgentsList) { for (const agent of userAgentsList) {
if (!mergedAgentMap.has(agent.name.toLowerCase())) { if (!mergedAgentMap.has(agent.name.toLowerCase())) {
mergedAgentMap.set(agent.name.toLowerCase(), agent) mergedAgentMap.set(agent.name.toLowerCase(), agent)
} }