package devagents

import (
	"context"

	"github.com/enmanuel/agents/pkg/command"
)

// Runner is the common interface that both Agent and Robot satisfy.
// The launcher uses this to manage agents and robots uniformly.
type Runner interface {
	// Run starts the Matrix sync loop. Blocks until ctx is cancelled.
	Run(ctx context.Context) error
	// Stop cancels the runner's internal context, causing Run to return.
	Stop()
	// Done returns a channel closed when Run has returned.
	Done() <-chan struct{}
	// RegisterCommand adds a custom command handler.
	RegisterCommand(spec command.Spec, handler CommandHandler)
}
