← Commit history
README.md+52−1@@ -108,6 +108,13 @@ point it at, via the debugger/scripting APIs - never by loading external scripts ## What's new +- **The AI installs it for you, on a fresh machine, with nothing pre-installed** - proven end-to-end:+ a brand-new adom-desktop with no bridge and **no system Node** goes from zero to a drivable, real+ signed-in browser (the bridge reuses adom-desktop's managed Node so the native host always starts).+ See **[The AI installs it for you](#the-ai-installs-it-for-you-auto-install)**.+- **Cold-start aware** - `nbrowser_readiness` is a read-only probe (`ready` / `needs-extension`) so the+ AI knows to offer the install exactly when you need a login, and the AD-level `bridge_readiness`+ answers "what tools do I have" without spawning anything. - **Drive ALL your browser profiles** (your work + personal Chrome/Edge profiles, …), not just one - `nbrowser_profiles` / `nbrowser_use_profile` switch instantly, with a persistent **security blocklist** to exclude any. - **Know which of your tools you're signed into** - `nbrowser_credentials` is a *read-only* query over the@@ -185,6 +192,44 @@ Removing it (or reinstalling to apply an updated build) is documented too: - background-first, the search-filter guard so you never remove the wrong extension, and the one brief narrated foreground beat the confirm bubble forces. +## The AI installs it for you (auto-install)++You never touch `chrome://extensions` yourself. This is a **proactively-offered** tool: the moment a+task needs your real, signed-in browser (log into a vendor, fill a form on an authenticated page, pull+a file behind a login), your Adom AI offers to install it and then **does the whole thing for you** -+about a minute, you click one **Start** button, that's it.++How the AI drives it (the flow, proven end-to-end on a fresh machine):++1. **Detect** - a plain request like *"log into DigiKey for me"* surfaces this tool via wiki discovery;+ the AI checks `adom-desktop nbrowser_readiness`.+2. **Install the bridge if missing** - `bridge_install {manifestUrl}`. adom-desktop provisions Node+ itself (system, or a portable no-UAC copy) and spawns the bridge - **you are never asked to install+ Node or anything else.**+3. **Offer + load the extension** - if readiness says `needs-extension`, the AI asks once (a+ `notify_user` Start button), then drives your browser's dev-mode **Load unpacked** over adom-desktop's+ generic OS verbs (push the `extension/` folder, register the native-messaging host in HKCU, toggle+ Developer mode, pick the folder), and **verifies by screenshot** that the Adom card loaded enabled+ with no errors.+4. **Confirm + drive** - `nbrowser_readiness` flips to `ready`; the AI proceeds with your task.++The recipe, hardening, and every picker/OS-dialog trap live in the **[`installing-the-extension`](https://wiki.adom.inc/adom/adom-browser-extension/files/skills/installing-the-extension/SKILL.md)**+skill; the step-by-step first-time walk-through is the **[First-time install flow](https://wiki.adom.inc/adom/adom-browser-extension/files/docs/INSTALL-FLOW.md)**.+Cardinal rule throughout: **the AI does everything it can itself - it never makes you do a step it could do.**++## Dependencies++| Dependency | Required? | Why |+|---|---|---|+| **[adom-desktop](https://wiki.adom.inc/adom/adom-desktop)** (`>= 1.9.47`) | **Yes** | This is an adom-desktop **bridge**. The container drives it entirely through the `adom-desktop` CLI (`nbrowser_*` verbs relayed to the bridge). adom-desktop also spawns the bridge, provisions its Node runtime, and auto-updates it. The one hard dependency. |+| **Node** (in adom-desktop) | Yes, **auto-provided** | The bridge + native host are Node. **You never install it** - adom-desktop provisions Node 22 (system if present, else a portable no-UAC copy) and the bridge publishes that path so the Chrome-launched host reuses it. (SDK runtime contract, v1.9.63+.) |+| **Chrome and/or Edge** | Yes | The extension loads into your real browser. Either works (one codebase); the extension ID is pinned so the native-host registration is deterministic. |+| The **MV3 extension + native-messaging host** | Yes, **installed by us** | Shipped in this repo (`extension/`, `host/`); the AI deploys + registers them during auto-install. |+| npm packages (for the bridge) | **None** | The bridge uses only Node core (`http`/`net`); its Release zip is source-only, no `node_modules`. |++The **skills package** declares `adom/adom-desktop` as its one dependency; everything else is either+provided by adom-desktop or bundled in this repo.+ ## Architecture (why it's shaped this way) An MV3 extension can't host a listening port, and per@@ -241,9 +286,15 @@ Driving the user's real browser, verified end-to-end: - **Recording** - `record_start {method:"wgc"}` (Windows, via adom-desktop - no picker, background) or `getdisplaymedia` (cross-platform). +**The full verb catalog is self-describing.** The list above is the 80% surface; the bridge exposes+**45 `nbrowser_*` verbs**, and **`nbrowser_describe`** returns the complete machine-readable catalog -+each verb's input/output, timeout, and a rich `hint` / `related` / `pitfalls`. Every verb response also+carries a top-level `_hint` (what happened, the next verb, the trap), so the driving AI is guided on+each call. Human-readable breakdown: [`skills/driving-the-extension/SKILL.md`](skills/driving-the-extension/SKILL.md).+ **The `chrome.debugger` "started debugging this browser" bar** appears only while a CDP verb (input / screenshot / eval) is active - the bridge lazy-attaches and idle-detaches after ~8s. Native verbs never-show it. Full breakdown + the verb-by-verb table: [`skills/driving-the-extension/SKILL.md`](skills/driving-the-extension/SKILL.md).+show it. ### Try the handshake locally (dev)
package.json+4−2@@ -1,6 +1,6 @@ { "slug": "adom-browser-extension",- "version": "0.3.12",+ "version": "0.3.13", "type": "app", "title": "Adom Native Browser Extension (Chrome + Edge)", "description": "Drive your real, logged-in Chrome/Edge from the Adom ecosystem: the nbrowser_* native-browser bridge (counterpart to pup). Multi-profile driving, a read-only credential-library query over the browser's own saved logins (Chrome + Edge), and hands-free vendor login automation, so chip CAD / datasheets download past every login wall in your real signed-in session.",@@ -49,7 +49,9 @@ "install": "./install.sh", "uninstall": "./uninstall.sh" },- "dependencies": {},+ "dependencies": {+ "adom/adom-desktop": "^1.9.47"+ }, "tags": [ "browser", "extension",
page.json+62−6@@ -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,61 @@ }, "visibility": "public", "brief": "Your AI's hands in your real, signed-in Chrome & Edge: build, drive, and test web apps, and log past vendor walls, in the browser you already use. The nbrowser_* native-browser bridge (pup's counterpart) - runs in your actual logged-in profile, so cookies/SSO/saved-logins/captcha all work.",- "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.3.13",+ "type": "app",+ "description": "Drive your real, logged-in Chrome/Edge from the Adom ecosystem: the nbrowser_* native-browser bridge (counterpart to pup). Multi-profile driving, a read-only credential-library query over the browser's own saved logins (Chrome + Edge), and hands-free vendor login automation, so chip CAD / datasheets download past every login wall in your real signed-in session.",+ "install": {+ "binary_name": "adom-browser-extension"+ },+ "files": [+ "install.sh",+ "uninstall.sh",+ "package.json",+ "page.json",+ "README.md",+ "docs/INSTALL-FLOW.md",+ "skills/adom-browser-extension/SKILL.md",+ "skills/cross-platform-dev/SKILL.md",+ "skills/driving-the-extension/SKILL.md",+ "skills/native-browser-safety/SKILL.md",+ "skills/installing-the-extension/SKILL.md",+ "skills/uninstalling-the-extension/SKILL.md",+ "skills/native-browser-recording/SKILL.md",+ "skills/driving-the-extension-demo/SKILL.md",+ "skills/driving-the-desktop/SKILL.md",+ "demo/adom-native-browser-demo.mp4",+ "host/native-host.js",+ "bridge/server.js",+ "skills/driving-sites/SKILL.md",+ "skills/driving-gusto/SKILL.md",+ "skills/reading-google-messages/SKILL.md",+ "screenshots/hero-v5.png",+ "PRIVACY.md",+ "privacy.html",+ "screenshots/usecase-oscilloscope.png",+ "screenshots/usecase-chipfetcher.png",+ "screenshots/usecase-symbol.png",+ "screenshots/usecase-eda.png",+ "screenshots/usecase-board.png",+ "screenshots/usecase-chipsmith.png",+ "screenshots/hero.png",+ "docs/UNINSTALL-FLOW.md",+ "screenshots/extensions-adom-card.png",+ "screenshots/install-folder-picker.png",+ "screenshots/uninstall-confirm-bubble.png",+ "screenshots/hero-v7.png"+ ],+ "scripts": {+ "install": "./install.sh",+ "uninstall": "./uninstall.sh"+ },+ "dependencies": {+ "adom/adom-desktop": "^1.9.47"+ },+ "org": "adom",+ "author": {+ "name": "John Lauer",+ "email": "[email protected]"+ }+}