Merge branch 'ralph/instrumentation' — rate limit budget + WhatsApp keywords
Rate limit budget tracking (TODO P2): - tools/ralph_usage.py — pure functions extract/parse/aggregate; CLI subcomenzi append/summarize. Atomic write JSONL. - tools/ralph/ralph.sh: după fiecare claude -p, append usage entry la workspace/<slug>/scripts/ralph/usage.jsonl (best-effort) - dashboard/handlers/ralph.py: GET /api/ralph/usage[?days=N] cross-project aggregation cu today_cost, today_runs, by_project, by_day WhatsApp text-keyword commands (TODO P3): - src/router.py: helper _translate_whatsapp_text — `aprob <slug>` → `/a <slug>`, `stop <slug>` → `/k <slug>`, `stare`/`stare <slug>` → `/l`/`/l <slug>`. Aplicat DOAR pe adapter whatsapp în _try_ralph_dispatch (Discord/TG nu sunt afectate). Propose intentionally NOT covered (descrierea fragilă). Tests: 53 noi (28 ralph_usage + 21 whatsapp_keywords + 4 dashboard endpoint extend) + 0 regressions pe modulele atinse.
This commit is contained in:
@@ -163,6 +163,8 @@ class TaskBoardHandler(
|
||||
self.handle_eco_doctor()
|
||||
elif self.path == '/api/ralph/status' or self.path.startswith('/api/ralph/status?'):
|
||||
self.handle_ralph_status()
|
||||
elif self.path == '/api/ralph/usage' or self.path.startswith('/api/ralph/usage?'):
|
||||
self.handle_ralph_usage()
|
||||
elif self.path.startswith('/api/ralph/'):
|
||||
# /api/ralph/<slug>/log or /api/ralph/<slug>/prd
|
||||
parts = self.path.split('?', 1)[0].split('/')
|
||||
|
||||
Reference in New Issue
Block a user