package acp // These tests isolate JSON escaping and older trace records at the display // boundary, without provider or pipe buffering. import ( "encoding/json" "strings" "testing" "albedo/cli/internal/daemon" ) func TestToolDisplayBoundsEscapedJSON(t *testing.T) { after := strings.Repeat("\x00", toolDisplayLimit) event := daemon.StreamEvent{ToolResult: after, ToolTrace: &daemon.ToolTrace{Changes: []daemon.FileChange{{Path: "new", Kind: "diff", NewText: &after}}}} encoded, err := json.Marshal(toolDisplay(event)) if err != nil || len(encoded) > toolDisplayLimit || !strings.Contains(string(encoded), toolTruncationMarker) { t.Fatalf("unbounded display: %d, %v", len(encoded), err) } } func TestToolDisplayOldTraceAndMixedEvidence(t *testing.T) { event := daemon.StreamEvent{ToolTrace: &daemon.ToolTrace{Activities: []daemon.ToolActivity{{Kind: "read", Target: "file"}}, Changes: []daemon.FileChange{{Path: "file", Kind: "diff", Diff: "@@ -1 +1 @@"}}}} display := toolDisplay(event) if display["kind"] != "other" { t.Fatal(display) } encoded, _ := json.Marshal(display) if strings.Contains(string(encoded), `"type":"diff"`) || !strings.Contains(string(encoded), "snapshots unavailable") { t.Fatal(string(encoded)) } }