muse-chat-api: add sidechat use/main/list commands
This commit is contained in:
+61
-5
@@ -168,12 +168,50 @@ def cmd_wait(ws, timeout=30):
|
||||
time.sleep(5)
|
||||
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():
|
||||
p = argparse.ArgumentParser()
|
||||
p.add_argument('--account', required=True, choices=list(ACCOUNTS.keys()),
|
||||
help='Agent name (matches node, profile, ACCOUNTS.md)')
|
||||
p.add_argument('command', choices=['send', 'messages', 'wait', 'approvals'])
|
||||
p.add_argument('arg', nargs='?', default=None)
|
||||
p.add_argument('command', choices=['send', 'messages', 'wait', 'approvals', 'sidechat'])
|
||||
p.add_argument('arg', nargs='*', default=[])
|
||||
args = p.parse_args()
|
||||
|
||||
node, cdp_url = ACCOUNTS[args.account]
|
||||
@@ -185,17 +223,35 @@ def main():
|
||||
if not args.arg:
|
||||
print("ERROR: send requires a message", file=sys.stderr)
|
||||
sys.exit(1)
|
||||
cmd_send(ws, args.arg)
|
||||
cmd_send(ws, " ".join(args.arg))
|
||||
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)
|
||||
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)
|
||||
elif args.command == 'approvals':
|
||||
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:
|
||||
ws.close()
|
||||
|
||||
if __name__ == '__main__':
|
||||
main()
|
||||
|
||||
|
||||
Reference in New Issue
Block a user