diff --git a/pkg/agent/loop.go b/pkg/agent/loop.go index 48932b10b..db476c212 100644 --- a/pkg/agent/loop.go +++ b/pkg/agent/loop.go @@ -387,10 +387,17 @@ func (al *AgentLoop) Run(ctx context.Context) error { return err } - for al.running.Load() { + idleTicker := time.NewTicker(100 * time.Millisecond) + defer idleTicker.Stop() + + for { select { case <-ctx.Done(): return nil + case <-idleTicker.C: + if !al.running.Load() { + return nil + } case msg, ok := <-al.bus.InboundChan(): if !ok { return nil @@ -517,12 +524,8 @@ func (al *AgentLoop) Run(ctx context.Context) error { al.publishResponseIfNeeded(ctx, target.Channel, target.ChatID, finalResponse) } }() - default: - time.Sleep(time.Microsecond * 200) } } - - return nil } // drainBusToSteering consumes inbound messages and redirects messages from the