ScenarioSystem/ScenarioChildRunner.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.

namespace Lilith.Agent.ScenarioSystem;public static class ScenarioChildRunner{    /// <summary>    /// Runs a scenario XML file inside this process (child Lilith).    /// Returns a single-line SCENARIO_REPORT for the main Lilith to consume.    /// </summary>    public static string RunScenarioFile(string scenarioName, Lilith lilith)    {        string xml = ScenarioFileService.LoadScenarioXml(scenarioName);        var scenario = ScenarioXmlParser.Parse(xml);        var branch = lilith.GetScenarioBranch();        var result = ScenarioExecutor.RunChatStepsWithChecksAsync(branch, scenario).GetAwaiter().GetResult();        if (!result.Ok)        {            return $"SCENARIO_REPORT: FAIL ({result.ScenarioId}) {SanitizeOneLine(result.Summary)} TRACE={SanitizeOneLine(result.Trace)}";        }        string summary = string.IsNullOrWhiteSpace(result.Summary) ? "Completed." : result.Summary;        return $"SCENARIO_REPORT: PASS ({result.ScenarioId}) SUMMARY={SanitizeOneLine(summary)} TRACE={SanitizeOneLine(result.Trace)}";    }    private static string SanitizeOneLine(string text)    {        string s = (text ?? "").Replace("\r", " ").Replace("\n", " ").Trim();        while (s.Contains("  ", StringComparison.Ordinal))            s = s.Replace("  ", " ");        return s.Length > 500 ? s[..500] + "…" : s;    }}