| import os |
| import psutil |
| from fastapi import APIRouter, Depends |
| from pydantic import BaseModel |
| from typing import Optional, Dict |
|
|
| router = APIRouter() |
|
|
|
|
| class SettingsUpdate(BaseModel): |
| GOOGLE_CLIENT_ID: Optional[str] = None |
| GOOGLE_CLIENT_SECRET: Optional[str] = None |
| GITHUB_CLIENT_ID: Optional[str] = None |
| GITHUB_CLIENT_SECRET: Optional[str] = None |
| SLACK_CLIENT_ID: Optional[str] = None |
| SLACK_CLIENT_SECRET: Optional[str] = None |
| OPENAI_API_KEY: Optional[str] = None |
| ANTHROPIC_API_KEY: Optional[str] = None |
| BRAVE_SEARCH_KEY: Optional[str] = None |
| SERPAPI_KEY: Optional[str] = None |
| WEBHOOK_SECRET: Optional[str] = None |
|
|
|
|
| @router.get("") |
| async def get_settings(): |
| return { |
| "data_dir": os.environ.get("DATA_DIR", "/data"), |
| "platform_version": "1.0.0", |
| "integrations_count": 18, |
| "features": { |
| "oauth": True, |
| "api_keys": True, |
| "mcp": True, |
| "webhooks": True, |
| "code_sandbox": True |
| } |
| } |
|
|
|
|
| @router.post("") |
| async def update_settings(settings: SettingsUpdate): |
| return {"message": "Settings updated (would be stored in environment/storage)"} |
|
|
|
|
| @router.get("/health") |
| async def health_check(): |
| try: |
| disk = psutil.disk_usage('/') |
| mem = psutil.virtual_memory() |
| |
| return { |
| "status": "healthy", |
| "disk": { |
| "total_gb": round(disk.total / (1024**3), 2), |
| "used_gb": round(disk.used / (1024**3), 2), |
| "percent": disk.percent |
| }, |
| "memory": { |
| "total_gb": round(mem.total / (1024**3), 2), |
| "used_gb": round(mem.used / (1024**3), 2), |
| "percent": mem.percent |
| }, |
| "cpu_percent": psutil.cpu_percent() |
| } |
| except Exception as e: |
| return {"status": "healthy", "note": str(e)} |