import hashlib
import importlib.util
import json
import os
from pathlib import Path
import subprocess
import urllib.request

os.umask(0o077)
root = Path(__file__).parent
loader = importlib.util.spec_from_file_location('gate', '/tmp/codex/ltb1021/2026-09-11_service-stop_r01/gate.py')
g = importlib.util.module_from_spec(loader)
loader.loader.exec_module(g)
env = g.load_env_file(str(g.ENV))
opener = urllib.request.build_opener(urllib.request.ProxyHandler({}))
with opener.open('http://127.0.0.1:'+env['FASTAPI_HOST_PORT']+'/api/v1/streams', timeout=3) as response:
    streams = json.load(response)['streams']
if isinstance(streams, dict):
    streams = list(streams.values())
c = g.inspect()
summary = dict(image=c['Image'], container_state=c['State']['Status'],
               health=c['State'].get('Health', {}).get('Status'),
               restart=c['HostConfig']['RestartPolicy'],
               stream_states=[s['state'] for s in streams],
               env_hash=g.sha(g.ENV), model_config_hash=g.sha(g.CFG),
               task_containers=subprocess.check_output(['docker', 'ps', '-aq', '--filter', 'name=codex-intrusion-'], text=True).split(),
               build=0, deploy=0, start=0, stop=0)
(root/'actual.json').write_text(json.dumps(summary, indent=2))
print(json.dumps(summary))
