+ if l.messages != nil {
+ l.logger.Info("turn started")
+ }
+
+ reply, err := l.chain(ctx)
+ if l.messages != nil && !errors.Is(err, errChainLogWrite) && (err == nil || runCtx.Err() == nil) {
+ finishErr := l.messages.Finish(l, l.active, reply)
+ if finishErr != nil {
+ err = errors.Join(err, fmt.Errorf("%w: finish agent messages: %w", errChainLogWrite, finishErr))
+ }
+ }
+
+ l.active = nil