app
Grok Bot
Public Made by Adomby adom
Grok Bridge lets Adom talk to Grok Bot. Adom's AI environment is for electrical engineers: any provider, any desktop power tool, one place.
← Commit history
v1.3.14 (insiders): grok_activity counts calls again: its thread filter is now named thread, because ab puts a caller object into every call and that matched nothing.
4 files changed
+8−4
BRIDGE_VERSION+1−1@@ -1 +1 @@-1.3.13+1.3.14
bridge.json+1−1@@ -2,7 +2,7 @@ "manifest_version": 1, "name": "grok", "displayName": "Grok Bot",- "version": "1.3.13",+ "version": "1.3.14", "description": "Drive Grok Bot (standalone Electron app, Grok Bot.exe) from Adom Bridge: open/close/resize/screenshot/record the app, read thinking vs idle and the visible transcript of the focused thread, queue messages, bind the Grok Bridge webhook and create bots/channels. No public Grok HTTP API \u2014 the runtime talks back to ab over desktop_* callbacks. Cursor is last-resort fallback only if Grok Bot.exe is missing.", "homepage": "https://wiki.adom.inc/adom/grok-bridge", "author": "Adom Inc.",
handlers/describe.py+1−1@@ -227,7 +227,7 @@ VERB_CATALOG = { "activity": { "summary": "Who called which grok_* verb on this PC, when, and what came back; webhook fires, throttles and the shared budget.", "long": False,- "hint": "grok_activity {minutes?=60, verb?, caller?, limit?=40}. Reads ~/.adom/grok-bridge-activity.jsonl (one line per call: ts, caller thread, verb, ms, ok, errorCode, httpStatus, event, nonce, runUuid). webhookBudget shows fires in the last minute per thread and any Grok cooldown.",+ "hint": "grok_activity {minutes?=60, verb?, thread?, limit?=40}. Reads ~/.adom/grok-bridge-activity.jsonl (one line per call: ts, caller thread, verb, ms, ok, errorCode, httpStatus, event, nonce, runUuid). webhookBudget shows fires in the last minute per thread and any Grok cooldown.", "related": ["grok_webhook_fire", "grok_webhook_status"], "pitfalls": ["Per PC: each PC running grok-bridge has its own log and budget.", "Never contains webhook keys or message text."], },
server.py+5−1@@ -111,7 +111,11 @@ def handle_activity(args: dict) -> dict: limit = max(0, min(500, int(args.get("limit") or 40))) except (TypeError, ValueError): limit = 40- out = activity.read_recent(minutes, limit, str(args.get("verb") or ""), str(args.get("caller") or ""))+ # Filter is "thread", never "caller": ab injects args["caller"] = {aiThread, ...} into every+ # relayed call, and filtering on that dict matched nothing (1.3.13 always reported 0 calls).+ thread = args.get("thread")+ out = activity.read_recent(minutes, limit, str(args.get("verb") or ""),+ thread if isinstance(thread, str) else "") out.update({"success": True, "logPath": activity.LOG_PATH, "webhookBudget": activity.budget_state()}) w = out["webhook"] out["_hint"] = (