app
Pup - the AI's own browser
Public Made by Adomby adom
pup gives your AI a real browser on your desktop that it drives completely, in the background, signed in as you: windows that never jump in front of your work, one shared profile that learns your logins, and every window labeled on the taskbar with its AI thread's name.
← Commit history
Skill 1.5.1: warn the user about the Node.js UAC prompt + send a desktop notify_user heads-up BEFORE desktop_install_node, so they approve it instead of denying and dead-ending the cold-start
2 files changed
+19−2
SKILL.md+18−1@@ -26,13 +26,30 @@ When you run `browser_open_window`, one of these happens — handle each: | Response | What it means | What you do | |---|---|---| | `ok:true` / a real session | A browser (Chrome or Edge) was found and launched. | Proceed — the common case. |-| `errorCode: "node_not_found"` (or `could not run npm`) | Node.js isn't on AD's PATH (the bridge can't even start). | Run `adom-desktop desktop_install_node '{}'`, wait ~1–2 min, then retry. **If it STILL says node_not_found after a successful install, AD's PATH is stale** — Node is installed but the running Adom Desktop process can't see it. Relaunch AD on that box (`adom-desktop desktop_relaunch_self '{}'`, or ask the user to quit + reopen Adom Desktop), then retry. Do NOT loop desktop_install_node — reinstalling won't fix a stale PATH. |+| `errorCode: "node_not_found"` (or `could not run npm`) | Node.js isn't on AD's PATH (the bridge can't even start). | **Warn the user about the UAC prompt FIRST (see "The Node step" below), then** run `adom-desktop desktop_install_node '{}'`, wait ~1–2 min, retry. **If it STILL says node_not_found after a successful install, AD's PATH is stale** — Node is installed but the running Adom Desktop process can't see it. Ask the user to quit + reopen Adom Desktop, then retry. Do NOT loop desktop_install_node — reinstalling won't fix a stale PATH. | | `errorCode: "chrome_for_testing_installing"` (`installing:true`) | **RARE** — the machine has NO Chrome AND no Edge, so pup is fetching Chrome for Testing as a fallback (~150 MB, in the background; it did NOT block). | Poll **`browser_readiness`** until `{ready:true}`, then re-issue the same `browser_open_window`. **Faster fix:** ask the user to install Chrome or Edge (Edge ships with Windows) — pup then uses it instantly, no download. Don't report failure. | | `errorCode: "chrome_install_no_disk"` | No Chrome/Edge and too little free disk to install Chrome for Testing (`readiness.diskFreeMb` shown). | Tell the user how much is free and that ~800 MB is needed; ask them to free space OR install Edge/Chrome (Edge needs ~nothing). Do NOT retry the download — it fails until disk is freed. | | `errorCode: "chrome_install_failed"` / `chrome_download_network` / `chrome_install_permission` | No Chrome/Edge AND the CfT fallback download failed (network/proxy, permission, or other). | Read `readiness.lastError`. Ask the user to install Chrome/Edge, or drive their real browser via native mode (below). | **Want real Google Chrome on an Edge-only box?** If the user asks for Chrome specifically, run `browser_use '{"browser":"chrome","install":true}'` — pup downloads Google's official installer and installs Chrome **user-scoped (no admin prompt in most cases)**, then pins it. Poll `browser_readiness` (`installingChrome` / `chromeStablePhase`) until `browserKind:"chrome"`. If it stalls, a UAC prompt may be waiting on the user's desktop — ask them to accept it. +### The Node step — WARN the user, a UAC prompt is coming++Installing Node.js (`desktop_install_node`) pops a **Windows UAC dialog** on the user's desktop+(*"Node.js — OpenJS Foundation — allow changes?"*). A cloud AI can't click it — **the user must**, and+if they aren't expecting it they'll deny it and the whole cold-start dead-ends. So **before** you call+`desktop_install_node`:++1. **Say it in chat:** "Windows is about to show a User Account Control prompt for **Node.js** (publisher: OpenJS Foundation). Click **Yes** — it just installs Node so pup can drive the browser."+2. **Fire a desktop heads-up so they don't miss/deny it:**+ ```bash+ adom-desktop notify_user '{"title":"Approve the Node.js prompt","body":"A Windows UAC prompt is about to appear to install Node.js. Click Yes — it just lets pup control the browser."}'+ ```+3. **Then** run `adom-desktop desktop_install_node '{}'` and wait ~1–2 min.+4. After it succeeds, if `browser_*` STILL says `node_not_found`, AD's PATH is stale → ask the user to **quit and reopen Adom Desktop**, then retry. Don't re-run the installer.++(Use `--target <name>` on all of these when more than one desktop is connected.)+ ### "What do I have / is it ready?" - **`browser_readiness`** (this bridge, **READ-ONLY**) → `{ready, browserKind, browserSource, browserExecutablePath, candidates, defaultBrowser, …}` — tells you which browser pup will drive (`chrome` / `edge` / `chrome-for-testing`), the **full candidate list** it will fall through, the current **default**, and whether it's ready. Never triggers a download.
package.json+1−1@@ -1,6 +1,6 @@ { "slug": "adom-desktop-puppeteer-bridge",- "version": "1.5.0",+ "version": "1.5.1", "type": "app", "description": "CONTAINER-SIDE install \u2014 the everyday `pup` user skill only. This pkg drops the `pup` skill (drive the browser bridge: open/close/tabs/screenshot/record, background-by-default) into ~/.claude/skills/ AND ~/.codex/skills/. It does NOT install the developer/publishing skills (pup-bridge-dev, pup-bridge-publish) \u2014 those are source-only; clone the repo (adom-wiki repo clone adom/adom-desktop-puppeteer-bridge) to get them from dev-skills/. It also does NOT contain the bridge runtime: the bridge (Node + Chrome for Testing) lives on the DESKTOP \u2014 bundled inside Adom Desktop and published here on the Releases tab as adom-bridge-puppeteer-v<ver>.zip, which Adom Desktop streams into its bridges-cache. TL;DR: `pkg install` = the pup user skill; dev skills = clone the source; the bridge = the Release zip + bundled in Adom Desktop.", "keywords": [