← Commit history

Publish 0.4.16

John Lauer ·9d58b731d0 ·3mo ago ·parent 9d8470c
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]"+  } }\ No newline at end of file
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).