diff --git a/static/js/panels/connect.js b/static/js/panels/connect.js index 55cca81..ae71ec5 100644 --- a/static/js/panels/connect.js +++ b/static/js/panels/connect.js @@ -18,7 +18,13 @@ window.mcCopyCode = btn => { }; window.cnGo = v => document.querySelector(`.nav-item[data-view="${v}"]`)?.click(); -function baseUrl() { return `${location.protocol}//${location.hostname}:8080/v1`; } +// Die Engine-API spricht IMMER reines HTTP auf Port 8080 direkt am Bosgame. +// Bewusst nicht location.protocol uebernehmen: wer MC hinter einem Reverse-Proxy +// (NPM) ueber https:// aufruft, bekaeme sonst eine kaputte https-:8080-URL. +function baseUrl() { return `http://${location.hostname}:8080/v1`; } +function isLanIp(h) { return /^\d{1,3}(\.\d{1,3}){3}$/.test(h); } +// true, wenn MC offenbar ueber einen Proxy/Namen aufgerufen wird (nicht direkt per IP). +function behindProxy() { return location.protocol === "https:" || !isLanIp(location.hostname); } function models() { return S?.models || []; } // Fertige opencode.json fuer einen OpenAI-kompatiblen Provider auf llama-swap. @@ -43,6 +49,30 @@ ${modelMap} }`; } +// Fertige Zed-settings.json fuer einen OpenAI-kompatiblen Provider auf llama-swap. +// Vision-Modelle bekommen capabilities.images=true, sonst sieht Zed sie als reine Text-Modelle. +function zedConfig(url) { + const ms = models(); + const list = ms.length ? ms : [{ name: "coder" }]; + const entries = list.map(m => { + const img = (m.meta?.caps || []).some(c => /Bild|Vision/i.test(c)); + const caps = img ? `, "capabilities": { "tools": true, "images": true }` : ""; + return ` { "name": "${m.name}", "display_name": "${m.name}", "max_tokens": 32768${caps} }`; + }).join(",\n"); + return `{ + "language_models": { + "openai_compatible": { + "bosgame": { + "api_url": "${url}", + "available_models": [ +${entries} + ] + } + } + } +}`; +} + function field(label, value) { return `
@@ -77,6 +107,11 @@ function render() {

Verbindung zur Engine

Alle Tools nutzen diese OpenAI-kompatible Adresse. Das Auto-Swapping lädt das passende Modell je Anfrage automatisch.
${field("Basis-URL (OpenAI-kompatibel)", url)} + ${behindProxy() ? `
+ Du rufst Mission Control offenbar über einen Proxy/Namen auf (NPM o.ä.). Die Engine-API läuft aber + direkt am Bosgame auf Port 8080 ohne HTTPS — ein Proxy davor stört nur. Trag in deinen Tools die + rohe LAN-Adresse ein: http://<Bosgame-IP>:8080/v1 (z.B. http://192.168.178.151:8080/v1), + nicht den HTTPS-Namen.
` : ""}
@@ -90,7 +125,8 @@ function render() {

Empfohlene Tools (Juni 2026)

Diese verbinden sich nahtlos mit deinem Stack. Einrichtungs-Configs findest du darunter.
- ${toolRow("OpenCode", "Beliebtester Open-Source-Coding-Agent (MIT) — Terminal, Desktop & IDE.", "https://opencode.ai", "Empfohlen")} + ${toolRow("Zed", "Schneller nativer Editor mit eingebautem KI-Agenten — verbindet sich direkt mit deinem Stack.", "https://zed.dev", "Empfohlen")} + ${toolRow("OpenCode", "Open-Source-Coding-Agent (MIT) — Terminal, Desktop & IDE. Gute Alternative.", "https://opencode.ai")} ${toolRow("Cline", "Bestes Erlebnis in VS Code, Bring-Your-Own-Key, Mensch-im-Loop.", "https://cline.bot")} ${toolRow("Continue.dev", "Feinkörnige Kontrolle + bestes MCP-Ökosystem für Werkzeuge.", "https://continue.dev")}
Diese Tools sind Agenten: Sie lassen dein Modell selbst Dateien ändern und Befehle ausführen. @@ -100,6 +136,22 @@ function render() {
+ Zed — settings.json (empfohlen) +
+

Zed konfigurierst du über seine settings.json (in Zed: Cmd/Strg + ,). Füge diesen Block ein — + er meldet deine Modelle als eigenen Anbieter „bosgame" an:

+
+ +
${esc(zedConfig(url))}
+
+

API-Key: Zed speichert Keys nicht in der settings.json. Öffne den + Agent-Panel → Anbieter bosgame → trag irgendeinen Wert ein (z.B. local) — llama-swap prüft ihn nicht. + Alternativ als Umgebungsvariable BOSGAME_API_KEY=local.

+
Danach im Agent-Panel oben das Modell bosgame / ${esc(firstModel)} wählen. + Das Auto-Swapping lädt das passende Modell selbst. ${behindProxy() ? "Achtung: in api_url die LAN-IP des Bosgame nutzen (siehe Warnung oben), nicht den Proxy-Namen." : ""}
+
+
+
OpenCode — Config-Datei (JSON)

OpenCode richtest du nicht über Felder ein, sondern über eine Config-Datei. Lege sie hier an: