import json,sys,glob,os
def first_ts(f):
    for l in open(f):
        t=json.loads(l).get("timestamp")
        if t: return t
    return ""
for f in sorted(glob.glob(sys.argv[1]+"/*.jsonl"), key=first_ts):
    rows=[json.loads(l) for l in open(f)]
    shapes=[r for r in rows if r.get("type")=="api-request-shape"]
    usages=[r["message"]["usage"] for r in rows if r.get("type")=="assistant" and r.get("message",{}).get("usage")]
    seen=[]; us=[]
    for u in usages:
        k=(u.get("cache_creation_input_tokens"),u.get("cache_read_input_tokens"))
        if not us or us[-1]!=k: us.append(k)
    out=[]
    for s in shapes[:3]:
        sh=s["shape"]; tools=[t.get("name") for t in sh.get("tools",[])]
        mcp=sorted(set(t.split("__")[1] for t in tools if t and t.startswith("mcp__")))
        out.append((s["shapeHash"][:8], len(tools), mcp))
    print(first_ts(f)[11:19], os.path.basename(f)[:8], "req shapes:", out, "| (cacheWrite,cacheRead) per req:", us[:4])
