// Package cli wires the agent-lib command tree: vendor (curator side), // sync/status (client side) and version. package cli import ( "fmt" "io" "os" "runtime" "github.com/spf13/cobra" "github.com/m3tam3re/agent-lib/internal/version" ) func NewRootCmd() *cobra.Command { root := &cobra.Command{ Use: "agent-lib", Short: "Curated agent content: vendor external sources, sync to OpenCode", SilenceUsage: true, SilenceErrors: true, } root.AddCommand(newVersionCmd()) root.AddCommand(newVendorCmd()) root.AddCommand(newValidateCmd()) return root } func newVersionCmd() *cobra.Command { return &cobra.Command{ Use: "version", Short: "Print the agent-lib version", Args: cobra.NoArgs, RunE: func(cmd *cobra.Command, args []string) error { return printVersion(cmd.OutOrStdout()) }, } } func printVersion(w io.Writer) error { _, err := fmt.Fprintf(w, "agent-lib %s (%s/%s)\n", version.Version, runtime.GOOS, runtime.GOARCH) return err } func Execute() error { if err := NewRootCmd().Execute(); err != nil { fmt.Fprintln(os.Stderr, "error:", err) return err } return nil }