docs(acp): record why native subagent sessions stay unadvertised
The old note said the schema crate cannot deserialize `subagent_spawned` / `subagent_state_update`. That was true and is no longer the reason: `air_async_task_delta` demonstrates a raw pre-dispatch reader gets around the schema for any variant. The real reason is worse, and reads straight out of the adapters. Advertising makes both of them SUPPRESS the `Agent`/`Task` tool call — claude-agent-acp's router returns null for it, commented "Native Agent/Task control calls are intentionally not transcript tools"; codex diverts its `subAgentActivity` item the same way. That tool call is what codeg registers as the agent capsule, nests the child's tool calls under by `meta.claudeCode.parentToolUseId`, and attaches the child's prose to. `subagent_spawned` cannot stand in for it: it carries a child session id, a name and a task, and no parent tool-use id. The child's own updates keep theirs — but it names the call that was just suppressed, so they would all arrive as orphans. And the child output is not new information; the router rewrites only `sessionId` and leaves the routing meta codeg already reads untouched. So the trade is a precise rendering for a poorer one plus a connection-level session router, against a draft (agent-client-protocol#1992) that the adapter itself marks as temporary.
X
xintaofei committed
b59230f019aeeee324f27ed48fe729c6bb5b8237
Parent: 6a0a79d