Fix subagent break.

This commit is contained in:
Christian Gunderman
2026-02-13 12:03:55 -08:00
parent 46a0538ffd
commit 56d4759d41
2 changed files with 32 additions and 1 deletions

View File

@@ -9,12 +9,18 @@ import { GeneralistAgent } from './generalist-agent.js';
import { makeFakeConfig } from '../test-utils/config.js';
import type { ToolRegistry } from '../tools/tool-registry.js';
import type { AgentRegistry } from './registry.js';
import { DiscoveredMCPTool } from '../tools/mcp-tool.js';
describe('GeneralistAgent', () => {
it('should create a valid generalist agent definition', () => {
const config = makeFakeConfig();
vi.spyOn(config, 'getToolRegistry').mockReturnValue({
getAllToolNames: () => ['tool1', 'tool2', 'agent-tool'],
getAllTools: () => [
{ name: 'tool1' },
{ name: 'tool2' },
{ name: 'agent-tool' },
],
} as unknown as ToolRegistry);
vi.spyOn(config, 'getAgentRegistry').mockReturnValue({
getDirectoryContext: () => 'mock directory context',
@@ -34,4 +40,20 @@ describe('GeneralistAgent', () => {
// Ensure it's non-interactive
expect(agent.promptConfig.systemPrompt).toContain('non-interactive');
});
it('should use fully qualified names for MCP tools', () => {
const config = makeFakeConfig();
const mockMcpTool = Object.create(DiscoveredMCPTool.prototype);
mockMcpTool.getFullyQualifiedName = () => 'server__tool';
mockMcpTool.name = 'tool';
vi.spyOn(config, 'getToolRegistry').mockReturnValue({
getAllTools: () => [{ name: 'normal-tool' }, mockMcpTool],
} as unknown as ToolRegistry);
const agent = GeneralistAgent(config);
expect(agent.toolConfig?.tools).toContain('normal-tool');
expect(agent.toolConfig?.tools).toContain('server__tool');
});
});

View File

@@ -8,6 +8,7 @@ import { z } from 'zod';
import type { Config } from '../config/config.js';
import { getCoreSystemPrompt } from '../core/prompts.js';
import type { LocalAgentDefinition } from './types.js';
import { DiscoveredMCPTool } from '../tools/mcp-tool.js';
const GeneralistAgentSchema = z.object({
response: z.string().describe('The final response from the agent.'),
@@ -48,7 +49,15 @@ export const GeneralistAgent = (
model: 'inherit',
},
get toolConfig() {
const tools = config.getToolRegistry().getAllToolNames();
const tools = config
.getToolRegistry()
.getAllTools()
.map((tool) => {
if (tool instanceof DiscoveredMCPTool) {
return tool.getFullyQualifiedName();
}
return tool.name;
});
return {
tools,
};