Skip to content

feat(acp): propagate parent_tool_use_id through LoopbackEvent and SessionUpdate #1008

@bug-ops

Description

@bug-ops

Part of epic: #1007

Problem

When the orchestrator spawns a subagent, all events from that subagent are emitted flat alongside top-level agent events. IDEs cannot distinguish or nest subagent output.

Solution

Add parent_tool_use_id: Option<String> to LoopbackEvent variants and propagate it through to session_update._meta.claudeCode.parentToolUseId as per the Zed reference pattern.

Protocol shape (from Zed claude-agent-acp):

{
  "type": "agent_message_chunk",
  "_meta": {
    "claudeCode": {
      "parentToolUseId": "<uuid-or-null>"
    }
  }
}

Tasks

  • Add parent_tool_use_id: Option<String> to all content-bearing LoopbackEvent variants in crates/zeph-acp/src/agent.rs
  • Add parent_tool_use_id field to AgentContext (or new SubagentContext wrapper) in crates/zeph-core/src/agent/
  • Inject parent id in orchestrator when spawning subagent loop
  • In prompt() handler: read parent id from event, serialize into _meta.claudeCode.parentToolUseId
  • Unit tests: verify field is null for top-level events and <uuid> for subagent events

Files

  • crates/zeph-acp/src/agent.rs — LoopbackEvent enum + prompt() handler
  • crates/zeph-core/src/agent/ — AgentContext + orchestrator dispatch

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions