Skip to content

Commit 28c9a90

Browse files
authored
feat(core): introduce Kind.Agent for sub-agent classification (#20369)
1 parent f9f916e commit 28c9a90

6 files changed

Lines changed: 12 additions & 3 deletions

File tree

packages/cli/src/zed-integration/zedIntegration.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1335,6 +1335,8 @@ function toAcpToolKind(kind: Kind): acp.ToolKind {
13351335
case Kind.SwitchMode:
13361336
case Kind.Other:
13371337
return kind as acp.ToolKind;
1338+
case Kind.Agent:
1339+
return 'think';
13381340
case Kind.Plan:
13391341
case Kind.Communicate:
13401342
default:

packages/core/src/agents/subagent-tool-wrapper.test.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,7 @@ describe('SubagentToolWrapper', () => {
7070
expect(wrapper.name).toBe(mockDefinition.name);
7171
expect(wrapper.displayName).toBe(mockDefinition.displayName);
7272
expect(wrapper.description).toBe(mockDefinition.description);
73-
expect(wrapper.kind).toBe(Kind.Think);
73+
expect(wrapper.kind).toBe(Kind.Agent);
7474
expect(wrapper.isOutputMarkdown).toBe(true);
7575
expect(wrapper.canUpdateOutput).toBe(true);
7676
});

packages/core/src/agents/subagent-tool-wrapper.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ export class SubagentToolWrapper extends BaseDeclarativeTool<
4545
definition.name,
4646
definition.displayName ?? definition.name,
4747
definition.description,
48-
Kind.Think,
48+
Kind.Agent,
4949
definition.inputConfig.inputSchema,
5050
messageBus,
5151
/* isOutputMarkdown */ true,

packages/core/src/agents/subagent-tool.test.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
import { describe, it, expect, vi, beforeEach } from 'vitest';
88
import { SubagentTool } from './subagent-tool.js';
99
import { SubagentToolWrapper } from './subagent-tool-wrapper.js';
10+
import { Kind } from '../tools/tools.js';
1011
import type {
1112
LocalAgentDefinition,
1213
RemoteAgentDefinition,
@@ -70,6 +71,11 @@ describe('SubAgentInvocation', () => {
7071
.mockReturnValue(mockInnerInvocation);
7172
});
7273

74+
it('should have Kind.Agent', () => {
75+
const tool = new SubagentTool(testDefinition, mockConfig, mockMessageBus);
76+
expect(tool.kind).toBe(Kind.Agent);
77+
});
78+
7379
it('should delegate shouldConfirmExecute to the inner sub-invocation (local)', async () => {
7480
const tool = new SubagentTool(testDefinition, mockConfig, mockMessageBus);
7581
const params = {};

packages/core/src/agents/subagent-tool.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ export class SubagentTool extends BaseDeclarativeTool<AgentInputs, ToolResult> {
4141
definition.name,
4242
definition.displayName ?? definition.name,
4343
definition.description,
44-
Kind.Think,
44+
Kind.Agent,
4545
inputSchema,
4646
messageBus,
4747
/* isOutputMarkdown */ true,

packages/core/src/tools/tools.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -832,6 +832,7 @@ export enum Kind {
832832
Search = 'search',
833833
Execute = 'execute',
834834
Think = 'think',
835+
Agent = 'agent',
835836
Fetch = 'fetch',
836837
Communicate = 'communicate',
837838
Plan = 'plan',

0 commit comments

Comments
 (0)