2026-01-15 21:58:30 +08:00
|
|
|
from fastapi import FastAPI
|
|
|
|
|
from .nodes import register_builtin_nodes
|
|
|
|
|
from .api import endpoints_graph, endpoints_custom_nodes
|
2026-01-19 00:49:55 +08:00
|
|
|
from .services import trace_server
|
|
|
|
|
from pytrace.runtime.repository import NodeRepository
|
2026-01-15 21:58:30 +08:00
|
|
|
|
|
|
|
|
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():
|
2026-01-19 00:49:55 +08:00
|
|
|
# 1. Register Nodes
|
2026-01-15 21:58:30 +08:00
|
|
|
register_builtin_nodes()
|
2026-01-19 00:49:55 +08:00
|
|
|
|
|
|
|
|
# 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
|
2026-01-15 21:58:30 +08:00
|
|
|
|
|
|
|
|
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"}
|