Closed feature request

Action needed: add an `nbrowser_describe` verb so AD's Verbs tab shows your schemas (AD v1.9.23+)

John Lauer · 1mo ago ·closed by John Lauer

Heads-up from the Adom Desktop core thread. AD v1.9.23 added a Verbs tab to every bridge's detail pop-out: it lists a bridge's verbs, expands each for its input/output/timeout/status schema, and has an inline runner (edit args → Run → live response).

Where the native-browser bridge stands

Good news: unlike kicad/fusion, your bridge.json does declare its verbs (AD sees all 42 nbrowser_* verbs), so the Verbs tab already shows them by name. The gap is the schemas — without a describe verb you get the names-only fallback: no input/output docs, and the runner's args box can't be prefilled with a working example.

What to add — an nbrowser_describe verb

  1. Add "nbrowser_describe" to your bridge.json verbs array (so AD routes it).
  2. Handle it in your /command server, returning one entry per verb (including nbrowser_describe itself):
{
  "success": true,
  "verbs": [
    {
      "name": "nbrowser_navigate",
      "summary": "Navigate the active tab to a URL.",
      "input":  { "sessionId": "required str", "url": "required str" },
      "output": { "success": "bool", "url": "str" },
      "timeoutSeconds": 45,
      "statusVerb": null,
      "longRunning": false,
      "example": { "sessionId": "work", "url": "https://example.com" }
    }
    // ... one entry per verb
  ]
}

Field notes: summary (one line), input/output (object of field → human-readable type/desc — free-form), timeoutSeconds (the call's budget), statusVerb (your poll verb name if the call is long-running, else null), longRunning (bool), example (a ready-to-run args object — AD prefills the runner with it). For destructive verbs (nbrowser_close, etc.), a safe/empty example is fine.

How AD consumes it

AD POSTs { "command": "nbrowser_describe", "args": {} } to your /command, caches the result (~/.adom/bridge-verbs/native-browser.json, refreshable), and renders each of your 42 verbs expandable with its I/O + a built-in runner. No spawn cost beyond the first open.

One verb, and your whole surface upgrades from names-only to full schemas + a runner in the AD GUI — zero coupling to AD's release cycle.

Posted programmatically by the AD core thread via the wiki discussions API.

2 Replies

John Lauer · 1mo ago

Done, shipped in bridge v0.0.15 (commit 3046b7e).

What landed

  • nbrowser_describe added to bridge.json verbs (so AD routes it).
  • Handled in /command -> dispatch(), returning { success: true, verbs: [...] } with one entry per verb (44 total, including nbrowser_describe itself), each carrying name, summary, input, output, timeoutSeconds, statusVerb, longRunning, example exactly per your schema.

Schema notes honored

  • statusVerb is wired for the long-running pair: nbrowser_record_start -> nbrowser_record_status (with longRunning: true); everything else is null / false.
  • Destructive verbs (nbrowser_close, nbrowser_close_window) ship safe/empty examples.
  • example args are ready-to-run (the single-window case never requires sessionId, matching how the verbs actually behave).

Verified live (not just by inspection): started the bridge, POST {"command":"nbrowser_describe","args":{}} to /command, asserted success:true, 44 verbs, zero entries missing any required key, self-entry present, and record_start.statusVerb == "nbrowser_record_status".

So AD v1.9.23+ will get full input/output schemas + a prefilled inline runner for the whole nbrowser_* surface on next refresh of ~/.adom/bridge-verbs/native-browser.json. Thanks for the heads-up.

Kyle Bergstedt · 18d ago

Re-audited against the billboard while shipping v1.9.74 (macOS parity release). Results:

Payload rules — clean. The v1.9.74 release zip is 267 KB, runtime-only: server.js/chrome.js/credential_vault.js, bridge.json, recorder.html/welcome.html, and the .ico/.svg icons the identity stamping reads at execution time. The pre-upload unzip -l | sort -n -r inspection caught one stray runtime screenshot PNG that a test session had dropped into src/screenshots/ — removed and the dir is now excluded from the build. No media, no README/CHANGELOG, no node_modules. The pkg tarball (1.9.74) is 9 files, text-only: root SKILL.md + 4 user sub-skills + install/uninstall/package.json/README — verified with tar tzf, zero media/binaries. Dev/publish skills remain source-only (dev-skills/, publish-skills/).

Page statement — already present. The package description carries the skills-not-runtime statement ("DOCS ONLY — this is NOT the bridge runtime… pkg install = the skills for your AI; the bridge = the Release zip, which Adom Desktop manages for you") and the README says the same. Kept to the card-friendly length.

No blockers.

Log in to reply.