From 4b922776861ccc2f66d7f7e667371c69769d71f3 Mon Sep 17 00:00:00 2001 From: Antigravity Agent Date: Sat, 3 Oct 2026 10:21:31 -0400 Subject: [PATCH] muse-chat-api: add navigate command for thread URLs --- bin/muse-chat-api.py | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/bin/muse-chat-api.py b/bin/muse-chat-api.py index cff8e4e..d620b47 100755 --- a/bin/muse-chat-api.py +++ b/bin/muse-chat-api.py @@ -3,7 +3,7 @@ Usage: muse-chat-api.py send "hello" # send message to current chat muse-chat-api.py messages # print recent messages - muse-chat-api.py wait [timeout] # wait for new response + muse-chat-api.py wait [timeout] # wait for new response\n muse-chat-api.py navigate # go to thread URL Requires: websocket-client (pip install --break-system-packages websocket-client) CDP relay must be up: http://10.201.87.2:9410/json/list """ @@ -58,6 +58,16 @@ Array.from(document.querySelectorAll('p')).slice(-{limit}).map(e=>e.innerText).j finally: ws.close() +def navigate(url): + """Navigate to a URL (e.g., a thread: https://muse.ai/thread/).""" + ws = connect() + try: + ws.send(json.dumps({"id":1,"method":"Page.navigate","params":{"url":url}})) + r = json.loads(ws.recv()) + return r.get('result',{}).get('frameId','navigated') + finally: + ws.close() + def wait_for_response(timeout=60, poll=2): """Wait for a new assistant message after sending.""" ws = connect() @@ -87,6 +97,8 @@ if __name__ == "__main__": print(send_message(sys.argv[2])) elif cmd == "messages": print(get_messages(int(sys.argv[2]) if len(sys.argv)>2 else 10)) + elif cmd == "navigate" and len(sys.argv) > 2: + print(navigate(sys.argv[2])) elif cmd == "wait": print(wait_for_response(int(sys.argv[2]) if len(sys.argv)>2 else 60)) else: