Commit Graph

331 Commits

Author SHA1 Message Date
Hitonabi 15d5249458 Orchestrator-Feinschliff: drei belegte Fehlerbilder aus den Läufen vom 09.07.
1. "Auf der Box gibt es KEIN Node" war FALSCH — zwei Läufe haben dort gebaut.
   Neu: im Worktree bauen + dist mit-committen (AGENTS.md-Pflicht), danach
   package-lock.json zurücksetzen, wenn npm install es nur als Nebeneffekt
   anfasste (3 Läufe in Folge hatten lockfile-Dreck).
2. Schreibziel-Pflicht: jedes write_file/patch-Ziel muss unter /tmp/orch-<slug>/
   liegen; nie in den Live-Checkout, nie fremde Slug-Verzeichnisse recyceln
   (Doku-Lauf schrieb in ~/mission-control-v2, weil das alte Work-Dir
   wiederverwendet wurde).
3. Grosse Artefakte nie im Klartext in die Antwort — der Doku-Lauf starb am
   Output-Limit vor Kritiker-Gate und Vorschlag. Antwort = Pfade + Kurzfassung.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-09 11:13:15 +02:00
Auftragsbuch 974e81fe49 Auftragsbuch: 'orchestrator/desktop-gateway' angenommen (Ein-Klick-Gate) 2026-07-09 11:05:05 +02:00
Hitonabi 19ab42da1a 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)
2026-07-09 10:28:02 +02:00
Auftragsbuch 616518e2fc Auftragsbuch: 'wartung/doku-hermes-desktop' angenommen (Ein-Klick-Gate) 2026-07-09 10:10:59 +02:00
Hitonabi 592057c53f Doku an die Hermes-Desktop-Realität angepasst (Umbau 09.07.2026)
- BEDIENUNG.md: Bereichs-Liste auf die echten 10 Sidebar-Tabs gebracht
  (Auftragsbuch/Wissen/Chronik/Konsole fehlten komplett), Verbinden-Abschnitt
  auf Hermes Desktop/Kilo/Claude Code umgestellt (Zed/Roo abgeschafft),
  Verweis "Arbeiten = Desktop-App, MC2 = Maschinenraum".
- DISASTER_RECOVERY.md: hermes-terminal-Zeile durch Desktop-Gateway
  (hermes-builtin-ui) + Token-Drop-in + Token-Kopie ersetzt (übernimmt die
  gerettete Orchestrator-Änderung), nesquena-WebUI-Zeile durch
  Hermes-Desktop-Eintrag (PC) ersetzt, Wizard-Checkliste angepasst.
- HERMES_SETUP.md: §3 (nesquena-webui-Install, obsolet) durch "Hermes
  Desktop (PC) anbinden" ersetzt: Token-Drop-in auf der Box,
  connection.json am PC, MC2-Proxy-URL, cli-Toolset-Hinweis.

