pi_coder_2/tests/config.test.mjs
dschlueter dc64a0eb4a fix: settings.json überschreibt Default-Modell des Nutzers nicht mehr
Nur noch `packages: ["npm:pi-llama-cpp"]` im Repo — defaultProvider,
defaultModel, enabledModels und lastChangelogVersion werden entfernt.
Diese sind Nutzer-Präferenzen und dürfen nicht durch deploy-pi-config.sh
überschrieben werden (das lokale coding_model als Default verhinderte, dass
andere Extensions wie research-web.ts ein geeignetes Modell für Tool-Calling nutzen).

Das Coding-Workflow ist davon unberührt: selectRole() setzt das Modell
für /coder, /judge, /optimize etc. immer explizit.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-15 06:34:50 +02:00

47 lines
2.1 KiB
JavaScript

// 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");
});