0c69c491e5
Backend (Wahrheit reparieren): - gateway_reachable() prueft jetzt den ECHTEN mc2-gateway (:9010 via V1_UPSTREAM) statt nur die Engine - toter Denkpfad war in Health/Cockpit unsichtbar - /api/system/services vollstaendig: + LLM-Gateway, + Steuerpult, + Waechter (mc2-steward via is-active); scope-Feld (user/system); mc2-gateway/mc2-steward in die Restart-Allowlist - Connect-Health Leitung 1 prueft den Client-Pfad (V1_UPSTREAM statt llama-swap) - agent_status liefert pc_executor_url (UI zeigte hartcodierte IP/Ports) - SSE-Endlosschleife gefixt: /api/auftragsbuch schrieb announce-branches bei JEDEM Aufruf neu -> mtime-Bump -> invalidate -> Refetch im 3-s-Takt je Client; jetzt nur noch bei echter Aenderung Frontend (ein Datenweg): - SystemDrawer komplett auf React-Query-Hooks (vorher eigenes 3-s-setInterval auf dieselben Endpunkte inkl. teurem Updates-Check); Dienste-Liste = Backend-Antwort (SERVICES-UI-Kopie geloescht); useDialog statt Eigenbau; fmtBytes statt Duplikat - useLucyHealth: Dienst-Matching per systemd-unit statt Namensfragment; Gateway- Reparatur zielt auf mc2-gateway; neuer Waechter-Check; Backend-tot => ehrliches rotes Verdikt statt eingefrorener letzter Stand (auch Sidebar) - Toter Code raus: views/models/Cockpit.tsx (908 Z.) + RoleAssignModal + Placeholder; LaneEditor (Routing-Policy) + WarmSetManager damit ZURUECK im UI als Tab "Routing & Warm-Set" im Modell-Manager - Cockpit: blockierte Ideen-Karten erscheinen in "Braucht dich" + Kachel-Hint; Verbinden-Kachel zeigt 3 Leitungen live statt hartem "Zed" - Maschinenraum: ehrliches "frei" (reale Belegung) + eigenes KV-Cache-Segment - AgentView: Ports/PC-Adresse aus der API; Guide lehrt Lanes chat/coding - queries.ts: useModels nutzt SSE-relax; Chronik-Limit im Query-Key; useJobs/useZeitmaschine mit enabled-Schalter Verifiziert: tsc+vite gruen, Backend-Smoke beide Gateway-Modi, UI live gegen die Box (Cockpit/Werkbank/Routing-Tab/Drawer rendern mit Echtdaten). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
57 lines
2.2 KiB
Python
57 lines
2.2 KiB
Python
"""
|
|
Routing-Gateway-Status. Seit UMBAU v3 P1 bedient der EIGENSTÄNDIGE mc2-gateway-
|
|
Prozess den /v1-Pfad (MC_V1_UPSTREAM gesetzt, MC2 reicht nur roh durch); ohne
|
|
V1_UPSTREAM gilt der alte eingebaute Modus (MC2 serviert /v1 selbst).
|
|
"""
|
|
|
|
import httpx
|
|
|
|
from config import PORT, V1_UPSTREAM
|
|
from services.llamaswap import engine_reachable
|
|
from services.routing_policy import load_policy
|
|
|
|
|
|
def routing_summary() -> dict:
|
|
p = load_policy()
|
|
coding_default = p["coder_lite"] or p["coder"]
|
|
return {
|
|
"mode": "gateway (eigener Prozess)" if V1_UPSTREAM else "builtin",
|
|
"endpoint": f":{PORT}/v1 (OpenAI-kompatibel)",
|
|
# Virtuelle Lanes, die Clients/IDEs als „Modell" wählen (Router pickt das echte Alias).
|
|
"lanes": [
|
|
{
|
|
"name": "chat",
|
|
"aka": "auto",
|
|
"target": f"{p['fast']} ↔ {p['heavy']} (nach Komplexität)",
|
|
"threshold_chars": p["heavy_chars"],
|
|
},
|
|
{
|
|
"name": "coding",
|
|
"target": f"{coding_default} ↔ {p['coder']} (Eskalation)",
|
|
"escalate_chars": p["coding_escalate_chars"],
|
|
},
|
|
],
|
|
# Rückwärtskompatible Flach-Liste (alte UI/Clients).
|
|
"routes": [
|
|
{"name": "chat", "target": f"{p['fast']} ↔ {p['heavy']} (nach Komplexität)"},
|
|
{"name": "coding", "target": f"{coding_default} ↔ {p['coder']} (Eskalation)"},
|
|
{"name": "<alias>", "target": "llama-swap-Passthrough (lädt bei Bedarf)"},
|
|
],
|
|
"heavy_threshold_chars": p["heavy_chars"],
|
|
"fallbacks": [],
|
|
"context_window_fallbacks": [],
|
|
}
|
|
|
|
|
|
def gateway_reachable() -> bool:
|
|
"""Erreichbarkeit des ECHTEN Denkpfads. Mit V1_UPSTREAM ist das der eigenständige
|
|
mc2-gateway-Prozess (:9010) — vorher meldete diese Funktion nur die Engine, d. h.
|
|
ein toter Gateway blieb in Health/Diensten/Cockpit unsichtbar (Review 15.07.)."""
|
|
if V1_UPSTREAM:
|
|
try:
|
|
return httpx.get(f"{V1_UPSTREAM}/v1/models", timeout=2.0).status_code == 200
|
|
except Exception: # noqa: BLE001
|
|
return False
|
|
# Eingebauter Modus: der Gateway lebt in MC selbst und proxyt llama-swap.
|
|
return engine_reachable()
|