"""Drive manual pairing in an already-open Add environment screen.
Usage: python pairing-driver.py CHECKOUT T3_HOME ADDRESS SESSION OUTPUT_DIR SIDE hyphens|spaces
All credentials are minted at runtime; raw captures must be redacted before sharing.
"""
import pathlib, re, subprocess, sys, time
checkout, home, address, session, output, side, style = sys.argv[1:]
out = pathlib.Path(output) / (side + '-' + time.strftime('%Y%m%d-%H%M%S'))
out.mkdir(parents=True)
def device(*args):
    return subprocess.run(['agent-device', *args, '--session', session], check=True, text=True, capture_output=True).stdout
result = subprocess.run(['node', 'apps/server/src/bin.ts', 'pair', '--base-dir', home], cwd=checkout, check=True, text=True, capture_output=True).stdout
code = re.search(r'Token: (\w+)', result)[1]
separator = '-' if style == 'hyphens' else ' '
formatted = separator.join(code[i:i+4] for i in range(0,12,4))
print(device('fill', 'text="192.168.1.100:3773"', address, '--settle'))
print(device('fill', 'text="Pairing code"', formatted, '--settle'))
print(device('keyboard', 'dismiss'))
print(device('record', 'start', str(out / 'raw.mp4')))
print(device('press', 'role=button label="Add environment"', '--settle'))
print(device('snapshot', '-i'))
print(device('screenshot', str(out / 'a.png')))
time.sleep(.5)
print(device('screenshot', str(out / 'b.png')))
print(device('record', 'stop'))
print('Artifacts:',out)
