970e04af30
- recipes.py: Juni-2026-Modelle (Qwen3-Coder-30B-A3B, Qwen3-8B/30B, Qwen2.5-VL-7B, Qwen3-4B); nur Repo gespeichert, GGUF-Datei wird beim Installieren dynamisch aufgeloest (_pick_gguf) + UPGRADES-Map fuer Phase 3. - cookbook: 'kein GGUF' neutral statt rot + GGUF-Erklaerung (infoDot); ctx-infoDot. - connect.js: 'Empfohlene Tools (Juni 2026)' (OpenCode/Cline/Continue) + MCP-Hinweis. - HF-Token in Einstellungen -> als HF_TOKEN an Downloads/Recipe-Install durchgereicht. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
29 lines
969 B
JavaScript
29 lines
969 B
JavaScript
// api.js — zentraler Fetch-Wrapper + Token-Handling.
|
|
// Einziges Modul, das localStorage nutzt (nur fuers Token-Feld — laut Konvention ok).
|
|
|
|
let TOKEN = localStorage.getItem("mc_token") || "";
|
|
|
|
export function getToken() { return TOKEN; }
|
|
|
|
export function setToken(t) {
|
|
TOKEN = (t || "").trim();
|
|
localStorage.setItem("mc_token", TOKEN);
|
|
}
|
|
|
|
export function hdr() {
|
|
const h = { "Content-Type": "application/json" };
|
|
if (TOKEN) h["X-MC-Token"] = TOKEN;
|
|
return h;
|
|
}
|
|
|
|
// HuggingFace-Token (optional) — wird bei Downloads als HF_TOKEN mitgesendet.
|
|
export function getHfToken() { return localStorage.getItem("mc_hf_token") || ""; }
|
|
export function setHfToken(t) { localStorage.setItem("mc_hf_token", (t || "").trim()); }
|
|
|
|
export async function api(path, opts = {}) {
|
|
const r = await fetch(path, { headers: hdr(), ...opts });
|
|
const data = await r.json().catch(() => ({}));
|
|
if (!r.ok) throw new Error(data.error || ("HTTP " + r.status));
|
|
return data;
|
|
}
|