"""Eigenleben-Endpoints — „Von allein“-Ansicht (Skills + Vorschlags-Bilanz), read-only."""

from pydantic import BaseModel

from fastapi import APIRouter, HTTPException

from services import eigenleben

router = APIRouter(prefix="/api")


class SkillItem(BaseModel):
    id: str
    name: str
    kategorie: str | None
    aktiv: bool | None
    beschreibung: str
    version: str
    autor: str
    herkunft: str
    herkunft_label: str
    genutzt: int
    zuletzt_genutzt: str | None
    erstellt: str | None
    status: str
    geaendert: float


class EigenlebenOverviewResponse(BaseModel):
    available: bool
    skills: list[SkillItem]
    selbst_erstellt: int
    bilanz: dict


class SkillTextResponse(BaseModel):
    id: str
    text: str


@router.get("/eigenleben", response_model=EigenlebenOverviewResponse)
def get_overview() -> dict:
    return eigenleben.overview()


# :path — Kategorie-Skills haben einen Schrägstrich in der ID (autonomous-ai-agents/
# hermes-agent). Als normales {skill_id}-Segment matcht die Route dann nicht, der Request
# fällt in den SPA-Fallback (index.html, Status 200) und die UI zeigt „Konnte den
# Skill-Text nicht laden". Die Pfad-Validierung (max. eine Ebene, keine . /..) macht
# services.eigenleben.skill_text.
@router.get("/eigenleben/skill/{skill_id:path}", response_model=SkillTextResponse)
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}
