diff --git a/pkg/agent/context.go b/pkg/agent/context.go index a9db5afdd..ba07e33d3 100644 --- a/pkg/agent/context.go +++ b/pkg/agent/context.go @@ -288,25 +288,6 @@ func (cb *ContextBuilder) AddAssistantMessage( return messages } -func (cb *ContextBuilder) loadSkills() string { - allSkills := cb.skillsLoader.ListSkills() - if len(allSkills) == 0 { - return "" - } - - var skillNames []string - for _, s := range allSkills { - skillNames = append(skillNames, s.Name) - } - - content := cb.skillsLoader.LoadSkillsForContext(skillNames) - if content == "" { - return "" - } - - return "# Skill Definitions\n\n" + content -} - // GetSkillsInfo returns information about loaded skills. func (cb *ContextBuilder) GetSkillsInfo() map[string]any { allSkills := cb.skillsLoader.ListSkills() diff --git a/pkg/logger/logger.go b/pkg/logger/logger.go index 54de66bf9..cb7d538b1 100644 --- a/pkg/logger/logger.go +++ b/pkg/logger/logger.go @@ -61,41 +61,6 @@ func SetLevel(level LogLevel) { currentLevel = level } -func GetLevel() LogLevel { - mu.RLock() - defer mu.RUnlock() - return currentLevel -} - -func EnableFileLogging(filePath string) error { - mu.Lock() - defer mu.Unlock() - - file, err := os.OpenFile(filePath, os.O_CREATE|os.O_WRONLY|os.O_APPEND, 0o644) - if err != nil { - return fmt.Errorf("failed to open log file: %w", err) - } - - if logger.file != nil { - logger.file.Close() - } - - logger.file = file - log.Println("File logging enabled:", filePath) - return nil -} - -func DisableFileLogging() { - mu.Lock() - defer mu.Unlock() - - if logger.file != nil { - logger.file.Close() - logger.file = nil - log.Println("File logging disabled") - } -} - func logMessage(level LogLevel, component string, message string, fields map[string]any) { if level < currentLevel { return diff --git a/pkg/logger/logger_test.go b/pkg/logger/logger_test.go index 6e6f8dfa8..377cfd552 100644 --- a/pkg/logger/logger_test.go +++ b/pkg/logger/logger_test.go @@ -4,10 +4,18 @@ import ( "testing" ) -func TestLogLevelFiltering(t *testing.T) { - initialLevel := GetLevel() - defer SetLevel(initialLevel) +func preserveLogLevel(t *testing.T) { + t.Helper() + mu.RLock() + prev := currentLevel + mu.RUnlock() + t.Cleanup(func() { + SetLevel(prev) + }) +} +func TestLogLevelFiltering(t *testing.T) { + preserveLogLevel(t) SetLevel(WARN) tests := []struct { @@ -41,13 +49,10 @@ func TestLogLevelFiltering(t *testing.T) { }) } - SetLevel(INFO) } func TestLoggerWithComponent(t *testing.T) { - initialLevel := GetLevel() - defer SetLevel(initialLevel) - + preserveLogLevel(t) SetLevel(DEBUG) tests := []struct { @@ -77,7 +82,6 @@ func TestLoggerWithComponent(t *testing.T) { }) } - SetLevel(INFO) } func TestLogLevels(t *testing.T) { @@ -102,24 +106,8 @@ func TestLogLevels(t *testing.T) { } } -func TestSetGetLevel(t *testing.T) { - initialLevel := GetLevel() - defer SetLevel(initialLevel) - - tests := []LogLevel{DEBUG, INFO, WARN, ERROR, FATAL} - - for _, level := range tests { - SetLevel(level) - if GetLevel() != level { - t.Errorf("SetLevel(%v) -> GetLevel() = %v, want %v", level, GetLevel(), level) - } - } -} - func TestLoggerHelperFunctions(t *testing.T) { - initialLevel := GetLevel() - defer SetLevel(initialLevel) - + preserveLogLevel(t) SetLevel(INFO) Debug("This should not log") @@ -137,3 +125,23 @@ func TestLoggerHelperFunctions(t *testing.T) { DebugC("test", "Debug with component") WarnF("Warning with fields", map[string]any{"key": "value"}) } + +func TestSetLevelUpdatesGlobalState(t *testing.T) { + preserveLogLevel(t) + + SetLevel(WARN) + mu.RLock() + gotWarn := currentLevel + mu.RUnlock() + if gotWarn != WARN { + t.Fatalf("currentLevel = %v, want %v", gotWarn, WARN) + } + + SetLevel(DEBUG) + mu.RLock() + gotDebug := currentLevel + mu.RUnlock() + if gotDebug != DEBUG { + t.Fatalf("currentLevel = %v, want %v", gotDebug, DEBUG) + } +} diff --git a/pkg/utils/media.go b/pkg/utils/media.go index a34889fb8..279eb1df1 100644 --- a/pkg/utils/media.go +++ b/pkg/utils/media.go @@ -134,10 +134,3 @@ func DownloadFile(url, filename string, opts DownloadOptions) string { return localPath } - -// DownloadFileSimple is a simplified version of DownloadFile without options -func DownloadFileSimple(url, filename string) string { - return DownloadFile(url, filename, DownloadOptions{ - LoggerPrefix: "media", - }) -} diff --git a/pkg/utils/media_test.go b/pkg/utils/media_test.go new file mode 100644 index 000000000..cdb063c26 --- /dev/null +++ b/pkg/utils/media_test.go @@ -0,0 +1,37 @@ +package utils + +import ( + "net/http" + "net/http/httptest" + "os" + "path/filepath" + "testing" +) + +func TestDownloadFile_WithDefaultOptions(t *testing.T) { + t.Parallel() + + const body = "hello from media download" + srv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + _, _ = w.Write([]byte(body)) + })) + defer srv.Close() + + path := DownloadFile(srv.URL, "sample.txt", DownloadOptions{}) + if path == "" { + t.Fatal("DownloadFile() returned empty path") + } + t.Cleanup(func() { _ = os.Remove(path) }) + + if got := filepath.Base(path); got == "sample.txt" { + t.Fatalf("expected uuid-prefixed filename, got %q", got) + } + + data, err := os.ReadFile(path) + if err != nil { + t.Fatalf("os.ReadFile() error: %v", err) + } + if string(data) != body { + t.Fatalf("downloaded content = %q, want %q", string(data), body) + } +}