Files
goralphy/agent/logger.go
Christoph K. f26005fda6 loggin added
2026-02-25 12:19:14 +01:00

70 lines
1.4 KiB
Go

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) ChatMessage(role string, content string) {
if !l.verbose {
return
}
width := 60
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)
}
}