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); } }}
Documentation
Program
Console host for the Version 1 Lilith chat session.
Program.cs
- Sets UTF-8 console output and
Lilith.exewindow title. - Subscribes
Loggeroutput to the terminal (including progress lines). BootAsyncthen loops on user input untilexitor slash commands.