import Foundation private struct RootCommand { var name: String var args: [String] } @main struct ClawdbotMacCLI { 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("clawdbot-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(""" clawdbot-mac Usage: clawdbot-mac connect [--url ] [--token ] [--password ] [--mode ] [--timeout ] [--probe] [--json] [--client-id ] [--client-mode ] [--display-name ] [--role ] [--scopes ] clawdbot-mac discover [--timeout ] [--json] [--include-local] clawdbot-mac wizard [--url ] [--token ] [--password ] [--mode ] [--workspace ] [--json] Examples: clawdbot-mac connect clawdbot-mac connect --url ws://127.0.0.1:18789 --json clawdbot-mac discover --timeout 3000 --json clawdbot-mac wizard --mode local """) }