diff options
Diffstat (limited to 'format_rich_log.go')
| -rw-r--r-- | format_rich_log.go | 147 |
1 files changed, 0 insertions, 147 deletions
diff --git a/format_rich_log.go b/format_rich_log.go deleted file mode 100644 index 09bea60..0000000 --- a/format_rich_log.go +++ /dev/null @@ -1,147 +0,0 @@ -package main - -import ( - "fmt" - "os" - "path/filepath" - "strings" - - "go.wit.com/lib/protobuf/chatpb" - "go.wit.com/log" -) - -const termWidth = 120 // The target width for the formatted output boxes. - -func parseRichLog(filename string) *chatpb.Chats { - data, err := os.ReadFile(filename) - if err != nil { - log.Fatalf("Error reading file %s: %v", filename, err) - } - - logData, err := chatpb.UnmarshalChatsTEXT(data) - if err != nil { - log.Fatalf("Error unmarshaling log file %s: %v", filename, err) - } - - for _, chat := range logData.GetChats() { - // Handle content: prefer content_file, fallback to content. - var content string - if contentFile := chat.GetContentFile(); contentFile != "" { - // Construct the full path relative to the log file's directory. - logDir := filepath.Dir(filename) - contentPath := filepath.Join(logDir, contentFile) - - contentBytes, err := os.ReadFile(contentPath) - if err != nil { - content = fmt.Sprintf("--- ERROR: Could not read content file %s: %v ---", contentPath, err) - } else { - content = string(contentBytes) - } - } else { - // Fallback for older log formats. - content = chat.GetContent() - } - chat.Content = content - } - - return logData -} - -func formatRichLog(filename string) *chatpb.Chats { - data, err := os.ReadFile(filename) - if err != nil { - log.Fatalf("Error reading file %s: %v", filename, err) - } - - logData, err := chatpb.UnmarshalChatsTEXT(data) - if err != nil { - log.Fatalf("Error unmarshaling log file %s: %v", filename, err) - } - - for _, chat := range logData.GetChats() { - author := chat.GetFrom().String() - - // Handle content: prefer content_file, fallback to content. - var content string - if contentFile := chat.GetContentFile(); contentFile != "" { - // Construct the full path relative to the log file's directory. - logDir := filepath.Dir(filename) - contentPath := filepath.Join(logDir, contentFile) - - contentBytes, err := os.ReadFile(contentPath) - if err != nil { - content = fmt.Sprintf("--- ERROR: Could not read content file %s: %v ---", contentPath, err) - } else { - content = string(contentBytes) - } - } else { - // Fallback for older log formats. - content = chat.GetContent() - } - - // Print the conversational content first. - if content != "" { - // Trim trailing newlines for cleaner output. - fmt.Printf("✦ %s: %s\n", author, strings.TrimSpace(content)) - } - - // Now, format and print any tool calls. - for _, toolCall := range chat.GetToolCalls() { - printToolCallBox(toolCall) - } - } - - return logData -} - -// printToolCallBox handles the decorative formatting for a single tool call. -func printToolCallBox(tc *chatpb.ToolCall) { - boxWidth := termWidth - 2 // Account for the side borders. - - // --- Top Border --- - fmt.Printf(" ╭%s╮\n", strings.Repeat("─", boxWidth)) - - // --- Header Line --- - header := fmt.Sprintf(" ✔ %s %s (%s)", tc.GetName(), tc.GetInput(), tc.GetDescription()) - printWrappedLine(header, boxWidth) - printEmptyLine(boxWidth) - - // --- Stdout --- - if stdout := tc.GetOutputStdout(); stdout != "" { - for _, line := range strings.Split(stdout, "\n") { - printWrappedLine(" "+line, boxWidth) - } - } - - // --- Stderr --- - if stderr := tc.GetOutputStderr(); stderr != "" { - for _, line := range strings.Split(stderr, "\n") { - printWrappedLine(" "+line, boxWidth) - } - } - - printEmptyLine(boxWidth) - - // --- Bottom Border --- - fmt.Printf(" ╰%s╯\n", strings.Repeat("─", boxWidth)) -} - -// printWrappedLine prints a line of text, wrapping it if it's too long. -func printWrappedLine(text string, width int) { - if len(text) == 0 { - printEmptyLine(width) - return - } - - // Simple wrapping logic. - for len(text) > width { - fmt.Printf(" │ %-*s │\n", width, text[:width]) - text = text[width:] - } - fmt.Printf(" │ %-*s │\n", width, text) -} - -// printEmptyLine prints a blank line within the box. -func printEmptyLine(width int) { - fmt.Printf(" │ %*s │\n", width, "") -} |
