app
Altium - the Altium Bridge
Public Made by Adomby adom
Adom Bridge for Altium Designer: a resident DelphiScript agent gives the AI eval, the 1,100-command process launcher, all 8 EDA surfaces with screenshots, compile/ERC, DRC, OutJob outputs, native SchLib/PcbLib authoring with STEP 3D bodies, and dialog handling by PID.
← Commit history
v0.1.8: fix bridge.json verbs[] schema (strings), attach release asset
6 files changed
+187−98
CHANGELOG.md+3@@ -1,5 +1,8 @@ # Changelog +## 0.1.8 — 2026-08-31+- FIX: bridge.json verbs[] must be plain strings — 0.1.5–0.1.7 shipped four entries as objects, which ab's bridge_registry could not parse (the bridge vanished from the registry after its next reap while bridge_install still reported ok). Release assets are now uploaded explicitly (release create --binary-path does not attach).+ ## 0.1.7 — 2026-08-31 - altium_install_library_bundle: the no-AI web-control lane (kicad-parity envelope, zip-slip hardened, restart contract, proof frame). Handoff to Colby in docs/HANDOFF-COLBY.md + acceptance test docs/webcontrol-altium-test.html; ab allowlist request filed as adom/adom-bridge#964.
adom-bridge-altium-manifest.json+4−4@@ -1,9 +1,9 @@ { "name": "altium",- "version": "0.1.7",- "url": "https://wiki.adom.inc/download/adom/altium-bridge/0.1.7/adom-bridge-altium-v0.1.7.zip",- "sha256": "8beb4ad6b6538216058ec3e656a8d07c5dac0a532f6240dfd75c4bc18977bda5",- "size": 94744,+ "version": "0.1.8",+ "url": "https://wiki.adom.inc/download/adom/altium-bridge/0.1.8/adom-bridge-altium-v0.1.8.zip",+ "sha256": "e0abbcb7b4e894ab0071e3d124b0314abf6a366da79da655307505c63f5c602d",+ "size": 94072, "verbPrefixes": [ "altium_" ],
adom-bridge-altium-v0.1.8.zipadded⋯ 1 unchanged line ⋯
bridge.json+24−93@@ -2,7 +2,7 @@ "manifest_version": 1, "name": "altium", "displayName": "Altium Designer",- "version": "0.1.7",+ "version": "0.1.8", "description": "Drive Altium Designer from Adom: a resident DelphiScript agent (eval + the 1,100-command process launcher), the X2 -R command line, UIA over the VCL shell, dialogs by PID, screenshots of every Altium window, and Altium 365.", "homepage": "https://wiki.adom.inc/adom/altium-bridge", "docs": "https://wiki.adom.inc/adom/altium-bridge",@@ -81,98 +81,29 @@ "altium_a365_configure", "altium_signin_status", "altium_connect_workspace",- {- "name": "altium_build_footprint",- "description": "Build a footprint from a kicad2altium spec (pads incl. via pads, roundrect, mech-layer drawing)"- },- {- "name": "altium_build_symbol_modes",- "description": "Build ONE symbol with N display modes from a symbol_modes spec"- },- {- "name": "altium_symbol_mode",- "description": "Switch the library editor to display mode N and return a frame"- },- {- "name": "altium_add_models",- "description": "Attach N footprint models + parameters to a symbol"- },- {- "name": "altium_normalize_bodies",- "description": "Centre every 3D body on its pad cluster (library frame fix)"- },- {- "name": "altium_test_board",- "description": "New PcbDoc with the footprint placed and nets/stub tracks"- },- {- "name": "altium_board_shape",- "description": "Redefine the board shape as a rectangle (editor process)"- },- {- "name": "altium_swap_footprint",- "description": "Replace the board component with another footprint, nets kept by designator"- },- {- "name": "altium_pcb_report",- "description": "Ground truth: pads/bodies/nets/tracks with bboxes"- },- {- "name": "altium_place_on_sch",- "description": "Place a library symbol on a fresh sheet"- },- {- "name": "altium_place_on_pcb",- "description": "Place a library footprint on a fresh board"- },- {- "name": "altium_remove_symbol",- "description": "Remove a component from a SchLib by LibReference"- },- {- "name": "altium_clone_symbol",- "description": "Clone a symbol in a SchLib (all display modes) under a new LibReference"- },- {- "name": "altium_rename_symbol",- "description": "Rename a SchLib component"- },- {- "name": "altium_read_symbol",- "description": "Read a symbol back: pins, params, description, display modes"- },- {- "name": "altium_copy_footprint",- "description": "Copy a footprint in a PcbLib under a new name (pads + bodies + drawing)"- },- {- "name": "altium_rename_footprint",- "description": "Rename a PcbLib footprint"- },- {- "name": "altium_remove_footprint",- "description": "Remove a footprint from a PcbLib"- },- {- "name": "altium_cleanup_libs",- "description": "Remove factory-default stray components from the current libraries"- },- {- "name": "altium_set_visibility",- "description": "Show/hide a named parameter on a SchLib component"- },- {- "name": "altium_xcopy_footprint",- "description": "Copy a footprint across libraries (pads+bodies+drawing)"- },- {- "name": "altium_import_part",- "description": "One-call part import: footprint spec + STEP + symbol spec + models + vendor params"- },- {- "name": "altium_install_library_bundle",- "description": "Web-control no-AI lane: install a staged Altium library bundle zip (.SchLib/.PcbLib/.IntLib) in one call, with a proof frame"- }+ "altium_build_footprint",+ "altium_build_symbol_modes",+ "altium_symbol_mode",+ "altium_add_models",+ "altium_normalize_bodies",+ "altium_test_board",+ "altium_board_shape",+ "altium_swap_footprint",+ "altium_pcb_report",+ "altium_place_on_sch",+ "altium_place_on_pcb",+ "altium_remove_symbol",+ "altium_clone_symbol",+ "altium_rename_symbol",+ "altium_read_symbol",+ "altium_copy_footprint",+ "altium_rename_footprint",+ "altium_remove_footprint",+ "altium_cleanup_libs",+ "altium_set_visibility",+ "altium_xcopy_footprint",+ "altium_import_part",+ "altium_install_library_bundle" ], "statusVerb": "altium_status", "uninstall": "altium_uninstall",
package.json+1−1@@ -1,6 +1,6 @@ { "slug": "altium-bridge",- "version": "0.1.7",+ "version": "0.1.8", "type": "app", "description": "Skills for your container so your AI knows how to drive the Altium Designer bridge (altium_* verbs). The bridge runtime itself is the release zip; Adom Bridge loads that.", "tags": [
src/bridge.jsonadded+155@@ -0,0 +1,155 @@+{+ "manifest_version": 1,+ "name": "altium",+ "displayName": "Altium Designer",+ "version": "0.1.8",+ "description": "Drive Altium Designer from Adom: a resident DelphiScript agent (eval + the 1,100-command process launcher), the X2 -R command line, UIA over the VCL shell, dialogs by PID, screenshots of every Altium window, and Altium 365.",+ "homepage": "https://wiki.adom.inc/adom/altium-bridge",+ "docs": "https://wiki.adom.inc/adom/altium-bridge",+ "author": "Adom Inc.",+ "license": "MIT",+ "spawn": {+ "kind": "python",+ "entrypoint": "server.py",+ "port": 0,+ "persistent": true,+ "healthEndpoint": "/health",+ "stopMethod": "kill",+ "killImageName": "python.exe"+ },+ "verbPrefixes": [+ "altium_"+ ],+ "verbs": [+ "altium_readiness",+ "altium_status",+ "altium_describe",+ "altium_state",+ "altium_progress",+ "altium_diagnostics",+ "altium_uninstall",+ "altium_launch",+ "altium_close",+ "altium_window_info",+ "altium_screenshot_all",+ "altium_check_dialogs",+ "altium_dismiss_dialogs",+ "altium_agent_start",+ "altium_agent_stop",+ "altium_agent_status",+ "altium_agent_recover",+ "altium_eval",+ "altium_run_command",+ "altium_run_script",+ "altium_list_commands",+ "altium_open_project",+ "altium_open_document",+ "altium_close_document",+ "altium_save",+ "altium_compile",+ "altium_show_symbol",+ "altium_show_footprint",+ "altium_show_3d_chip",+ "altium_show_library",+ "altium_show_schematic",+ "altium_show_2d_board",+ "altium_show_3d_board",+ "altium_show_project",+ "altium_run_outjob",+ "altium_run_drc",+ "altium_run_erc",+ "altium_export_gerber",+ "altium_export_step",+ "altium_export_pdf",+ "altium_export_bom",+ "altium_create_symbol",+ "altium_create_footprint",+ "altium_list_library",+ "altium_signin",+ "altium_license",+ "altium_a365_status",+ "altium_a365_query",+ "altium_demo",+ "altium_install_library",+ "altium_compile_intlib",+ "altium_extract_intlib",+ "altium_set_params",+ "altium_add_body",+ "altium_install_extension",+ "altium_extension_ping",+ "altium_import_kicad",+ "altium_a365_configure",+ "altium_signin_status",+ "altium_connect_workspace",+ "altium_build_footprint",+ "altium_build_symbol_modes",+ "altium_symbol_mode",+ "altium_add_models",+ "altium_normalize_bodies",+ "altium_test_board",+ "altium_board_shape",+ "altium_swap_footprint",+ "altium_pcb_report",+ "altium_place_on_sch",+ "altium_place_on_pcb",+ "altium_remove_symbol",+ "altium_clone_symbol",+ "altium_rename_symbol",+ "altium_read_symbol",+ "altium_copy_footprint",+ "altium_rename_footprint",+ "altium_remove_footprint",+ "altium_cleanup_libs",+ "altium_set_visibility",+ "altium_xcopy_footprint",+ "altium_import_part",+ "altium_install_library_bundle"+ ],+ "statusVerb": "altium_status",+ "uninstall": "altium_uninstall",+ "updateManifestUrl": "https://wiki.adom.inc/api/v1/pages/altium-bridge/files/adom-bridge-altium-manifest.json",+ "timeouts": {+ "default": 60,+ "verbs": {+ "launch": 240,+ "agent_start": 120,+ "run_outjob": 600,+ "export_step": 360,+ "export_gerber": 300,+ "run_drc": 300,+ "compile": 180,+ "demo": 600,+ "signin": 300,+ "license": 300,+ "import_kicad": 300,+ "compile_intlib": 300,+ "extract_intlib": 300,+ "install_extension": 200+ },+ "prefixes": [+ {+ "prefix": "show_",+ "seconds": 120+ },+ {+ "prefix": "export_",+ "seconds": 300+ }+ ]+ },+ "verbDurations": {+ "altium_launch": 60,+ "altium_agent_start": 8,+ "altium_run_outjob": 60,+ "altium_run_drc": 30+ },+ "detect": {+ "hostApp": "Altium Designer",+ "appPathsExe": "X2.EXE",+ "paths": {+ "windows": [+ "%ProgramFiles%\\Altium\\AD*\\X2.EXE"+ ]+ }+ }+}