feat(dm): implement Reset-at-Begin and Leave-in-Sidechat pattern to preserve Main Chat DOM

This commit is contained in:
operator
2026-10-04 16:39:23 +00:00
parent 5593090cd6
commit 87fd93e7a6
+10 -4
View File
@@ -303,6 +303,11 @@ def dm_send(agent, target, message, verify=True, raw=False,
if target == "main": if target == "main":
_rc, _out, _err = run_full(f"{NETVM_EXEC} {recipient} -- python3 {API} --account {recipient} sidechat main") _rc, _out, _err = run_full(f"{NETVM_EXEC} {recipient} -- python3 {API} --account {recipient} sidechat main")
else: else:
# Reset-at-Begin: If searching sidebar by title (not a direct UUID), reset to main first to expose the sidebar
is_uuid = bool(re.fullmatch(r"[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}", nav_target.strip().lower()))
if not is_uuid:
run_full(f"{NETVM_EXEC} {recipient} -- python3 {API} --account {recipient} sidechat main")
time.sleep(1)
_rc, _out, _err = run_full(f"{NETVM_EXEC} {recipient} -- python3 {API} --account {recipient} sidechat use {nav_target}") _rc, _out, _err = run_full(f"{NETVM_EXEC} {recipient} -- python3 {API} --account {recipient} sidechat use {nav_target}")
if _rc != 0: if _rc != 0:
log_event({"type": "nav_failed", "id": msg_id, "agent": agent, "to": recipient, log_event({"type": "nav_failed", "id": msg_id, "agent": agent, "to": recipient,
@@ -451,9 +456,7 @@ def dm_send(agent, target, message, verify=True, raw=False,
if delivered and thread_uuid and "thread" not in tags: if delivered and thread_uuid and "thread" not in tags:
tags["thread"] = thread_uuid tags["thread"] = thread_uuid
# Park the recipient's browser back on main # Note: Leave recipient browser parked in the sidechat thread to preserve Main Chat DOM
run(f"{NETVM_EXEC} {recipient} -- python3 {API} --account {recipient} sidechat main")
log_event({"type": "send_done", "id": msg_id, "agent": agent, "to": recipient, "target": target}) log_event({"type": "send_done", "id": msg_id, "agent": agent, "to": recipient, "target": target})
if delivered: if delivered:
@@ -484,11 +487,14 @@ def dm_read(agent, target, n=5, quiet=False, width=200):
if target == "main": if target == "main":
run(f"{NETVM_EXEC} {agent} -- python3 {API} --account {agent} sidechat main") run(f"{NETVM_EXEC} {agent} -- python3 {API} --account {agent} sidechat main")
else: else:
is_uuid = bool(re.fullmatch(r"[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}", nav_target.strip().lower()))
if not is_uuid:
run(f"{NETVM_EXEC} {agent} -- python3 {API} --account {agent} sidechat main")
time.sleep(1)
run(f"{NETVM_EXEC} {agent} -- python3 {API} --account {agent} sidechat use {nav_target}") run(f"{NETVM_EXEC} {agent} -- python3 {API} --account {agent} sidechat use {nav_target}")
time.sleep(2) time.sleep(2)
rc, msgs, err = run_full(f"{NETVM_EXEC} {agent} -- python3 {API} --account {agent} messages {n} {width}") rc, msgs, err = run_full(f"{NETVM_EXEC} {agent} -- python3 {API} --account {agent} messages {n} {width}")
run(f"{NETVM_EXEC} {agent} -- python3 {API} --account {agent} sidechat main")
if rc != 0 or not msgs: if rc != 0 or not msgs:
# Never fail silently: an empty read with exit 0 hid a dead browser # Never fail silently: an empty read with exit 0 hid a dead browser