This is a C# library (not an app) — a middleware DLL connecting LLM backends to UI frontends.
See copilot-instructions.md (repo root) for structure and style guidelines that must be preserved.
- Build:
dotnet build(targetsnet10.0, single.csproj, single.sln) - Test: No test framework exists. Tests are manual static classes with a
RunAllTests()entry point (seeFiles/Tests/GbnfConverterTest.cs). Run via a throwaway console project or similar. No CI pipeline. - Lint/typecheck: No configured tooling. Standard
dotnet buildcompiler warnings are the only check.
- JSON: Always use Newtonsoft.Json (
JsonConvert,JsonConvert.DeserializeObject<T>,[JsonProperty]). Never useSystem.Text.Json. - Namespaces: Do not enforce folder-namespace matching (IDE0130 suppressed in
.editorconfig). - Naming rules: IDE1006 (naming rule violations) is suppressed — don't flag or "fix" naming that already exists.
- Nullable: enabled (
<Nullable>enable</Nullable>).
- Single project — no multi-package boundaries. All source lives under root directories:
LLM/,Adapters/,Agent/,Memory/,Personas/,Chatlog/,PromptBuilders/,SearchAPI/,Tools/,Files/,API/. - Main entrypoint:
LLM.LLMEngine(static class). Everything flows through it:Setup()→Connect()→SendMessageToBot()/SimpleQuery(). - Backend adapters in
Adapters/:KoboldCppAdapter,OpenAIAdapter,LlamaCppAdapter,LlamaSharpAdapter. Picked viaBackendAPIenum. - Persona persistence:
.agent,.brain,.logfiles inLLMSettings.DataPath("data/chars/" by default), keyed byBasePersona.UniqueName. - Plugin DLLs: Loaded at runtime via
LLMEngine.RegisterPlugin(path)orRegisterPluginsFromDirectory(dir). Scans forIAgentTask,IAgentAction<,>,IToolList,IMoodlet, andIPluginEntry.
Docs/AGENTS.md is library feature documentation about the background agent system (not an AI assistant instruction file). Keep it as-is.
- Keep public API documented (
///comments on public members). - No emojis in source or docs.
- Use
PromptInserts,BasePersona,InstructFormatfromFiles/namespace for file-format classes.