import json
import pathlib
import sys
from remote import run, ROOT

local = pathlib.Path(__file__).resolve().parent.parent
for name in (sys.argv[1:] or ('stgcnpp','posec3d','ava_slowonly','yowov2')):
    result = run(['nvidia-smi','--query-gpu=memory.free','--format=csv,noheader,nounits'])
    if result.returncode or min(map(int,result.stdout.decode().split())) < 8192:
        print('WAIT_GPU_HEADROOM',name,flush=True)
        break
    command = ['docker','run','--rm','--name','contextra-action-'+name+'-20261026-r02',
        '--gpus','device=0','--user','0:0','--read-only','--cap-drop','ALL',
        '--cap-add','DAC_OVERRIDE','--security-opt','no-new-privileges','--cpus','2',
        '--memory','8g','--pids-limit','128','--network','none','--tmpfs','/tmp:rw,size=256m',
        '-e','MPLCONFIGDIR=/tmp/mpl','-v',ROOT+':/work:ro','-v',ROOT+'/reports:/work/reports',
        'contextra-action-eval:20261026-camera24-r03','python','/work/smoke_models.py',name]
    print('START',name,flush=True)
    try:
        result = run(command,timeout=180)
    except Exception:
        run(['docker','stop','--time','10','contextra-action-'+name+'-20261026-r02'])
        raise
    (local/'reports'/('smoke_console_'+name+'.log')).write_bytes(result.stdout+result.stderr)
    for line in result.stdout.decode().splitlines():
        if line.startswith('{"candidate"'):
            data = json.loads(line)
            print(json.dumps({k:v for k,v in data.items() if k!='traceback'}),flush=True)
    print('EXIT',name,result.returncode,flush=True)
