← Commit history
dist/linux/adom-bridge
⋯ 1 unchanged line ⋯
package.json+1−1
@@ -1,6 +1,6 @@ {
   "slug": "adom-bridge",
-  "version": "2.1.176",
+  "version": "2.1.177",
   "type": "app",
   "brief": "Adom Bridge unleashes your AI onto your full PC: full power, full safety. The AI breaks out of the container it runs in and onto your real machine, managing and running your entire laptop as you: launch apps, move files, drive any window, control KiCad, Fusion 360 or your real signed-in browser. Works with any AI, cloud or local (Claude Desktop, Claude Code, Codex), no Hydrogen required. Bridge and its bridges are an operating system for AI, with managed Node and Python runtimes, and a human-only permission system keeps you in charge of every side-effecting command.",
   "description": "Install this package in a cloud or Hydrogen Desktop container, not on the PC. It delivers two things: the Linux adom-bridge-cli (linked onto PATH) and the Claude skill set that teaches an AI every desktop verb (shell, files, screenshots, windows, notifications, KiCad, Fusion 360, browser automation). The CLI drives the Adom Bridge app running on your Windows PC over the relay; the Windows app itself is the separate installer in the Download box, not part of this package. Run adom-wiki pkg update to keep the CLI and skills current.",
page.json+1−1
@@ -1,6 +1,6 @@ {   "slug": "adom-bridge",-  "version": "2.1.176",+  "version": "2.1.177",   "type": "app",   "description": "Install this package in a cloud or Hydrogen Desktop container, not on the PC. It delivers two things: the Linux adom-bridge-cli (linked onto PATH) and the Claude skill set that teaches an AI every desktop verb (shell, files, screenshots, windows, notifications, KiCad, Fusion 360, browser automation). The CLI drives the Adom Bridge app running on your Windows PC over the relay; the Windows app itself is the separate installer in the Download box, not part of this package. Run adom-wiki pkg update to keep the CLI and skills current.",   "keywords": [
skills/adom-bridge-permissions/SKILL.md+1−1
@@ -177,5 +177,5 @@ If `willPrompt` is true and no human is at the machine, get the grant FIRST (`re | `errorCode: approval_timeout` (shell_execute, 2.1.132+) | Nobody answered within `approvalWaitSec` (default 60 s, max 600). NOT a deny: re-send with a longer `approvalWaitSec` for a long install, or `request_shell_approval {wait:true,timeoutSec}` then retry. `timeoutSeconds` bounds the RUN, never this wait |
 | `errorCode: denied_by_user` | The human said no. Do not auto-retry; ask them |
 | Planning an unattended run | Check `status.permissions.shell.willPrompt` first |
-| "Was that prompt allowed or denied, and when?" | `permission_history {sinceSeq}` (2.1.135+): decided prompts with decision, decidedOn, decidedBy, decidedAt, requestedAt; `pending` lists the ones still live |
+| "Was that prompt allowed or denied, and when?" | `permission_history {sinceSeq}` (2.1.135+): decided prompts with decision, decidedOn, decidedBy, decidedHow (human / automated / system), decidedVia, decidedAt, requestedAt; `pending` lists the ones still live |
 | Need to drop a grant | `shell_auto_approve {"duration_secs":0}` (allowed for any caller) |
skills/adom-bridge-verbs/SKILL.md+1−1
@@ -152,7 +152,7 @@ Every verb below runs via the direct HTTP API - `POST http://127.0.0.1:24680/com 
 - **`notify_dismiss`** — Programmatically clear a sticky toast by its correlation id - removes it from the notification center and clears any un-consumed response; best-effort.
 - **`notify_events`** — PUSH-drain every toast-button click since sinceSeq in ONE call (durable, cross-process cursor); poll this instead of notify_response per-id.
-- **`permission_history`** — 2.1.135: decided permission prompts on this machine merged with their request (verb, summary, reason, requestedAt) plus decision, decidedOn, decidedBy, decidedAt; cursor like notify_events; `pending` = prompts still live. Use it when a mirrored prompt was "closed on another surface".
+- **`permission_history`** — 2.1.135: decided permission prompts on this machine merged with their request (verb, summary, reason, requestedAt) plus decision, decidedOn, decidedBy, decidedHow (2.1.177: human = a click in Adom Bridge's window, a toast button or Hydrogen; automated = desktop_ui_decide or another program; system = it expired; unknown = no surface said) and decidedVia (the surface), decidedAt; cursor like notify_events; `pending` = prompts still live. Use it when a mirrored prompt was "closed on another surface".
 - **`notify_response`** — Poll which toast button the user clicked, by correlation id: {pending:true} until they click, then {pending:false, action}. Consumed on read.
 - **`notify_user`** — Send a native branded Windows toast (title/body/level/buttons/progress); optionally focus a window on click, or wait:true to block and return the user's choice.