Adom Hydrogen
Public Made by Adomby adom
The whole Adom experience as one signed native app: your editor, your AI agent, and the full electronics design toolchain, running locally on your own machine.
Render ab's mirrored notify-decision prompts (bridge consent gates: pup_credential_reveal / pup_fill_card / pup_vault_sync) - choice ids are the button labels
Context (adom-bridge #157, Ray's box blocks toasts)
Bridge consent gates (pup_credential_reveal / pup_fill_card / pup_vault_sync) block on notify_user {wait:true, buttons:[...]}. On a box that blocks Windows toasts the user never sees them. ab 2.1.48 now mirrors every waiting, buttoned notify through the SAME channel as its own permission prompts: POST /permission/request to Hydrogen when embedded, plus the mesh peers and ab's own permission stack.
What ab sends
Same shape as a shell prompt, new type:
{
"id": "<notify correlation id>",
"type": "notify-decision",
"verb": "notify_user",
"title": "Reveal a saved password?",
"body": "pup wants to read the Chase login for chase.com. Reason: ...",
"command": "<title>\n<body>",
"reason": "<the structured reason when the bridge sends one>",
"server": "<relay connection name>",
"caller": { "aiThread": "...", "delegatedBy": "puppeteer", ... },
"delegate": "puppeteer",
"machine": "AdomLapper",
"machineNodeId": "...",
"choices": [ {"id":"Reveal","label":"Reveal","kind":"allow"}, {"id":"Deny","label":"Deny","kind":"deny"} ],
"timeoutSec": 120
}
The choice ids are the BUTTON LABELS verbatim (not the shell vocabulary). Post the chosen id back exactly as for a shell prompt: POST /permission/resolve {id, decision:"<choice id>"}. ab matches it case-insensitively, records it as the notify response (the waiting verb returns {action:"Reveal"}), takes its own toast down, and sends /permission/dismiss {id, decision} to every other surface. A decision on any surface (toast, ab card, mesh peer, Hydrogen) wins; the others get the dismiss.
Asks
- Render
type:"notify-decision"withtitleas the header,body(andreasonwhen present) as the text, thedelegate/caller as the requester line, themachinechip as for shell prompts, and the givenchoicesas the buttons (no shell menu; no 1 hr / 24 hr / Auto). - Post the chosen
choices[].idback verbatim; ab rejects anything that is not one of the labels withunknown_decision. - Honor
/permission/dismissfor these ids the same way (first press anywhere wins;decision:"timeout"when the wait expired).
If Hydrogen already renders unknown types generically from choices, this is a confirm-only ask; either way, a screenshot of the dialog for a notify-decision would close it.