diff --git a/packages/server/src/server/agent/agent-manager.ts b/packages/server/src/server/agent/agent-manager.ts index 608e8abdf..6c9453e2c 100644 --- a/packages/server/src/server/agent/agent-manager.ts +++ b/packages/server/src/server/agent/agent-manager.ts @@ -727,6 +727,7 @@ export class AgentManager { historyPrimed: false, lastUserMessageAt: null, attention: { requiresAttention: false }, + parentAgentId: config.parentAgentId, } as ActiveManagedAgent; this.agents.set(agentId, managed); diff --git a/packages/server/src/server/agent/mcp-server.ts b/packages/server/src/server/agent/mcp-server.ts index 61cd14b62..7d4e7cd8e 100644 --- a/packages/server/src/server/agent/mcp-server.ts +++ b/packages/server/src/server/agent/mcp-server.ts @@ -220,6 +220,12 @@ export async function createAgentMcpServer( .describe( "Run agent in background. If false (default), waits for completion or permission request. If true, returns immediately." ), + parentAgentId: z + .string() + .optional() + .describe( + "Optional parent agent ID. When set, this agent is a child of the specified parent agent." + ), }, outputSchema: { agentId: z.string(), @@ -246,6 +252,7 @@ export async function createAgentMcpServer( worktreeName, background = false, title, + parentAgentId, }) => { let resolvedCwd = expandPath(cwd); @@ -265,6 +272,7 @@ export async function createAgentMcpServer( cwd: resolvedCwd, modeId: initialMode, title: normalizedTitle ?? undefined, + parentAgentId, }); if (initialPrompt) { diff --git a/plan.md b/plan.md index 5fe488ab3..0f3b51ee2 100644 --- a/plan.md +++ b/plan.md @@ -300,12 +300,13 @@ Files requiring modification: - Run typecheck after changes. - **Done (2025-12-21 19:45)**: Added `parentAgentId?: string` to `ManagedAgentBase` in `agent-manager.ts:97`, `AgentSessionConfig` in `agent-sdk-types.ts:164`, and `AgentSnapshotPayloadSchema` in `messages.ts:248`. Updated `toAgentPayload()` in `agent-projections.ts:83` to include `parentAgentId` in the payload. Typecheck passes. -- [ ] **Implement**: Add parentAgentId to MCP create_agent tool. +- [x] **Implement**: Add parentAgentId to MCP create_agent tool. - Add `parentAgentId` to tool input schema in `mcp-server.ts:183` - Pass `parentAgentId` to `agentManager.createAgent()` call in `mcp-server.ts:263` - The MCP server has access to the calling agent context - use that ID - Run typecheck after changes. + - **Done (2025-12-21 21:15)**: Added `parentAgentId` optional field to `create_agent` tool input schema in `mcp-server.ts:223-228`. Updated handler to accept `parentAgentId` parameter and pass it to `agentManager.createAgent()` in `mcp-server.ts:275`. Also updated `registerSession()` in `agent-manager.ts:730` to copy `parentAgentId` from config to the managed agent. Typecheck passes. - [ ] **Implement**: Add parentAgentId to client types and session store.