77 lines
1.5 KiB
Go
77 lines
1.5 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) 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)
|
|
}
|
|
}
|