From b676ee1351dba755efcd4bf4921ebf0942124da6 Mon Sep 17 00:00:00 2001 From: viettranx Date: Thu, 23 Apr 2026 19:16:08 +0700 Subject: [PATCH] refactor: adopt Go 1.26+ standard library modernizations - Use maps.Copy in hooks dispatcher instead of manual map loop - Remove implicit loop variable capture in router_abort_test (Go 1.26 semantics) - Use range without index in http_test where index unused - Use min() builtin in script_test instead of manual min computation --- internal/agent/router_abort_test.go | 1 - internal/hooks/dispatcher.go | 9 +++------ internal/hooks/handlers/http_test.go | 2 +- internal/hooks/handlers/script_test.go | 5 +---- 4 files changed, 5 insertions(+), 12 deletions(-) diff --git a/internal/agent/router_abort_test.go b/internal/agent/router_abort_test.go index 152166a0..8423510e 100644 --- a/internal/agent/router_abort_test.go +++ b/internal/agent/router_abort_test.go @@ -138,7 +138,6 @@ func TestAbortRun_AlreadyAborting(t *testing.T) { var wg sync.WaitGroup wg.Add(n) for i := range n { - i := i go func() { defer wg.Done() results[i] = r.AbortRun(runID, sessionKey) diff --git a/internal/hooks/dispatcher.go b/internal/hooks/dispatcher.go index f39a3d66..c608d0ce 100644 --- a/internal/hooks/dispatcher.go +++ b/internal/hooks/dispatcher.go @@ -5,6 +5,7 @@ import ( "errors" "fmt" "log/slog" + "maps" "sync" "sync/atomic" "time" @@ -276,9 +277,7 @@ func (d *stdDispatcher) runSync(ctx context.Context, ev Event, chain []HookConfi // blocks or the chain aborts. func cloneMap(m map[string]any) map[string]any { out := make(map[string]any, len(m)) - for k, v := range m { - out[k] = v - } + maps.Copy(out, m) return out } @@ -303,9 +302,7 @@ func applyBuiltinMutation(ev *Event, updated map[string]any, allowlist []string) if ev.ToolInput == nil { ev.ToolInput = map[string]any{} } - for k, v := range m { - ev.ToolInput[k] = v - } + maps.Copy(ev.ToolInput, m) } else { for k, v := range m { if _, ok := allowSet["toolInput."+k]; ok { diff --git a/internal/hooks/handlers/http_test.go b/internal/hooks/handlers/http_test.go index 9e8b269c..30683bb7 100644 --- a/internal/hooks/handlers/http_test.go +++ b/internal/hooks/handlers/http_test.go @@ -236,7 +236,7 @@ func TestHTTP_ResponseBodyCappedAt1MiB(t *testing.T) { for i := range chunk { chunk[i] = 'x' } - for i := 0; i < 32; i++ { // 32 × 64 KiB = 2 MiB + for range 32 { // 32 × 64 KiB = 2 MiB w.Write(chunk) } })) diff --git a/internal/hooks/handlers/script_test.go b/internal/hooks/handlers/script_test.go index f4ffe815..1a983c9e 100644 --- a/internal/hooks/handlers/script_test.go +++ b/internal/hooks/handlers/script_test.go @@ -214,10 +214,7 @@ func TestStdoutCapTruncates(t *testing.T) { t.Fatalf("stdout exceeded cap: %d bytes", len(res.Stdout)) } if !strings.Contains(res.Stdout, "truncated") { - end := 200 - if end > len(res.Stdout) { - end = len(res.Stdout) - } + end := min(200, len(res.Stdout)) t.Fatalf("truncation marker missing: %q", res.Stdout[:end]) } }