maximus-im / bridge_server.py
lattmamb's picture
Upload 47 files
8beb2b1
#!/usr/bin/env python3
"""
Atlas Unified Bridge Server
This server connects all Atlas platform components together
"""
import os
import sys
import json
import time
import logging
import requests
from fastapi import FastAPI, HTTPException, Request
from fastapi.middleware.cors import CORSMiddleware
from fastapi.responses import JSONResponse
import uvicorn
from pydantic import BaseModel
from typing import Dict, List, Any, Optional
# Setup logging
logging.basicConfig(
level=logging.INFO,
format='%(asctime)s - %(name)s - %(levelname)s - %(message)s',
handlers=[
logging.StreamHandler(),
logging.FileHandler("bridge_server.log")
]
)
logger = logging.getLogger("atlas_bridge")
# Component endpoints
OPENMANUS_ENDPOINT = "http://localhost:50505"
CASIBASE_ENDPOINT = "http://localhost:7777"
CYPHER_ENDPOINT = "http://localhost:5000"
QUANTUMVISION_ENDPOINT = "http://localhost:8000"
CONVERSATION_ENDPOINT = "http://localhost:8001"
# Initialize FastAPI app
app = FastAPI(title="Atlas Unified Bridge")
# Add CORS middleware
app.add_middleware(
CORSMiddleware,
allow_origins=["*"], # Adjust in production
allow_credentials=True,
allow_methods=["*"],
allow_headers=["*"],
)
# Health check endpoint
@app.get("/health")
async def health_check():
"""Health check endpoint to verify if bridge server is running"""
status = {
"bridge": "operational",
"components": {
"openmanus": check_component_health(OPENMANUS_ENDPOINT),
"casibase": check_component_health(CASIBASE_ENDPOINT),
"cypher": check_component_health(CYPHER_ENDPOINT),
"quantumvision": check_component_health(QUANTUMVISION_ENDPOINT),
"conversation": check_component_health(CONVERSATION_ENDPOINT)
},
"timestamp": time.time()
}
return status
def check_component_health(endpoint: str) -> str:
"""Check if a component is operational"""
try:
response = requests.get(f"{endpoint}/health", timeout=3)
if response.status_code == 200:
return "operational"
except:
pass
return "unavailable"
# Main entry point
if __name__ == "__main__":
logger.info("Starting Atlas Unified Bridge Server")
uvicorn.run("bridge_server:app", host="0.0.0.0", port=8080, reload=True)