diff --git a/src/tools/delegate-task/subagent-resolver.test.ts b/src/tools/delegate-task/subagent-resolver.test.ts index fe769df5f..013a256ed 100644 --- a/src/tools/delegate-task/subagent-resolver.test.ts +++ b/src/tools/delegate-task/subagent-resolver.test.ts @@ -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 () => { diff --git a/src/tools/delegate-task/subagent-resolver.ts b/src/tools/delegate-task/subagent-resolver.ts index 21d04f470..b8d729183 100644 --- a/src/tools/delegate-task/subagent-resolver.ts +++ b/src/tools/delegate-task/subagent-resolver.ts @@ -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() // 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) }