Hintergrund: Der Orchestrator-Lauf zu diesem Auftrag delegierte erstmals
echt (worker.sh plan/build), scheiterte aber an falschem Schreibziel
(Live-Checkout statt Worktree) + Output-Limit — Rest von Hand zu Ende
geführt, gerettete Änderung übernommen.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-09 10:08:43 +02:00
Auftragsbuch c0a97b1004 Auftragsbuch: 'wartung/hermes-terminal-unit-aufraeumen' angenommen (Ein-Klick-Gate) 2026-07-09 09:39:57 +02:00
Auftragsbuch e078e37a87 Auftragsbuch: 'orchestrator/hermes-desktop' angenommen (Ein-Klick-Gate) 2026-07-09 09:39:55 +02:00
Auftragsbuch 6e3696563b Auftragsbuch: 'wartung/orchestrator-selbstbau-verbot' angenommen (Ein-Klick-Gate) 2026-07-09 09:39:54 +02:00
Hitonabi b4a54304a4 Orchestrator-Härtung: "Task zu klein" ist kein Freibrief
Vorfall 09.07.2026 (Session 20260709_090725_9eebf3): Der Manager übersprang
Planung, Delegation UND das Zwei-Kritiker-Gate mit der Ansage "Overkill für
so einen kleinen Task" und baute selbst — transparent, aber ein Bruch des
Pflicht-Gates (ein Agent, der sein eigenes Werk durchwinkt). Neue Leitplanke:
kein Ermessensspielraum; der einzige erlaubte Ausweg bei zu kleinen Aufträgen
ist Abbruch ohne Code mit Verweis auf Werkstatt/Desktop. Code-liefernde Läufe
enthalten IMMER worker.sh-Belege und beide Kritiker-Verdikte.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-09 09:33:31 +02:00
Auftragsbuch 041ac70a80 package-lock.json wiederhergestellt (npm-install-Nebeneffekt, gehoert nicht zum Patch) 2026-07-09 09:24:00 +02:00
Hitonabi 5f81ae0731 Connect-Tab: Zed durch Hermes Desktop ersetzen
- Backend: zed-Eintrag → hermes_desktop mit Anleitung (Gateway-URL + Token-Pfad)
- Frontend: Default-Tab auf Hermes Desktop, Hero-Text aktualisiert
- AGENTS.md: Zed-Erwähnung entfernt
- dist: Frontend-Build aktualisiert
2026-07-09 09:14:25 +02:00
Hitonabi a3068c1b08 Aufräumen: deploy/hermes-terminal.service aus dem Repo
Der Dienst ist seit der MC2-Diät stillgelegt (deploy.sh disable --now +
Unit-Löschung, auf der Box verifiziert inactive). Die Repo-Datei blieb nur
einen Deploy-Zyklus als Schutz gegen die deploy.sh-Selbst-Reset-Falle
(das alte deploy.sh kopierte sie noch beim Annahme-Deploy). Der Zyklus ist
durch — die Datei kann weg.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-09 09:01:40 +02:00
Auftragsbuch 531a10f8e5 Auftragsbuch: 'wartung/mc2-diaet-desktop' angenommen (Ein-Klick-Gate) 2026-07-09 08:58:21 +02:00
Auftragsbuch e504037770 Auftragsbuch: 'wartung/traum-skill-hausstandard' angenommen (Ein-Klick-Gate) 2026-07-09 08:58:19 +02:00
Hitonabi 12b7e00f7d Traum: Skill-Kandidaten im /learn-Hausstandard entwerfen
Der nächtliche Traum beschreibt Skill-Kandidaten künftig gleich als
SKILL.md-Gerüst (Frontmatter name/description<=60/version + Wann nutzen /
Schritte mit echten Hermes-Tools / Belege) statt als Freitext — die
Werkstatt übernimmt beim "Beauftragen" ein fertiges Gerüst. Propose-only
bleibt unverändert (kein skill_manage im Traum, Fremdblick-Gate davor).
Schließt das offene Traum-Increment "echte Skill-Extraktion" ab, indem es
den /learn-Autorenstandard von Hermes v0.18 in den Kreislauf holt.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-09 08:55:23 +02:00
Hitonabi cb9de01feb Merge wartung/role-metadata-texte: gemeinsame dist-Basis
dist-Konflikt (Hash-Assets beider Builds) durch frischen Build aufgelöst —
damit sind BEIDE Auftragsbuch-Karten in beliebiger Reihenfolge Ein-Klick-fähig
(role-metadata zuerst = sauber; diaet enthält die Rollen-Texte mit).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-09 08:52:03 +02:00
Hitonabi d9920fba8e MC2-Diät: Hermes-Fenster-Rolle an Hermes Desktop abgegeben
Der "Hermes GUI"-Tab (iframe auf /hermes-ui/) und das Hermes-Terminal-ttyd
(:7681) entfallen — die Agent-Oberfläche ist jetzt die Hermes-Desktop-App,
die über den BESTEHENDEN MC2-Proxy /hermes-ui/ (WS inklusive) an die Box
andockt. hermes-builtin-ui (:9119) bleibt als Desktop-Gateway erhalten und
wird im Dienste-Drawer + /api/system/services erstklassig geführt (statt
hermes-terminal); Wartungs-Allowlist kann ihn jetzt neu starten.

- Frontend: Tab/View raus (nav.ts, App.tsx, TerminalView.tsx gelöscht),
  AgentView + (Legacy-)AgentStatusCard zeigen Desktop-Gateway statt ttyd,
  Dienste-Zeile hermes-terminal → hermes-builtin-ui, Versions-Zeile
  "Hermes UI" (nesquena-Karteileiche ~/hermes-webui) entfernt.
- Backend: terminal_url/terminal_reachable + HERMES_TERMINAL_* raus,
  console.py proxyt nur noch die Box-Konsole, /api/system/services führt
  hermes-builtin-ui, USER_SERVICES getauscht, hermes-webui-GitInfo raus.
