import json
import os
import subprocess
import importlib.util
from pathlib import Path
os.umask(0o077)
R=Path(__file__).parent
C=Path('/workspace/contextra-runtime-config/metadata-active')
REPO=Path('/workspace/contextra-analytics-runtime-lifecycle-refactor')
spec=importlib.util.spec_from_file_location('prior_common','/tmp/codex/ltb1021/2026-09-15_contextra-rtsp-compat_r01/common.py')
prior=importlib.util.module_from_spec(spec);spec.loader.exec_module(prior)
g,api=prior.g,prior.api
def query(role,*args):
    a=json.loads((C/'access.json').read_text());password=json.loads((C/'secrets.json').read_text())[role]
    p=subprocess.run(['redis-cli','--json','-h',a['host'],'-p',str(a['port']),'--user','contextra_'+role,*args],
        env=dict(os.environ,REDISCLI_AUTH=password),capture_output=True,text=True,timeout=5)
    assert p.returncode==0,'REDIS_CLIENT_FAILED'
    try:return json.loads(p.stdout)
    except ValueError:
        if p.stdout.startswith(('error:', '(error)')):raise RuntimeError(p.stdout[:160])
        return p.stdout
def save(name,data):
    (R/name).write_text(json.dumps(data,ensure_ascii=False,indent=2))
