diff --git a/internal/agent/tools/view.go b/internal/agent/tools/view.go index aacd4cab23231c1b27f3d2589578e81e29cf6ed3..afa5d15ac7dc83d2cee1d900c39f220bc70747e0 100644 --- a/internal/agent/tools/view.go +++ b/internal/agent/tools/view.go @@ -10,7 +10,6 @@ import ( "os" "path/filepath" "strings" - "unicode/utf8" "charm.land/fantasy" "github.com/charmbracelet/crush/internal/csync" @@ -164,12 +163,12 @@ func NewViewTool(lspClients *csync.Map[string, *lsp.Client], permissions permiss return fantasy.NewImageResponse([]byte(encoded), mimeType), nil } - // Read the file content - content, lineCount, err := readTextFile(filePath, params.Offset, params.Limit) - isValidUt8 := utf8.ValidString(content) - if !isValidUt8 { - return fantasy.NewTextErrorResponse("File content is not valid UTF-8"), nil + // Check if it's a text file before reading. + if !isTextFile(filePath) { + return fantasy.NewTextErrorResponse("File appears to not be a text file"), nil } + + content, lineCount, err := readTextFile(filePath, params.Offset, params.Limit) if err != nil { return fantasy.ToolResponse{}, fmt.Errorf("error reading file: %w", err) }