#!/usr/bin/env python3 """Resolve the live domestic Fifth Domain entrance and canonical route IDs.""" from __future__ import annotations import argparse import json import re import sys from urllib.error import URLError from urllib.request import urlopen DISCOVERY_URL = "https://guanghulab.com/.well-known/guanghu.json" RESOLVE_URL = "https://guanghulab.com/api/ai/v1/resolve?id=REPO-012" ROUTE_IDS = ( "FD-WORLD-TREE-001", "FD-PERSONA-LOGIN-001", "SYS-GLW-POS-0001", "TCS-LPM", "TCS-LPS-REGISTRY-0001", "LIGHT-LAKE", "LL-CURRENT", "LL-004", "ICE-GL-ZY001", "ZY-PERSONA-ROOT-001", "ZY-OPS-LOOP-001", "FD-NODE-MAP-001", "JD-FD-PRIMARY", "FD-REPO-MAP-001", ) def read_json(url: str) -> dict: with urlopen(url, timeout=15) as response: return json.load(response) def read_text(url: str) -> str: with urlopen(url, timeout=15) as response: return response.read().decode("utf-8") def parse_code_map(text: str, route_ids: tuple[str, ...] = ROUTE_IDS) -> dict[str, str]: resolved: dict[str, str] = {} wanted = set(route_ids) for line in text.splitlines(): match = re.match(r"^([A-Z0-9-]+)=(.+?)(?:\s+#.*)?$", line.strip()) if match and match.group(1) in wanted: resolved[match.group(1)] = match.group(2).strip() return resolved def resolve_live_route() -> dict: discovery = read_json(DISCOVERY_URL) repository = read_json(RESOLVE_URL) primary = repository.get("primary", {}) repository_web = primary.get("url") repository_git = primary.get("clone_url") if not repository_web or not repository_git: raise ValueError("REPO-012 resolver did not return the current Fifth Domain repository") raw_base = f"{repository_web}/raw/branch/main" routes = parse_code_map(read_text(f"{raw_base}/.code-map")) missing = [route_id for route_id in ROUTE_IDS if route_id not in routes] if missing: raise ValueError(f"Live .code-map is missing required route IDs: {', '.join(missing)}") return { "status": "LIVE_DOMESTIC_PRIMARY", "repository_id": repository.get("code", "REPO-012"), "repository_role": repository.get("role", ""), "repository_web": repository_web, "repository_git": repository_git, "raw_base": raw_base, "discovery_schema": discovery.get("schema", ""), "routes": routes, } def main() -> int: parser = argparse.ArgumentParser() parser.add_argument("--json", action="store_true", help="emit machine-readable JSON") args = parser.parse_args() try: result = resolve_live_route() except (OSError, URLError, ValueError, json.JSONDecodeError) as error: print(f"Live Fifth Domain resolution failed: {error}", file=sys.stderr) return 1 if args.json: print(json.dumps(result, ensure_ascii=False, indent=2)) else: print(result["repository_web"]) for route_id, path in result["routes"].items(): print(f"{route_id}={path}") return 0 if __name__ == "__main__": raise SystemExit(main())