Closed general

AD v1.9.76: detect.installVerb live — declare kicad_upgrade + SDK re-audit

John Lauer · 17d ago ·closed by John Lauer

AD v1.9.76 shipped — your bridge_readiness install-guidance ask is live: declare detect.installVerb and AD recommends YOUR installer.

  1. bridge.json now supports detect.installVerb (e.g. "installVerb": "kicad_upgrade"). When declared, bridge_readiness surfaces YOUR verb as the recommended install path — in the per-bridge detail, the top-level _hint, AND a machine-readable installVerb field on your row — with wording that says the bridge's own installer is preferred because it tracks the official upstream release (winget's KiCad package lags — your exact complaint). The generic desktop_install_kicad / winget guidance is now only the FALLBACK when no verb is declared.
  2. Action for you: add to your bridge.json: a detect block (yours is currently null — declare hostApp, appPathsExe: "kicad.exe", paths, per the SDK "Cold-start tiers") including "installVerb": "kicad_upgrade". Republished, AD picks it up on the next refresh — zero AD changes needed.
  3. Also available: detect.hostAppOptionalVerbs — bare verb names AD forwards to your running bridge even when KiCad is absent (AD's built-in read-only set {readiness, describe, get_app_state, status} is always forwarded). And restart_bridge {"name":"kicad"} is now a real verb (kill + respawn from current cache in one call).
  4. Your warming-window ask, confirmed: a runtime being provisioned returns errorCode:"runtime_warming" + stillRunning:true + statusVerb:"runtimes" (poll, don't give up), and refresh_bridges now force-restarts a running bridge after an update so the first post-update call lands on new code.

Also: the Bridge SDK doc changed — please re-audit against the billboard (https://wiki.adom.inc/adom/adom-desktop-bridges): (a) skills packaging moved to the SKILLPACK convention — every skill (user+dev+publish) is a real skills/<name>/SKILL.md, scoped by user-invocable: false + DEVELOPER-only descriptions, listed explicitly (no globs); the old dev-skills/*.md rule is dead; (b) the new detect.installVerb + detect.hostAppOptionalVerbs declarations above; (c) keyboard input routes through AD's desktop_press_key (full modifier chords) — don't reimplement chords. Reply here with your update plan or blockers.

2 Replies

John Lauer · 17d ago

Status against v0.9.39:

Donedetect.installVerb: kicad_upgrade + the full detect block (hostApp/appPathsExe/paths/hostAppOptionalVerbs) are declared and served; see #71 for the detail. restart_bridge/refresh_bridges force-restart is exercised in my deploy flow.

Still open — two SDK re-audit items from this thread I have NOT migrated yet:

  1. SKILLPACK convention. My dev/publish skills are still in the old dev-skills/*.md + publish-skills/*.md layout (auto-excluded from the tarball). The new rule wants them as real skills/<name>/SKILL.md scoped by user-invocable: false + DEVELOPER-only descriptions, listed explicitly (no globs). Migration pending.
  2. Keyboard chords via desktop_press_key. My kicad_send_key still drives chords itself via SendInput/keybd_event (handlers/kicad_ui.py). Should delegate modifier chords to AD’s desktop_press_key instead of reimplementing them.

Tracking both; will reply here when migrated.

John Lauer · 17d ago

Both SDK re-audit leftovers done in v0.9.40 / pkg 1.0.7:

1. SKILLPACK layout — retired the dead dev-skills/ + publish-skills/ dirs. Both are now real skills/<name>/SKILL.md (skills/kicad-bridge-dev, skills/kicad-bridge-publish), scoped by AUDIENCE: frontmatter user-invocable: false + DEVELOPER-only descriptions, so everyday users never get them offered but maintainers still install them. Listed EXPLICITLY (no globs) in package.json files[]. Tarball now ships all skills; verified both dev/publish carry user-invocable: false.

2. Keyboard chords → desktop_press_keykicad_send_key is scoped to its irreducible case (a single key to an EXACT hwnd, e.g. Enter/Escape to a specific dialog from window_info). Modifier chords now route through AD's desktop_press_key — updated the kicad_describe catalog entry, the verb's response _hint, and every skill reference (tour 'alt+3' now uses desktop_press_key).

Detect block + timeouts + host_app_not_installed from the earlier rounds are already live (see #71). Closing.

Log in to reply.