#!/usr/bin/env python3
"""Launch an independently built T3 Code AppImage with fresh, isolated state."""
import argparse, json, os, pathlib, signal, subprocess, time
p = argparse.ArgumentParser()
p.add_argument('artifact'); p.add_argument('output'); p.add_argument('--port', type=int, default=14992); p.add_argument('--cdp', type=int, default=19292)
a = p.parse_args()
out = pathlib.Path(a.output).resolve() / time.strftime('%Y%m%d-%H%M%S')
out.mkdir(parents=True)
home = out / 't3-home'; (home / 'userdata').mkdir(parents=True)
settings = {'providerInstances': {'claudeAgent': {'driver': 'claudeAgent', 'enabled': True, 'environment': [{'name':'T3_ENV_PROOF', 'value':'provider-override-retained', 'sensitive':False}]}}, 'compactIdleThreads': False}
(home / 'userdata' / 'settings.json').write_text(json.dumps(settings))
env = dict(os.environ, T3CODE_HOME=str(home), T3CODE_PORT=str(a.port), T3CODE_DEV_SEED='0', T3CODE_DISABLE_AUTO_UPDATE='1', T3CODE_OTEL_SDK_DISABLED='1', XDG_CONFIG_HOME=str(out / 'xdg-config'), XDG_DATA_HOME=str(out / 'xdg-data'), T3_ENV_PROOF='inherited-value', LD_LIBRARY_PATH='/opt/user-libraries')
log = (out / 'desktop.log').open('w')
proc = subprocess.Popen(['headless-desktop', str(pathlib.Path(a.artifact).resolve()), '--no-sandbox', '--disable-gpu', f'--remote-debugging-port={a.cdp}'], env=env, stdout=log, stderr=subprocess.STDOUT, start_new_session=True)
(out / 'launch.json').write_text(json.dumps({'pid':proc.pid, 'home':str(home),'port':a.port,'cdp':a.cdp}))
print(str(out), flush=True)
try:
    proc.wait()
except KeyboardInterrupt:
    os.killpg(proc.pid, signal.SIGTERM)
    proc.wait()
