Spaces:
Sleeping
Sleeping
Deploy CodeCourt Space
Browse files
app.py
CHANGED
|
@@ -78,6 +78,46 @@ SESSIONS = SessionStore()
|
|
| 78 |
active_connections: list[WebSocket] = []
|
| 79 |
|
| 80 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 81 |
async def _broadcast_payload(payload: dict[str, Any]) -> None:
|
| 82 |
stale_connections: list[WebSocket] = []
|
| 83 |
for conn in active_connections.copy():
|
|
@@ -91,6 +131,7 @@ async def _broadcast_payload(payload: dict[str, Any]) -> None:
|
|
| 91 |
|
| 92 |
|
| 93 |
def broadcast_payload(payload: dict[str, Any]) -> None:
|
|
|
|
| 94 |
if not active_connections:
|
| 95 |
return
|
| 96 |
try:
|
|
|
|
| 78 |
active_connections: list[WebSocket] = []
|
| 79 |
|
| 80 |
|
| 81 |
+
def _log_terminal_score(payload: dict[str, Any]) -> None:
|
| 82 |
+
if payload.get("event") not in {"session_run", "benchmark_episode"}:
|
| 83 |
+
return
|
| 84 |
+
|
| 85 |
+
label = "SESSION"
|
| 86 |
+
if payload.get("event") == "benchmark_episode":
|
| 87 |
+
label = f"BENCH #{int(payload.get('episode', 0)) + 1}"
|
| 88 |
+
|
| 89 |
+
archetype = payload.get("archetype", "random")
|
| 90 |
+
task_id = payload.get("task_id", "?")
|
| 91 |
+
difficulty = payload.get("difficulty", "?")
|
| 92 |
+
outcome = payload.get("outcome", "n/a")
|
| 93 |
+
solver_reward = payload.get("reward")
|
| 94 |
+
setter_reward = payload.get("setter_reward")
|
| 95 |
+
pass_rate = payload.get("pass_rate")
|
| 96 |
+
hidden_pass = payload.get("hidden_pass_rate")
|
| 97 |
+
|
| 98 |
+
def fmt_signed(value: Any) -> str:
|
| 99 |
+
if not isinstance(value, (int, float)):
|
| 100 |
+
return "n/a"
|
| 101 |
+
return f"{value:+.2f}"
|
| 102 |
+
|
| 103 |
+
def fmt_pct(value: Any) -> str:
|
| 104 |
+
if not isinstance(value, (int, float)):
|
| 105 |
+
return "n/a"
|
| 106 |
+
return f"{value * 100:.1f}%"
|
| 107 |
+
|
| 108 |
+
lines = [
|
| 109 |
+
"",
|
| 110 |
+
f"[{label}] {archetype}/{task_id} · diff {difficulty}",
|
| 111 |
+
f" outcome : {outcome}",
|
| 112 |
+
f" solver : {fmt_signed(solver_reward)}",
|
| 113 |
+
f" setter : {fmt_signed(setter_reward)}",
|
| 114 |
+
f" pass : {fmt_pct(pass_rate)}",
|
| 115 |
+
]
|
| 116 |
+
if hidden_pass is not None:
|
| 117 |
+
lines.append(f" hidden : {fmt_pct(hidden_pass)}")
|
| 118 |
+
print("\n".join(lines), flush=True)
|
| 119 |
+
|
| 120 |
+
|
| 121 |
async def _broadcast_payload(payload: dict[str, Any]) -> None:
|
| 122 |
stale_connections: list[WebSocket] = []
|
| 123 |
for conn in active_connections.copy():
|
|
|
|
| 131 |
|
| 132 |
|
| 133 |
def broadcast_payload(payload: dict[str, Any]) -> None:
|
| 134 |
+
_log_terminal_score(payload)
|
| 135 |
if not active_connections:
|
| 136 |
return
|
| 137 |
try:
|