muse-chat-api.py: Integrate sidechat_manager.ensure_sidebar\n\nUse robust sidebar opener with exponential backoff retry\ninstead of single-attempt click. Fixes flaky NOSIDEBAR errors.
This commit is contained in:
+21
-8
@@ -18,6 +18,13 @@ Usage:
|
|||||||
muse-chat-api.py --account <agent> upload <file> [--message txt] [--dry-run]
|
muse-chat-api.py --account <agent> upload <file> [--message txt] [--dry-run]
|
||||||
"""
|
"""
|
||||||
import json, urllib.request, websocket, time, sys, argparse, importlib.util
|
import json, urllib.request, websocket, time, sys, argparse, importlib.util
|
||||||
|
import os
|
||||||
|
sys.path.insert(0, os.path.dirname(os.path.abspath(__file__)))
|
||||||
|
try:
|
||||||
|
from sidechat_manager import ensure_sidebar, log_sidechat_op
|
||||||
|
HAS_SIDECHAT_MANAGER = True
|
||||||
|
except ImportError:
|
||||||
|
HAS_SIDECHAT_MANAGER = False
|
||||||
|
|
||||||
|
|
||||||
def _load_accounts():
|
def _load_accounts():
|
||||||
@@ -257,15 +264,21 @@ def cmd_sidechat_list(ws):
|
|||||||
|
|
||||||
def cmd_sidechat_create(ws):
|
def cmd_sidechat_create(ws):
|
||||||
"""Create a new side chat via the 'New side chat' button. Returns the new thread URL."""
|
"""Create a new side chat via the 'New side chat' button. Returns the new thread URL."""
|
||||||
# Ensure sidebar is open (same selector as cmd_sidechat_list: textContent)
|
# Use robust sidebar opener with retry (fixes flaky NOSIDEBAR errors)
|
||||||
ev(ws, """(() => {
|
|
||||||
const btn = [...document.querySelectorAll("button")].find(b =>
|
|
||||||
b.textContent.includes("Open chat and side chats")
|
|
||||||
);
|
|
||||||
if (btn) btn.click();
|
|
||||||
})()""")
|
|
||||||
import time as _time
|
import time as _time
|
||||||
_time.sleep(2)
|
if HAS_SIDECHAT_MANAGER:
|
||||||
|
if not ensure_sidebar(ws):
|
||||||
|
print("ERROR: Could not open sidebar after retries", file=sys.stderr)
|
||||||
|
sys.exit(1)
|
||||||
|
else:
|
||||||
|
# Fallback to old method
|
||||||
|
ev(ws, """(() => {
|
||||||
|
const btn = [...document.querySelectorAll("button")].find(b =>
|
||||||
|
b.textContent.includes("Open chat and side chats")
|
||||||
|
);
|
||||||
|
if (btn) btn.click();
|
||||||
|
})()""")
|
||||||
|
_time.sleep(2)
|
||||||
result = ev(ws, """(() => {
|
result = ev(ws, """(() => {
|
||||||
const btn = [...document.querySelectorAll('button')].find(b =>
|
const btn = [...document.querySelectorAll('button')].find(b =>
|
||||||
(b.getAttribute('aria-label')||'') === 'New side chat');
|
(b.getAttribute('aria-label')||'') === 'New side chat');
|
||||||
|
|||||||
Reference in New Issue
Block a user