// Testet die Konfig-Invarianten der Single-Server-Architektur. // Der ursprüngliche Bug war eine Konfig-Inkonsistenz (Default zeigte auf toten Port 8002). import { test } from "node:test"; import assert from "node:assert/strict"; import { readJson, readRepoFile } from "./helpers.mjs"; const models = readJson("models.json"); const settings = readJson("settings.json"); test("models.json: Provider llama-cpp-single hat genau ein Modell coding_model auf Port 8001", () => { const p = models.providers["llama-cpp-single"]; assert.ok(p, "Provider llama-cpp-single fehlt"); assert.match(p.baseUrl, /:8001\//, "llama-cpp-single muss auf Port 8001 zeigen"); assert.deepEqual(p.models.map((m) => m.id), ["coding_model"]); }); test("models.json: tote Dual-/Alt-Provider sind entfernt", () => { for (const dead of ["llama-cpp", "llama-cpp-coder", "llama-cpp-judge"]) { assert.ok(!(dead in models.providers), `Toter Provider '${dead}' noch vorhanden`); } }); test("models.json: kein Verweis mehr auf den toten Port 8002", () => { assert.doesNotMatch(JSON.stringify(models), /:8002/); }); test("settings.json: enthält packages-Liste mit pi-llama-cpp", () => { assert.ok(Array.isArray(settings.packages), "packages-Feld fehlt oder ist kein Array"); assert.ok( settings.packages.some((p) => p.includes("pi-llama-cpp")), "npm:pi-llama-cpp fehlt in packages" ); }); test("settings.json ist valides JSON ohne überraschende Felder", () => { // Reine Smoke-Prüfung, dass die Datei parsebar bleibt und den Kern-Key hat. assert.ok("packages" in settings, "Schlüssel 'packages' fehlt in settings.json"); }); test("settings.json enthält keine Modell-Auswahl (Nutzer-Präferenz bleibt erhalten)", () => { // defaultProvider/defaultModel/enabledModels sollen nicht im Repo stehen — // sie überschreiben sonst das vom Nutzer gewählte Default-Modell (z. B. OpenRouter). assert.ok(!("defaultProvider" in settings), "defaultProvider soll nicht im Repo-settings sein"); assert.ok(!("defaultModel" in settings), "defaultModel soll nicht im Repo-settings sein"); assert.ok(!("enabledModels" in settings), "enabledModels soll nicht im Repo-settings sein"); });