#!/usr/bin/env python3
"""Fresh synthetic homes; launch real apps. Private server logs contain pairing credentials: do not upload them."""
import os,sys,json,subprocess,datetime,pathlib,signal
ROOT=pathlib.Path('/tmp/lead-26066-r1/evidence-capture-2')
if sys.argv[1]=='start':
 row=sys.argv[2]; checkout=sys.argv[3]
 run=ROOT/(row+'-'+datetime.datetime.now(datetime.timezone.utc).strftime('%Y%m%dT%H%M%SZ'));run.mkdir()
 home=run/'home';home.mkdir()
 if row.startswith('SYM'):
  target=run/'physical-scratch';target.mkdir();(home/'scratch').symlink_to(target, target_is_directory=True)
 else:(home/'scratch').mkdir()
 (home/'userdata').mkdir()
 env=os.environ.copy();env.update(T3CODE_DEV_SEED='0',T3CODE_AUTO_BOOTSTRAP_PROJECT_FROM_CWD='0')
 log=open(run/'server.private.log','w')
 p=subprocess.Popen(['vp','run','dev','--home-dir',str(home)],cwd=checkout,env=env,stdout=log,stderr=subprocess.STDOUT,start_new_session=True)
 manifest=dict(row=row,run=str(run),home=str(home),checkout=checkout,serverPid=p.pid,sha=subprocess.check_output(['git','rev-parse','HEAD'],cwd=checkout,text=True).strip())
 (run/'run.json').write_text(json.dumps(manifest,indent=2));print(json.dumps(manifest))
elif sys.argv[1]=='stop':
 m=json.loads(pathlib.Path(sys.argv[2]).read_text());os.killpg(m['serverPid'],signal.SIGTERM);print('Stopped captured process group',m['serverPid'])
