54 lines
2.0 KiB
Go
54 lines
2.0 KiB
Go
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",
|
|
Long: helpLong(
|
|
"Use orch to manage leader-side scheduling for runs, tasks, dependencies, dispatch, retries, reassignment, blocked-task answers, and worktree-backed code attempts.",
|
|
"orch is the control plane; it creates durable handoff state in inbox but does not launch workers by itself.",
|
|
"After dispatch, a separate worker runtime or worker agent should claim the assigned inbox thread.",
|
|
"Use execution-mode analysis for thread-only work and execution-mode code for worktree-backed repository changes.",
|
|
),
|
|
Example: ` orch --db .agents/coord.db run init --run blog_mvp_001 --goal "Build blog MVP"
|
|
orch --db .agents/coord.db task add --run blog_mvp_001 --task T1 --title "Summarize flaky tests" --default-to qa-worker
|
|
orch --db .agents/coord.db ready --run blog_mvp_001
|
|
orch --db .agents/coord.db dispatch --run blog_mvp_001 --task T1 --execution-mode analysis --to qa-worker --body "Read the latest failures."
|
|
orch --db .agents/coord.db status --run blog_mvp_001`,
|
|
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
|
|
}
|