Spaces:
Running
Running
File size: 1,782 Bytes
af1ae43 304e233 af1ae43 304e233 af1ae43 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 |
from contextlib import asynccontextmanager
from cua2_core.services.agent_service import AgentService
from cua2_core.websocket.websocket_manager import WebSocketManager
from dotenv import load_dotenv
from fastapi import FastAPI
from fastapi.middleware.cors import CORSMiddleware
# Load environment variables
load_dotenv()
@asynccontextmanager
async def lifespan(app: FastAPI):
"""Lifespan context manager for startup and shutdown events"""
# Startup: Initialize services
print("Initializing services...")
# Initialize WebSocket manager
websocket_manager = WebSocketManager()
# Initialize agent service with websocket manager dependency
agent_service = AgentService(websocket_manager)
# Store services in app state for access in routes
app.state.websocket_manager = websocket_manager
app.state.agent_service = agent_service
print("Services initialized successfully")
yield
# Shutdown: Clean up resources
print("Shutting down services...")
# Add any cleanup logic here if needed
print("Services shut down successfully")
# Create FastAPI app with lifespan
app = FastAPI(
title="Computer Use Backend",
description="Backend API for Computer Use - AI-powered automation interface",
version="1.0.0",
docs_url="/docs",
redoc_url="/redoc",
lifespan=lifespan,
)
# Configure CORS
app.add_middleware(
CORSMiddleware,
allow_origins=[
"http://localhost:3000", # React dev server
"http://localhost:5173", # Vite dev server
"http://localhost:8080", # Alternative frontend port
"http://127.0.0.1:3000",
"http://127.0.0.1:5173",
"http://127.0.0.1:8080",
],
allow_credentials=True,
allow_methods=["*"],
allow_headers=["*"],
)
|