Files
clawgo/pkg/agent/loop_audit_test.go

49 lines
1.3 KiB
Go

package agent
import (
"encoding/json"
"os"
"path/filepath"
"testing"
"time"
"github.com/YspCoder/clawgo/pkg/bus"
)
func TestAppendTaskAuditEventPersistsContextCharStats(t *testing.T) {
t.Parallel()
workspace := t.TempDir()
al := &AgentLoop{workspace: workspace}
msg := bus.InboundMessage{
Channel: "chat",
SessionKey: "s1",
Content: "Task Context:\nEKG: repeat_errsig=perm\nTask:\ndeploy",
Metadata: map[string]string{
"context_extra_chars": "42",
"context_ekg_chars": "18",
"context_memory_chars": "0",
},
}
al.appendTaskAuditEvent("task-1", msg, "success", time.Now().Add(-time.Second), 1000, "completed", false)
b, err := os.ReadFile(filepath.Join(workspace, "memory", "task-audit.jsonl"))
if err != nil {
t.Fatalf("read task audit: %v", err)
}
var row map[string]interface{}
if err := json.Unmarshal(b[:len(b)-1], &row); err != nil {
t.Fatalf("decode task audit row: %v", err)
}
if got := int(row["context_extra_chars"].(float64)); got != 42 {
t.Fatalf("expected context_extra_chars=42, got %d", got)
}
if got := int(row["context_ekg_chars"].(float64)); got != 18 {
t.Fatalf("expected context_ekg_chars=18, got %d", got)
}
if got := int(row["context_memory_chars"].(float64)); got != 0 {
t.Fatalf("expected context_memory_chars=0, got %d", got)
}
}