← All source files

V18 / 8d896b8a86e5

ScenarioBoundOperations.cs

Lilith/Core/Scenarios/ScenarioBoundOperations.cs

Changed in this version
CS
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);
    }
}