using AnchorCli; using AnchorCli.Commands; using Spectre.Console; Console.InputEncoding = System.Text.Encoding.UTF8; Console.OutputEncoding = System.Text.Encoding.UTF8; // ── Application entry point ─────────────────────────────────────────────── var startup = new ApplicationStartup(args); // Handle setup subcommand if (startup.HandleSetupSubcommand()) { return; } // Initialize application (load config, create clients, fetch pricing) await startup.InitializeAsync(); // Render header var headerRenderer = startup.CreateHeaderRenderer(); headerRenderer.Render(); // Configure tool logging startup.ConfigureToolLogging(); // Create core components var session = startup.CreateSession(); startup.TokenTracker.Session = session; var commandRegistry = startup.CreateCommandRegistry(session); var commandDispatcher = new CommandDispatcher(commandRegistry); // Create session manager var sessionManager = new SessionManager(session); // Auto-load session if it exists await sessionManager.TryLoadAsync(); // Run REPL loop var repl = new ReplLoop(session, startup.TokenTracker, commandDispatcher, sessionManager); await repl.RunAsync(); // Auto-save session on clean exit await sessionManager.TrySaveAsync();