master
John Lauer docs/contract: golden fixtures recorded from the Node build 2.0.399 for the Rust port 71c0e87 1mo ago
{
  "_timeoutHint": "ab waits up to 60s for this verb before the request times out. If it's a long operation (cloud open / download / export), DON'T treat a timeout as failure — the work usually keeps running on the bridge. Poll `pup_readiness` until it reports done.",
  "durationMs": 32,
  "error": "",
  "output": "{\"ok\":true,\"ai-thread\":\"pup-bridge\",\"windows\":[{\"window\":\"wiki-pup-bridge\",\"profile\":\"adom-you\",\"notYou\":false,\"lostBrowser\":false,\"createdMinAgo\":8,\"lastAgentUpdate\":{\"tabId\":\"tab-1\",\"verb\":\"pup_navigate\",\"note\":null,\"ts\":1788611876648},\"emulatedViewport\":null,\"tabs\":[{\"tabId\":\"tab-1\",\"url\":\"https://wiki.adom.inc/adom/pup-bridge?v=2.0.399\",\"title\":\"Pup - Puppeteer Bridge - Adom Wiki\",\"active\":true}]}],\"_hint\":\"These are your windows. Target them with NO ids: any pup verb without sessionId resolves to your own thread's window (or address any thread via \\\"ai-thread\\\"). pup_screenshot {} to see it; pup_reload {} to refresh it; tab verbs take tabId.\",\"_next\":[\"pup_screenshot {} — screenshot YOUR window (no ids: pup resolves your --ai-thread name to your window)\",\"pup_reload {} — reload it (e.g. after you publish or rebuild something it shows)\",\"pup_my_windows {} — full state of everything your thread owns: windows, tabs, urls, titles\",\"pup_open_window {\\\"url\\\":\\\"...\\\"} — another page = another TAB in your same window\",\"pup_raise_os_window {\\\"foregroundReason\\\":\\\"...\\\"} — bring it onto the user's screen (gated)\",\"Windows open MAXIMIZED already. NEVER hunt hwnds (desktop_find_window / desktop_set_window_state) for a pup window — pup verbs already know your window.\",\"pup_screenshot {} captures the PAGE (CDP, pixel-perfect, works in background — the shot you want 99% of the time). Only when you need the browser CHROME in frame (tab strip, toolbar icons): pup_window_info {} hands you this window's hwnd for desktop_screenshot_window — no searching, ever.\"]}",
  "status": "ok",
  "statusVerb": "pup_readiness",
  "success": true,
  "timeoutSeconds": 60
}