mirror of
https://github.com/microsoft/autogen.git
synced 2026-04-20 03:02:16 -04:00
rewrite WIP
This commit is contained in:
@@ -0,0 +1,50 @@
|
||||
using Orleans.Concurrency;
|
||||
using Orleans.Runtime;
|
||||
using Orleans.Streams;
|
||||
using Orleans.Timers;
|
||||
|
||||
namespace Microsoft.AI.DevTeam;
|
||||
|
||||
[StatelessWorker]
|
||||
[ImplicitStreamSubscription("AzureGenie")]
|
||||
public class AzureGenie : Grain, IGrainWithStringKey
|
||||
{
|
||||
private readonly IManageAzure _azureService;
|
||||
|
||||
public AzureGenie( IManageAzure azureService)
|
||||
{
|
||||
_azureService = azureService;
|
||||
}
|
||||
|
||||
public async override Task OnActivateAsync(CancellationToken cancellationToken)
|
||||
{
|
||||
var streamProvider = this.GetStreamProvider("StreamProvider");
|
||||
var streamId = StreamId.Create("AzureGenie", this.GetPrimaryKeyString());
|
||||
var stream = streamProvider.GetStream<Event>(streamId);
|
||||
|
||||
await stream.SubscribeAsync(HandleEvent);
|
||||
}
|
||||
|
||||
// -> AzureOps
|
||||
// -> ReadmeFinished
|
||||
// -> store
|
||||
// -> CodeFinished
|
||||
// -> store
|
||||
// -> run in sandbox
|
||||
public async Task HandleEvent(Event item, StreamSequenceToken? token)
|
||||
{
|
||||
switch (item.Type)
|
||||
{
|
||||
case EventType.NewAsk:
|
||||
break;
|
||||
case EventType.NewAskReadme:
|
||||
|
||||
break;
|
||||
case EventType.ChainClosed:
|
||||
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -117,7 +117,11 @@ public class DeveloperLead : SemanticPersona
|
||||
var response = JsonSerializer.Deserialize<DevLeadPlanResponse>(plan);
|
||||
return Task.FromResult(response);
|
||||
}
|
||||
|
||||
// -> DevLead
|
||||
// -> DevPlanRequested
|
||||
// -> DevPlanGenerated
|
||||
// -> ChainClosed
|
||||
// -> DevPlanFinished
|
||||
public async override Task HandleEvent(Event item, StreamSequenceToken? token)
|
||||
{
|
||||
switch (item.Type)
|
||||
|
||||
@@ -71,7 +71,11 @@ public class Dev : SemanticPersona
|
||||
return default;
|
||||
}
|
||||
}
|
||||
|
||||
// -> Dev
|
||||
// -> CodeGenerationRequested
|
||||
// -> CodeGenerated
|
||||
// -> ChainClosed
|
||||
// -> CodeFinished
|
||||
public async override Task HandleEvent(Event item, StreamSequenceToken? token)
|
||||
{
|
||||
switch (item.Type)
|
||||
|
||||
@@ -25,12 +25,30 @@ public class Hubber : Grain, IGrainWithStringKey
|
||||
await stream.SubscribeAsync(HandleEvent);
|
||||
}
|
||||
|
||||
// -> Hubber
|
||||
// -> NewAsk
|
||||
// -> create PM issue
|
||||
// -> create DevLead issue
|
||||
// -> ReadmeGenerated
|
||||
// -> post comment
|
||||
// -> DevPlanGenerated
|
||||
// -> post comment
|
||||
// -> DevPlanFinished
|
||||
// -> for each step, create Dev issue
|
||||
// -> CodeGenerated
|
||||
// -> post comment
|
||||
public async Task HandleEvent(Event item, StreamSequenceToken? token)
|
||||
{
|
||||
switch (item.Type)
|
||||
{
|
||||
case EventType.NewAsk:
|
||||
|
||||
var org = item.Data["org"];
|
||||
var repo = item.Data["repo"];
|
||||
var input = item.Message;
|
||||
var parentNumber = long.Parse(item.Data["parentNumber"]);
|
||||
var pmIssue = await CreateIssue(org, repo, input, "", parentNumber);
|
||||
var devLeadIssue = await CreateIssue(org, repo, input, "", parentNumber);
|
||||
|
||||
break;
|
||||
case EventType.NewAskReadme:
|
||||
|
||||
@@ -42,16 +60,10 @@ public class Hubber : Grain, IGrainWithStringKey
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
// GithubAgent
|
||||
// -> create issue
|
||||
// -> comment to issue
|
||||
// -> create branch
|
||||
// -> create PR
|
||||
// -> commit to branch
|
||||
public async Task CreateIssue()
|
||||
|
||||
public async Task<NewIssueResponse> CreateIssue(string org, string repo, string input, string function, long parentNumber)
|
||||
{
|
||||
// await _ghService.CreateIssue();
|
||||
return await _ghService.CreateIssue(org, repo,input,function,parentNumber);
|
||||
}
|
||||
public async Task PostComment(string org, string repo,long issueNumber, string comment )
|
||||
{
|
||||
|
||||
@@ -37,6 +37,12 @@ public class ProductManager : SemanticPersona
|
||||
await stream.SubscribeAsync(HandleEvent);
|
||||
}
|
||||
|
||||
|
||||
// -> PM
|
||||
// -> ReadmeRequested
|
||||
// -> ReadmeGenerated
|
||||
// -> ChainClosed
|
||||
// -> ReadmeFinished
|
||||
public async override Task HandleEvent(Event item, StreamSequenceToken? token)
|
||||
{
|
||||
switch (item.Type)
|
||||
@@ -61,7 +67,7 @@ public class ProductManager : SemanticPersona
|
||||
//TODO: Create branch and PR
|
||||
var function = $"{nameof(PM)}.{nameof(PM.Readme)}";
|
||||
var pmIssue = await _ghService.CreateIssue(org, repo, input, function, parentNumber);
|
||||
|
||||
|
||||
_state.State.ParentIssueNumber = parentNumber;
|
||||
_state.State.CommentId = pmIssue.CommentId;
|
||||
await _state.WriteStateAsync();
|
||||
|
||||
@@ -24,4 +24,8 @@
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\..\libs\Microsoft.AI.DevTeam.Skills\Microsoft.AI.DevTeam.Skills.csproj" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<Folder Include="Actors/AzureGenie/" />
|
||||
</ItemGroup>
|
||||
</Project>
|
||||
|
||||
Reference in New Issue
Block a user