import json, pathlib, sys, urllib.request, websocket, datetime
root=pathlib.Path('/tmp/lead-25847-r1/evidence-capture')
side=sys.argv[1]
run=root/('cdp-run-'+datetime.datetime.now(datetime.timezone.utc).strftime('%Y%m%dT%H%M%S%f'))
run.mkdir()
metro='http://100.94.180.28:'+('8081' if side=='before' else '8082')
with urllib.request.urlopen(metro+'/json/list') as response:targets=json.load(response)
targets=[t for t in targets if t.get('appId')=='com.t3tools.t3code.dev' and not t.get('title','').startswith('Fusebox')]
if len(targets)!=1:raise Exception('Expected one dev-app inspector target: '+str(targets))
target=targets[0]
socket=websocket.create_connection(target['webSocketDebuggerUrl'],origin=metro,timeout=20)
expr=sys.argv[2] if len(sys.argv)>2 else 'JSON.stringify(__proof.read())'
socket.send(json.dumps({'id':1,'method':'Runtime.evaluate','params':{'expression':expr,'returnByValue':True,'awaitPromise':True}}))
while True:
    reply=json.loads(socket.recv())
    if reply.get('id')==1:break
socket.close()
if reply.get('result',{}).get('exceptionDetails'):raise Exception(reply)
value=reply.get('result',{}).get('result',{}).get('value')
print(json.dumps(value,indent=2))
with (run/f'cdp-{side}.jsonl').open('a') as f:f.write(json.dumps({'time':datetime.datetime.now(datetime.timezone.utc).isoformat(),'expression':expr,'value':value})+'\n')
