whisperkey / app.py
chiruu12's picture
Deploy: working gr.Server frontend + review fixes
5a811e2 verified
Raw
History Blame Contribute Delete
1.71 kB
"""Hugging Face Space entry point - gr.Server with custom HTML frontend."""
from __future__ import annotations
import os
import sys
from pathlib import Path
sys.path.insert(0, os.path.join(os.path.dirname(__file__), "src"))
from fastapi.responses import FileResponse
from fastapi.staticfiles import StaticFiles
from gradio import Server
from jailbreak_dojo.game_service import GameRuntime # noqa: E402
STATIC = Path(__file__).parent / "static"
runtime = GameRuntime()
app = Server(title="Whisperkey")
app.mount("/assets", StaticFiles(directory=STATIC), name="assets")
@app.get("/")
async def homepage():
return FileResponse(STATIC / "index.html")
@app.api(name="init_game")
def init_game() -> dict:
return runtime.init_game()
@app.api(name="set_model")
def set_model(session_id: str, model_id: str) -> dict:
return runtime.set_model(session_id, model_id)
@app.api(name="send_message")
def send_message(session_id: str, message: str, player_name: str = "") -> dict:
return runtime.send(session_id, message, player_name)
@app.api(name="submit_guess")
def submit_guess(session_id: str, guess: str, player_name: str = "") -> dict:
return runtime.guess(session_id, guess, player_name)
@app.api(name="restart_level")
def restart_level(session_id: str) -> dict:
return runtime.restart_level(session_id)
@app.api(name="restart_game")
def restart_game(session_id: str) -> dict:
return runtime.restart_game(session_id)
@app.api(name="concede")
def concede(session_id: str) -> dict:
return runtime.concede(session_id)
@app.api(name="get_leaderboard")
def get_leaderboard() -> list[list]:
return runtime.leaderboard()
if __name__ == "__main__":
app.launch()