- deploy.sh: legt hermes-terminal + hermes-webui idempotent still
  (disable --now + Unit-Löschung). deploy/hermes-terminal.service bleibt
  EINEN Zyklus im Repo (das laufende alte deploy.sh kopiert es noch —
  Selbst-Reset-Falle); Aufräum-Commit folgt nach dem nächsten Deploy.
- frontend/dist mit-committet (Box baut nicht selbst).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-09 08:49:40 +02:00
Hitonabi 6704de3a69 build(frontend): rebuild assets nach ROLE_METADATA-Änderung 2026-07-09 08:21:40 +02:00
Hitonabi ba238ee7bd feat(frontend): Rollen 'kritiker' und 'reranker' mit deutschen Beschreibungen
- kritiker: 'Kritisches Prüf-Hirn' (Scale-Icon)
- reranker: 'Gedächtnis-Sortierer' (Search-Icon)
- Neue Icons Scale und Search aus lucide-react importiert
2026-07-09 08:17:56 +02:00
Auftragsbuch 00000548b4 Auftragsbuch: 'wartung/annahme-probe' angenommen (Ein-Klick-Gate) 2026-07-08 21:45:59 +02:00
Hitonabi 54be1fb1f6 Zeitmaschine: kompaktes Snapshot-Datum lesbar anzeigen + Auftragsbuch-Doku
fmtSnap kannte nur Zeitstempel mit Trennzeichen (2026-07-08T...), backup.sh
schreibt aber kompakt (20260708-181136) — Datum erschien roh. Regex tolerant
gemacht. Dazu docs/AUFTRAGSBUCH.md (Funktionsweise + Leitplanken); dieser Branch
ist zugleich die erste echte E2E-Annahme-Probe des Auftragsbuchs.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-08 21:43:38 +02:00
Hitonabi 0249b2600c Merge wartung/produkt-ausbau: Auftragsbuch + Chronik/Zeitmaschine + Wissens-Wiki + Morgenlage + Erinnerungen 2026-07-08 18:42:53 +02:00
Hitonabi 1985a692bf UI: Auftragsbuch, Chronik+Zeitmaschine, Wissens-Wiki, Morgenlage, Erinnerungen
Neue Views: Auftragsbuch (Karten mit Diff/Kritiker-Kontext, Annehmen/Ablehnen mit
Fangnetz-Dialog), Chronik (Tages-Timeline aus dem Briefkasten + Zeitmaschine mit
Ein-Klick-Restore), Wissen (Vault als klickbares Wiki, [[Links]] springen).
Cockpit: Auftragsbuch-Kachel + Braucht-dich-Eintrag, Morgenlage-Karte (juengstes
Chef-Verdikt), Anstehendes (Erinnerungen anlegen/loeschen), Wissen/Chronik-Kacheln.
Gedaechtnis: Dubletten-Dialog zeigt jetzt konkret, was bleibt und was wegfaellt.
dist mitgebaut (tsc+vite gruen).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-08 18:42:22 +02:00
Hitonabi 4dc5ca7343 Auftragsbuch/Chronik/Wissen/Zeitmaschine: Backend + Annahme-Runner (Ein-Klick-Gate)
Der letzte Meter des propose-only-Kreislaufs: Vorschlags-Branches (Werkstatt/
Orchestrator) und Traum-Skill-Kandidaten werden als API sichtbar; Annehmen laeuft
als detached systemd-Unit (Merge im Worktree -> Push main -> Deploy -> Health ->
Auto-Revert bei Rot). Dazu: Chronik-Endpoint (Announce-Store als Timeline),
Wissens-Vault-Reader (read-only, Traversal-Guard), Zeitmaschine (Snapshots +
detached Restore) und Morgenlage-Spiegel im Chef-Gutachter-Feed (priority=silent).
python-multipart explizit in requirements (voice braucht es, war implizit).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-08 18:42:03 +02:00
Hitonabi 8b6dbd4aa1 Backup: Known-Good-Manifest (pip freeze, Engine-Build, Modell-Liste) im Tarball
Die requirements sind teils ungepinnt — bei einer Neuinstallation sagt
known-good/, welche Versionen nachweislich zusammen liefen: pip freeze je
venv (backend/mem0/voice), llama.cpp+llama-swap-Version, MC2+Hermes-Git-
Staende, OS/Kernel, GGUF-Bestand. Best-effort, restore.sh unberuehrt.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-08 18:02:17 +02:00
Hitonabi 2d95b0a334 Fix: Hermes-Update meldet Fehlschlag jetzt ehrlich (rc-Maskierung entfernt)
Befund 08.07.: 'hermes update' scheiterte real an einem verwaisten
.git/index.lock (git stash exit 1), aber der Job wurde GRUEN — das ';'
vor dem Dienst-Neustart (noetig, damit die gestoppte UI auch im
Fehlerfall wieder hochkommt) schluckte den Update-Fehler, und der
Postcheck bestand mit dem ALTEN Agenten. User sah 'done', Badge blieb
(125 Commits Rueckstand). Neu: RC wird festgehalten, Dienste starten
IMMER wieder, aber der Job uebernimmt den echten Update-RC und
schreibt eine Klartext-Zeile ins Log. Lock auf der Box entfernt
(Verwaisung von gestern 21:22, wie beim MC2-Repo).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-08 17:46:39 +02:00
Hitonabi f2d357c5d8 Update-all-Button: alle ausstehenden System-Updates in EINEM Job
Neuer POST /api/maintenance/update-all kettet die AUSSTEHENDEN Updates
sequenziell (Engine -> Router -> Hermes -> OS) in einem maintenance-Job.
Bewusst reine Wiederverwendung: jeder Teil ist exakt der Befehl des
Einzel-Updates inkl. dessen Backup/Postcheck/Selbst-Rollback; &&-Kette
stoppt beim ersten Fehler, Banner-Zeilen im Log zeigen den Schritt.
OS zuletzt (breitester Eingriff, braucht als einziges das Box-Passwort;
fehlt es, laufen die sudo-freien Teile trotzdem und OS wird uebersprungen).
Hermes-Befehlskette in _hermes_update_cmd() extrahiert (DRY).

