avocet/app/cloud_session.py

34 lines
1,019 B
Python

"""
Avocet cloud session — thin wrapper around cf_core.cloud_session.
Usage in FastAPI routes:
from app.cloud_session import get_session, require_tier, CloudUser
from fastapi import Depends
@router.get("/api/imitate")
def imitate(session: CloudUser = Depends(get_session)):
# session.user_id — Directus UUID (cloud) or "local" (self-hosted)
# session.tier — free | paid | premium | ultra | local
# session.has_byok — True if user has a configured LLM backend
...
@router.post("/api/custom-models")
def list_custom_models(session: CloudUser = Depends(require_tier("premium"))):
...
"""
from __future__ import annotations
import os
from circuitforge_core.cloud_session import CloudSessionFactory, CloudUser, detect_byok
__all__ = ["CloudUser", "get_session", "require_tier"]
_factory = CloudSessionFactory(
product="avocet",
byok_detector=detect_byok,
)
get_session = _factory.dependency()
require_tier = _factory.require_tier