Spaces:
Running
Running
chore(sync): mirror backend .py + Dockerfile to Space (hf-sync-backend)
Browse filesAutomated backend sync from szl-holdings/a11oy main via hf-sync-backend.
Updated (differed from the Space): routers/series_a_control_plane.py
Deleted (gone from the repo + Dockerfile COPY set): (none)
Keeps the Space-built backend (serve.py + the Dockerfile-COPY'd .py
modules) identical to GitHub main so the Space never rebuilds from a
stale backend, new endpoints don't 404 there, and orphaned modules
removed from the repo don't linger in the Space tree.
routers/series_a_control_plane.py
CHANGED
|
@@ -1067,6 +1067,13 @@ def _event_cursor(request: Request) -> int:
|
|
| 1067 |
return cursor
|
| 1068 |
|
| 1069 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1070 |
def register(app: FastAPI, ns: str = "a11oy", *, db_path: str | None = None) -> dict[str, Any]:
|
| 1071 |
if any(getattr(route, "path", None) == f"/api/{ns}/v1/series-a/status" for route in app.router.routes):
|
| 1072 |
return {"ok": True, "state": "ALREADY_REGISTERED", "routes": []}
|
|
@@ -1077,17 +1084,36 @@ def register(app: FastAPI, ns: str = "a11oy", *, db_path: str | None = None) ->
|
|
| 1077 |
async def page(request: Request) -> Response:
|
| 1078 |
if request.method == "HEAD":
|
| 1079 |
return Response(status_code=200, media_type="text/html")
|
| 1080 |
-
|
|
|
|
| 1081 |
|
| 1082 |
async def js(request: Request) -> Response:
|
|
|
|
| 1083 |
if request.method == "HEAD":
|
| 1084 |
-
return Response(
|
| 1085 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1086 |
|
| 1087 |
async def css(request: Request) -> Response:
|
|
|
|
| 1088 |
if request.method == "HEAD":
|
| 1089 |
-
return Response(
|
| 1090 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1091 |
|
| 1092 |
async def status(request: Request) -> Response:
|
| 1093 |
payload = service.latest_status()
|
|
|
|
| 1067 |
return cursor
|
| 1068 |
|
| 1069 |
|
| 1070 |
+
def _asset_cache_control(request: Request) -> str:
|
| 1071 |
+
revision = _git_revision()
|
| 1072 |
+
if revision != "UNKNOWN" and request.query_params.get("v") == revision:
|
| 1073 |
+
return "public,max-age=31536000,immutable"
|
| 1074 |
+
return "no-store"
|
| 1075 |
+
|
| 1076 |
+
|
| 1077 |
def register(app: FastAPI, ns: str = "a11oy", *, db_path: str | None = None) -> dict[str, Any]:
|
| 1078 |
if any(getattr(route, "path", None) == f"/api/{ns}/v1/series-a/status" for route in app.router.routes):
|
| 1079 |
return {"ok": True, "state": "ALREADY_REGISTERED", "routes": []}
|
|
|
|
| 1084 |
async def page(request: Request) -> Response:
|
| 1085 |
if request.method == "HEAD":
|
| 1086 |
return Response(status_code=200, media_type="text/html")
|
| 1087 |
+
html = _asset("index.html").replace("__SOURCE_REVISION__", _git_revision())
|
| 1088 |
+
return HTMLResponse(html, headers={"cache-control": "no-store"})
|
| 1089 |
|
| 1090 |
async def js(request: Request) -> Response:
|
| 1091 |
+
headers = {"cache-control": _asset_cache_control(request)}
|
| 1092 |
if request.method == "HEAD":
|
| 1093 |
+
return Response(
|
| 1094 |
+
status_code=200,
|
| 1095 |
+
media_type="application/javascript",
|
| 1096 |
+
headers=headers,
|
| 1097 |
+
)
|
| 1098 |
+
return Response(
|
| 1099 |
+
_asset("app.js"),
|
| 1100 |
+
media_type="application/javascript",
|
| 1101 |
+
headers=headers,
|
| 1102 |
+
)
|
| 1103 |
|
| 1104 |
async def css(request: Request) -> Response:
|
| 1105 |
+
headers = {"cache-control": _asset_cache_control(request)}
|
| 1106 |
if request.method == "HEAD":
|
| 1107 |
+
return Response(
|
| 1108 |
+
status_code=200,
|
| 1109 |
+
media_type="text/css",
|
| 1110 |
+
headers=headers,
|
| 1111 |
+
)
|
| 1112 |
+
return Response(
|
| 1113 |
+
_asset("styles.css"),
|
| 1114 |
+
media_type="text/css",
|
| 1115 |
+
headers=headers,
|
| 1116 |
+
)
|
| 1117 |
|
| 1118 |
async def status(request: Request) -> Response:
|
| 1119 |
payload = service.latest_status()
|