feat(hybrid-gateway): integrate muse-cli with Cloudflare netns isolation, symmetric sidechat routing, and 646-pip sync unblock

This commit is contained in:
operator
2026-10-04 22:54:01 +00:00
parent 3d5fbe5aeb
commit 1a271b1bbd
60 changed files with 5068 additions and 55 deletions
+10 -1
View File
@@ -416,6 +416,7 @@ def reconstruct_loops(limit=50, agent=None, status_filter=None) -> list:
# 2. Extract tracked DMs from dm-log.jsonl
answers_map = {} # id or ref -> answer event
dm_events = []
failed_ids = set() # DM ids that failed to send - never delivered
if os.path.exists(DM_LOG_FILE):
try:
with open(DM_LOG_FILE, "r") as f:
@@ -429,7 +430,8 @@ def reconstruct_loops(limit=50, agent=None, status_filter=None) -> list:
msg = entry.get("msg") or ""
# Check for answers/results/acks
if "[RESULT" in msg or "[ACK" in msg or "acknowledged" in msg or ev_type == "verified":
# Note: "verified" means delivered, NOT answered - do not include it here
if "[RESULT" in msg or "[ACK" in msg or "acknowledged" in msg:
sender = entry.get("agent", "")
# Extract referenced DM id if present
m_ref = re.search(r"\[ref:([a-f0-9-]+)\]", msg) or re.search(r"\[(?:ACK|RESULT)\s+([a-f0-9-]+)", msg)
@@ -438,6 +440,11 @@ def reconstruct_loops(limit=50, agent=None, status_filter=None) -> list:
if entry.get("id"):
answers_map[entry["id"]] = entry
# Track failed sends - these were never delivered
if ev_type in ("send_failed", "failed"):
if entry.get("id"):
failed_ids.add(entry.get("id"))
tags = entry.get("tags") or {}
if tags.get("reply:expected") or "[reply:expected]" in msg:
dm_events.append(entry)
@@ -453,6 +460,8 @@ def reconstruct_loops(limit=50, agent=None, status_filter=None) -> list:
continue
if did in loops:
continue # Already have active record from followups.json
if did in failed_ids:
continue # Send failed - never delivered, don't count against agent health
tags = entry.get("tags") or {}
recipient = entry.get("to") or entry.get("recipient") or ""