From 84f3a63e8b89efacfc5dfe6ab3f2269676286328 Mon Sep 17 00:00:00 2001 From: jonny Date: Mon, 13 Apr 2026 12:54:05 -0400 Subject: [PATCH] simplifying cli --- src/ria_toolkit_oss/agent/cli.py | 48 +++++++++++++++++++++-------- src/ria_toolkit_oss/agent/config.py | 2 ++ 2 files changed, 38 insertions(+), 12 deletions(-) diff --git a/src/ria_toolkit_oss/agent/cli.py b/src/ria_toolkit_oss/agent/cli.py index 2873293..0b06e72 100644 --- a/src/ria_toolkit_oss/agent/cli.py +++ b/src/ria_toolkit_oss/agent/cli.py @@ -38,16 +38,41 @@ def _cmd_detect(_args: argparse.Namespace) -> int: def _cmd_register(args: argparse.Namespace) -> int: + import urllib.request + + hub_url = args.hub.rstrip("/") + url = f"{hub_url}/screens/agents/register" + body = json.dumps({"name": args.name or ""}).encode() + req = urllib.request.Request( + url, + data=body, + headers={ + "Content-Type": "application/json", + "X-API-Key": args.api_key, + }, + ) + try: + with urllib.request.urlopen(req) as resp: + data = json.loads(resp.read()) + except Exception as e: + print(f"error: registration failed: {e}", file=sys.stderr) + return 1 + + agent_id = data["agent_id"] + token = data["token"] + cfg = _config.load() - cfg.hub_url = args.url - cfg.token = args.token + cfg.hub_url = hub_url + cfg.agent_id = agent_id + cfg.token = token + cfg.api_key = args.api_key if args.name: cfg.name = args.name - if args.agent_id: - cfg.agent_id = args.agent_id cfg.insecure = bool(args.insecure) path = _config.save(cfg) - print(f"Saved agent credentials to {path}") + + print(f"Registered agent: {agent_id}") + print(f"Credentials saved to {path}") return 0 @@ -75,7 +100,7 @@ def _derive_ws_url(hub_url: str, agent_id: str) -> str: base = "wss://" + base[len("https://"):] elif base.startswith("http://"): base = "ws://" + base[len("http://"):] - suffix = f"/api/agent/ws/{agent_id}" if agent_id else "/api/agent/ws" + suffix = f"/screens/agent/ws?agent_id={agent_id}" if agent_id else "/screens/agent/ws" return base + suffix @@ -93,12 +118,11 @@ def main() -> None: sub.add_parser("run", help="Legacy long-poll agent (NodeAgent)") sub.add_parser("detect", help="List available SDR drivers") - p_reg = sub.add_parser("register", help="Save agent credentials to ~/.ria/agent.json") - p_reg.add_argument("--url", required=True, help="RIA Hub base URL") - p_reg.add_argument("--token", required=True, help="Agent registration token") - p_reg.add_argument("--name", default=None) - p_reg.add_argument("--agent-id", dest="agent_id", default=None) - p_reg.add_argument("--insecure", action="store_true") + p_reg = sub.add_parser("register", help="Register agent with RIA Hub and save credentials") + p_reg.add_argument("--hub", required=True, help="RIA Hub URL (e.g. http://whitehorse:3005)") + p_reg.add_argument("--api-key", dest="api_key", required=True, help="Hub API key") + p_reg.add_argument("--name", default=None, help="Human-friendly agent name") + p_reg.add_argument("--insecure", action="store_true", help="Skip TLS verification") p_stream = sub.add_parser("stream", help="Run the WebSocket IQ streamer") p_stream.add_argument("--url", default=None, help="Override WebSocket URL") diff --git a/src/ria_toolkit_oss/agent/config.py b/src/ria_toolkit_oss/agent/config.py index 01f99ba..d1f0e00 100644 --- a/src/ria_toolkit_oss/agent/config.py +++ b/src/ria_toolkit_oss/agent/config.py @@ -28,6 +28,7 @@ class AgentConfig: token: str = "" name: str = "" insecure: bool = False + api_key: str = "" extra: dict = field(default_factory=dict) @@ -48,6 +49,7 @@ def load(path: Path | None = None) -> AgentConfig: token=data.get("token", ""), name=data.get("name", ""), insecure=bool(data.get("insecure", False)), + api_key=data.get("api_key", ""), extra=extra, )