UI (SystemDrawer/Updates): Button 'Alle aktualisieren (N)' neben der
Update-Suche, nur sichtbar wenn etwas aussteht, gesperrt waehrend ein
Wartungs-Job laeuft, mit Bestaetigungs-Dialog der die Kette benennt.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-08 17:36:52 +02:00
Hitonabi 49807ace7b Frontend-Rundumschlag: Health-Logik + Statuszeile an neue LLM-Landschaft angepasst
(1) useLucyHealth: ruhende Augen sind seit der Warm-Set-Diaet 07.07. der
NORMALZUSTAND (vision on-demand, Lucy waermt selbst) -> kein Dauer-warn
mehr im Cockpit ('Kleinigkeit an der Box' ohne Grund). Geladen = 'sieht
gerade zu', ruhend = ok mit ehrlicher Erklaerung + Weck-Knopf.
(2) Cockpit-Statuszeile SAGT jetzt, was der Hinweis ist (erster warn-Check
mit Label+Detail statt generischem 'Nichts Schlimmes — nur ein Hinweis';
User-Feedback 08.07.). useLucyHealth exportiert dafuer die warns-Liste.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-08 16:53:23 +02:00
Hitonabi 1b35f70dc6 UI: kritiker + reranker als erstklassige Rollen sichtbar
Die zwei neuen Rollen aus dem Rollen-Audit tauchen jetzt ueberall
ordentlich auf statt als namenlose Eintraege:
- ROLE_IDS (llamaswap + sources) um kritiker/reranker erweitert
- roleMeta.ts: 'Kritiker' (Scale, cyan — die unbestechliche Zweitmeinung)
  + 'Gedaechtnis-Sortierer' (ListOrdered, lime — Feinsortierung hinter
  dem Gedaechtnis, direkt nach embed einsortiert)
- werkbank/roleColors.ts: Speicherleisten-Farben passend dazu

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-07 22:25:20 +02:00
Hitonabi 88ec8b9121 Rollen-Ausbau: kritiker (GLM-4.7-Flash) + Gedaechtnis-Reranker (Qwen3-Reranker-0.6B)
Ergebnis des Rollen-Audits 07.07. (User: 'das beste, aber sinnvollste'):

