mirror of
https://github.com/microsoft/autogen.git
synced 2025-12-25 05:59:19 +00:00
streaming rewrite WIP
This commit is contained in:
parent
b72442a58f
commit
125608e372
@ -67,6 +67,7 @@ builder.Host.UseOrleans(siloBuilder =>
|
||||
.AddMemoryStreams("StreamProvider")
|
||||
.AddMemoryGrainStorage("PubSubStore")
|
||||
.AddMemoryGrainStorage("messages");
|
||||
siloBuilder.UseInMemoryReminderService();
|
||||
siloBuilder.UseDashboard(x => x.HostSelf = true);
|
||||
|
||||
});
|
||||
|
||||
@ -65,8 +65,6 @@ public class AgentState
|
||||
{
|
||||
public List<ChatHistoryItem> History { get; set; }
|
||||
public string Understanding { get; set; }
|
||||
public long ParentIssueNumber { get; set; }
|
||||
public int CommentId { get; set; }
|
||||
}
|
||||
|
||||
public enum ChatUserType
|
||||
|
||||
@ -50,16 +50,16 @@ public class AzureGenie : Agent
|
||||
var issueNumber = long.Parse(item.Data["issueNumber"]);
|
||||
await Store(item.Data["org"], item.Data["repo"], parentNumber, issueNumber, "run", "sh", "output", item.Message);
|
||||
await RunInSandbox(item.Data["org"], item.Data["repo"], parentNumber, issueNumber);
|
||||
// await PublishEvent(Consts.MainNamespace, this.GetPrimaryKeyString(), new Event
|
||||
// {
|
||||
// Type = EventType.CodeCreated,
|
||||
// Data = new Dictionary<string, string> {
|
||||
// { "org", item.Data["org"] },
|
||||
// { "repo", item.Data["repo"] },
|
||||
// { "issueNumber", item.Data["issueNumber"] },
|
||||
// { "parentNumber", item.Data["parentNumber"] }
|
||||
// }
|
||||
// });
|
||||
await PublishEvent(Consts.MainNamespace, this.GetPrimaryKeyString(), new Event
|
||||
{
|
||||
Type = EventType.SandboxRunCreated,
|
||||
Data = new Dictionary<string, string> {
|
||||
{ "org", item.Data["org"] },
|
||||
{ "repo", item.Data["repo"] },
|
||||
{ "issueNumber", item.Data["issueNumber"] },
|
||||
{ "parentNumber", item.Data["parentNumber"] }
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
break;
|
||||
|
||||
@ -51,8 +51,18 @@ public class Dev : AiAgent
|
||||
});
|
||||
break;
|
||||
case EventType.CodeChainClosed:
|
||||
await CloseImplementation();
|
||||
// postEvent EventType.CodeFinished
|
||||
var lastCode = _state.State.History.Last().Message;
|
||||
await PublishEvent(Consts.MainNamespace, this.GetPrimaryKeyString(), new Event {
|
||||
Type = EventType.CodeCreated,
|
||||
Data = new Dictionary<string, string> {
|
||||
{ "org", item.Data["org"] },
|
||||
{ "repo", item.Data["repo"] },
|
||||
{ "issueNumber", item.Data["issueNumber"] },
|
||||
{ "code", lastCode },
|
||||
{ "parentNumber", item.Data["parentNumber"] }
|
||||
},
|
||||
Message = lastCode
|
||||
});
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
|
||||
@ -1,25 +1,40 @@
|
||||
using Orleans.Runtime;
|
||||
using Orleans.Streams;
|
||||
using Orleans.Timers;
|
||||
|
||||
namespace Microsoft.AI.DevTeam;
|
||||
public class Sandbox : Grain, IRemindable
|
||||
[ImplicitStreamSubscription(Consts.MainNamespace)]
|
||||
public class Sandbox : Agent, IRemindable
|
||||
{
|
||||
private const string ReminderName = "SandboxRunReminder";
|
||||
private readonly IManageGithub _ghService;
|
||||
private readonly IManageAzure _azService;
|
||||
private readonly IReminderRegistry _reminderRegistry;
|
||||
private IGrainReminder? _reminder;
|
||||
|
||||
protected readonly IPersistentState<SandboxMetadata> _state;
|
||||
|
||||
public Sandbox([PersistentState("state", "messages")] IPersistentState<SandboxMetadata> state, IManageGithub ghService,
|
||||
public Sandbox([PersistentState("state", "messages")] IPersistentState<SandboxMetadata> state,
|
||||
IReminderRegistry reminderRegistry, IManageAzure azService)
|
||||
{
|
||||
_ghService = ghService;
|
||||
_reminderRegistry = reminderRegistry;
|
||||
_azService = azService;
|
||||
_state = state;
|
||||
}
|
||||
public override async Task HandleEvent(Event item, StreamSequenceToken? token)
|
||||
{
|
||||
switch(item.Type)
|
||||
{
|
||||
case EventType.SandboxRunCreated:
|
||||
var org = item.Data["org"];
|
||||
var repo = item.Data["repo"];
|
||||
var parentIssueNumber = long.Parse(item.Data["parentIssueNumber"]);
|
||||
var issueNumber = long.Parse(item.Data["issueNumber"]);
|
||||
await ScheduleCommitSandboxRun(org, repo, parentIssueNumber, issueNumber);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
public async Task ScheduleCommitSandboxRun(string org, string repo, long parentIssueNumber, long issueNumber)
|
||||
{
|
||||
await StoreState(org, repo, parentIssueNumber, issueNumber);
|
||||
@ -38,8 +53,16 @@ public class Sandbox : Grain, IRemindable
|
||||
if (await _azService.IsSandboxCompleted(sandboxId))
|
||||
{
|
||||
await _azService.DeleteSandbox(sandboxId);
|
||||
await _ghService.CommitToBranch(_state.State.Org, _state.State.Repo, _state.State.ParentIssueNumber, _state.State.IssueNumber, _state.State.RootDir, _state.State.Branch);
|
||||
await _ghService.MarkTaskComplete(_state.State.Org, _state.State.Repo, _state.State.CommentId);
|
||||
await PublishEvent(Consts.MainNamespace, this.GetPrimaryKeyString(), new Event
|
||||
{
|
||||
Type = EventType.SandboxRunFinished,
|
||||
Data = new Dictionary<string, string> {
|
||||
{ "org", _state.State.Org },
|
||||
{ "repo", _state.State.Repo },
|
||||
{ "issueNumber", _state.State.IssueNumber.ToString() },
|
||||
{ "parentIssueNumber", _state.State.ParentIssueNumber.ToString() }
|
||||
}
|
||||
});
|
||||
await Cleanup();
|
||||
}
|
||||
}
|
||||
@ -54,7 +77,7 @@ public class Sandbox : Grain, IRemindable
|
||||
_state.State.Org = org;
|
||||
_state.State.Repo = repo;
|
||||
_state.State.ParentIssueNumber = parentIssueNumber;
|
||||
// TODO: Add all of the state properties
|
||||
_state.State.IssueNumber = issueNumber;
|
||||
_state.State.IsCompleted = false;
|
||||
await _state.WriteStateAsync();
|
||||
}
|
||||
@ -66,6 +89,8 @@ public class Sandbox : Grain, IRemindable
|
||||
this.GetGrainId(), _reminder);
|
||||
await _state.WriteStateAsync();
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
@ -75,9 +100,5 @@ public class SandboxMetadata
|
||||
public string Repo { get; set; }
|
||||
public long ParentIssueNumber { get; set; }
|
||||
public long IssueNumber { get; set; }
|
||||
public string RootDir { get; set; }
|
||||
public string Branch { get; set; }
|
||||
public int CommentId { get; set; }
|
||||
|
||||
public bool IsCompleted { get; set; }
|
||||
}
|
||||
|
||||
@ -13,7 +13,6 @@ public class Event
|
||||
public enum EventType
|
||||
{
|
||||
NewAsk,
|
||||
ChainClosed,
|
||||
ReadmeChainClosed,
|
||||
CodeChainClosed,
|
||||
CodeGenerationRequested,
|
||||
@ -27,5 +26,6 @@ public enum EventType
|
||||
SandboxRunFinished,
|
||||
ReadmeCreated,
|
||||
CodeCreated,
|
||||
DevPlanCreated
|
||||
DevPlanCreated,
|
||||
SandboxRunCreated
|
||||
}
|
||||
Loading…
x
Reference in New Issue
Block a user