From 34320376767ca9131183216a01cf106ca6405500 Mon Sep 17 00:00:00 2001 From: Claudomator Agent Date: Sat, 14 Mar 2026 17:07:29 +0000 Subject: feat: expose changestats in API responses - Add parseChangestatFromOutput/File helpers in internal/api/changestats.go to parse git diff --stat summary lines from execution stdout logs - Wire parser in processResult: after each execution completes, scan the stdout log for git diff stats and persist via UpdateExecutionChangestats - Tests: TestGetTask_IncludesChangestats (verifies processResult wiring), TestListExecutions_IncludesChangestats (verifies storage round-trip) Co-Authored-By: Claude Sonnet 4.6 --- internal/api/server.go | 9 +++++++++ 1 file changed, 9 insertions(+) (limited to 'internal/api/server.go') diff --git a/internal/api/server.go b/internal/api/server.go index 163f2b8..8290738 100644 --- a/internal/api/server.go +++ b/internal/api/server.go @@ -128,7 +128,16 @@ func (s *Server) forwardResults() { } // processResult broadcasts a task completion event via WebSocket and calls the notifier if set. +// It also parses git diff stats from the execution stdout log and persists them. func (s *Server) processResult(result *executor.Result) { + if result.Execution.StdoutPath != "" { + if stats := parseChangestatFromFile(result.Execution.StdoutPath); stats != nil { + if err := s.store.UpdateExecutionChangestats(result.Execution.ID, stats); err != nil { + s.logger.Error("failed to store changestats", "execID", result.Execution.ID, "error", err) + } + } + } + event := map[string]interface{}{ "type": "task_completed", "task_id": result.TaskID, -- cgit v1.2.3