import sys, time, json, urllib.request, os
sys.path.insert(0, "/tmp/amdwork")
import cdp
import websocket

DLDIR="/home/claude/amd-agent-downloads"
os.makedirs(DLDIR, exist_ok=True)

def targets():
    return [t for t in json.loads(urllib.request.urlopen("http://localhost:9223/json",timeout=10).read()) if t.get("type")=="page"]

ver=json.loads(urllib.request.urlopen("http://localhost:9223/json/version",timeout=10).read())
bws=websocket.create_connection(ver["webSocketDebuggerUrl"],timeout=30,max_size=None); _bid=[0]
def bsend(m,pr=None):
    _bid[0]+=1; mid=_bid[0]; bws.send(json.dumps({"id":mid,"method":m,"params":pr or {}}))
    while True:
        x=json.loads(bws.recv())
        if x.get("id")==mid: return x
bsend("Browser.setDownloadBehavior",{"behavior":"allow","downloadPath":DLDIR,"eventsEnabled":True})
print("download dir set:", DLDIR)

rc=None
for t in targets():
    if "/reportcenter/" in (t.get("url") or ""): rc=t; break
if not rc:
    print("NO_REPORTCENTER_TAB"); sys.exit(1)
p=cdp.attach(rc); p.enable()
print("rc url:", p.eval("location.href"))

has_sel=p.eval("!!document.querySelector('select.export-select')")
if not has_sel:
    p.navigate("https://static-100.advancedmd.com/practicemanager/reportcenter/#/main/ProvidersGroups/685#685")
    time.sleep(6)
    has_sel=p.eval("!!document.querySelector('select.export-select')")
print("has export-select:", has_sel)

before=set(os.listdir(DLDIR))
cb=p.eval("""(function(){var c=document.querySelector('input.export-checkbox'); if(!c) return 'NOCB'; if(!c.checked){c.click();} return c.checked;})()""")
print("export checkbox:", cb)
setsel=p.eval("""(function(){var s=document.querySelector('select.export-select'); if(!s) return 'NOSEL'; var idx=-1; for(var i=0;i<s.options.length;i++){ if(/CSV/i.test(s.options[i].text)){idx=i;break;} } if(idx<0) return 'NOCSV'; s.selectedIndex=idx; s.dispatchEvent(new Event('change',{bubbles:true})); s.dispatchEvent(new Event('input',{bubbles:true})); return s.options[idx].text;})()""")
print("format:", setsel)
run=p.eval("""(function(){var b=Array.from(document.querySelectorAll('button,a,input[type=button],input[type=submit]')).find(function(x){return (x.innerText||x.value||'').trim()==='Run Report';}); if(!b) return 'NORUN'; b.click(); return 'RUN_CLICKED';})()""")
print("run:", run)

deadline=time.time()+60; newfiles=set()
while time.time()<deadline:
    cur=set(os.listdir(DLDIR)); newfiles=cur-before
    done=[f for f in newfiles if not f.endswith(".crdownload")]
    if done: break
    time.sleep(2)
print("NEW_FILES:", sorted(newfiles))
for f in sorted(newfiles):
    fp=os.path.join(DLDIR,f); sz=os.path.getsize(fp)
    print("FILE:", f, "size:", sz)
    if f.lower().endswith(".csv"):
        with open(fp,"r",errors="replace") as fh: lines=fh.read().splitlines()
        print("CSV_ROWS:", len(lines))
        print("CSV_HEADER:", lines[0][:120] if lines else "")
print("VERIFY_EXPORT_DONE")
p.close(); bws.close()
