Adom Bridge
Public Made by Adomby adom
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-onl
Native window verbs (enum by pid+class, get-foreground, user-idle, clear-attention) so pup deletes its runtime-compiled PowerShell entirely
Ask: native window-management verbs so pup can delete its PowerShell entirely (John's directive: no runtime-compiled shims on user boxes).
Why
pup needs Win32 window management (park at z-bottom, resolve which HWND is which Chrome window, clear taskbar attention, respect the user's foreground). Node has no Win32 access and pup ships source-only (native addons would need build tools on user machines), so today each operation writes a temp .ps1 whose Add-Type JIT-compiles a C# P/Invoke shim and spawns powershell.exe hidden. It works with nothing installed, but John does not want runtime compilation on user boxes, every call costs a process spawn, and the synchronous variants blocked pup's event loop badly enough to starve your health probe (ab#61). pup 2.0.23 made all PowerShell async as a stopgap; the end state should be ZERO PowerShell, with pup calling precompiled Rust in ab (the way desktop_set_window_state already replaced the whole open-path PS in v1.8.61).
Mapping: every remaining pup PS helper -> ab verb
| pup helper (PS today) | Win32 underneath | ab today | needed |
|---|---|---|---|
enumChromeWidgetWindows, birth-time hwnd resolution, hwndOwnerPid |
EnumWindows filtered by pid-set + class Chrome_WidgetWin_1, returns hwnd/pid/rect/title, INCLUDING off-screen windows |
desktop_list_windows / desktop_find_window are title-centric and miss off-screen/untitled windows |
desktop_enum_windows {pids?, className?, includeOffscreen: true} -> rows of {hwnd, pid, className, rect, title, visible} |
osGetForegroundWindow |
GetForegroundWindow (+ owner pid/title) | none | desktop_get_foreground -> {hwnd, pid, title} (or a field on an existing cheap verb) |
osIdleMs |
GetLastInputInfo | none | desktop_user_idle_ms -> {idleMs} |
osClearFlashByActivate |
clear the taskbar attention tint without focus steal: activate while positioned harmlessly, AttachThreadInput, hand focus straight back | desktop_flash_window STARTS a flash; nothing clears the tint |
desktop_clear_window_attention {hwnd} doing the dance natively |
forceActivateHwnd |
AttachThreadInput + SetForegroundWindow + restore | desktop_bring_to_front |
possibly covered already — confirm it bypasses the foreground lock; if yes pup switches as-is |
osBottomUnlessForeground, osBackgroundWindowByPid, osMinimizeToBackground |
SetWindowPos HWND_BOTTOM unless user-foreground | desktop_set_window_state {state:'bottom', force} exists |
nothing new — pup keeps PS only as a fallback for pre-1.9.115 ab; deletable once the fleet floor passes it |
So the delta is small: three new verbs + one confirmation, and pup's PowerShell (17 call sites, temp .ps1 files, JIT C#, process spawns) goes to zero. Happy to spec exact shapes or test against a dev build.
Filed from the pup thread on John's go-ahead (2026-08-09). Related: ab#61 (the probe fix), pup 2.0.23 (async stopgap).