muse-chat-api: add sidechat use/main/list commands

This commit is contained in:
operator
2026-10-03 19:15:50 +00:00
parent 23bf83a09f
commit a8d456529f
+61 -5
View File
@@ -168,12 +168,50 @@ def cmd_wait(ws, timeout=30):
time.sleep(5) time.sleep(5)
cmd_messages(ws, 2) cmd_messages(ws, 2)
def cmd_sidechat_use(ws, chat_id):
"""Navigate to a side chat by ID."""
ws.send(json.dumps({
"id": 1, "method": "Page.navigate",
"params": {"url": f"https://muse.ai/thread/{chat_id}"}
}))
json.loads(ws.recv())
time.sleep(5)
url = ev(ws, "window.location.href")
print(f"Navigated to: {url}")
def cmd_sidechat_main(ws):
"""Navigate back to main chat."""
ws.send(json.dumps({
"id": 1, "method": "Page.navigate",
"params": {"url": "https://muse.ai/"}
}))
json.loads(ws.recv())
time.sleep(5)
print("Back to main chat")
def cmd_sidechat_list(ws):
"""List side chats via DOM."""
ev(ws, """(() => {
const btn = [...document.querySelectorAll("button")].find(b =>
b.textContent.includes("Open chat and side chats")
);
if (btn) btn.click();
})()""")
time.sleep(2)
chats = ev(ws, """(() => {
const text = document.body.innerText;
const idx = text.indexOf("Side chats");
if (idx === -1) return "NOSIDEBAR";
return text.slice(idx, idx + 1000);
})()""")
print(chats[:500])
def main(): def main():
p = argparse.ArgumentParser() p = argparse.ArgumentParser()
p.add_argument('--account', required=True, choices=list(ACCOUNTS.keys()), p.add_argument('--account', required=True, choices=list(ACCOUNTS.keys()),
help='Agent name (matches node, profile, ACCOUNTS.md)') help='Agent name (matches node, profile, ACCOUNTS.md)')
p.add_argument('command', choices=['send', 'messages', 'wait', 'approvals']) p.add_argument('command', choices=['send', 'messages', 'wait', 'approvals', 'sidechat'])
p.add_argument('arg', nargs='?', default=None) p.add_argument('arg', nargs='*', default=[])
args = p.parse_args() args = p.parse_args()
node, cdp_url = ACCOUNTS[args.account] node, cdp_url = ACCOUNTS[args.account]
@@ -185,17 +223,35 @@ def main():
if not args.arg: if not args.arg:
print("ERROR: send requires a message", file=sys.stderr) print("ERROR: send requires a message", file=sys.stderr)
sys.exit(1) sys.exit(1)
cmd_send(ws, args.arg) cmd_send(ws, " ".join(args.arg))
elif args.command == 'messages': elif args.command == 'messages':
n = int(args.arg) if args.arg else 5 n = int(args.arg[0]) if args.arg else 5
cmd_messages(ws, n) cmd_messages(ws, n)
elif args.command == 'wait': elif args.command == 'wait':
t = int(args.arg) if args.arg else 30 t = int(args.arg[0]) if args.arg else 30
cmd_wait(ws, t) cmd_wait(ws, t)
elif args.command == 'approvals': elif args.command == 'approvals':
cmd_approvals(ws) cmd_approvals(ws)
elif args.command == 'sidechat':
if not args.arg:
print("ERROR: sidechat requires subcommand (use|main|list)", file=sys.stderr)
sys.exit(1)
sub = args.arg[0]
if sub == "use":
if len(args.arg) < 2:
print("ERROR: sidechat use requires chat_id", file=sys.stderr)
sys.exit(1)
cmd_sidechat_use(ws, args.arg[1])
elif sub == "main":
cmd_sidechat_main(ws)
elif sub == "list":
cmd_sidechat_list(ws)
else:
print(f"ERROR: unknown sidechat subcommand: {sub}", file=sys.stderr)
sys.exit(1)
finally: finally:
ws.close() ws.close()
if __name__ == '__main__': if __name__ == '__main__':
main() main()