V18 / 8d896b8a86e5
ScenarioBoundOperations.cs
Lilith/Core/Scenarios/ScenarioBoundOperations.cs
Changed in this versionCS
using Lilith.Core.Personality;
using Lilith.Core.WebResearch;
namespace Lilith.Core.Scenarios;
internal static class ScenarioBoundOperations
{
internal static bool Known(string name) => name is "addon_craft_operation" or "image_candidates_operation" || Lilith.Core.Projects.WebsitePreviewOperations.Names.Contains(name) || Lilith.Core.Kanban.KanbanOperations.Names.Contains(name) || Lilith.Core.HomeAutomation.HomeOperations.Names.Contains(name) || Lilith.Core.Messaging.MessageOperations.Names.Contains(name) || Lilith.Core.Email.EmailOperations.Names.Contains(name) || WebOperations.Names.Contains(name) || PersonalityOperations.Names.Contains(name) || Lilith.Core.Calendar.CalendarOperations.Names.Contains(name) || Lilith.Core.Projects.ProjectOperations.Names.Contains(name) || Lilith.Core.Projects.ProjectEditingOperations.Names.Contains(name);
internal static Task<string> ExecuteAsync(ProviderClient parent, ScenarioRunPlan plan, string name,
IReadOnlyDictionary<string, string> inputs, CancellationToken ct)
{
ct.ThrowIfCancellationRequested();
if(name=="addon_craft_operation")return Lilith.Core.Addons.AddonCrafting.Run(parent,inputs,ct);
if(name=="image_candidates_operation")return Lilith.Core.Addons.WallpaperSupport.SearchAsync(inputs.GetValueOrDefault("query",""),int.Parse(inputs.GetValueOrDefault("count","5")),ct);
if (Lilith.Core.Projects.WebsitePreviewOperations.Names.Contains(name)) return Lilith.Core.Projects.WebsitePreviewOperations.ExecuteAsync(parent,name,inputs,ct);
if (Lilith.Core.Kanban.KanbanOperations.Names.Contains(name)) return Lilith.Core.Kanban.KanbanOperations.ExecuteAsync(parent, name, inputs, ct);
if (Lilith.Core.HomeAutomation.HomeOperations.Names.Contains(name)) return Lilith.Core.HomeAutomation.HomeOperations.ExecuteAsync(parent,name,inputs,ct);
if (Lilith.Core.Messaging.MessageOperations.Names.Contains(name)) return Lilith.Core.Messaging.MessageOperations.ExecuteAsync(parent, name, inputs, ct);
if (Lilith.Core.Email.EmailOperations.Names.Contains(name)) return Lilith.Core.Email.EmailOperations.ExecuteAsync(parent, name, inputs, ct);
if (Lilith.Core.Projects.ProjectEditingOperations.Names.Contains(name)) return Lilith.Core.Projects.ProjectEditingOperations.ExecuteAsync(parent, name, inputs, ct);
if (Lilith.Core.Projects.ProjectOperations.Names.Contains(name)) return Lilith.Core.Projects.ProjectOperations.ExecuteAsync(plan.Projects, name, inputs, ct);
if (Lilith.Core.Calendar.CalendarOperations.Names.Contains(name)) return Task.FromResult(Lilith.Core.Calendar.CalendarOperations.Execute(parent, name, inputs));
return PersonalityOperations.Names.Contains(name)
? Task.FromResult(PersonalityOperations.Execute(parent, name, inputs))
: WebOperations.ExecuteAsync(plan.Browser, name, inputs, ct);
}
}