From 6eb387899ec3b65d963c2c44fc5b0d53bf95414e Mon Sep 17 00:00:00 2001 From: Myron Blair Date: Thu, 11 Jun 2026 21:21:04 +0000 Subject: [PATCH] agent v3.0: always re-register on startup to refresh capabilities MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Previously agents only registered when api_key was missing (first run). After updating to v3.0 with screenshot capability, restarted agents never refreshed their capabilities in the DB. Now register() is called every startup — server does UPDATE on existing agent_id so api_key is preserved. --- agent/jarvis-agent.py | 17 +++++++++++------ public_html/agent/jarvis-agent.py | 17 +++++++++++------ public_html/agent/jarvis-agent.py.sha256 | 2 +- 3 files changed, 23 insertions(+), 13 deletions(-) diff --git a/agent/jarvis-agent.py b/agent/jarvis-agent.py index ad254e5..8dcfe1e 100755 --- a/agent/jarvis-agent.py +++ b/agent/jarvis-agent.py @@ -565,13 +565,18 @@ def main(): poll_interval = int(cfg.get("poll_interval", 30)) heartbeat_every = int(cfg.get("heartbeat_every", 10)) - # Register if no API key yet — loop (not recurse) to avoid stack overflow + # Always re-register on startup to refresh capabilities, version, and IP. + # Server does an UPDATE when agent_id already exists, so api_key is preserved. api_key = state.get("api_key", "") - while not api_key: - api_key = register(cfg, state) - if not api_key: - print("[ERROR] Could not register with JARVIS. Retrying in 60s...", flush=True) - time.sleep(60) + registered_key = register(cfg, state) + if registered_key: + api_key = registered_key + elif not api_key: + while not api_key: + api_key = register(cfg, state) + if not api_key: + print("[ERROR] Could not register with JARVIS. Retrying in 60s...", flush=True) + time.sleep(60) headers = {"X-Agent-Key": api_key} last_metrics = 0 diff --git a/public_html/agent/jarvis-agent.py b/public_html/agent/jarvis-agent.py index ad254e5..8dcfe1e 100644 --- a/public_html/agent/jarvis-agent.py +++ b/public_html/agent/jarvis-agent.py @@ -565,13 +565,18 @@ def main(): poll_interval = int(cfg.get("poll_interval", 30)) heartbeat_every = int(cfg.get("heartbeat_every", 10)) - # Register if no API key yet — loop (not recurse) to avoid stack overflow + # Always re-register on startup to refresh capabilities, version, and IP. + # Server does an UPDATE when agent_id already exists, so api_key is preserved. api_key = state.get("api_key", "") - while not api_key: - api_key = register(cfg, state) - if not api_key: - print("[ERROR] Could not register with JARVIS. Retrying in 60s...", flush=True) - time.sleep(60) + registered_key = register(cfg, state) + if registered_key: + api_key = registered_key + elif not api_key: + while not api_key: + api_key = register(cfg, state) + if not api_key: + print("[ERROR] Could not register with JARVIS. Retrying in 60s...", flush=True) + time.sleep(60) headers = {"X-Agent-Key": api_key} last_metrics = 0 diff --git a/public_html/agent/jarvis-agent.py.sha256 b/public_html/agent/jarvis-agent.py.sha256 index 6ec757c..4cde60a 100644 --- a/public_html/agent/jarvis-agent.py.sha256 +++ b/public_html/agent/jarvis-agent.py.sha256 @@ -1 +1 @@ -0a80b4a5a240647f7169b1245bd534429e819f090404b8bbb12e69bbf1e37867 /home/jarvis.orbishosting.com/public_html/agent/jarvis-agent.py +aa05371d8610a5fd89f397b7feda90fd93acc169a5c910c2969b6319a189da25 /home/jarvis.orbishosting.com/public_html/agent/jarvis-agent.py