@kvell007/embed-labs-local-bridge 0.1.0-alpha.24 → 0.1.0-alpha.26

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. package/README.md +34 -2
  2. package/package.json +5 -5
package/README.md CHANGED
@@ -19,12 +19,16 @@ are complete.
19
19
  `@embed-labs/local-bridge-linux-arm64`, and
20
20
  `@embed-labs/local-bridge-win32-x64`.
21
21
  - Local health endpoint.
22
- - Device discovery for serial ports, RP2350-compatible UF2 volumes, Rockchip
23
- USB Loader/Maskrom style devices, and the current TaishanPi USB ECM probe.
22
+ - Event-maintained device inventory for serial ports, RP2350-compatible UF2
23
+ volumes, Rockchip USB Loader/Maskrom style devices, RP2350 Monitor endpoints,
24
+ and TaishanPi USB ECM or configured-host probes.
24
25
  - Bounded TCP, serial path, serial capture, and SSH command probes.
25
26
  - Non-destructive debug tool availability scans for OpenOCD, probe-rs, pyOCD,
26
27
  and SEGGER J-Link command-line tools.
27
28
  - Flash plan endpoints and local job tracking.
29
+ - RP2350/Pico 2 monitor capability catalog plus first-class GPIO, UART, I2C,
30
+ SPI, logic-analyzer, Wi-Fi, and debug-probe operations routed through the
31
+ shared `/api/operation` bridge.
28
32
  - Stable HTTP/JSON response contracts used by the CLI and agent plugins.
29
33
 
30
34
  ## Install
@@ -62,6 +66,9 @@ omitted during install, reinstall without `--omit=optional`.
62
66
 
63
67
  - `GET /healthz`
64
68
  - `GET /v1/devices`
69
+ - `GET /v1/devices?refresh=1`
70
+ - `GET /v1/devices/<local_device_id>`
71
+ - `GET /v1/devices/stream`
65
72
  - `GET /v1/debug/tools`
66
73
  - `GET /v1/tools/capabilities`
67
74
  - `POST /v1/tools/invoke`
@@ -81,15 +88,37 @@ Examples:
81
88
  ```bash
82
89
  curl -fsS http://127.0.0.1:18083/healthz
83
90
  curl -fsS http://127.0.0.1:18083/v1/devices
91
+ curl -fsS http://127.0.0.1:18083/v1/devices?refresh=1
84
92
  curl -fsS http://127.0.0.1:18083/v1/debug/tools
85
93
  curl -fsS http://127.0.0.1:18083/v1/devices/probe \
86
94
  -H 'content-type: application/json' \
87
95
  -d '{"host":"198.19.77.2","ports":[22,15301],"timeout_ms":1000}'
96
+ curl -fsS http://127.0.0.1:18083/v1/tools/invoke \
97
+ -H 'content-type: application/json' \
98
+ -d '{"capability_id":"rp2350.monitor.capabilities","input":{}}'
99
+ curl -fsS http://127.0.0.1:18083/v1/tools/invoke \
100
+ -H 'content-type: application/json' \
101
+ -d '{"capability_id":"rp2350.monitor.gpio.read","approved":true,"input":{"pins":[16,17],"pull":"none"}}'
88
102
  curl -fsS http://127.0.0.1:18083/v1/tools/invoke \
89
103
  -H 'content-type: application/json' \
90
104
  -d '{"capability_id":"rp2350.monitor.spi.transfer","approved":true,"input":{"hex":"a55a3cc3"}}'
91
105
  ```
92
106
 
107
+ RP2350/Pico 2 monitor capabilities are intentionally exposed as a complete
108
+ hardware surface: `rp2350.monitor.capabilities`, `status`, `gpio.read`,
109
+ `gpio.write`, `uart.write`, `i2c.transfer`, `spi.transfer`, `logic.capture`,
110
+ `logic.decode`, `wifi.manage`, `probe.debug`, `operation`, and legacy
111
+ `command`. Agents should ask for the catalog first when the protocol or
112
+ operation is unclear, then use the specific tool rather than scraping the
113
+ monitor UI.
114
+
115
+ `GET /v1/devices` and `/v1/devices/stream` read the bridge's current
116
+ in-memory inventory. They do not perform hardware scans as a side effect. The
117
+ bridge keeps that inventory warm through startup refresh, platform device
118
+ events, cheap locator polling, and a low-frequency fallback scan. Use
119
+ `/v1/devices?refresh=1` or the `device.scan` tool only for explicit diagnostic
120
+ refreshes.
121
+
93
122
  ## Hardware Support Boundary
94
123
 
95
124
  Current local behavior is intentionally narrow:
@@ -101,6 +130,9 @@ Current local behavior is intentionally narrow:
101
130
  they do not open probes, start GDB servers, or create debug sessions.
102
131
  - RP2350 UF2 flashing copies a `.uf2` artifact to a mounted UF2 volume only
103
132
  after a ready flash plan and explicit approval.
133
+ - RP2350 Monitor protocol operations are exposed through the capability catalog
134
+ and specific local tools. Agents should not scrape the monitor UI or call raw
135
+ serial/TCP endpoints to learn operation formats.
104
136
  - TaishanPi image-set planning can check required image files and
105
137
  `rkdeveloptool` availability, but real destructive TaishanPi flashing is
106
138
  guarded and not enabled. The bridge returns a blocked job until the exact
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kvell007/embed-labs-local-bridge",
3
- "version": "0.1.0-alpha.24",
3
+ "version": "0.1.0-alpha.26",
4
4
  "description": "Local hardware bridge service for Embed Labs Cloud. Experimental npm publish.",
5
5
  "private": false,
6
6
  "type": "module",
@@ -18,10 +18,10 @@
18
18
  "embed-local-bridge": "dist/index.js"
19
19
  },
20
20
  "optionalDependencies": {
21
- "@embed-labs/local-bridge-darwin-arm64": "npm:@kvell007/embed-labs-local-bridge-darwin-arm64@0.1.0-alpha.24",
22
- "@embed-labs/local-bridge-linux-arm64": "npm:@kvell007/embed-labs-local-bridge-linux-arm64@0.1.0-alpha.24",
23
- "@embed-labs/local-bridge-linux-x64": "npm:@kvell007/embed-labs-local-bridge-linux-x64@0.1.0-alpha.24",
24
- "@embed-labs/local-bridge-win32-x64": "npm:@kvell007/embed-labs-local-bridge-win32-x64@0.1.0-alpha.24"
21
+ "@embed-labs/local-bridge-darwin-arm64": "npm:@kvell007/embed-labs-local-bridge-darwin-arm64@0.1.0-alpha.26",
22
+ "@embed-labs/local-bridge-linux-arm64": "npm:@kvell007/embed-labs-local-bridge-linux-arm64@0.1.0-alpha.26",
23
+ "@embed-labs/local-bridge-linux-x64": "npm:@kvell007/embed-labs-local-bridge-linux-x64@0.1.0-alpha.26",
24
+ "@embed-labs/local-bridge-win32-x64": "npm:@kvell007/embed-labs-local-bridge-win32-x64@0.1.0-alpha.26"
25
25
  },
26
26
  "publishConfig": {
27
27
  "access": "public",