Spaces:
Running on Zero
Running on Zero
Commit History
15 days ago
-
Part 252: Fix tools page 2FA header injection
3a38da5
17 days ago
-
Fix: add API key interceptor to tools dashboard
2daeaee
18 days ago
-
Part 173: per-tool rate limits (speed breaker)
New SUNNYWARE_TOOL_RATE_LIMIT_PER_MINUTE env var (default 0 = disabled). circuit_breaker.py: - Tracks rolling 60s window of recent_calls per tool - When calls >= limit, sets rate_cooldown_until = now + 60 - check() returns {allow: False, reason: "rate_limited", retry_after: Ns} - snapshot() exposes rpm_limit, rpm_current, rate_cooldown_s orchestrator.py: - Propagates actual reason (circuit_open or rate_limited) into the error response, so the LLM sees a distinct signal tools_health.py: - Surfaces rpm_limit, rpm_current, rate_cooldown_s per tool - Rate-cooldown tools flagged as "degraded" with reason "rate limited (X/Y rpm) - cooldown Zs" static/tools.html: - New "Rate Limited" filter button - Row meta shows "cool Zs" during cooldown, or "X/Y rpm" - Expanded detail shows "rate limit" + "rate cooldown" rows Smoke: 173 (25/25). Pre-push: 6/6.68e5eb7 -
Part 172b: full /tools page + status card polish
New static/tools.html (~15KB) + GET /tools route + GET /api/tools/health endpoint. The page shows all 81 tools grouped by category with: - Sticky summary bar (total + called + degraded + broken) - Progress bar colored by severity - Filters: All / Broken / Degraded / Working / Never used - Search box (case-insensitive) - Collapsible category groups (state remembered in localStorage) - Clickable rows that expand to show category, status, calls, breaker state, last error, reason, and a raw JSON link - 10s auto-refresh matching /status cadence - Mobile responsive status.html Tools Health card now renders the total tool count (81) as headline instead of "0/81 working" (never_used is not a failure), and links to the new /tools page. Smoke: 172b (18/18). Pre-push: 6/6.9118043