()
| 822 | } |
| 823 | |
| 824 | async function main(): Promise<void> { |
| 825 | const args = parseArgs(process.argv.slice(2)); |
| 826 | |
| 827 | if (args.version) { |
| 828 | console.log(VERSION); |
| 829 | process.exit(0); |
| 830 | } |
| 831 | |
| 832 | if (args.help) { |
| 833 | printHelp(); |
| 834 | process.exit(0); |
| 835 | } |
| 836 | |
| 837 | if (args.setup) { |
| 838 | await cmdSetup(); |
| 839 | process.exit(0); |
| 840 | } |
| 841 | |
| 842 | // Query commands — talk to running proxy |
| 843 | const queryPort = args.port ?? getProxyPort(); |
| 844 | |
| 845 | if (args.queryStatus) { |
| 846 | await cmdStatus(queryPort); |
| 847 | process.exit(0); |
| 848 | } |
| 849 | if (args.queryWallet) { |
| 850 | await cmdWallet(queryPort); |
| 851 | process.exit(0); |
| 852 | } |
| 853 | if (args.queryModels) { |
| 854 | await cmdModels(queryPort); |
| 855 | process.exit(0); |
| 856 | } |
| 857 | if (args.queryStats) { |
| 858 | await cmdStats(queryPort, args.queryStatsDays); |
| 859 | process.exit(0); |
| 860 | } |
| 861 | if (args.queryCache) { |
| 862 | await cmdCache(queryPort); |
| 863 | process.exit(0); |
| 864 | } |
| 865 | |
| 866 | if (args.share) { |
| 867 | await cmdShare(queryPort, args.shareTarget, args.sharePreset, args.shareLimit, args.shareAll); |
| 868 | process.exit(0); |
| 869 | } |
| 870 | |
| 871 | if (args.phone) { |
| 872 | if (!args.phoneSubcommand) { |
| 873 | console.error("✗ Usage: clawrouter phone <numbers|lookup|fraud> ..."); |
| 874 | console.error(" See: clawrouter --help"); |
| 875 | process.exit(1); |
| 876 | } |
| 877 | await cmdPhone( |
| 878 | queryPort, |
| 879 | args.phoneSubcommand, |
| 880 | args.phoneNumbersAction, |
| 881 | args.phoneArg, |
no test coverage detected