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; }}
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.