Spaces:
Paused
Paused
| from fastapi import APIRouter, HTTPException, Depends | |
| from typing import Optional, Dict | |
| from utils.auth_utils import verify_admin_api_key | |
| from utils.suna_default_agent_service import SunaDefaultAgentService | |
| from utils.logger import logger | |
| from utils.config import config, EnvMode | |
| from dotenv import load_dotenv, set_key, find_dotenv, dotenv_values | |
| router = APIRouter(prefix="/admin", tags=["admin"]) | |
| async def admin_install_suna_for_user( | |
| account_id: str, | |
| replace_existing: bool = False, | |
| _: bool = Depends(verify_admin_api_key) | |
| ): | |
| logger.debug(f"Admin installing Suna agent for user: {account_id}") | |
| service = SunaDefaultAgentService() | |
| agent_id = await service.install_suna_agent_for_user(account_id, replace_existing) | |
| if agent_id: | |
| return { | |
| "success": True, | |
| "message": f"Successfully installed Suna agent for user {account_id}", | |
| "agent_id": agent_id | |
| } | |
| else: | |
| raise HTTPException( | |
| status_code=500, | |
| detail=f"Failed to install Suna agent for user {account_id}" | |
| ) | |
| def get_env_vars() -> Dict[str, str]: | |
| """Get environment variables (local mode only).""" | |
| if config.ENV_MODE != EnvMode.LOCAL: | |
| raise HTTPException(status_code=403, detail="Env vars management only available in local mode") | |
| try: | |
| env_path = find_dotenv() | |
| if not env_path: | |
| logger.error("Could not find .env file") | |
| return {} | |
| return dotenv_values(env_path) | |
| except Exception as e: | |
| logger.error(f"Failed to get env vars: {e}") | |
| raise HTTPException(status_code=500, detail=f"Failed to get env variables: {e}") | |
| def save_env_vars(request: Dict[str, str]) -> Dict[str, str]: | |
| """Save environment variables (local mode only).""" | |
| if config.ENV_MODE != EnvMode.LOCAL: | |
| raise HTTPException(status_code=403, detail="Env vars management only available in local mode") | |
| try: | |
| env_path = find_dotenv() | |
| if not env_path: | |
| raise HTTPException(status_code=500, detail="Could not find .env file") | |
| for key, value in request.items(): | |
| set_key(env_path, key, value) | |
| load_dotenv(override=True) | |
| logger.debug(f"Env variables saved successfully: {request}") | |
| return {"message": "Env variables saved successfully"} | |
| except Exception as e: | |
| logger.error(f"Failed to save env variables: {e}") | |
| raise HTTPException(status_code=500, detail=f"Failed to save env variables: {e}") |