package main import ( "testing" "laodingbot/internal/agent" "laodingbot/internal/transport/webui" ) func TestBuildWebUIStreamForwarderFiltersTraceEvents(t *testing.T) { var got []webui.StreamEvent forwarder := buildWebUIStreamForwarder(func(event webui.StreamEvent) error { got = append(got, event) return nil }) events := []agent.StreamEvent{ {Type: agent.StreamEventTypeThought, Content: "thinking", Step: 1}, {Type: agent.StreamEventTypeToolCall, Content: "pwd", Step: 1, ToolName: "shell"}, {Type: agent.StreamEventTypeToolResult, Content: "C:/Project", Step: 1, ToolName: "shell"}, {Type: agent.StreamEventTypeFinal, Content: "done", Step: 2}, {Type: agent.StreamEventTypeError, Content: "boom", Step: 3}, } for _, event := range events { if err := forwarder(event); err != nil { t.Fatalf("forwarder returned error: %v", err) } } if len(got) != 2 { t.Fatalf("expected 2 forwarded events, got %d", len(got)) } if got[0].Type != webui.StreamEventTypeFinal || got[0].Content != "done" { t.Fatalf("unexpected final event: %+v", got[0]) } if got[0].Step != 0 || got[0].ToolName != "" { t.Fatalf("expected final event without trace fields, got %+v", got[0]) } if got[1].Type != webui.StreamEventTypeError || got[1].Content != "boom" { t.Fatalf("unexpected error event: %+v", got[1]) } }