← Commit history

ship.sh was never pushing package.json, so the Files tab sat at 2.0.353 without the agent_permissions block

John Lauer ·b4283e8422 ·2mo ago ·parent dadbc79
2 files changed +30−3
package.json+21−1
@@ -1,6 +1,6 @@ {   "slug": "pup-bridge",-  "version": "2.0.353",+  "version": "2.0.355",   "type": "app",   "description": "The pup SKILL PACK \u2014 the AI skills that teach a cloud/container AI how to drive the Adom Desktop Puppeteer (pup) bridge (browser_* verbs): the everyday `pup` skill plus focused sub-skills for windows/sessions/tabs, screenshots+recording, browsers+Chrome install, and driving the Adom wiki. Installs into ~/.claude/skills + ~/.codex/skills. DOCS ONLY \u2014 this is NOT the bridge runtime. The bridge itself (the Node program that drives the browser) runs on the DESKTOP: Adom Desktop bundles it and auto-installs/updates it, and it's published separately on the Releases tab as adom-bridge-puppeteer-v<ver>.zip. The pkg version is kept in lockstep with the Release version so the page's max version row always carries BOTH a pkg tarball (skills) and a runtime zip (bridge) \u2014 a skills-only or runtime-only bump on the top row breaks constraint installs. TL;DR: pkg install = the skills for your AI; the bridge = the Release zip, which Adom Desktop manages for you.",   "keywords": [@@ -47,6 +47,26 @@     "install": "./install.sh",     "uninstall": "./uninstall.sh"   },+  "agent_permissions": {+    "allow_bash": [+      "pup-dashboard"+    ],+    "allow": [+      "pup-dashboard: prints the URL of pup's dashboard and reports its status. It starts no browser, opens no window, and changes nothing on the user's screen.",+      "pup read-only verbs (pup_screenshot, pup_status, pup_readiness, pup_describe, pup_my_windows, pup_list_windows, pup_credentials): these READ the state of pup's own sandbox browser. They never touch the user's real browser, never take the screen, and pup_credentials returns hosts and usernames only, never a password.",+      "pup navigation verbs (pup_open_window, pup_navigate, pup_reload, pup_open_tab, pup_click, pup_type, pup_eval): these drive a browser pup launched and owns, in a profile pup manages, in the BACKGROUND. It is not the user's signed-in browser and it does not take over their screen."+    ],+    "soft_deny": [+      "pup_login with submit:true: sends a stored password to a live site. It is reason-gated on purpose, and the reason names the live domain, because catching a lookalike domain before the secret is sent is the whole point.",+      "credential_set and credential_delete: these write to and remove from the user's OS keychain.",+      "pup_raise_os_window, pup_assisted_click, and any native desktop input: these take over the user's SCREEN and keyboard focus. Native input goes to whatever window holds focus at that instant, so a mistimed one types into the user's own work.",+      "pup_close_window and pup_quit_idle_browsers: these destroy windows the user may be looking at, and a pup window commonly holds state a person is part-way through."+    ],+    "environment": [+      "pup drives a browser pup installed and owns (Chrome for Testing), in a pup-managed profile, on the user's desktop but in the background. It is NOT the user's signed-in browser: that is nb, a different package.",+      "pup's verbs are invoked through the adom-bridge CLI rather than through a binary this package installs, so the allow_bash prefix rules above cannot reach them and these natural-language lines are all the classifier has to go on."+    ]+  },   "dependencies": {     "adom/adom-bridge": "^2.0.0"   },
tools/ship.sh+9−2
@@ -27,7 +27,11 @@ cd "$REPO" echo "== 0. static gates ==" node --check src/server.js node tests/check_dashboard_script.js >/dev/null-echo "   server.js + served dashboard script parse"+# 2.0.339: the dock moved to the bridge-served dashboard and the tab reverted to the old filled+# tile, because the favicon belongs to the PAGE, not the app. This gate keeps the two copies of+# the drawing identical and refuses currentColor, which renders black in an isolated document.+node tests/check_icon.js >/dev/null+echo "   server.js + served dashboard script parse; dock favicon matches the served icon"  echo "== 1. version lockstep ==" printf '%s' "$VER" > src/BRIDGE_VERSION@@ -84,9 +88,12 @@ open('adom-bridge-puppeteer-manifest.json', 'a').write('\n') print(f"   manifest -> {url}\n   sha256={sha} size={size}") PY +# package.json was MISSING from this list until 2.0.355, so the Files tab sat at 2.0.353 and did+# not show the agent_permissions block at all. The pkg TARBALL was always correct, which is why+# nothing broke and nobody noticed: the stale copy is the one humans read, not the one installs use. echo "== 4. push the text files ==" adom-wiki repo push "$PAGE" \-  --files adom-bridge-puppeteer-manifest.json src/bridge.json src/BRIDGE_VERSION src/server.js src/chrome.js SKILL.md \+  --files adom-bridge-puppeteer-manifest.json src/bridge.json src/BRIDGE_VERSION src/server.js src/chrome.js SKILL.md package.json \   -m "v${VER}: ${LOG}" >/dev/null 2>&1 || {     [ "${FORCE_PUSH:-0}" = "1" ] || { echo "   PUSH FAILED (set FORCE_PUSH=1 to retry)"; exit 1; }   }