feat: Desktop-Gateway als dritte Leitung im Verbinden-Tab
- Backend: check_health() prüft jetzt auch Desktop-Gateway (GET /api/status :9119) - Frontend: ConnectHealth-Typ erweitert, dritte Status-Zeile mit emerald-Theme - Frontend-Build: neu gebaut mit Vite (Hash-Dateinamen aktualisiert)
This commit is contained in:
@@ -69,7 +69,7 @@ def build_snippets(host: str = DEFAULT_HOST,
|
|||||||
f"#\n"\
|
f"#\n"\
|
||||||
f"# 3. Token im Browser-Login einfügen — fertig.\n"\
|
f"# 3. Token im Browser-Login einfügen — fertig.\n"\
|
||||||
f"#\n"\
|
f"#\n"\
|
||||||
f"# Modelle im Hermes Desktop: {PRIMARY_MODEL} (bauen), heavy (denken), vision (Bilder)."\
|
f"# Modelle im Hermes Desktop: {PRIMARY_MODEL} (bauen), heavy (denken), vision (Bilder)."
|
||||||
)
|
)
|
||||||
|
|
||||||
# Claude Code spricht das Anthropic-Format; der Gateway ist OpenAI-kompatibel und
|
# Claude Code spricht das Anthropic-Format; der Gateway ist OpenAI-kompatibel und
|
||||||
@@ -124,8 +124,9 @@ def build_snippets(host: str = DEFAULT_HOST,
|
|||||||
|
|
||||||
|
|
||||||
def check_health() -> dict:
|
def check_health() -> dict:
|
||||||
"""Live-Erreichbarkeit der beiden Leitungen, aus Sicht der Box:
|
"""Live-Erreichbarkeit der drei Leitungen, aus Sicht der Box:
|
||||||
Leitung 1 = Gateway/Engine (llama-swap), Leitung 2 = Gedächtnis-Sidecar (Mem0)."""
|
Leitung 1 = Gateway/Engine (llama-swap), Leitung 2 = Gedächtnis-Sidecar (Mem0),
|
||||||
|
Leitung 3 = Desktop-Gateway (Hermes-Builtin-UI)."""
|
||||||
gateway = {"ok": False, "detail": "nicht erreichbar"}
|
gateway = {"ok": False, "detail": "nicht erreichbar"}
|
||||||
try:
|
try:
|
||||||
with httpx.Client(timeout=3.0) as c:
|
with httpx.Client(timeout=3.0) as c:
|
||||||
@@ -147,4 +148,13 @@ def check_health() -> dict:
|
|||||||
except Exception: # noqa: BLE001
|
except Exception: # noqa: BLE001
|
||||||
pass
|
pass
|
||||||
|
|
||||||
return {"gateway": gateway, "memory": memory}
|
desktop_gateway = {"ok": False, "detail": "nicht erreichbar"}
|
||||||
|
try:
|
||||||
|
with httpx.Client(timeout=3.0) as c:
|
||||||
|
r = c.get("http://127.0.0.1:9119/api/status")
|
||||||
|
desktop_gateway = ({"ok": True, "detail": "bereit"} if r.status_code == 200
|
||||||
|
else {"ok": False, "detail": f"HTTP {r.status_code}"})
|
||||||
|
except Exception: # noqa: BLE001
|
||||||
|
pass
|
||||||
|
|
||||||
|
return {"gateway": gateway, "memory": memory, "desktop_gateway": desktop_gateway}
|
||||||
|
|||||||
+1
-1
File diff suppressed because one or more lines are too long
+130
-130
File diff suppressed because one or more lines are too long
+1
-1
File diff suppressed because one or more lines are too long
Vendored
+2
-2
@@ -7,8 +7,8 @@
|
|||||||
<link rel="manifest" href="/manifest.webmanifest" />
|
<link rel="manifest" href="/manifest.webmanifest" />
|
||||||
<link rel="icon" type="image/svg+xml" href="/favicon.svg" />
|
<link rel="icon" type="image/svg+xml" href="/favicon.svg" />
|
||||||
<title>Mission Control 2.0</title>
|
<title>Mission Control 2.0</title>
|
||||||
<script type="module" crossorigin src="/assets/index-BHaK9XZl.js"></script>
|
<script type="module" crossorigin src="/assets/index-ByMZe5CM.js"></script>
|
||||||
<link rel="stylesheet" crossorigin href="/assets/index-C7eDy97i.css">
|
<link rel="stylesheet" crossorigin href="/assets/index-DndftNG6.css">
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<div id="root"></div>
|
<div id="root"></div>
|
||||||
|
|||||||
@@ -338,6 +338,7 @@ export interface ConnectLine {
|
|||||||
export interface ConnectHealth {
|
export interface ConnectHealth {
|
||||||
gateway: ConnectLine
|
gateway: ConnectLine
|
||||||
memory: ConnectLine
|
memory: ConnectLine
|
||||||
|
desktop_gateway: ConnectLine
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface Memory {
|
export interface Memory {
|
||||||
|
|||||||
@@ -111,8 +111,8 @@ export function ConnectView() {
|
|||||||
Verbindung & Integration
|
Verbindung & Integration
|
||||||
</h1>
|
</h1>
|
||||||
<p className="text-sm text-muted-foreground">
|
<p className="text-sm text-muted-foreground">
|
||||||
Binde deinen lokalen Agenten an die Box an — über <span className="text-foreground">zwei getrennte Leitungen</span>:
|
Binde deinen lokalen Agenten an die Box an — über <span className="text-foreground">drei getrennte Leitungen</span>:
|
||||||
das Modell (Gateway) und das geteilte Gedächtnis (MCP).
|
das Modell (Gateway), das geteilte Gedächtnis (MCP) und das Desktop-Gateway.
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@@ -158,11 +158,27 @@ export function ConnectView() {
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
{/* Leitung 3 — Desktop-Gateway */}
|
||||||
|
<div className="flex items-center gap-3">
|
||||||
|
<ArrowRight className="h-4 w-4 text-muted-foreground shrink-0" />
|
||||||
|
<div className="flex-1 rounded-xl border border-emerald-500/25 bg-emerald-500/5 px-3.5 py-2.5">
|
||||||
|
<div className="flex items-center justify-between gap-2">
|
||||||
|
<div className="flex items-center gap-2 text-xs font-semibold text-emerald-300">
|
||||||
|
<Laptop className="h-3.5 w-3.5" /> Leitung 3 — Desktop-Gateway
|
||||||
|
</div>
|
||||||
|
<StatusBadge line={health?.desktop_gateway} loading={healthLoading} />
|
||||||
|
</div>
|
||||||
|
<div className="mt-1 text-[11px] font-mono text-emerald-300/80">
|
||||||
|
Desktop-Gateway · :9119 · API-Status
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<p className="mt-3.5 text-[11px] text-muted-foreground leading-relaxed">
|
<p className="mt-3.5 text-[11px] text-muted-foreground leading-relaxed">
|
||||||
Der Gateway liefert <span className="text-foreground">nur das LLM</span>. Das geteilte Gedächtnis läuft über einen
|
Der Gateway liefert <span className="text-foreground">nur das LLM</span>. Das geteilte Gedächtnis läuft über einen
|
||||||
<span className="text-foreground"> eigenen MCP-Server</span> — beide werden unabhängig eingerichtet.
|
<span className="text-foreground"> eigenen MCP-Server</span> und das Desktop-Gateway bietet die Agenten-Schnittstelle —
|
||||||
|
alle drei Leitungen werden unabhängig eingerichtet.
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user