Program/Program.cscsharp

Documentation

Program

Console host for the Version 1 Lilith chat session.

Program.cs

  • Sets UTF-8 console output and Lilith.exe window title.
  • Subscribes Logger output to the terminal (including progress lines).
  • BootAsync then loops on user input until exit or slash commands.
using System;using System.Text;using System.Threading.Tasks;using Agent.Core.Logging;using LilithAgent = Lilith.Agent;namespace LilithConsole{    partial class Program    {        static async Task Main(string[] args)        {            Console.OutputEncoding = Encoding.UTF8;            string model = Environment.GetEnvironmentVariable("LILITH_MODEL") ?? "gemma4";            Console.Title = Environment.GetEnvironmentVariable("GENESIS_TEST_WINDOW_TITLE")                ?? $"Lilith — {model} Chat";            var credentials = new LilithAgent.LilithCredentials(Model: model);            Action<LogEntry> onLog = entry =>            {                entry.Type.Handle(                    onWrite: () => Console.Write(entry.Description),                    onWriteLine: () => Console.WriteLine(entry.Description),                    onProgress: () =>                    {                        int width = Math.Max(Console.WindowWidth - 1, 40);                        string text = entry.Description.Length >= width                            ? entry.Description[..width]                            : entry.Description.PadRight(width);                        Console.Write($"\r{text}");                    });            };            var lilith = new LilithAgent.Lilith(onLog, credentials);            await lilith.BootAsync(startServerIfNotRunning: true);            bool running = true;            while (running)            {                lilith.Logger.Write("Input", "You: ", LogColors.Green);                string? input = Console.ReadLine()?.Trim();                if (string.IsNullOrEmpty(input))                {                    continue;                }                running = await lilith.HandleInputAsync(input);            }            lilith.SaveConversation();            lilith.Logger.WriteLine("System", "Goodbye.", LogColors.Cyan);        }    }}