mirror of
https://github.com/blackboxprogramming/BlackRoad-Operating-System.git
synced 2026-03-17 03:57:13 -05:00
122 lines
3.6 KiB
Python
122 lines
3.6 KiB
Python
"""System endpoints for core OS operations"""
|
|
from fastapi import APIRouter, Depends, Request
|
|
from sqlalchemy.ext.asyncio import AsyncSession
|
|
from datetime import datetime, timezone
|
|
from datetime import UTC, datetime
|
|
import os
|
|
|
|
from app.config import settings
|
|
from app.database import get_db
|
|
|
|
router = APIRouter(prefix="/api/system", tags=["system"])
|
|
|
|
|
|
@router.get("/version")
|
|
async def get_version():
|
|
"""
|
|
Get system version and build information
|
|
|
|
Returns version, build time, environment, and git information
|
|
"""
|
|
# Try to get git SHA if available
|
|
git_sha = os.environ.get("GIT_SHA", "development")
|
|
|
|
return {
|
|
"version": settings.APP_VERSION,
|
|
"build_time": datetime.now(timezone.utc).isoformat(),
|
|
"build_time": datetime.now(UTC).isoformat(),
|
|
"env": settings.ENVIRONMENT,
|
|
"git_sha": git_sha[:8] if len(git_sha) > 8 else git_sha,
|
|
"app_name": settings.APP_NAME,
|
|
}
|
|
|
|
|
|
@router.get("/config/public")
|
|
async def get_public_config():
|
|
"""
|
|
Get public configuration (non-sensitive settings only)
|
|
|
|
Returns feature flags, environment info, and public settings
|
|
"""
|
|
return {
|
|
"environment": settings.ENVIRONMENT,
|
|
"app_name": settings.APP_NAME,
|
|
"version": settings.APP_VERSION,
|
|
"features": {
|
|
"blockchain_enabled": True,
|
|
"ai_agents_enabled": True,
|
|
"video_streaming_enabled": True,
|
|
"gaming_enabled": True,
|
|
"social_enabled": True,
|
|
},
|
|
"limits": {
|
|
"max_upload_size_mb": 100,
|
|
"session_timeout_minutes": 60,
|
|
},
|
|
"external_services": {
|
|
"github_integration": bool(os.environ.get("GITHUB_TOKEN")),
|
|
"stripe_enabled": bool(os.environ.get("STRIPE_SECRET_KEY")),
|
|
"openai_enabled": bool(os.environ.get("OPENAI_API_KEY")),
|
|
},
|
|
}
|
|
|
|
|
|
@router.get("/os/state")
|
|
async def get_os_state(db: AsyncSession = Depends(get_db)):
|
|
"""
|
|
Get current OS state (stub for now)
|
|
|
|
Returns the current state of the OS including:
|
|
- Active windows
|
|
- Running applications
|
|
- System resources
|
|
"""
|
|
# TODO: Integrate with core_os module when implemented
|
|
return {
|
|
"status": "ok",
|
|
"uptime_seconds": 0, # TODO: Track actual uptime
|
|
"active_windows": [],
|
|
"running_apps": [],
|
|
"system_resources": {
|
|
"memory_usage_percent": 0,
|
|
"cpu_usage_percent": 0,
|
|
},
|
|
"note": "This is a stub endpoint. Full OS state tracking coming in Phase 2.",
|
|
}
|
|
|
|
|
|
@router.get("/prism/config")
|
|
async def prism_config(request: Request):
|
|
"""Return Prism Console service configuration for health/status checks."""
|
|
|
|
def resolve_url(env_url: str, fallback: str) -> str:
|
|
return env_url.rstrip("/") if env_url else fallback.rstrip("/")
|
|
|
|
base_url = str(request.base_url).rstrip("/")
|
|
|
|
services = [
|
|
{
|
|
"name": "core-api",
|
|
"url": resolve_url(settings.PRISM_CORE_API_URL, base_url),
|
|
"health_path": "/health",
|
|
"version_path": "/version",
|
|
},
|
|
{
|
|
"name": "public-api",
|
|
"url": resolve_url(settings.PRISM_PUBLIC_API_URL, base_url),
|
|
"health_path": "/health",
|
|
"version_path": "/version",
|
|
},
|
|
{
|
|
"name": "prism-console",
|
|
"url": resolve_url(settings.PRISM_CONSOLE_URL, base_url),
|
|
"health_path": "/prism/health",
|
|
"version_path": "/version",
|
|
},
|
|
]
|
|
|
|
return {
|
|
"environment": settings.ENVIRONMENT,
|
|
"services": services,
|
|
}
|