← Commit history
Publish 0.4.16
3 files changed
+77−6
package.json+1−1@@ -1,6 +1,6 @@ { "slug": "adom-browser-extension",- "version": "0.4.15",+ "version": "0.4.16", "type": "app", "title": "Adom Browser Extension", "description": "This package installs the bridge's SKILLS into your container so your AI knows how to drive your real signed-in Chrome and Edge; Adom Desktop loads the bridge runtime itself from the release zip.",
page.json+38−5@@ -9,11 +9,11 @@ "chrome", "edge", "nbrowser",- "ai-agent",- "developer-tools",- "vibe-coding",+ "pup", "native-messaging",- "adom-desktop"+ "adom-desktop",+ "credentials",+ "chip-fetcher" ], "status": "live", "discovery_triggers": [@@ -57,5 +57,38 @@ }, "visibility": "public", "brief": "Your AI's hands in your real, signed-in browser. The Adom Browser Extension (abe) works with both Chrome and Edge: build, drive, and test web apps, and log past vendor walls, in the browser you already use - cookies, SSO, saved logins and captcha trust intact. The nbrowser_* bridge (pup's counterpart) runs in your actual logged-in profile.",- "discovery_pitch": "The native-browser extension drives the user's REAL signed-in Chrome/Edge via nbrowser_* verbs: use it for LOGGING IN, filling forms, and downloading behind auth with their OWN saved passwords - pup cannot (it is a fresh Chrome-for-Testing with no logins). Next moves: run 'adom-desktop bridge_list' to check it is installed; if not, OFFER to install it (see the installing-the-extension skill) - never make the user do it. If this container lacks the skills, 'adom-wiki pkg install adom/adom-browser-extension'. Check readiness with 'adom-desktop nbrowser_readiness' (state:needs-extension means offer the install)."+ "discovery_pitch": "The native-browser extension drives the user's REAL signed-in Chrome/Edge via nbrowser_* verbs: use it for LOGGING IN, filling forms, and downloading behind auth with their OWN saved passwords - pup cannot (it is a fresh Chrome-for-Testing with no logins). Next moves: run 'adom-desktop bridge_list' to check it is installed; if not, OFFER to install it (see the installing-the-extension skill) - never make the user do it. If this container lacks the skills, 'adom-wiki pkg install adom/adom-browser-extension'. Check readiness with 'adom-desktop nbrowser_readiness' (state:needs-extension means offer the install).",+ "version": "0.4.16",+ "type": "app",+ "description": "This package installs the bridge's SKILLS into your container so your AI knows how to drive your real signed-in Chrome and Edge; Adom Desktop loads the bridge runtime itself from the release zip.",+ "install": {+ "binary_name": "adom-browser-extension"+ },+ "files": [+ "skills/adom-browser-extension/SKILL.md",+ "skills/driving-sites/SKILL.md",+ "skills/driving-the-desktop/SKILL.md",+ "skills/driving-the-extension/SKILL.md",+ "skills/driving-the-extension-demo/SKILL.md",+ "skills/installing-the-extension/SKILL.md",+ "skills/native-browser-recording/SKILL.md",+ "skills/native-browser-safety/SKILL.md",+ "skills/reading-google-messages/SKILL.md",+ "skills/uninstalling-the-extension/SKILL.md",+ "install.sh",+ "uninstall.sh",+ "package.json"+ ],+ "scripts": {+ "install": "./install.sh",+ "uninstall": "./uninstall.sh"+ },+ "dependencies": {+ "adom/adom-desktop": "^1.9.47"+ },+ "org": "adom",+ "author": {+ "name": "John Lauer",+ "email": "[email protected]"+ } }
skills/driving-the-desktop/SKILL.md+38@@ -156,8 +156,46 @@ the host decrypts the legacy `os_crypt` key fine, `keylen=32`, but that key can' summon it (Chrome requires a real OS gesture + foreground window). **Fully-background password fill is thus impossible for app-bound passwords - a Chrome boundary, not an Adom one.** +### ⛔ PRE-COMPUTE THE WHOLE TAKEOVER BEFORE YOU ASK (John, 2026-08-04)++Any recipe below that needs the foreground must be **fully prepared before the+consent toast goes out**, then executed as **ONE script with no AI turns in the+middle**. The user is frozen from the moment they click "Go ahead"; every model+round trip is seconds of them holding still for nothing.++Real incident: a thread got consent for the saved-password autofill, then spent+six round trips (capture → read → decide coords → click → capture → read →+click) with the user waiting. John: *"you must be prepared before you interrupt+the user... execute what you need to do as fast as possible."*++So, before asking:++1. **Capture and measure in the background.** `desktop_screenshot_window` works+ on occluded windows and returns `coordMap`, so resolve every click point+ first. There is no reason to be measuring after consent.+2. **Write the entire sequence as one runnable script**, including the popup+ step. A popup that only exists after a click still gets handled inline:+ capture it, read its own `shotId` from `screenshots[]`, click its row, verify+ - all in the same run, in code.+3. **Put the verification and the release toast in that same script**, so the+ user is freed the instant it lands.+4. **Budget under 20 seconds.** If it cannot run in one shot, redesign it.++See the `foreground-etiquette` skill for the consent gate itself. This section is+about being ready to move the instant consent arrives.+ ### ✅ Recipe - log in with a saved password (autofill via owned-popup, PROVEN on Gusto 2026-06-24) The working flow. Mostly background; the ONLY foreground is the ~1s summon.++**Pre-compute steps 2 and 3's coordinates BEFORE the consent toast, then run+steps 3-6 as a single script.** Re-verified on Chase Connect 2026-08-04: the+password field sat inside an iframe and was **absent from the UIA tree**+(`automationId` and `role:"edit"` both missed it), so the reliable path was+image-space: background `desktop_screenshot_window` → click the field via+`desktop_click {space:"image", shotId, x, y}` → re-capture → the dropdown comes+back as `screenshots[0]` with **its own `shotId`** → click the saved-login row in+POPUP image space. Arrow keys never drive that popup, and pressing Enter on an+empty field submits the form and throws a login error. 1. **Background:** `nbrowser_*` navigate to the login page; on a split/Keycloak form (e.g. Gusto), `nbrowser_type` the email + `nbrowser_click` "Continue" (email isn't secret) → land on the password step. Confirm with `nbrowser_eval "!!document.querySelector('input[type=password]')"` (background - NOT a fullscreen grab).