// Copyright (c) Microsoft Corporation. All rights reserved. // Program.cs using Azure.Identity; using DevTeam.Backend; using DevTeam.Options; using Microsoft.AI.DevTeam; using Microsoft.AutoGen.Core; using Microsoft.AutoGen.Extensions.SemanticKernel; using Microsoft.Extensions.Azure; using Microsoft.Extensions.Options; using Octokit.Webhooks; using Octokit.Webhooks.AspNetCore; var builder = WebApplication.CreateBuilder(args); builder.AddServiceDefaults(); builder.ConfigureSemanticKernel(); builder.Services.AddHttpClient(); builder.Services.AddControllers(); builder.Services.AddSwaggerGen(); builder.AddAgentWorker(builder.Configuration["AGENT_HOST"]!) .AddAgent(nameof(AzureGenie)) //.AddAgent(nameof(Sandbox)) .AddAgent(nameof(Hubber)); builder.Services.AddSingleton(); builder.Services.AddSingleton(); builder.Services.AddSingleton(); builder.Services.AddSingleton(); builder.Services.AddSingleton(); builder.Services.AddTransient(s => { var ghOptions = s.GetRequiredService>(); var logger = s.GetRequiredService>(); var ghService = new GithubAuthService(ghOptions, logger); var client = ghService.GetGitHubClient(); return client; }); // TODO: Rework? builder.Services.AddOptions() .Configure((settings, configuration) => { configuration.GetSection("Github").Bind(settings); }) .ValidateDataAnnotations() .ValidateOnStart(); builder.Services.AddAzureClients(clientBuilder => { clientBuilder.AddArmClient(default); clientBuilder.UseCredential(new DefaultAzureCredential()); }); var app = builder.Build(); app.MapDefaultEndpoints(); app.UseRouting() .UseEndpoints(endpoints => { var ghOptions = app.Services.GetRequiredService>().Value; endpoints.MapGitHubWebhooks(secret: ghOptions.WebhookSecret); }); ; app.UseSwagger(); /* app.UseSwaggerUI(c => { c.SwaggerEndpoint("/swagger/v1/swagger.json", "My API V1"); }); */ app.Run();