mirror of
https://github.com/microsoft/autogen.git
synced 2026-04-20 03:02:16 -04:00
streaming rewrite WIP
This commit is contained in:
@@ -1,7 +1,6 @@
|
||||
using Orleans.Concurrency;
|
||||
using Orleans.Runtime;
|
||||
using Orleans.Streams;
|
||||
using Orleans.Timers;
|
||||
|
||||
namespace Microsoft.AI.DevTeam;
|
||||
|
||||
@@ -25,26 +24,21 @@ public class AzureGenie : Grain, IGrainWithStringKey
|
||||
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:
|
||||
case EventType.ReadmeChainClosed:
|
||||
//_azureService.Store();
|
||||
break;
|
||||
case EventType.NewAskReadme:
|
||||
|
||||
break;
|
||||
case EventType.ChainClosed:
|
||||
|
||||
case EventType.CodeChainClosed:
|
||||
// _azureService.Store();
|
||||
// _azureService.RunInSandbox();
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -35,16 +35,6 @@ public class DeveloperLead : SemanticPersona
|
||||
|
||||
await stream.SubscribeAsync(HandleEvent);
|
||||
}
|
||||
|
||||
public async Task CreateIssue(string org, string repo, long parentNumber, string input)
|
||||
{
|
||||
var function = $"{nameof(DevLead)}.{nameof(DevLead.Plan)}";
|
||||
var devLeadIssue = await _ghService.CreateIssue(org, repo, input, function, parentNumber);
|
||||
|
||||
_state.State.ParentIssueNumber = parentNumber;
|
||||
_state.State.CommentId = devLeadIssue.CommentId;
|
||||
await _state.WriteStateAsync();
|
||||
}
|
||||
public async Task<string> CreatePlan(string ask)
|
||||
{
|
||||
try
|
||||
@@ -117,24 +107,18 @@ 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)
|
||||
{
|
||||
case EventType.NewAsk:
|
||||
await CreateIssue(item.Data["org"], item.Data["repo"], long.Parse(item.Data["issueNumber"]) , item.Message);
|
||||
break;
|
||||
case EventType.NewAskPlan:
|
||||
case EventType.DevPlanRequested:
|
||||
var plan = await CreatePlan(item.Message);
|
||||
await _ghService.PostComment(item.Data["org"], item.Data["repo"], long.Parse(item.Data["issueNumber"]), plan);
|
||||
// postEvent EventType.DevPlanGenerated
|
||||
break;
|
||||
case EventType.ChainClosed:
|
||||
await ClosePlan(item.Data["org"], item.Data["repo"], long.Parse(item.Data["issueNumber"]), long.Parse(item.Data["parentNumber"]));
|
||||
// postEvent EventType.DevPlanFinished
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
|
||||
@@ -27,16 +27,6 @@ public class Dev : SemanticPersona
|
||||
_logger = logger;
|
||||
_ghService = ghService;
|
||||
}
|
||||
|
||||
public async Task CreateIssue(string org, string repo, long parentNumber, string input)
|
||||
{
|
||||
var function = $"{nameof(Developer)}.{nameof(Developer.Implement)}";
|
||||
var devIssue = await _ghService.CreateIssue(org, repo, input, function, parentNumber);
|
||||
|
||||
_state.State.ParentIssueNumber = parentNumber;
|
||||
_state.State.CommentId = devIssue.CommentId;
|
||||
await _state.WriteStateAsync();
|
||||
}
|
||||
public async Task<string> GenerateCode(string ask)
|
||||
{
|
||||
try
|
||||
@@ -71,24 +61,19 @@ public class Dev : SemanticPersona
|
||||
return default;
|
||||
}
|
||||
}
|
||||
// -> Dev
|
||||
// -> CodeGenerationRequested
|
||||
// -> CodeGenerated
|
||||
// -> ChainClosed
|
||||
// -> CodeFinished
|
||||
|
||||
public async override Task HandleEvent(Event item, StreamSequenceToken? token)
|
||||
{
|
||||
switch (item.Type)
|
||||
{
|
||||
case EventType.NewAsk:
|
||||
await CreateIssue(item.Data["org"], item.Data["repo"], long.Parse(item.Data["parentNumber"]) , item.Message);
|
||||
break;
|
||||
case EventType.NewAskImplement:
|
||||
case EventType.CodeGenerationRequested:
|
||||
var code = await GenerateCode(item.Message);
|
||||
await _ghService.PostComment(item.Data["org"], item.Data["repo"], long.Parse(item.Data["issueNumber"]), code);
|
||||
// postEvent EventType.CodeGenerated
|
||||
break;
|
||||
case EventType.ChainClosed:
|
||||
await CloseImplementation();
|
||||
// postEvent EventType.CodeFinished
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
|
||||
@@ -24,19 +24,6 @@ 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)
|
||||
@@ -48,19 +35,26 @@ public class Hubber : Grain, IGrainWithStringKey
|
||||
var parentNumber = long.Parse(item.Data["parentNumber"]);
|
||||
var pmIssue = await CreateIssue(org, repo, input, "", parentNumber);
|
||||
var devLeadIssue = await CreateIssue(org, repo, input, "", parentNumber);
|
||||
|
||||
// TODO: store the mapping of parent/child?
|
||||
break;
|
||||
case EventType.NewAskReadme:
|
||||
|
||||
case EventType.ReadmeGenerated:
|
||||
// _ghService.PostComment(item.Data["org"], item.Data["repo"], long.Parse(item.Data["issueNumber"]), item.Message);
|
||||
break;
|
||||
case EventType.ChainClosed:
|
||||
|
||||
case EventType.DevPlanGenerated:
|
||||
// _ghService.PostComment(item.Data["org"], item.Data["repo"], long.Parse(item.Data["issueNumber"]), item.Message);
|
||||
break;
|
||||
case EventType.CodeGenerated:
|
||||
// _ghService.PostComment(item.Data["org"], item.Data["repo"], long.Parse(item.Data["issueNumber"]), item.Message);
|
||||
break;
|
||||
case EventType.DevPlanChainClosed:
|
||||
// for each step, create Dev issue
|
||||
//var devIssues = await CreateIssue(org, repo, input, "", parentNumber);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public async Task<NewIssueResponse> CreateIssue(string org, string repo, string input, string function, long parentNumber)
|
||||
{
|
||||
return await _ghService.CreateIssue(org, repo,input,function,parentNumber);
|
||||
|
||||
@@ -36,43 +36,23 @@ 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)
|
||||
{
|
||||
case EventType.NewAsk:
|
||||
await CreateIssue(item.Data["org"], item.Data["repo"], long.Parse(item.Data["issueNumber"]) , item.Message);
|
||||
break;
|
||||
case EventType.NewAskReadme:
|
||||
case EventType.ReadmeRequested:
|
||||
var readme = await CreateReadme(item.Message);
|
||||
await _ghService.PostComment(item.Data["org"], item.Data["repo"], long.Parse(item.Data["issueNumber"]), readme);
|
||||
// postEvent ReadmeGenerated
|
||||
break;
|
||||
case EventType.ChainClosed:
|
||||
await CloseReadme();
|
||||
// postEvent ReadmeFinished
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
public async Task CreateIssue(string org, string repo, long parentNumber, string input)
|
||||
{
|
||||
//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();
|
||||
|
||||
}
|
||||
public async Task<string> CreateReadme(string ask)
|
||||
{
|
||||
try
|
||||
|
||||
Reference in New Issue
Block a user