import hashlib
import json
import os
import time
import urllib.request
from pathlib import Path

token=Path(os.environ['CONTEXTRA_CONTROL_TOKEN_FILE']).read_text().strip()
q=urllib.request.Request('http://127.0.0.1:5000/internal/secure-control/runtime-status',headers={'Authorization':'Bearer '+token})
with urllib.request.urlopen(q,timeout=5) as r: runtime=json.load(r)
selected=[x for x in runtime['streams'] if str(x.get('cameraId'))=='24']
assert len(selected)==1, 'Camera24 stream must be unique'
stream=selected[0]
sid=stream['streamId']
with urllib.request.urlopen('http://127.0.0.1:5000/api/v1/streams/'+sid+'/settings',timeout=5) as r: settings=json.load(r)
keep=('fight','pose','tracking','event_cooldowns','analysis_fps_target','analysisFpsTarget','display_categories')
out={'at_ms':time.time_ns()//1000000,'runtime':stream,'settings_keys':list(settings),
     'settings':{k:{name:v[name] for name in keep if name in v} if isinstance(v,dict) else v for k,v in settings.items() if k in ('configured','effective','restart_pending','revision','scenario_revision','config_version')},
     'metadata_enabled':os.environ.get('CONTEXTRA_METADATA_ENABLED'),
     'source_sha256':{name:hashlib.sha256((Path('/opt/contextra')/name).read_bytes()).hexdigest() for name in ('app/fight_r5/runtime.py','app/fight_r5/core.py','app/fight_r5/web.py','app/scenario_parameters.py')},
     'artifact_enabled':os.environ.get('CONTEXTRA_EVENT_ARTIFACT_ENABLED')}
print(json.dumps(out))
