1
0
Files
AnchorCli/Program.cs
Tomi Eckert 1e943e6566 refactor: apply Single Responsibility Principle to Program.cs and ReplLoop.cs
extracted responsibilities from Program.cs (208→46 lines) and ReplLoop.cs (274→174 lines) into focused service classes: HeaderRenderer, SessionManager, ApplicationStartup, ResponseStreamer, SpinnerService, UsageDisplayer, and ContextCompactionService. Each class now has a single, well-defined responsibility, improving testability and maintainability.
2026-03-11 16:59:06 +01:00

46 lines
1.3 KiB
C#

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();