muse-chat-api.py: Get real thread ID after sidechat create\n\nSend system message to trigger ID assignment, poll for\n/thread/<uuid> instead of accepting /thread/new placeholder.
This commit is contained in:
@@ -289,6 +289,34 @@ def cmd_sidechat_create(ws):
|
|||||||
if not url or "/thread/" not in url:
|
if not url or "/thread/" not in url:
|
||||||
print(f"ERROR: Sidechat creation did not navigate to thread URL (got: {url})", file=sys.stderr)
|
print(f"ERROR: Sidechat creation did not navigate to thread URL (got: {url})", file=sys.stderr)
|
||||||
sys.exit(1)
|
sys.exit(1)
|
||||||
|
# If we got /thread/new (placeholder), the real ID is assigned after
|
||||||
|
# the first message. Send a system message to trigger ID assignment,
|
||||||
|
# then re-read the URL.
|
||||||
|
if url.endswith("/thread/new"):
|
||||||
|
ev(ws, """(() => {
|
||||||
|
const input = document.querySelector('[contenteditable="true"]');
|
||||||
|
if (!input) return 'NO_INPUT';
|
||||||
|
input.focus();
|
||||||
|
document.execCommand('insertText', false, '[System: Side chat created]');
|
||||||
|
return 'READY';
|
||||||
|
})()""")
|
||||||
|
_time.sleep(1)
|
||||||
|
# Click send
|
||||||
|
ev(ws, """(() => {
|
||||||
|
const btn = [...document.querySelectorAll('button')].find(b =>
|
||||||
|
(b.getAttribute('aria-label')||'').toLowerCase().includes('send'));
|
||||||
|
if (btn) { btn.click(); return 'SENT'; }
|
||||||
|
return 'NO_BTN';
|
||||||
|
})()""")
|
||||||
|
# Poll for URL to change from /thread/new to /thread/<uuid>
|
||||||
|
for i in range(15):
|
||||||
|
_time.sleep(1)
|
||||||
|
url = ev(ws, "window.location.href")
|
||||||
|
if url and "/thread/" in url and not url.endswith("/thread/new"):
|
||||||
|
break
|
||||||
|
if not url or "/thread/" not in url or url.endswith("/thread/new"):
|
||||||
|
print(f"ERROR: Could not get real thread ID (got: {url})", file=sys.stderr)
|
||||||
|
sys.exit(1)
|
||||||
print(f"Created: {url}")
|
print(f"Created: {url}")
|
||||||
return url
|
return url
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user