using Azure.Identity; using Tango.Portal.Chat.Web.Alerts; using Tango.Portal.Chat.Web.Services; var builder = WebApplication.CreateBuilder(args); // Config binding (appsettings.json + env vars) builder.Services.AddControllersWithViews(); // OpenAI/Azure OpenAI config builder.Services.Configure(builder.Configuration.GetSection("OpenAI")); // ADX config builder.Services.Configure(builder.Configuration.GetSection("ADX")); builder.Services.AddSingleton(); builder.Services.AddSingleton(); builder.Services.AddSingleton(); builder.Services.AddSingleton(); // Azure Storage config builder.Services.Configure(builder.Configuration.GetSection("AzureStorage")); builder.Services.AddSingleton(); builder.Services.AddSingleton(); // N8N config builder.Services.Configure(builder.Configuration.GetSection("N8N")); builder.Services.AddHttpClient(); // Background service for alerts builder.Services.AddHostedService(); // Session configuration with 1 hour timeout builder.Services.AddSession(options => { options.IdleTimeout = TimeSpan.FromHours(1); options.Cookie.HttpOnly = true; options.Cookie.IsEssential = true; }); // Simple HTTP client for LLM builder.Services.AddHttpClient(); var app = builder.Build(); app.UseStaticFiles(); app.UseRouting(); app.UseSession(); var AazureAlertsHandler = new AzureAlertsHandler(builder.Configuration["ALERTS_SHARED_SECRET"]); app.MapPost("/api/monitor-alert", (HttpRequest req) => { return AazureAlertsHandler.HandleAlert(req); }); app.MapControllerRoute( name: "default", pattern: "{controller=Home}/{action=Index}/{id?}"); app.Run();