package agent import ( "fmt" "strings" ) type Logger struct { verbose bool } func NewLogger(verbose bool) *Logger { return &Logger{verbose: verbose} } func (l *Logger) Info(format string, args ...any) { fmt.Printf(format+"\n", args...) } func (l *Logger) Debug(format string, args ...any) { if !l.verbose { return } fmt.Printf(format+"\n", args...) } func (l *Logger) ChatMessage(role string, content string) { if !l.verbose { return } width := 120 var icon, border string switch role { case "system": icon = "โš™๏ธ SYSTEM" border = strings.Repeat("โ•", width) case "user": icon = "๐Ÿ‘ค USER" border = strings.Repeat("โ”€", width) case "assistant": icon = "๐Ÿค– ASSISTANT" border = strings.Repeat("โ”€", width) case "tool": icon = "๐Ÿ”ง TOOL RESULT" border = strings.Repeat("ยท", width) } fmt.Printf("\n%s\n", border) fmt.Printf(" %s\n", icon) fmt.Printf("%s\n", border) fmt.Println(content) fmt.Printf("%s\n", border) } func (l *Logger) TaskStart(title string) { fmt.Printf("\n๐Ÿ”„ Starte Task: %s\n", title) fmt.Println(strings.Repeat("โ”€", 60)) } func (l *Logger) TaskDone(title string) { fmt.Printf("โœ… Task abgeschlossen: %s\n", title) } func (l *Logger) TaskFailed(title string, retries int) { fmt.Printf("โŒ Task fehlgeschlagen nach %d Versuchen: %s\n", retries, title) } func (l *Logger) Turn(n int) { if l.verbose { fmt.Printf("\nโ”Œโ”€ Turn %d %s\n", n, strings.Repeat("โ”€", 50)) } else { fmt.Printf(" ๐Ÿ’ญ Turn %d...\n", n) } }