mirror of https://github.com/microsoft/autogen.git
Simplify publish events in agent (#4093)
* simplify publishing imessage contracts use new api complete adoption remove unused project more delete more delete * rename methods * formatting * Add task type that are messages to enable multi-modal tasks. (#4091) * Add task type that are messages to enable multi-modal tasks. * fix test --------- Co-authored-by: Eric Zhu <ekzhu@users.noreply.github.com>
This commit is contained in:
parent
5fa38b0166
commit
621b17ebbe
|
@ -84,8 +84,6 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.AutoGen.Abstracti
|
||||||
EndProject
|
EndProject
|
||||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.AutoGen.Extensions.SemanticKernel", "src\Microsoft.AutoGen\Extensions\SemanticKernel\Microsoft.AutoGen.Extensions.SemanticKernel.csproj", "{952827D4-8D4C-4327-AE4D-E8D25811EF35}"
|
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.AutoGen.Extensions.SemanticKernel", "src\Microsoft.AutoGen\Extensions\SemanticKernel\Microsoft.AutoGen.Extensions.SemanticKernel.csproj", "{952827D4-8D4C-4327-AE4D-E8D25811EF35}"
|
||||||
EndProject
|
EndProject
|
||||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.AutoGen.Extensions.CloudEvents", "src\Microsoft.AutoGen\Extensions\CloudEvents\Microsoft.AutoGen.Extensions.CloudEvents.csproj", "{21C9EC49-E848-4EAE-932F-0862D44F7A80}"
|
|
||||||
EndProject
|
|
||||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.AutoGen.Runtime", "src\Microsoft.AutoGen\Runtime\Microsoft.AutoGen.Runtime.csproj", "{A905E29A-7110-497F-ADC5-2CE2A148FEA0}"
|
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.AutoGen.Runtime", "src\Microsoft.AutoGen\Runtime\Microsoft.AutoGen.Runtime.csproj", "{A905E29A-7110-497F-ADC5-2CE2A148FEA0}"
|
||||||
EndProject
|
EndProject
|
||||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.AutoGen.ServiceDefaults", "src\Microsoft.AutoGen\ServiceDefaults\Microsoft.AutoGen.ServiceDefaults.csproj", "{D7E9D90B-5595-4E72-A90A-6DE20D9AB7AE}"
|
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.AutoGen.ServiceDefaults", "src\Microsoft.AutoGen\ServiceDefaults\Microsoft.AutoGen.ServiceDefaults.csproj", "{D7E9D90B-5595-4E72-A90A-6DE20D9AB7AE}"
|
||||||
|
@ -266,10 +264,6 @@ Global
|
||||||
{952827D4-8D4C-4327-AE4D-E8D25811EF35}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
{952827D4-8D4C-4327-AE4D-E8D25811EF35}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
{952827D4-8D4C-4327-AE4D-E8D25811EF35}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
{952827D4-8D4C-4327-AE4D-E8D25811EF35}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
{952827D4-8D4C-4327-AE4D-E8D25811EF35}.Release|Any CPU.Build.0 = Release|Any CPU
|
{952827D4-8D4C-4327-AE4D-E8D25811EF35}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
{21C9EC49-E848-4EAE-932F-0862D44F7A80}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
|
||||||
{21C9EC49-E848-4EAE-932F-0862D44F7A80}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
|
||||||
{21C9EC49-E848-4EAE-932F-0862D44F7A80}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
|
||||||
{21C9EC49-E848-4EAE-932F-0862D44F7A80}.Release|Any CPU.Build.0 = Release|Any CPU
|
|
||||||
{A905E29A-7110-497F-ADC5-2CE2A148FEA0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
{A905E29A-7110-497F-ADC5-2CE2A148FEA0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
{A905E29A-7110-497F-ADC5-2CE2A148FEA0}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
{A905E29A-7110-497F-ADC5-2CE2A148FEA0}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
{A905E29A-7110-497F-ADC5-2CE2A148FEA0}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
{A905E29A-7110-497F-ADC5-2CE2A148FEA0}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
|
@ -391,7 +385,6 @@ Global
|
||||||
{FD87BD33-4616-460B-AC85-A412BA08BB78} = {18BF8DD7-0585-48BF-8F97-AD333080CE06}
|
{FD87BD33-4616-460B-AC85-A412BA08BB78} = {18BF8DD7-0585-48BF-8F97-AD333080CE06}
|
||||||
{E0C991D9-0DB8-471C-ADC9-5FB16E2A0106} = {18BF8DD7-0585-48BF-8F97-AD333080CE06}
|
{E0C991D9-0DB8-471C-ADC9-5FB16E2A0106} = {18BF8DD7-0585-48BF-8F97-AD333080CE06}
|
||||||
{952827D4-8D4C-4327-AE4D-E8D25811EF35} = {18BF8DD7-0585-48BF-8F97-AD333080CE06}
|
{952827D4-8D4C-4327-AE4D-E8D25811EF35} = {18BF8DD7-0585-48BF-8F97-AD333080CE06}
|
||||||
{21C9EC49-E848-4EAE-932F-0862D44F7A80} = {18BF8DD7-0585-48BF-8F97-AD333080CE06}
|
|
||||||
{A905E29A-7110-497F-ADC5-2CE2A148FEA0} = {18BF8DD7-0585-48BF-8F97-AD333080CE06}
|
{A905E29A-7110-497F-ADC5-2CE2A148FEA0} = {18BF8DD7-0585-48BF-8F97-AD333080CE06}
|
||||||
{D7E9D90B-5595-4E72-A90A-6DE20D9AB7AE} = {18BF8DD7-0585-48BF-8F97-AD333080CE06}
|
{D7E9D90B-5595-4E72-A90A-6DE20D9AB7AE} = {18BF8DD7-0585-48BF-8F97-AD333080CE06}
|
||||||
{668726B9-77BC-45CF-B576-0F0773BF1615} = {686480D7-8FEC-4ED3-9C5D-CEBE1057A7ED}
|
{668726B9-77BC-45CF-B576-0F0773BF1615} = {686480D7-8FEC-4ED3-9C5D-CEBE1057A7ED}
|
||||||
|
|
|
@ -20,16 +20,10 @@ public class HelloAIAgent(
|
||||||
{
|
{
|
||||||
var prompt = "Please write a limerick greeting someone with the name " + item.Message;
|
var prompt = "Please write a limerick greeting someone with the name " + item.Message;
|
||||||
var response = await client.CompleteAsync(prompt);
|
var response = await client.CompleteAsync(prompt);
|
||||||
var evt = new Output
|
var evt = new Output { Message = response.Message.Text };
|
||||||
{
|
await PublishMessageAsync(evt).ConfigureAwait(false);
|
||||||
Message = response.Message.Text
|
|
||||||
}.ToCloudEvent(this.AgentId.Key);
|
var goodbye = new ConversationClosed { UserId = this.AgentId.Key, UserMessage = "Goodbye" };
|
||||||
await PublishEvent(evt).ConfigureAwait(false);
|
await PublishMessageAsync(goodbye).ConfigureAwait(false);
|
||||||
var goodbye = new ConversationClosed
|
|
||||||
{
|
|
||||||
UserId = this.AgentId.Key,
|
|
||||||
UserMessage = "Goodbye"
|
|
||||||
}.ToCloudEvent(this.AgentId.Key);
|
|
||||||
await PublishEvent(goodbye).ConfigureAwait(false);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -46,14 +46,14 @@ namespace Hello
|
||||||
var evt = new Output
|
var evt = new Output
|
||||||
{
|
{
|
||||||
Message = response
|
Message = response
|
||||||
}.ToCloudEvent(this.AgentId.Key);
|
};
|
||||||
await PublishEvent(evt).ConfigureAwait(false);
|
await PublishMessageAsync(evt).ConfigureAwait(false);
|
||||||
var goodbye = new ConversationClosed
|
var goodbye = new ConversationClosed
|
||||||
{
|
{
|
||||||
UserId = this.AgentId.Key,
|
UserId = this.AgentId.Key,
|
||||||
UserMessage = "Goodbye"
|
UserMessage = "Goodbye"
|
||||||
}.ToCloudEvent(this.AgentId.Key);
|
};
|
||||||
await PublishEvent(goodbye).ConfigureAwait(false);
|
await PublishMessageAsync(goodbye).ConfigureAwait(false);
|
||||||
}
|
}
|
||||||
public async Task Handle(ConversationClosed item)
|
public async Task Handle(ConversationClosed item)
|
||||||
{
|
{
|
||||||
|
@ -61,8 +61,8 @@ namespace Hello
|
||||||
var evt = new Output
|
var evt = new Output
|
||||||
{
|
{
|
||||||
Message = goodbye
|
Message = goodbye
|
||||||
}.ToCloudEvent(this.AgentId.Key);
|
};
|
||||||
await PublishEvent(evt).ConfigureAwait(false);
|
await PublishMessageAsync(evt).ConfigureAwait(false);
|
||||||
//sleep30 seconds
|
//sleep30 seconds
|
||||||
await Task.Delay(30000).ConfigureAwait(false);
|
await Task.Delay(30000).ConfigureAwait(false);
|
||||||
await AgentsApp.ShutdownAsync().ConfigureAwait(false);
|
await AgentsApp.ShutdownAsync().ConfigureAwait(false);
|
||||||
|
|
|
@ -37,17 +37,14 @@ namespace Hello
|
||||||
public async Task Handle(NewMessageReceived item)
|
public async Task Handle(NewMessageReceived item)
|
||||||
{
|
{
|
||||||
var response = await SayHello(item.Message).ConfigureAwait(false);
|
var response = await SayHello(item.Message).ConfigureAwait(false);
|
||||||
var evt = new Output
|
var evt = new Output { Message = response };
|
||||||
{
|
await PublishMessageAsync(evt).ConfigureAwait(false);
|
||||||
Message = response
|
|
||||||
}.ToCloudEvent(this.AgentId.Key);
|
|
||||||
await PublishEvent(evt).ConfigureAwait(false);
|
|
||||||
var goodbye = new ConversationClosed
|
var goodbye = new ConversationClosed
|
||||||
{
|
{
|
||||||
UserId = this.AgentId.Key,
|
UserId = this.AgentId.Key,
|
||||||
UserMessage = "Goodbye"
|
UserMessage = "Goodbye"
|
||||||
}.ToCloudEvent(this.AgentId.Key);
|
};
|
||||||
await PublishEvent(goodbye).ConfigureAwait(false);
|
await PublishMessageAsync(goodbye).ConfigureAwait(false);
|
||||||
}
|
}
|
||||||
public async Task Handle(ConversationClosed item)
|
public async Task Handle(ConversationClosed item)
|
||||||
{
|
{
|
||||||
|
@ -55,8 +52,8 @@ namespace Hello
|
||||||
var evt = new Output
|
var evt = new Output
|
||||||
{
|
{
|
||||||
Message = goodbye
|
Message = goodbye
|
||||||
}.ToCloudEvent(this.AgentId.Key);
|
};
|
||||||
await PublishEvent(evt).ConfigureAwait(false);
|
await PublishMessageAsync(evt).ConfigureAwait(false);
|
||||||
|
|
||||||
// Signal shutdown.
|
// Signal shutdown.
|
||||||
hostApplicationLifetime.StopApplication();
|
hostApplicationLifetime.StopApplication();
|
||||||
|
|
|
@ -31,20 +31,20 @@ namespace Hello
|
||||||
var evt = new Output
|
var evt = new Output
|
||||||
{
|
{
|
||||||
Message = response
|
Message = response
|
||||||
}.ToCloudEvent(this.AgentId.Key);
|
};
|
||||||
var entry = "We said hello to " + item.Message;
|
var entry = "We said hello to " + item.Message;
|
||||||
await Store(new AgentState
|
await Store(new AgentState
|
||||||
{
|
{
|
||||||
AgentId = this.AgentId,
|
AgentId = this.AgentId,
|
||||||
TextData = entry
|
TextData = entry
|
||||||
}).ConfigureAwait(false);
|
}).ConfigureAwait(false);
|
||||||
await PublishEvent(evt).ConfigureAwait(false);
|
await PublishMessageAsync(evt).ConfigureAwait(false);
|
||||||
var goodbye = new ConversationClosed
|
var goodbye = new ConversationClosed
|
||||||
{
|
{
|
||||||
UserId = this.AgentId.Key,
|
UserId = this.AgentId.Key,
|
||||||
UserMessage = "Goodbye"
|
UserMessage = "Goodbye"
|
||||||
}.ToCloudEvent(this.AgentId.Key);
|
};
|
||||||
await PublishEvent(goodbye).ConfigureAwait(false);
|
await PublishMessageAsync(goodbye).ConfigureAwait(false);
|
||||||
}
|
}
|
||||||
public async Task Handle(ConversationClosed item)
|
public async Task Handle(ConversationClosed item)
|
||||||
{
|
{
|
||||||
|
@ -54,8 +54,8 @@ namespace Hello
|
||||||
var evt = new Output
|
var evt = new Output
|
||||||
{
|
{
|
||||||
Message = goodbye
|
Message = goodbye
|
||||||
}.ToCloudEvent(this.AgentId.Key);
|
};
|
||||||
await PublishEvent(evt).ConfigureAwait(false);
|
await PublishMessageAsync(evt).ConfigureAwait(false);
|
||||||
//sleep
|
//sleep
|
||||||
await Task.Delay(10000).ConfigureAwait(false);
|
await Task.Delay(10000).ConfigureAwait(false);
|
||||||
await AgentsApp.ShutdownAsync().ConfigureAwait(false);
|
await AgentsApp.ShutdownAsync().ConfigureAwait(false);
|
||||||
|
|
|
@ -24,8 +24,8 @@ public class Dev(IAgentContext context, Kernel kernel, ISemanticTextMemory memor
|
||||||
Repo = item.Repo,
|
Repo = item.Repo,
|
||||||
IssueNumber = item.IssueNumber,
|
IssueNumber = item.IssueNumber,
|
||||||
Code = code
|
Code = code
|
||||||
}.ToCloudEvent(this.AgentId.Key);
|
};
|
||||||
await PublishEvent(evt);
|
await PublishMessageAsync(evt);
|
||||||
}
|
}
|
||||||
|
|
||||||
public async Task Handle(CodeChainClosed item)
|
public async Task Handle(CodeChainClosed item)
|
||||||
|
@ -35,8 +35,8 @@ public class Dev(IAgentContext context, Kernel kernel, ISemanticTextMemory memor
|
||||||
var evt = new CodeCreated
|
var evt = new CodeCreated
|
||||||
{
|
{
|
||||||
Code = lastCode
|
Code = lastCode
|
||||||
}.ToCloudEvent(this.AgentId.Key);
|
};
|
||||||
await PublishEvent(evt);
|
await PublishMessageAsync(evt);
|
||||||
}
|
}
|
||||||
|
|
||||||
public async Task<string> GenerateCode(string ask)
|
public async Task<string> GenerateCode(string ask)
|
||||||
|
|
|
@ -25,8 +25,8 @@ public class DeveloperLead(IAgentContext context, Kernel kernel, ISemanticTextMe
|
||||||
Repo = item.Repo,
|
Repo = item.Repo,
|
||||||
IssueNumber = item.IssueNumber,
|
IssueNumber = item.IssueNumber,
|
||||||
Plan = plan
|
Plan = plan
|
||||||
}.ToCloudEvent(this.AgentId.Key);
|
};
|
||||||
await PublishEvent(evt);
|
await PublishMessageAsync(evt);
|
||||||
}
|
}
|
||||||
|
|
||||||
public async Task Handle(DevPlanChainClosed item)
|
public async Task Handle(DevPlanChainClosed item)
|
||||||
|
@ -36,8 +36,8 @@ public class DeveloperLead(IAgentContext context, Kernel kernel, ISemanticTextMe
|
||||||
var evt = new DevPlanCreated
|
var evt = new DevPlanCreated
|
||||||
{
|
{
|
||||||
Plan = lastPlan
|
Plan = lastPlan
|
||||||
}.ToCloudEvent(this.AgentId.Key);
|
};
|
||||||
await PublishEvent(evt);
|
await PublishMessageAsync(evt);
|
||||||
}
|
}
|
||||||
public async Task<string> CreatePlan(string ask)
|
public async Task<string> CreatePlan(string ask)
|
||||||
{
|
{
|
||||||
|
|
|
@ -22,8 +22,8 @@ public class ProductManager(IAgentContext context, Kernel kernel, ISemanticTextM
|
||||||
var evt = new ReadmeCreated
|
var evt = new ReadmeCreated
|
||||||
{
|
{
|
||||||
Readme = lastReadme
|
Readme = lastReadme
|
||||||
}.ToCloudEvent(this.AgentId.Key);
|
};
|
||||||
await PublishEvent(evt);
|
await PublishMessageAsync(evt);
|
||||||
}
|
}
|
||||||
|
|
||||||
public async Task Handle(ReadmeRequested item)
|
public async Task Handle(ReadmeRequested item)
|
||||||
|
@ -35,8 +35,8 @@ public class ProductManager(IAgentContext context, Kernel kernel, ISemanticTextM
|
||||||
Org = item.Org,
|
Org = item.Org,
|
||||||
Repo = item.Repo,
|
Repo = item.Repo,
|
||||||
IssueNumber = item.IssueNumber
|
IssueNumber = item.IssueNumber
|
||||||
}.ToCloudEvent(this.AgentId.Key);
|
};
|
||||||
await PublishEvent(evt);
|
await PublishMessageAsync(evt);
|
||||||
}
|
}
|
||||||
|
|
||||||
public async Task<string> CreateReadme(string ask)
|
public async Task<string> CreateReadme(string ask)
|
||||||
|
|
|
@ -20,7 +20,7 @@ public class AzureGenie(IAgentContext context, Kernel kernel, ISemanticTextMemor
|
||||||
// TODO: Not sure we need to store the files if we use ACA Sessions
|
// TODO: Not sure we need to store the files if we use ACA Sessions
|
||||||
// //var data = item.ToData();
|
// //var data = item.ToData();
|
||||||
// // await Store(data["org"], data["repo"], data.TryParseLong("parentNumber"), data.TryParseLong("issueNumber"), "readme", "md", "output", data["readme"]);
|
// // await Store(data["org"], data["repo"], data.TryParseLong("parentNumber"), data.TryParseLong("issueNumber"), "readme", "md", "output", data["readme"]);
|
||||||
// await PublishEvent(new Event
|
// await PublishEventAsync(new Event
|
||||||
// {
|
// {
|
||||||
// Namespace = item.Namespace,
|
// Namespace = item.Namespace,
|
||||||
// Type = nameof(EventTypes.ReadmeStored),
|
// Type = nameof(EventTypes.ReadmeStored),
|
||||||
|
@ -36,7 +36,7 @@ public class AzureGenie(IAgentContext context, Kernel kernel, ISemanticTextMemor
|
||||||
// //var data = item.ToData();
|
// //var data = item.ToData();
|
||||||
// // await Store(data["org"], data["repo"], data.TryParseLong("parentNumber"), data.TryParseLong("issueNumber"), "run", "sh", "output", data["code"]);
|
// // await Store(data["org"], data["repo"], data.TryParseLong("parentNumber"), data.TryParseLong("issueNumber"), "run", "sh", "output", data["code"]);
|
||||||
// // await RunInSandbox(data["org"], data["repo"], data.TryParseLong("parentNumber"), data.TryParseLong("issueNumber"));
|
// // await RunInSandbox(data["org"], data["repo"], data.TryParseLong("parentNumber"), data.TryParseLong("issueNumber"));
|
||||||
// await PublishEvent(new Event
|
// await PublishEventAsync(new Event
|
||||||
// {
|
// {
|
||||||
// Namespace = item.Namespace,
|
// Namespace = item.Namespace,
|
||||||
// Type = nameof(EventTypes.SandboxRunCreated),
|
// Type = nameof(EventTypes.SandboxRunCreated),
|
||||||
|
|
|
@ -50,7 +50,7 @@
|
||||||
// if (await _azService.IsSandboxCompleted(sandboxId))
|
// if (await _azService.IsSandboxCompleted(sandboxId))
|
||||||
// {
|
// {
|
||||||
// await _azService.DeleteSandbox(sandboxId);
|
// await _azService.DeleteSandbox(sandboxId);
|
||||||
// await PublishEvent(new Event
|
// await PublishEventAsync(new Event
|
||||||
// {
|
// {
|
||||||
// Namespace = this.GetPrimaryKeyString(),
|
// Namespace = this.GetPrimaryKeyString(),
|
||||||
// Type = nameof(GithubFlowEventType.SandboxRunFinished),
|
// Type = nameof(GithubFlowEventType.SandboxRunFinished),
|
||||||
|
|
|
@ -17,5 +17,5 @@ public interface IAgentBase
|
||||||
void ReceiveMessage(Message message);
|
void ReceiveMessage(Message message);
|
||||||
Task Store(AgentState state);
|
Task Store(AgentState state);
|
||||||
Task<T> Read<T>(AgentId agentId) where T : IMessage, new();
|
Task<T> Read<T>(AgentId agentId) where T : IMessage, new();
|
||||||
ValueTask PublishEvent(CloudEvent item);
|
ValueTask PublishEventAsync(CloudEvent item, CancellationToken token = default);
|
||||||
}
|
}
|
||||||
|
|
|
@ -197,9 +197,16 @@ public abstract class AgentBase : IAgentBase, IHandle
|
||||||
return await completion.Task.ConfigureAwait(false);
|
return await completion.Task.ConfigureAwait(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
public async ValueTask PublishEvent(CloudEvent item)
|
public async ValueTask PublishMessageAsync<T>(T message, string? source = null, CancellationToken token = default) where T : IMessage
|
||||||
{
|
{
|
||||||
var activity = s_source.StartActivity($"PublishEvent '{item.Type}'", ActivityKind.Client, Activity.Current?.Context ?? default);
|
var src = string.IsNullOrWhiteSpace(source) ? this.AgentId.Key : source;
|
||||||
|
var evt = message.ToCloudEvent(src);
|
||||||
|
await PublishEventAsync(evt, token).ConfigureAwait(false);
|
||||||
|
}
|
||||||
|
|
||||||
|
public async ValueTask PublishEventAsync(CloudEvent item, CancellationToken token = default)
|
||||||
|
{
|
||||||
|
var activity = s_source.StartActivity($"PublishEventAsync '{item.Type}'", ActivityKind.Client, Activity.Current?.Context ?? default);
|
||||||
activity?.SetTag("peer.service", $"{item.Type}/{item.Source}");
|
activity?.SetTag("peer.service", $"{item.Type}/{item.Source}");
|
||||||
|
|
||||||
// TODO: fix activity
|
// TODO: fix activity
|
||||||
|
|
|
@ -12,7 +12,7 @@ public sealed class AgentWorker(IAgentWorkerRuntime runtime, DistributedContextP
|
||||||
[FromKeyedServices("EventTypes")] EventTypes eventTypes, ILogger<AgentBase> logger)
|
[FromKeyedServices("EventTypes")] EventTypes eventTypes, ILogger<AgentBase> logger)
|
||||||
: AgentBase(new AgentContext(new AgentId("client", Guid.NewGuid().ToString()), runtime, logger, distributedContextPropagator), eventTypes)
|
: AgentBase(new AgentContext(new AgentId("client", Guid.NewGuid().ToString()), runtime, logger, distributedContextPropagator), eventTypes)
|
||||||
{
|
{
|
||||||
public async ValueTask PublishEventAsync(CloudEvent evt) => await PublishEvent(evt);
|
public async ValueTask PublishEventAsync(CloudEvent evt) => await base.PublishEventAsync(evt);
|
||||||
|
|
||||||
public async ValueTask PublishEventAsync(string topic, IMessage evt)
|
public async ValueTask PublishEventAsync(string topic, IMessage evt)
|
||||||
{
|
{
|
||||||
|
|
|
@ -27,8 +27,8 @@ public abstract class ConsoleAgent : IOAgent,
|
||||||
var evt = new InputProcessed
|
var evt = new InputProcessed
|
||||||
{
|
{
|
||||||
Route = _route
|
Route = _route
|
||||||
}.ToCloudEvent(this.AgentId.Key);
|
};
|
||||||
await PublishEvent(evt);
|
await PublishMessageAsync(evt);
|
||||||
}
|
}
|
||||||
|
|
||||||
public override async Task Handle(Output item)
|
public override async Task Handle(Output item)
|
||||||
|
@ -40,8 +40,8 @@ public abstract class ConsoleAgent : IOAgent,
|
||||||
var evt = new OutputWritten
|
var evt = new OutputWritten
|
||||||
{
|
{
|
||||||
Route = _route
|
Route = _route
|
||||||
}.ToCloudEvent(this.AgentId.Key);
|
};
|
||||||
await PublishEvent(evt);
|
await PublishMessageAsync(evt);
|
||||||
}
|
}
|
||||||
|
|
||||||
public override Task<string> ProcessInput(string message)
|
public override Task<string> ProcessInput(string message)
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
// Copyright (c) Microsoft Corporation. All rights reserved.
|
// Copyright (c) Microsoft Corporation. All rights reserved.
|
||||||
// IHandleConsole.cs
|
// IHandleConsole.cs
|
||||||
|
|
||||||
|
using Google.Protobuf;
|
||||||
using Microsoft.AutoGen.Abstractions;
|
using Microsoft.AutoGen.Abstractions;
|
||||||
|
|
||||||
namespace Microsoft.AutoGen.Agents;
|
namespace Microsoft.AutoGen.Agents;
|
||||||
|
@ -9,7 +10,7 @@ public interface IHandleConsole : IHandle<Output>, IHandle<Input>
|
||||||
{
|
{
|
||||||
string Route { get; }
|
string Route { get; }
|
||||||
AgentId AgentId { get; }
|
AgentId AgentId { get; }
|
||||||
ValueTask PublishEvent(CloudEvent item);
|
ValueTask PublishMessageAsync<T>(T message, string? source = null, CancellationToken token = default) where T : IMessage;
|
||||||
|
|
||||||
async Task IHandle<Output>.Handle(Output item)
|
async Task IHandle<Output>.Handle(Output item)
|
||||||
{
|
{
|
||||||
|
@ -20,8 +21,8 @@ public interface IHandleConsole : IHandle<Output>, IHandle<Input>
|
||||||
var evt = new OutputWritten
|
var evt = new OutputWritten
|
||||||
{
|
{
|
||||||
Route = "console"
|
Route = "console"
|
||||||
}.ToCloudEvent(AgentId.Key);
|
};
|
||||||
await PublishEvent(evt);
|
await PublishMessageAsync(evt);
|
||||||
}
|
}
|
||||||
async Task IHandle<Input>.Handle(Input item)
|
async Task IHandle<Input>.Handle(Input item)
|
||||||
{
|
{
|
||||||
|
@ -33,8 +34,8 @@ public interface IHandleConsole : IHandle<Output>, IHandle<Input>
|
||||||
var evt = new InputProcessed
|
var evt = new InputProcessed
|
||||||
{
|
{
|
||||||
Route = "console"
|
Route = "console"
|
||||||
}.ToCloudEvent(AgentId.Key);
|
};
|
||||||
await PublishEvent(evt);
|
await PublishMessageAsync(evt);
|
||||||
}
|
}
|
||||||
static Task ProcessOutput(string message)
|
static Task ProcessOutput(string message)
|
||||||
{
|
{
|
||||||
|
|
|
@ -29,8 +29,8 @@ public abstract class FileAgent(
|
||||||
var err = new IOError
|
var err = new IOError
|
||||||
{
|
{
|
||||||
Message = errorMessage
|
Message = errorMessage
|
||||||
}.ToCloudEvent(this.AgentId.Key);
|
};
|
||||||
await PublishEvent(err);
|
await PublishMessageAsync(err);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
string content;
|
string content;
|
||||||
|
@ -42,8 +42,8 @@ public abstract class FileAgent(
|
||||||
var evt = new InputProcessed
|
var evt = new InputProcessed
|
||||||
{
|
{
|
||||||
Route = _route
|
Route = _route
|
||||||
}.ToCloudEvent(this.AgentId.Key);
|
};
|
||||||
await PublishEvent(evt);
|
await PublishMessageAsync(evt);
|
||||||
}
|
}
|
||||||
public override async Task Handle(Output item)
|
public override async Task Handle(Output item)
|
||||||
{
|
{
|
||||||
|
@ -54,16 +54,16 @@ public abstract class FileAgent(
|
||||||
var evt = new OutputWritten
|
var evt = new OutputWritten
|
||||||
{
|
{
|
||||||
Route = _route
|
Route = _route
|
||||||
}.ToCloudEvent(this.AgentId.Key);
|
};
|
||||||
await PublishEvent(evt);
|
await PublishMessageAsync(evt);
|
||||||
}
|
}
|
||||||
public override async Task<string> ProcessInput(string message)
|
public override async Task<string> ProcessInput(string message)
|
||||||
{
|
{
|
||||||
var evt = new InputProcessed
|
var evt = new InputProcessed
|
||||||
{
|
{
|
||||||
Route = _route,
|
Route = _route,
|
||||||
}.ToCloudEvent(this.AgentId.Key);
|
};
|
||||||
await PublishEvent(evt);
|
await PublishMessageAsync(evt);
|
||||||
return message;
|
return message;
|
||||||
}
|
}
|
||||||
public override Task ProcessOutput(string message)
|
public override Task ProcessOutput(string message)
|
||||||
|
|
|
@ -17,8 +17,8 @@ public abstract class IOAgent : AgentBase
|
||||||
var evt = new InputProcessed
|
var evt = new InputProcessed
|
||||||
{
|
{
|
||||||
Route = _route
|
Route = _route
|
||||||
}.ToCloudEvent(this.AgentId.Key);
|
};
|
||||||
await PublishEvent(evt);
|
await PublishMessageAsync(evt);
|
||||||
}
|
}
|
||||||
|
|
||||||
public virtual async Task Handle(Output item)
|
public virtual async Task Handle(Output item)
|
||||||
|
@ -26,8 +26,8 @@ public abstract class IOAgent : AgentBase
|
||||||
var evt = new OutputWritten
|
var evt = new OutputWritten
|
||||||
{
|
{
|
||||||
Route = _route
|
Route = _route
|
||||||
}.ToCloudEvent(this.AgentId.Key);
|
};
|
||||||
await PublishEvent(evt);
|
await PublishMessageAsync(evt);
|
||||||
}
|
}
|
||||||
|
|
||||||
public abstract Task ProcessInput(string message);
|
public abstract Task ProcessInput(string message);
|
||||||
|
|
|
@ -61,8 +61,8 @@ public abstract class WebAPIAgent : IOAgent,
|
||||||
var evt = new InputProcessed
|
var evt = new InputProcessed
|
||||||
{
|
{
|
||||||
Route = _route
|
Route = _route
|
||||||
}.ToCloudEvent(this.AgentId.Key);
|
};
|
||||||
await PublishEvent(evt);
|
await PublishMessageAsync(evt);
|
||||||
}
|
}
|
||||||
|
|
||||||
public override async Task Handle(Output item)
|
public override async Task Handle(Output item)
|
||||||
|
@ -71,8 +71,8 @@ public abstract class WebAPIAgent : IOAgent,
|
||||||
var evt = new OutputWritten
|
var evt = new OutputWritten
|
||||||
{
|
{
|
||||||
Route = _route
|
Route = _route
|
||||||
}.ToCloudEvent(this.AgentId.Key);
|
};
|
||||||
await PublishEvent(evt);
|
await PublishMessageAsync(evt);
|
||||||
}
|
}
|
||||||
|
|
||||||
public override Task<string> ProcessInput(string message)
|
public override Task<string> ProcessInput(string message)
|
||||||
|
|
|
@ -1,30 +0,0 @@
|
||||||
// Copyright (c) Microsoft Corporation. All rights reserved.
|
|
||||||
// CloudEventExtensions.cs
|
|
||||||
|
|
||||||
using Google.Protobuf;
|
|
||||||
using Google.Protobuf.WellKnownTypes;
|
|
||||||
using Microsoft.AutoGen.Abstractions;
|
|
||||||
|
|
||||||
namespace Microsoft.AutoGen.Runtime;
|
|
||||||
|
|
||||||
public static class CloudEventExtensions
|
|
||||||
|
|
||||||
{
|
|
||||||
public static CloudEvent ToCloudEvent<T>(this T message, string source) where T : IMessage
|
|
||||||
{
|
|
||||||
return new CloudEvent
|
|
||||||
{
|
|
||||||
ProtoData = Any.Pack(message),
|
|
||||||
Type = message.Descriptor.FullName,
|
|
||||||
Source = source,
|
|
||||||
Id = Guid.NewGuid().ToString()
|
|
||||||
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
public static T FromCloudEvent<T>(this CloudEvent cloudEvent) where T : IMessage, new()
|
|
||||||
{
|
|
||||||
return cloudEvent.ProtoData.Unpack<T>();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
|
@ -1,17 +0,0 @@
|
||||||
<Project Sdk="Microsoft.NET.Sdk">
|
|
||||||
|
|
||||||
<ItemGroup>
|
|
||||||
<ProjectReference Include="../../Agents/Microsoft.AutoGen.Agents.csproj" />
|
|
||||||
</ItemGroup>
|
|
||||||
|
|
||||||
<PropertyGroup>
|
|
||||||
<TargetFramework>net8.0</TargetFramework>
|
|
||||||
<ImplicitUsings>enable</ImplicitUsings>
|
|
||||||
<Nullable>enable</Nullable>
|
|
||||||
</PropertyGroup>
|
|
||||||
|
|
||||||
<ItemGroup>
|
|
||||||
<PackageReference Include="Google.Protobuf" />
|
|
||||||
</ItemGroup>
|
|
||||||
|
|
||||||
</Project>
|
|
|
@ -1,9 +0,0 @@
|
||||||
syntax = "proto3";
|
|
||||||
|
|
||||||
package devteam;
|
|
||||||
|
|
||||||
option csharp_namespace = "Microsoft.AutoGen.Extensions.CloudEvents";
|
|
||||||
|
|
||||||
message CloudEventsState {
|
|
||||||
string cloudevent = 1;
|
|
||||||
}
|
|
Loading…
Reference in New Issue