(1) KRITIKER: fremdblick-Prosa + Chef-Gutachter-Vertretung liefen auf der
9B-Vision-GLM, obwohl es reine Text-Jobs sind. Neu: GLM-4.7-Flash
(30B-A3B, MIT, Unsloth UD-Q4_K_XL, 17,5 GB, on-demand ttl 600, Alias
'kritiker'). Gleicher Fremd-Vendor wie bisher -> die 'andere Brille'
des Kritiker-Konzepts bleibt. 4.6V-Flash bleibt scout (Bild-Jobs).

(2) RERANKER (die eine echte Rollen-Luecke): Mem0-Suche war reine
Vektor-Aehnlichkeit. Neu: Qwen3-Reranker-0.6B (q8_0, Mungert-GGUF —
Community-Konvertierungen liefern bekannt Nullscores) via llama-swap
/v1/rerank ordnet die Top-20 Kandidaten nach echter Relevanz um.
NUR die Reihenfolge aendert sich: score bleibt Vektor-Score (Hermes-
Plugin-Filter RECALL_MIN_SCORE bleibt kalibriert), rerank_score kommt
als neues Feld dazu; jeder Fehler -> lautlos Vektor-Reihenfolge.
Env: MC_RERANK_ENABLED/_URL/_MODEL/_TIMEOUT/_CANDIDATES. In brains
(verdraengungssicher, ~0,7 GB).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-07 22:21:57 +02:00
Hitonabi f88ed4e5df LLM-Landschaft: Vision raus aus dem Warm-Set (on-demand, ttl 900) + Template=Live-Abgleich
User-Entscheid 07.07.: 'Gehirn + Embedding reichen komplett aus' — die Augen
(VL-30B, ~19 GB) werden nur gebraucht, wenn Lucy auf dem Desktop an ist oder
die IDE-Lane sie ruft. Warm-Set = nur noch Qwen3.6 + embed; damit passt der
60-GB-Chef-Gutachter (gpt-oss) wieder neben das Hirn.

- llama-swap.config.yaml: VL-30B aus brains raus, ttl 0 -> 900 (15 min
  Nachlauf); Kommentare entstaubt. AUSSERDEM Template<->Live-Drift beendet:
  Template hatte coder-lite wiederbelebt (live seit 05.07. entfernt) und
  KV q4_k (lief NIE live) — beides auf Live-Wahrheit (q8_0, kein coder-lite)
  zurueckgesetzt; Qualitaet vor ein paar GB, RAM-Engpass ist mit der Diaet weg.
- warmup.sh: Default 'fast vision' -> 'fast' (Root-Kopie unter
  /usr/local/bin braucht spaeter einmal sudo cp — bis dahin waermt ein
  llama-swap-Restart vision einmalig, ttl 900 raeumt es wieder ab)
