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

LOG="/tmp/amdwork/pm_inspect.log"
def log(*a):
    with open(LOG,"a") as f: f.write(" ".join(str(x) for x in a)+"\n")
open(LOG,"w").close()

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

log("ALL TARGETS:")
for t in targets(): log("  ", t.get("url"))

# find the PM app tab
pm=None
for t in targets():
    if "/amds/pm/app/" in (t.get("url") or "") or "/practicemanager/" in (t.get("url") or ""):
        pm=t; break
if not pm:
    log("NO_PM_TAB_FOUND")
    log("DONE_PMINSPECT"); sys.exit(0)

log("PM TAB URL:", pm.get("url"))
p=cdp.attach(pm)
p.enable()
# wait for PM SPA to render
deadline=time.time()+40
last=""
while time.time()<deadline:
    last=(p.eval("document.body && document.body.innerText || ''") or "")
    if len(last.strip())>30:
        break
    time.sleep(2)
log("PM URL now:", p.eval("location.href"))
log("PM title:", p.eval("document.title"))
log("PM readyState:", p.eval("document.readyState"))
log("PM bodylen:", len(last))
log("PM bodytext:", json.dumps(last[:1800]))
# look for username display anywhere
uname=p.eval("""(function(){
  var t=document.body.innerText||'';
  var m=t.match(/AGENT/i);
  var g=t.match(/GAUTAM/i);
  return JSON.stringify({hasAGENT:!!m, hasGAUTAM:!!g});
})()""")
log("username scan:", uname)
log("IFRAMES:", p.eval("JSON.stringify(Array.from(document.querySelectorAll('iframe')).map(f=>f.src))"))
p.screenshot("/tmp/amd-agent-dashboard.png")
log("SHOT:/tmp/amd-agent-dashboard.png")
log("DONE_PMINSPECT")
p.close()
