import subprocess,concurrent.futures as cf,os,sys,json,time
ROOT=sys.argv[1]
B=[("dental","a dental clinic"),("law","a law firm"),("gym","a gym"),("realestate","a real estate agency"),("saas","a SaaS analytics tool"),("coffee","a coffee roaster"),("studio","a design studio"),("fintech","a fintech app"),("travel","a travel agency"),("solar","a solar energy company"),("ai","an AI startup"),("wedding","a wedding venue")]
M=[("sonnet","claude-sonnet-5-5"),("opus","claude-opus-5-5")]
def go(j):
    (slug,biz),(mn,model)=j
    d=os.path.join(ROOT,mn,slug); os.makedirs(d,exist_ok=True)
    if os.path.exists(os.path.join(d,"index.html")): return (mn,slug,"skip",0)
    p=f"Build a landing page for {biz}. Put everything in one file, index.html, in the current folder."
    t=time.time()
    r=subprocess.run(["claude","-p",p,"--setting-sources","","--disable-slash-commands","--strict-mcp-config","--model",model,"--no-session-persistence","--tools","Write","--allowedTools","Write","--permission-mode","acceptEdits"],cwd=d,capture_output=True,text=True,timeout=540)
    ok=os.path.exists(os.path.join(d,"index.html"))
    open(os.path.join(d,"run.log"),"w").write((r.stdout or "")[-1500:]+"\n"+(r.stderr or "")[-800:])
    return (mn,slug,"ok" if ok else "FAIL",round(time.time()-t))
jobs=[(b,m) for m in M for b in B]
with cf.ThreadPoolExecutor(6) as ex:
    for r in ex.map(go,jobs): print(*r,flush=True)
print("DONE")
