package agent

import "errors"

// ErrNameConflict classifies an agent handle or display-name uniqueness
// conflict independently of its transport status.
var ErrNameConflict = errors.New("agent name conflict")

type nameConflict struct {
	error
}

func (err nameConflict) Unwrap() []error {
	return []error{err.error, ErrNameConflict}
}

// MarkNameConflict preserves cause while adding the stable agent-name
// classification used by API transports.
func MarkNameConflict(cause error) error {
	if cause == nil {
		return nil
	}
	if errors.Is(cause, ErrNameConflict) {
		return cause
	}
	return nameConflict{error: cause}
}
