ScenarioSystem/ScenarioFileService.cscsharp

Documentation

Lilith (Version 3)

Version 3 Lilith agent library. Entry point: Lilith.cs with partials under Boot/, Chat/, Ollama/, and SystemPrompt/.

Build the solution or run python ../Build-v3.py from this tree.

using System.Text;namespace Lilith.Agent.ScenarioSystem;internal static class ScenarioFileService{    public static IReadOnlyList<string> ListScenarioFiles()    {        string dir = ScenarioPaths.GetLoadDir();        if (!Directory.Exists(dir))            return [];        return Directory.GetFiles(dir, "Scenario_*.xml", SearchOption.TopDirectoryOnly)            .Select(Path.GetFileName)            .Where(x => !string.IsNullOrWhiteSpace(x))            .OrderBy(x => x, StringComparer.OrdinalIgnoreCase)            .ToList()!;    }    public static bool TryLoadScenarioXml(string scenarioName, out string xml)    {        string path = ScenarioPaths.ScenarioFilePath(scenarioName);        if (!File.Exists(path))        {            xml = "";            return false;        }        xml = File.ReadAllText(path, Encoding.UTF8);        return true;    }    public static string LoadScenarioXml(string scenarioName)    {        if (!TryLoadScenarioXml(scenarioName, out string xml))            throw new FileNotFoundException($"Scenario not found: {ScenarioPaths.ScenarioFilePath(scenarioName)}");        return xml;    }    public static string SaveScenarioXml(string scenarioName, string xml)    {        string path = ScenarioPaths.ScenarioFilePath(scenarioName);        Directory.CreateDirectory(Path.GetDirectoryName(path)!);        File.WriteAllText(path, xml, Encoding.UTF8);        return path;    }}