From f8b742431562f96411b5fd902dd4487f03e298d3 Mon Sep 17 00:00:00 2001 From: operator Date: Fri, 9 Oct 2026 19:12:46 -0400 Subject: [PATCH] fix(work): import hashlib and wire heal subparser into main CLI --- NODES.md | 2 ++ bin/box-work.py | 6 ++++++ .../box-stability-watcher.cpython-314.pyc | Bin 38867 -> 38997 bytes 3 files changed, 8 insertions(+) diff --git a/NODES.md b/NODES.md index f0e40c1..770f1a1 100644 --- a/NODES.md +++ b/NODES.md @@ -13,6 +13,8 @@ stable network presence. |--------------|-------|---------------|---------|----------|-----------|---------|-------| | tp | warp-tp | /etc/netvm/tp.conf (wgcf, 2026-10-03) | 10.201.149.2 | 9277 | 104.28.203.246 | — | laptop; orchestrator + first node; UP, handshake+egress verified 2026-10-03 | | smoke | warp-smoke | /etc/netvm/smoke.conf (wgcf, 2026-10-03) | 10.201.87.2 | 9410 | 104.28.203.246 | — | laptop; dedicated test rig (chrome-box profile smoke); UP, handshake+egress+CDP+muse.ai verified 2026-10-03 | +| smoke2 | warp-smoke2 | /etc/netvm/smoke2.conf (wgcf, 2026-10-03) | 10.201.117.2 | 9585 | 104.28.227.184 | — | laptop; dedicated test rig (chrome-box profile smoke2); UP, handshake+egress+CDP+muse.ai verified 2026-10-03 | + CDP: `http://:/json/list` from the host, or `ssh -L :: @` for remote automation. diff --git a/bin/box-work.py b/bin/box-work.py index 46ec5c1..6a696ec 100755 --- a/bin/box-work.py +++ b/bin/box-work.py @@ -22,6 +22,7 @@ import argparse import urllib.request import urllib.parse import urllib.error +import hashlib from datetime import datetime, timezone from pathlib import Path @@ -809,6 +810,9 @@ def main(): p_merge = sub.add_parser("merge", help="Merge an open PR into master") p_merge.add_argument("pr", type=int, help="Pull request number (e.g. 214)") + p_heal = sub.add_parser("heal", help="Run automated remediation on an agent") + p_heal.add_argument("agent", help="Agent username to heal") + p_chats = sub.add_parser("chats", help="View recent live chat activity") p_chats.add_argument("--agent", help="Filter by agent name") p_chats.add_argument("--limit", type=int, default=10, help="Number of messages to show") @@ -820,6 +824,8 @@ def main(): cmd_status(args) elif action == "check": cmd_check(args) + elif action == "heal": + cmd_heal(args) elif action == "start": cmd_start(args) elif action == "assign": diff --git a/watchers/__pycache__/box-stability-watcher.cpython-314.pyc b/watchers/__pycache__/box-stability-watcher.cpython-314.pyc index 1160d85e5f88df8e4656370a8f17345b4700e164..d731e42962cb8a31fecb35e8833769c02ffaa102 100644 GIT binary patch delta 2259 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 Vh76w!!%-PdS54-l8jP-*%m4{h8&3cL