feat(settings): Hermes-Gateway in den Einstellungen anzeigen und neu starten (Etappe 1: Mac-App) #355
Labels
No labels
herkunft/alpha-feedback
status
blockiert
status
zu-testen
typ
bug
typ
docs
typ
enhancement
typ
feature
typ
idea
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
iris/Iris#355
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Warum
Das Hermes-Gateway ist nach Änderungen an Plugins (MCP-Einträge, Systemprompts) oder bei Hängern neu zu starten, und Iris zeigt weder seinen Zustand noch bietet es einen Neustart an. Die Mac-App kann das Gateway intern neu starten (
HermesGatewayConfigWriter.restartGatewayAndWaitReachable), es fehlt aber jede Oberfläche. Beim ersten Chat-Durchlauf voniris-rustapp-crafterzeigte sich der Bedarf.Entscheidungen (grill-me, bestätigt)
restartGatewayAndWaitReachablemit/health-Prüfung, Zeitlimit und Fehlermeldung. Laufen Aufträge, vorher Bestätigung mit der Zahl, sonst sofort. Kein hartes Verbot, kein Auto-Neustart.HermesRunLimits.maxRunMinutesKey) zieht aus „Allgemein“ in diesen Block um (derselbe Schlüssel, der Wert bleibt). „Hide Steps“ bleibt in „Allgemein“./health,gateway.lifecycle.json, laufenden Aufträgen) ist eine kleine, testbare Einheit mit Unit-Tests.Nicht Teil
Server-Routen, Linux-Server, IrisClient, iOS, iris-web (Etappe 2); die Hermes-Logdatei im Fenster; Auto-Neustart.
PR #357 gemergt: feat(settings): Hermes-Gateway in Server & Geräte anzeigen und neu starten (#355)
http://docker:3000/iris/Iris/pulls/357
Commits:
Stand: Etappe 1 gebaut (Mac-App), nicht von Hand ausprobiert
Befund: Die Mac-App konnte das Hermes-Gateway intern neu starten (
HermesGatewayConfigWriter.restartGatewayAndWaitReachable), zeigte aber weder Zustand noch bot sie einen Knopf. Dabei fiel auf:ai.hermes.gateway(Port 8642) ist das Gateway,com.nousresearch.hermes-serve(Port 9119) nur die Hermes-Weboberfläche.Geändert:
HermesGatewayStatus.swift(neu, abhängigkeitsfrei): Zustand aus/health,gateway.lifecycle.jsonund „startet gerade“; Texte; „Neustart abgeschlossen“ = antwortet und neue PID.HermesGatewayStatusModel.swift(neu, abhängigkeitsfrei):refresh(),restart()(gesperrt beim Hochfahren, Zeitlimit 15 Min, Fehlermeldung), Aktionen kommen alsEnvironment.HermesRunWatchdog.activeRunCount(): Zahl der laufenden oder auf Freigabe wartenden Aufträge (nur von Iris registrierte).CompanionPanelView.swift: Block „Hermes-Gateway“ in „Server & Geräte“ (kompaktes Panel und abgekoppeltes Fenster) mit Zustand, Port/PID/Version/Laufzeit, Aufträgen, „Neu starten“ (Bestätigung bei laufenden Aufträgen); „Maximale Laufzeit“ aus „Allgemein“ hierher verschoben (derselbe Schlüssel).Environment.liveam Dateiende.Localizable.xcstrings: neue Texte;scripts/test-hermes-gateway-status.sh+hermes-gateway-status-tests/.Geprüft: Reine Logik und Modell mit Ersatz-Umgebung: 87 Prüfungen grün; sechs Gegenproben (PID-Wechsel ignoriert, Antwort schlägt Start nicht, Neustart beim Hochfahren erlaubt, Aufträge ohne Antwort, Zeitlimit ohne Wirkung, Exit 0 als Fehler) schlagen an. Xcode-Build des Iris-Schemas (AppleScript, ohne Neustart von Iris) erfolgreich. Echte Dateien/Antworten dieses Macs gegen die Parser gehalten:
/healthliefertstatus okund Version 0.22.4,gateway.lifecycle.jsonhatphase runningmit PID.Nicht geprüft: Die Oberfläche selbst (Aussehen, Aufklappen, Bestätigungsdialog, Knopf im abgekoppelten Fenster) und ein echter Neustart des Gateways aus dem Block. Der Build des IrisClient-Schemas (die neuen Dateien sind abhängigkeitsfrei und per
swiftcgeprüft). Ob die Zahl laufender Aufträge zu den Läufen passt, die Hermes selbst kennt (nur Iris-registrierte werden gezählt). Die Aktualisierung läuft, solange der Block aufgeklappt ist und die Ansicht lebt; ein verstecktes, aber noch aufgeklapptes Menüleisten-Panel fragt weiter alle 5 Sekunden.Grenzen: Nur dieser Mac; Linux-Server, IrisClient, iOS und iris-web folgen in #356.
Offen: Von Hand ausprobieren (Block aufklappen, Zustand prüfen, „Neu starten“ ohne und mit laufendem Auftrag, Laufzeit-Auswahl).
status/zu-testengesetzt.