#!/usr/bin/env python3
"""Record the same five gestures; save input-command timing for video annotations."""
import argparse, json, pathlib, subprocess, time
p=argparse.ArgumentParser();p.add_argument('--cli',default='agent-device');p.add_argument('--session',required=True);p.add_argument('--output',required=True)
a=p.parse_args();out=pathlib.Path(a.output);out.mkdir(parents=True,exist_ok=False)
def run(args):
 r=subprocess.run([a.cli,*args,'--session',a.session],capture_output=True,text=True)
 with (out/'commands.log').open('a') as f:f.write(r.stdout+r.stderr)
 if r.returncode:raise RuntimeError('Device command failed; inspect private commands.log')
run(['record','start',str(out/'raw.mp4'),'--fps','15']);origin=time.monotonic();events=[]
try:
 for i,args in enumerate([['gesture','fling','up','540','1800','1000']]*3+[['gesture','pan','540','1800','0','-1000','1200']]*2):
  start=time.monotonic()-origin;run(args);end=time.monotonic()-origin
  events.append({'label':f'Upward fling {i+1}' if i<3 else f'Slow upward pan {i-2}','start':start,'end':end})
finally:
 duration=time.monotonic()-origin;run(['record','stop'])
 (out/'timing.json').write_text(json.dumps({'events':events,'duration':duration},indent=2))
