Neue Ansicht 'Von allein': Skills + Vorschlags-Bilanz der Box (+ schlafende P1-Basis)

User-Wunsch 15.07.: EIN Viewpoint, was die Box selbst geleistet hat -
Chronik ist zu kompliziert. Neue Operativ-Ansicht #eigenleben:
- Skills aus ~/.hermes/skills (= Lucys Satz) mit Klartext-Beschreibung,
  Nutzungszaehler (.usage.json) und Herkunft (selbst erstellt / von uns
  gebaut / mitgeliefert), aufklappbar mit vollem SKILL.md.
- Vorschlags-Bilanz: angenommen (Auftragsbuch-Chronik) + abgelehnt mit
  Grund (Lern-Journal) als eine Timeline + Zaehler.
Backend: services/eigenleben.py + routers/eigenleben.py (read-only).

Mit an Bord (User-Ja, schlafend): P1-Basis des Gateway-Auszugs der
Parallel-Session (config.V1_UPSTREAM + app.py-Weiche + gateway_forward) -
ohne MC_V1_UPSTREAM in der Unit exakt altes Verhalten; Rest von P1
(gateway_app, deploy.sh, Unit, token_stats) committet die andere Session.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
Hitonabi
2026-07-15 10:43:09 +02:00
parent 734cafd98f
commit c697356f5a
39 changed files with 881 additions and 109 deletions
+20
View File
@@ -0,0 +1,20 @@
"""Eigenleben-Endpoints — „Von allein"-Ansicht (Skills + Vorschlags-Bilanz), read-only."""
from fastapi import APIRouter, HTTPException
from services import eigenleben
router = APIRouter(prefix="/api")
@router.get("/eigenleben")
def get_overview() -> dict:
return eigenleben.overview()
@router.get("/eigenleben/skill/{skill_id}")
def get_skill(skill_id: str) -> dict:
text = eigenleben.skill_text(skill_id)
if text is None:
raise HTTPException(404, "Skill nicht gefunden.")
return {"id": skill_id, "text": text}