"""Mobile deep-link proof driver. Uses synthetic data from seed.mjs.
All outputs go to a new timestamped run directory. Credentials are never printed.
"""
import argparse,json,subprocess,time,pathlib,urllib.parse,os,re
p=argparse.ArgumentParser();p.add_argument('action',choices=['launch','pair','link']);p.add_argument('--session',required=True);p.add_argument('--connection',required=True);p.add_argument('--metro');a=p.parse_args()
c=json.load(open(a.connection))
if a.action=='launch':
    url='t3code-dev://expo-development-client/?'+urllib.parse.urlencode({'url':a.metro,'disableOnboarding':'1','disableAutoLaunch':'1','disableFab':'1'})
elif a.action=='pair':
    if os.environ.get('REPO_ROOT'):
        origin=c['pairingUrl'].split('/pair')[0]
        result=subprocess.run(['node',os.environ['REPO_ROOT']+'/apps/server/src/bin.ts','auth','pairing','create','--base-dir',str(pathlib.Path(a.connection).parent),'--base-url',origin,'--ttl','15m','--label','Evidence'],capture_output=True,text=True,check=True)
        c['pairingUrl']=re.search(r'Pair URL: (\S+)',result.stdout+result.stderr)[1]
    url='t3code-dev://connections/new?'+urllib.parse.urlencode({'pairingUrl':c['pairingUrl'],'autoConnect':'1'})
else:
    url='t3code-dev://threads/'+urllib.parse.quote(c['environmentId'],safe='')+'/'+urllib.parse.quote(c['threadId'],safe='')
r=subprocess.run(['agent-device','open','com.t3tools.t3code.dev',url,'--session',a.session],capture_output=True,text=True)
print('Action:',a.action,'exit:',r.returncode)
if r.returncode: print('Device action failed; inspect private device diagnostics.')
raise SystemExit(r.returncode)
