package orch

import (
	"github.com/spf13/cobra"
)

type rootOptions struct {
	dbPath string
	json   bool
}

func NewRootCmd() *cobra.Command {
	opts := &rootOptions{}

	cmd := &cobra.Command{
		Use:           "orch",
		Short:         "Leader-facing scheduler and control plane",
		SilenceErrors: true,
		SilenceUsage:  true,
	}

	cmd.PersistentFlags().StringVar(&opts.dbPath, "db", ".agents/coord.db", "SQLite database path")
	cmd.PersistentFlags().BoolVar(&opts.json, "json", false, "Emit machine-readable JSON")

	cmd.AddCommand(newRunCmd(opts))
	cmd.AddCommand(newTaskCmd(opts))
	cmd.AddCommand(newDepCmd(opts))
	cmd.AddCommand(newReadyCmd(opts))
	cmd.AddCommand(newDispatchCmd(opts))
	cmd.AddCommand(newReconcileCmd(opts))
	cmd.AddCommand(newWaitCmd(opts))
	cmd.AddCommand(newRetryCmd(opts))
	cmd.AddCommand(newReassignCmd(opts))
	cmd.AddCommand(newCancelCmd(opts))
	cmd.AddCommand(newCleanupCmd(opts))
	cmd.AddCommand(newCouncilCmd(opts))
	cmd.AddCommand(newBlockedCmd(opts))
	cmd.AddCommand(newAnswerCmd(opts))
	cmd.AddCommand(newStatusCmd(opts))

	return cmd
}
