mirror of https://github.com/microsoft/autogen.git
82 lines
2.4 KiB
C#
82 lines
2.4 KiB
C#
// Copyright (c) Microsoft Corporation. All rights reserved.
|
|
// Program.cs
|
|
|
|
using Azure.Identity;
|
|
using DevTeam.Backend.Agents;
|
|
using DevTeam.Backend.Agents.Developer;
|
|
using DevTeam.Backend.Agents.DeveloperLead;
|
|
using DevTeam.Backend.Agents.ProductManager;
|
|
using DevTeam.Backend.Services;
|
|
using DevTeam.Options;
|
|
using Microsoft.AutoGen.Core;
|
|
using Microsoft.AutoGen.Core.Grpc;
|
|
using Microsoft.Extensions.Azure;
|
|
using Microsoft.Extensions.Options;
|
|
using Octokit.Webhooks;
|
|
using Octokit.Webhooks.AspNetCore;
|
|
|
|
var builder = WebApplication.CreateBuilder(args);
|
|
|
|
builder.AddServiceDefaults();
|
|
|
|
builder.Services.AddHttpClient();
|
|
builder.Services.AddControllers();
|
|
builder.Services.AddSwaggerGen();
|
|
|
|
builder.AddGrpcAgentWorker(builder.Configuration["AGENT_HOST"]!)
|
|
.AddAgentWorker()
|
|
.AddAgent<AzureGenie>(nameof(AzureGenie))
|
|
//.AddAgent<Sandbox>(nameof(Sandbox))
|
|
.AddAgent<Hubber>(nameof(Hubber))
|
|
.AddAgent<Dev>(nameof(Dev))
|
|
.AddAgent<ProductManager>(nameof(ProductManager))
|
|
.AddAgent<DeveloperLead>(nameof(DeveloperLead));
|
|
|
|
builder.Services.AddSingleton<AgentWorker>();
|
|
builder.Services.AddSingleton<WebhookEventProcessor, GithubWebHookProcessor>();
|
|
builder.Services.AddSingleton<GithubAuthService>();
|
|
builder.Services.AddSingleton<IManageAzure, AzureService>();
|
|
builder.Services.AddSingleton<IManageGithub, GithubService>();
|
|
|
|
builder.Services.AddTransient(s =>
|
|
{
|
|
var ghOptions = s.GetRequiredService<IOptions<GithubOptions>>();
|
|
var logger = s.GetRequiredService<ILogger<GithubAuthService>>();
|
|
var ghService = new GithubAuthService(ghOptions, logger);
|
|
var client = ghService.GetGitHubClient();
|
|
return client;
|
|
});
|
|
|
|
// TODO: Rework?
|
|
builder.Services.AddOptions<GithubOptions>()
|
|
.Configure<IConfiguration>((settings, configuration) =>
|
|
{
|
|
configuration.GetSection("Github").Bind(settings);
|
|
})
|
|
.ValidateDataAnnotations()
|
|
.ValidateOnStart();
|
|
|
|
builder.Services.AddAzureClients(clientBuilder =>
|
|
{
|
|
clientBuilder.AddArmClient(default);
|
|
clientBuilder.UseCredential(new DefaultAzureCredential());
|
|
});
|
|
|
|
var app = builder.Build();
|
|
|
|
Microsoft.Extensions.Hosting.AspireHostingExtensions.MapDefaultEndpoints(app);
|
|
app.UseRouting()
|
|
.UseEndpoints(endpoints =>
|
|
{
|
|
var ghOptions = app.Services.GetRequiredService<IOptions<GithubOptions>>().Value;
|
|
endpoints.MapGitHubWebhooks(secret: ghOptions.WebhookSecret);
|
|
}); ;
|
|
|
|
app.UseSwagger();
|
|
/* app.UseSwaggerUI(c =>
|
|
{
|
|
c.SwaggerEndpoint("/swagger/v1/swagger.json", "My API V1");
|
|
}); */
|
|
|
|
app.Run();
|