diff --git a/packages/cli/src/zed-integration/zedIntegration.ts b/packages/cli/src/zed-integration/zedIntegration.ts index d4f1b27b92..e89a884ab5 100644 --- a/packages/cli/src/zed-integration/zedIntegration.ts +++ b/packages/cli/src/zed-integration/zedIntegration.ts @@ -1335,6 +1335,8 @@ function toAcpToolKind(kind: Kind): acp.ToolKind { case Kind.SwitchMode: case Kind.Other: return kind as acp.ToolKind; + case Kind.Agent: + return 'think'; case Kind.Plan: case Kind.Communicate: default: diff --git a/packages/core/src/agents/subagent-tool-wrapper.test.ts b/packages/core/src/agents/subagent-tool-wrapper.test.ts index c4f3d178c9..e433e6f7d3 100644 --- a/packages/core/src/agents/subagent-tool-wrapper.test.ts +++ b/packages/core/src/agents/subagent-tool-wrapper.test.ts @@ -70,7 +70,7 @@ describe('SubagentToolWrapper', () => { expect(wrapper.name).toBe(mockDefinition.name); expect(wrapper.displayName).toBe(mockDefinition.displayName); expect(wrapper.description).toBe(mockDefinition.description); - expect(wrapper.kind).toBe(Kind.Think); + expect(wrapper.kind).toBe(Kind.Agent); expect(wrapper.isOutputMarkdown).toBe(true); expect(wrapper.canUpdateOutput).toBe(true); }); diff --git a/packages/core/src/agents/subagent-tool-wrapper.ts b/packages/core/src/agents/subagent-tool-wrapper.ts index 57ee929205..d0e94f1b4b 100644 --- a/packages/core/src/agents/subagent-tool-wrapper.ts +++ b/packages/core/src/agents/subagent-tool-wrapper.ts @@ -45,7 +45,7 @@ export class SubagentToolWrapper extends BaseDeclarativeTool< definition.name, definition.displayName ?? definition.name, definition.description, - Kind.Think, + Kind.Agent, definition.inputConfig.inputSchema, messageBus, /* isOutputMarkdown */ true, diff --git a/packages/core/src/agents/subagent-tool.test.ts b/packages/core/src/agents/subagent-tool.test.ts index d6d6bdfd89..40db4822a2 100644 --- a/packages/core/src/agents/subagent-tool.test.ts +++ b/packages/core/src/agents/subagent-tool.test.ts @@ -7,6 +7,7 @@ import { describe, it, expect, vi, beforeEach } from 'vitest'; import { SubagentTool } from './subagent-tool.js'; import { SubagentToolWrapper } from './subagent-tool-wrapper.js'; +import { Kind } from '../tools/tools.js'; import type { LocalAgentDefinition, RemoteAgentDefinition, @@ -70,6 +71,11 @@ describe('SubAgentInvocation', () => { .mockReturnValue(mockInnerInvocation); }); + it('should have Kind.Agent', () => { + const tool = new SubagentTool(testDefinition, mockConfig, mockMessageBus); + expect(tool.kind).toBe(Kind.Agent); + }); + it('should delegate shouldConfirmExecute to the inner sub-invocation (local)', async () => { const tool = new SubagentTool(testDefinition, mockConfig, mockMessageBus); const params = {}; diff --git a/packages/core/src/agents/subagent-tool.ts b/packages/core/src/agents/subagent-tool.ts index f47b506634..8584ae97f1 100644 --- a/packages/core/src/agents/subagent-tool.ts +++ b/packages/core/src/agents/subagent-tool.ts @@ -41,7 +41,7 @@ export class SubagentTool extends BaseDeclarativeTool { definition.name, definition.displayName ?? definition.name, definition.description, - Kind.Think, + Kind.Agent, inputSchema, messageBus, /* isOutputMarkdown */ true, diff --git a/packages/core/src/tools/tools.ts b/packages/core/src/tools/tools.ts index d847b596e0..3c024168d4 100644 --- a/packages/core/src/tools/tools.ts +++ b/packages/core/src/tools/tools.ts @@ -832,6 +832,7 @@ export enum Kind { Search = 'search', Execute = 'execute', Think = 'think', + Agent = 'agent', Fetch = 'fetch', Communicate = 'communicate', Plan = 'plan',