From 1c386ca6bb02cd7056e8cbec1c5eec87580eb1db Mon Sep 17 00:00:00 2001 From: operator-main Date: Sun, 4 Oct 2026 01:25:44 +0000 Subject: [PATCH] muse-chat-api.py: cdp_call skips CDP event chatter --- bin/muse-chat-api.py | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/bin/muse-chat-api.py b/bin/muse-chat-api.py index 5596f66..8ae2c14 100755 --- a/bin/muse-chat-api.py +++ b/bin/muse-chat-api.py @@ -265,14 +265,20 @@ def cmd_sidechat_create(ws): def cdp_call(ws, method, params=None): """Raw CDP method call for non-Runtime domains (DOM, Page, ...). - The ev() helper only speaks Runtime.evaluate; uploads need DOM.""" + The ev() helper only speaks Runtime.evaluate; uploads need DOM. + Skips CDP event chatter (messages without our id) while waiting.""" cdp_call.counter += 1 - ws.send(json.dumps({"id": cdp_call.counter, "method": method, + cid = cdp_call.counter + ws.send(json.dumps({"id": cid, "method": method, "params": params or {}})) - resp = json.loads(ws.recv()) - if "error" in resp: - raise RuntimeError("CDP %s failed: %s" % (method, resp["error"])) - return resp.get("result", {}) + for _ in range(20): + resp = json.loads(ws.recv()) + if resp.get("id") != cid: + continue # event, not our response + if "error" in resp: + raise RuntimeError("CDP %s failed: %s" % (method, resp["error"])) + return resp.get("result", {}) + raise RuntimeError("CDP %s: no response after 20 reads" % method) cdp_call.counter = 100