#!/usr/bin/env python3
"""Drive an already paired Android PR detail. No live GitHub writes."""
import argparse, datetime, pathlib, subprocess, time
p=argparse.ArgumentParser()
p.add_argument("--session", required=True)
p.add_argument("--output", required=True)
p.add_argument("--side", choices=["before","after"], required=True)
a=p.parse_args()
out=pathlib.Path(a.output)/datetime.datetime.now(datetime.timezone.utc).strftime("%Y%m%dT%H%M%S%fZ")
out.mkdir(parents=True)
def device(*args):
    return subprocess.run(["agent-device",*args,"--session",a.session],check=True,capture_output=True,text=True).stdout
def stable(name):
    for attempt in range(5):
        first=out/f"{name}-{attempt}-first.png"
        final=out/f"{name}.png"
        device("screenshot",str(first))
        time.sleep(.5)
        device("screenshot",str(final))
        c=subprocess.run(["compare","-metric","AE",str(first),str(final),"null:"],capture_output=True,text=True)
        if c.returncode==0:
            print(f"{name}: identical screenshots at least 500ms apart")
            return
    raise RuntimeError("Screen never settled: "+name)
device("wait","text","Queued" if a.side=="after" else "Squash and merge")
stable("primary")
device("record","start",str(out/"interaction.mp4"))
try:
    time.sleep(1)
    device("press",'label="Merge options"',"--settle")
    stable("menu")
    tree=device("snapshot")
    if '"Remove from queue"' in tree:
        device("press",'text="Remove from queue"',"--settle")
        stable("confirmation")
        device("press",'text="Remove from queue"',"--settle")
        device("wait","text","Squash and merge")
        stable("dequeued")
        print("Observed removal action, confirmation, and restored Squash and merge")
    else:
        print("Observed no Remove from queue action; primary remains Squash and merge")
        device("press","100","1750")
finally:
    device("record","stop")
print(out)
