from fastapi import FastAPI from .nodes import register_builtin_nodes from .api import endpoints_graph, endpoints_custom_nodes from .services import trace_server from pytrace.runtime.repository import NodeRepository app = FastAPI( title="TraceStudio Server", description="The backend server for the TraceStudio workflow engine.", version="2.0.0", ) @app.on_event("startup") async def startup_event(): # 1. Register Nodes register_builtin_nodes() # 2. Start Worker Socket Server trace_server.start_background() # 3. Configure NodeRepository with RemoteRegistry NodeRepository.set_remote_registry(trace_server.remote_registry) # 4. Expose trace_server to app state (for API endpoints) app.state.trace_server = trace_server app.include_router(endpoints_graph.router, prefix="/graph", tags=["Graph"]) app.include_router(endpoints_custom_nodes.router, prefix="/custom-nodes", tags=["Custom Nodes"]) @app.get("/") async def read_root(): return {"message": "Welcome to TraceStudio Server"}