from fastapi import APIRouter, Depends from sqlmodel import Session from ..connectors.gitea_actions import GiteaActionsConnector from ..db.session import get_session from ..services.gitea_project_auto_registration import GiteaProjectAutoRegistration from ..services.runner_fleet import RunnerFleetService router = APIRouter(prefix="/api/gitea/actions", tags=["gitea-actions"]) @router.get("/status") def gitea_actions_status(): """Return bounded runner and queue state without exposing the admin credential.""" return GiteaActionsConnector().snapshot() @router.get("/fleet") def gitea_actions_fleet(): """Return the joined, secret-free CI runner fleet projection.""" return RunnerFleetService().snapshot() @router.get("/projects") def gitea_project_catalog(session: Session = Depends(get_session)): """Return the persisted owned-project registration catalog.""" return GiteaProjectAutoRegistration.catalog(session) @router.post("/projects/reconcile") def reconcile_gitea_project_catalog(session: Session = Depends(get_session)): """Refresh all owned Gitea projects and safely activate proven deploy targets.""" return GiteaProjectAutoRegistration().sync(session, force=True)