diff --git a/Services/ClaudeCliService.cs b/Services/ClaudeCliService.cs index 2f1dc47..7c0a00f 100644 --- a/Services/ClaudeCliService.cs +++ b/Services/ClaudeCliService.cs @@ -385,6 +385,21 @@ public class ClaudeCliService var json = JsonSerializer.Deserialize(line); var type = json.TryGetProperty("type", out var t) ? t.GetString() : null; + // Subagent-Events ausblenden: Top-Level-Messages mit gesetztem + // parent_tool_use_id stammen aus einem per 'Agent'-Tool gespawnten + // Subagenten. Deren Interna (tool_use kommt als type:"assistant" ohne + // Handler → verworfen; tool_result als type:"user" → erzeugte sonst eine + // namenlose, label-lose Box) werden konsequent unterdrückt – konsistent + // zum Session-Agent. Die Tool-Box des Agent-Aufrufs selbst hat + // parent_tool_use_id=null und bleibt sichtbar; der finale 'result'-Event + // (Tokens, inkl. aggregierter Subagent-Tokens) trägt ebenfalls keins. + if (json.TryGetProperty("parent_tool_use_id", out var parentToolUseId) + && parentToolUseId.ValueKind == JsonValueKind.String + && !string.IsNullOrEmpty(parentToolUseId.GetString())) + { + continue; + } + if (type == "stream_event" && json.TryGetProperty("event", out var evt)) { var evtType = evt.TryGetProperty("type", out var et) ? et.GetString() : null;