- warmer.py: Docstring auf neues Warm-Set angepasst
- Lucy-Seite (eigenes Repo): App waermt die Augen beim Start + alle 10 min,
  solange sie laeuft — Augen-Lebenszyklus == Lucy-Lebenszyklus

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-07 21:53:06 +02:00
Hitonabi d68ee60182 Chef-Gutachter-Cron (Orchestrator-Finale): gpt-oss urteilt naechtlich ueber die autonome Arbeit
User-Idee 06.07.: das grosse Modell NICHT im heissen Pfad, sondern als
naechtlicher Gutachter (04:30) — Kaltladen ist dann egal, Lucy bleibt
tagsueber schnell. Feed sammelt 24h-Beweise (Vorschlags-Branches, main-
Commits, Vault-Notizen, Journal-Warnungen, Insights), der Richter laeuft
als Ein-Schuss-Completion gegen llama-swap (fremdblick-Architektur).
Richter-Kette: gpt-oss-120b -> GLM-4.6V-Flash als gekennzeichnete
Vertretung (gpt-oss wirft neben dem Warm-Set weiterhin 'exited
prematurely', E2E 07.07. verifiziert). Bote = Cron-Agent mit striktem
Treu-Wiedergeben-Mandat (chef-gutachter-prompt.md), Ausfall wird ehrlich
gemeldet statt verschwiegen.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-07 21:26:24 +02:00
Hitonabi f65f9ca2d0 Hermes-Kontext-Ehrlichkeit + Leistungs-Graphen zurueck im Cockpit
(1) /v1/models meldet jetzt den ECHTEN Kontext pro Slot: --parallel teilt
den Server-Kontext hart auf (131072 / 2 Slots = 65536). Vorher budgetierte
Hermes gegen 131k -> Kompaktierung feuerte nie, llama-server kappte bei
~52k-Sessions Prompt/Antwort -> abgerissene Tool-Calls, Retry-Schleifen,
gefuehlte Abstuerze (journalctl 07.07 17:11, 152 msgs / ~51.700 Tokens).
Dazu auf der Box: context.engine 'default' (existiert nicht, warnte jeden
Turn) -> 'compressor' (der echte eingebaute Name).

(2) Cockpit: neue Sektion 'Leistung' mit den drei bestehenden Live-Karten
(System-Status, Token-Durchsatz, Latenz je Turn) — waren nach UI v3 nur
noch in der alten Zentrale, User will sie auf der Startseite. Browser-
verifiziert gegen die Box (rendert live, keine Konsolen-Fehler).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-07 21:18:08 +02:00
Hitonabi 092dcc2ada fix(hermes-ui): switch from headless 'hermes serve' to 'hermes dashboard --no-open' 2026-07-07 17:27:49 +02:00
Hitonabi 989b6de850 fix(maintenance): cleanly stop, rebuild and restart hermes-builtin-ui during agent updates 2026-07-07 17:25:35 +02:00
Hitonabi 6f77dbb9d9 chore(config): remove missing Qwen3.5-122B and Qwen3-VL-8B, promote gpt-oss-120b 2026-07-07 17:18:31 +02:00
Hitonabi edf1614e66 feat(perf): Optimize KV-Cache to Q4_K and fix Hermes Context bounds 2026-07-07 17:11:50 +02:00
root 97be0f1d00 feat: lower memory dedupe threshold for more aggressive cleaning 2026-07-07 16:45:30 +02:00
Hitonabi c92f238d2d refactor: architektur-optimierungen (systemd, jq, httpx, commit-hook) 2026-07-06 20:38:18 +02:00
Hitonabi 3fba487963 feat: orchestrator skill nutzt gpt-oss-120b zur initialen planung 2026-07-06 20:28:45 +02:00
Hitonabi f49e5ecf9d fix: relative imports in app.py wiederhergestellt 2026-07-06 20:17:17 +02:00
Hitonabi cb3a5adaf9 Merge origin/main: fix absolute imports and add reset-failed for hermes-builtin-ui 2026-07-06 20:10:33 +02:00
Hitonabi 87c479323c chore: remove invalid allowScripts field from package.json 2026-07-06 20:06:54 +02:00
Hitonabi b95530ee70 fix: absolute imports and type annotations in app.py
- replace implicit relative imports with absolute ones (from backend.*)
- add type hints for lifespan tasks list and middleware
- fix unused bool return value in task.cancel() call
2026-07-06 20:06:40 +02:00
Hitonabi 42e45b4b50 Hermes-GUI: eingebaute hermes serve-Weboberflaeche same-origin in MC2 einbetten (ersetzt CLI-Terminal-Tab)
Statt des ttyd-CLI-Terminals zeigt der Tab jetzt die reiche eingebaute Hermes-Web-GUI
(hermes serve/dashboard: Threads, sichtbare Tool-Calls, Sessions, Config) - same-origin,
ohne offenen Port, ohne Login (Loopback :9119 = LAN-Trust wie Terminal/Konsole).

- backend/routers/hermes_ui.py: generischer Reverse-Proxy /hermes-ui/* (alle Methoden + beliebige
  WebSockets) -> 127.0.0.1:9119; injiziert window.__HERMES_BASE_PATH__=/hermes-ui in die index.html,
  damit die SPA ihre API/WS-Calls unter dem Praefix absetzt (sonst Kollision mit MC2s /api).
- deploy/hermes-builtin-ui.service: hermes serve --skip-build auf Loopback :9119.
- deploy/deploy.sh: baut das GUI-Bundle mit Vite-base=/hermes-ui/ (Temp->Swap, ueberlebt Hermes-
  Updates) + installiert/startet den Dienst.
- backend/app.py + config.py + services/agent.py: Router registriert, Upstream/Pfad + Status-Feld.
- frontend: Terminal-Tab -> "Hermes GUI" (TerminalView iframe /hermes-ui/, nav-Label, vite-Dev-Proxy).

E2E im Browser verifiziert: GUI rendert eingebettet, /hermes-ui/api/* liefern echte Daten
(289 Sessions, verbundene Plattformen), Assets + Plugins laden, Basis-Pfad korrekt.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-06 14:49:39 +02:00
Hitonabi 3a6e3c5432 Hermes-GUI: eingebaute hermes serve-Weboberflaeche same-origin in MC2 einbetten (ersetzt CLI-Terminal-Tab)
Statt des ttyd-CLI-Terminals zeigt der Tab jetzt die reiche eingebaute Hermes-Web-GUI
(hermes serve/dashboard: Threads, sichtbare Tool-Calls, Sessions, Config) - same-origin,
ohne offenen Port, ohne Login (Loopback :9119 = LAN-Trust wie Terminal/Konsole).

- backend/routers/hermes_ui.py: generischer Reverse-Proxy /hermes-ui/* (alle Methoden + beliebige
  WebSockets) -> 127.0.0.1:9119; injiziert window.__HERMES_BASE_PATH__=/hermes-ui in die index.html,
  damit die SPA ihre API/WS-Calls unter dem Praefix absetzt (sonst Kollision mit MC2s /api).
- deploy/hermes-builtin-ui.service: hermes serve --skip-build auf Loopback :9119.
- deploy/deploy.sh: baut das GUI-Bundle mit Vite-base=/hermes-ui/ (Temp->Swap, ueberlebt Hermes-
  Updates) + installiert/startet den Dienst.
- backend/app.py + config.py + services/agent.py: Router registriert, Upstream/Pfad + Status-Feld.
- frontend: Terminal-Tab -> "Hermes GUI" (TerminalView iframe /hermes-ui/, nav-Label, vite-Dev-Proxy).

E2E im Browser verifiziert: GUI rendert eingebettet, /hermes-ui/api/* liefern echte Daten
(289 Sessions, verbundene Plattformen), Assets + Plugins laden, Basis-Pfad korrekt.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-06 14:48:12 +02:00
Hitonabi 001ebb7742 Orchestrator-Skill: Werkstatt zum Fliessband verallgemeinert (zerlegen -> delegieren -> Zwei-Kritiker-Gate -> Vorschlag)
- deploy/worker.sh: Ein-Schuss-Arbeitsauftrag an ein Worker-Modell (Gegenstueck zu fremdblick.sh),
  Fence-Strip + Aufruf-Log (Delegations-Nachweis); v1 nur Coder-Next (heavy stirbt neben dem Warm-Set).
- deploy/skills/orchestrator/SKILL.md: Manager-Drehbuch, propose-only, Warm-Set-Schutz,
  Delegations-Pflicht + Evidenz, stage-vor-Diff, Zwei-Kritiker-Gate (Coder-Next Kompetenz + GLM Fremd-Blick).
- deploy/deploy.sh: worker.sh + orchestrator-Skill mit ausrollen.

E2E gegen die Box verifiziert (worker.log-belegte Delegation, Self-Gate + Zwei-Kritiker-Gate, propose-only).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-06 14:04:52 +02:00
Hitonabi 26deb1cec1 fix: coder_lite Default auf leeren String statt .strip() — verhindert falschen Router-Verweis auf nicht-existentes coder-lite-Modell 2026-07-06 11:00:24 +02:00
Hitonabi 93f447327b Fix: /v1/models auf geteilten Client (Regression aus 12c387a)
Beim Entfernen des httpx-Imports uebersehen: der /models-Endpoint nutzte httpx
noch direkt -> NameError/500. Jetzt zieht auch /models den geteilten
app.state.gw_client (request-Param ergaenzt). Live verifiziert.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-05 10:24:18 +02:00
Hitonabi 12c387a6de Antigravity-Review-Fixes: Traversal-Guard, Client-Pooling, Cache-Lock, Doku
Vier verifizierte Befunde aus dem externen Review (Gemini 3.1 Pro):
- app.py: SPA-Fallback gegen Path-Traversal gehaertet (resolve + is_relative_to,
  liefert nur noch Dateien INNERHALB von frontend/dist aus).
- app.py/gateway_proxy.py: geteilter httpx.AsyncClient im lifespan statt neuer
  Client pro /v1-Anfrage (Keep-Alive/Pooling, spart Sockets unter parallelen Agent-Stroemen).
- system.py: check_versions_cached() mit threading.Lock + Double-Check gegen Scan-Stampede.
- AGENTS.md: Zeitzonen-Drift korrigiert (Box laeuft Europe/Berlin, nicht UTC).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-05 10:21:32 +02:00