import Foundation private struct RootCommand { var name: String var args: [String] } @main struct MoltbotMacCLI { static func main() async { let args = Array(CommandLine.arguments.dropFirst()) let command = parseRootCommand(args) switch command?.name { case nil: printUsage() case "-h", "--help", "help": printUsage() case "connect": await runConnect(command?.args ?? []) case "discover": await runDiscover(command?.args ?? []) case "wizard": await runWizardCommand(command?.args ?? []) default: fputs("moltbot-mac: unknown command\n", stderr) printUsage() exit(1) } } } private func parseRootCommand(_ args: [String]) -> RootCommand? { guard let first = args.first else { return nil } return RootCommand(name: first, args: Array(args.dropFirst())) } private func printUsage() { print(""" moltbot-mac Usage: moltbot-mac connect [--url ] [--token ] [--password ] [--mode ] [--timeout ] [--probe] [--json] [--client-id ] [--client-mode ] [--display-name ] [--role ] [--scopes ] moltbot-mac discover [--timeout ] [--json] [--include-local] moltbot-mac wizard [--url ] [--token ] [--password ] [--mode ] [--workspace ] [--json] Examples: moltbot-mac connect moltbot-mac connect --url ws://127.0.0.1:18789 --json moltbot-mac discover --timeout 3000 --json moltbot-mac wizard --mode local """) }