From 39fe50eff20a1117180ad7d144f07e9173fd878c Mon Sep 17 00:00:00 2001 From: Ian Gulliver Date: Wed, 21 Oct 2026 10:59:58 -0700 Subject: [PATCH] Audit of 01edc09 --- internal/agents/process.go | 68 +++++++++++++++----------------------- 1 file changed, 26 insertions(+), 42 deletions(-) diff --git a/internal/agents/process.go b/internal/agents/process.go index 56bda3b..1c91529 100644 --- a/internal/agents/process.go +++ b/internal/agents/process.go @@ -150,20 +150,9 @@ func (p claudeProcess) discard() { func (p claudeProcess) drive(m *Manager, l *live) { ctx := context.Background() for ev := range p.s.Events() { - start := time.Now() - if wait := start.Sub(ev.Read); wait > 200*time.Millisecond { - slog.Info("agent event waited", "session", l.id, "type", ev.Type, "wait", wait) - } - err := m.handle(ctx, l, ev) - if err != nil { - slog.Error("record agent event", "session", l.id, "type", ev.Type, "err", err) - } - if isDecodeError(err) { - m.recordBadLine(l, ev.Raw, fmt.Sprintf("decode %s: %s", ev.Type, err)) - } - if took := time.Since(start); took > 200*time.Millisecond { - slog.Info("agent event slow", "session", l.id, "type", ev.Type, "took", took) - } + m.handleProcessEvent(l, ev.Read, ev.Type, ev.Raw, func() error { + return m.handle(ctx, l, ev) + }) } } @@ -242,20 +231,9 @@ func (p codexProcess) discard() { func (p codexProcess) drive(m *Manager, l *live) { ctx := context.Background() for ev := range p.s.Events() { - start := time.Now() - if wait := start.Sub(ev.Read); wait > 200*time.Millisecond { - slog.Info("agent event waited", "session", l.id, "method", ev.Method, "wait", wait) - } - err := m.handleCodex(ctx, l, p.s, ev) - if err != nil { - slog.Error("record agent event", "session", l.id, "method", ev.Method, "err", err) - } - if isDecodeError(err) { - m.recordBadLine(l, ev.Params, fmt.Sprintf("decode %s: %s", ev.Method, err)) - } - if took := time.Since(start); took > 200*time.Millisecond { - slog.Info("agent event slow", "session", l.id, "method", ev.Method, "took", took) - } + m.handleProcessEvent(l, ev.Read, ev.Method, ev.Params, func() error { + return m.handleCodex(ctx, l, p.s, ev) + }) } } @@ -325,20 +303,26 @@ func (p antigravityProcess) drive(m *Manager, l *live) { ctx := context.Background() steps := &agySteps{text: map[int]*strings.Builder{}, tools: map[string]bool{}} for ev := range p.s.Events() { - start := time.Now() - if wait := start.Sub(ev.Read); wait > 200*time.Millisecond { - slog.Info("agent event waited", "session", l.id, "event", ev.Kind, "wait", wait) - } - err := m.handleAntigravity(ctx, l, p, steps, ev) - if err != nil { - slog.Error("record agent event", "session", l.id, "event", ev.Kind, "err", err) - } - if isDecodeError(err) { - m.recordBadLine(l, ev.Raw, fmt.Sprintf("decode %s: %s", ev.Kind, err)) - } - if took := time.Since(start); took > 200*time.Millisecond { - slog.Info("agent event slow", "session", l.id, "event", ev.Kind, "took", took) - } + m.handleProcessEvent(l, ev.Read, ev.Kind, ev.Raw, func() error { + return m.handleAntigravity(ctx, l, p, steps, ev) + }) + } +} + +func (m *Manager) handleProcessEvent(l *live, read time.Time, name string, raw []byte, handle func() error) { + start := time.Now() + if wait := start.Sub(read); wait > 200*time.Millisecond { + slog.Info("agent event waited", "session", l.id, "event", name, "wait", wait) + } + err := handle() + if err != nil { + slog.Error("record agent event", "session", l.id, "event", name, "err", err) + } + if isDecodeError(err) { + m.recordBadLine(l, raw, fmt.Sprintf("decode %s: %s", name, err)) + } + if took := time.Since(start); took > 200*time.Millisecond { + slog.Info("agent event slow", "session", l.id, "event", name, "took", took) } }