diff --git a/cmd/olliesrv/internal/agent/turn.go b/cmd/olliesrv/internal/agent/turn.go index c81cf6a..5699918 100644 --- a/cmd/olliesrv/internal/agent/turn.go +++ b/cmd/olliesrv/internal/agent/turn.go @@ -117,6 +117,11 @@ func (ag *Agent) executeTurn(ctx context.Context, input string) string { actCtx, actCancel := context.WithCancelCause(ctx) handle := &actionHandle{cancel: actCancel} ag.currentAction.Store(handle) + defer func() { + if ag.currentAction.CompareAndSwap(handle, nil) { + actCancel(context.Canceled) + } + }() ag.SetState("thinking") ag.log.Debug("turn: start input=%s session=%s", auditTruncate(input), ag.sessionID)