using System.Text.Json; using System.Text.Json.Serialization; using Luna.Agents.Extensions; using Luna.Channels.Extensions; using Luna.Configuration.Extensions; using Luna.Core.Abstractions; using Luna.Core.Hubs; using Luna.Core.Services.Extensions; using Luna.Core.Tools.Extensions; using Luna.Identity.Extensions; using Luna.Memory.Extensions; using Luna.Providers.Extensions; var builder = WebApplication.CreateBuilder(args); builder.Configuration .AddLunaConfiguration(); builder.Services .AddOpenApi() .AddProviders() .AddAgents() .AddTools() .AddMemoryStore() .AddUserIdentity() .AddSessionManager() .AddChannels(); builder.Services.AddSignalR() .AddJsonProtocol(options => { options.PayloadSerializerOptions.Converters.Add( new JsonStringEnumConverter(JsonNamingPolicy.CamelCase)); }); builder.Services.AddTransient(); var app = builder.Build(); // Configure the HTTP request pipeline. if (app.Environment.IsDevelopment()) { app.MapOpenApi(); } app.MapHub("/chat"); app.Run(); // Expose Program type for WebApplicationFactory in integration tests namespace Luna.Core { public partial class Program { } }