← Commit history

SDK: host apps are install-on-request (never tell the user to do it manually) + bridge level table

John Lauer ·24a7847619 ·4mo ago ·parent b88b383
3 files changed +17−3
SKILL.md+15−1
@@ -212,7 +212,21 @@ A bridge has TWO kinds of dependency, and **AD treats them OPPOSITELY.** Get thi 
 **Tier 1 — your RUNTIME (Node, Python, your own browser download): AD prewarms + auto-installs it.** This is your plumbing. On first boot AD installs Node/Python in the background (winget) and prewarms heavy assets you declare. You may also download your own runtime asset (pup downloads Chrome-for-Testing) — fine, it's yours. **But do it in the BACKGROUND: a `*_status` / `*_readiness` / ANY probe verb must NEVER block on a heavy download.** Spawn your server fast (it usually doesn't need the asset to *start*), kick the download off detached, and report `state:"warming"` until ready. A synchronous-download-on-first-verb is the exact footgun this release fixed (pup's 150 MB Chrome fetch used to block the probe).
 
-**Tier 2 — the HOST APP (KiCad, Fusion, Altium, …): AD ONLY DETECTS it — NEVER installs it.** The user's app is theirs; installing it pre-emptively is rude. Its *presence* is the signal: a machine with KiCad belongs to a KiCad user (EDA users are mono-tool — a Fusion user isn't a KiCad user). So AD detects it and **won't even prewarm your bridge if your host app isn't installed** (no point spinning up the KiCad bridge on a no-KiCad machine; on-demand spawn still works if they install it later).
+**Tier 2 — the HOST APP (KiCad, Fusion, Altium, …): AD DETECTS it by default and installs it ON REQUEST — never pre-emptively, and NEVER by telling the user to do it themselves.** Two rules that sound opposed but aren't:
+- **Don't install it unasked.** A multi-GB app nobody asked for is rude, so by default AD only DETECTS presence (a machine with KiCad belongs to a KiCad user; EDA users are mono-tool — a Fusion user isn't a KiCad user). AD won't prewarm/spawn your bridge while the app is absent — a resource decision, not a "go away."
+- **But the cardinal Adom rule overrides everything: the AI does EVERYTHING for the user — it must NEVER tell the user to do something the AI can do itself.** So your bridge MUST know how to install the host app (`desktop_install_kicad` / winget / your own install verb) and just DO it the instant the user wants it. **Your "not installed" hint must OFFER to install it** ("KiCad isn't installed — want me to install it for you?"), then do it on a yes — it must NEVER say *"download it from kicad.org."* Pointing the user at a manual download is the breach.
+
+**Bridge install LEVELS — how eagerly each bridge gets onto the machine. The AI ALWAYS does the install; the level only sets the TIMING/CONSENT:**
+
+| Level | Bridge(s) | Behavior |
+|---|---|---|
+| **0 · Built-in / MUST** | Hydrogen Desktop (`hd`) | The platform itself — the editor AD lives in. Always present; not "installed" by AD. |
+| **1 · Fundamental — pre-emptive** | Puppeteer (`pup`) | Browser automation is foundational to Adom. AD pre-installs its RUNTIME (Node + Chrome-for-Testing) ASAP on first boot, no asking. |
+| **2 · Recommended — proactive offer** | native-browser (the extension) | The user's REAL logged-in browser (login/forms). AD proactively SUGGESTS it and installs on a yes (it needs a browser-extension step the user confirms). |
+| **3 · On-request host app** | KiCad, Fusion, Altium, … | Detect by default; NEVER pre-install (huge app, rude unasked). The moment the user wants it, the AI installs it AUTOMATICALLY (winget / `desktop_install_*`) — NEVER tells the user to do it manually. |
+| **4 · Explicit third-party** | any `bridge_install`'d bridge | The user opts in by installing it. |
+
+The through-line: **the AI never makes the user do something it can do itself.** The only knob is *when* — pre-emptive (pup), proactively-offered (native-browser), or on-request (host apps).
 
 **Declare both in `bridge.json`:**
 ```json
package.json+1−1
@@ -1,6 +1,6 @@ {
   "slug": "adom-desktop-bridges",
-  "version": "1.1.2",
+  "version": "1.1.3",
   "type": "app",
   "description": "Bridge SDK: build/publish/discover an adom-desktop bridge. Root skill = the full SDK guide; sub-skills = shipping-a-bridge, bridge-author (authoring walkthrough), and 3 fill-in-the-blanks templates (dev/publish/user). bridge.json schema, lifecycle verbs, rich-hints-in-output rule.",
   "dependencies": {},
page.json+1−1
@@ -4,7 +4,7 @@   "slug": "adom-desktop-bridges",
   "title": "Adom Desktop - Bridge SDK",
   "brief": "Bridge SDK guide: bridge.json schema, kind:python/node/exe, hello-python + hello-rust reference templates, packaging + lifecycle commands.",
-  "version": "1.1.2",
+  "version": "1.1.3",
   "tags": [],
   "license": "MIT",
   "discovery_triggers": [