@esp-vision/device-cli 0.1.0 → 0.2.0

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 (49) hide show
  1. package/DEVICE_CORE_NOTICE.md +13 -0
  2. package/README.md +8 -2
  3. package/THIRD_PARTY_NOTICES.md +25 -5
  4. package/dist/device-cli.mjs +20104 -7753
  5. package/dist/native/LICENSE +21 -0
  6. package/dist/native/bindings.cjs +1860 -0
  7. package/dist/native/koffi/LICENSE.txt +22 -0
  8. package/dist/native/koffi/build/koffi/linux_arm64/koffi.node +0 -0
  9. package/dist/native/koffi/build/koffi/linux_armhf/koffi.node +0 -0
  10. package/dist/native/koffi/build/koffi/linux_ia32/koffi.node +0 -0
  11. package/dist/native/koffi/build/koffi/linux_loong64/koffi.node +0 -0
  12. package/dist/native/koffi/build/koffi/linux_riscv64d/koffi.node +0 -0
  13. package/dist/native/koffi/build/koffi/linux_x64/koffi.node +0 -0
  14. package/dist/native/koffi/build/koffi/musl_arm64/koffi.node +0 -0
  15. package/dist/native/koffi/build/koffi/musl_x64/koffi.node +0 -0
  16. package/dist/native/koffi/index.js +634 -0
  17. package/dist/native/koffi/package.json +38 -0
  18. package/dist/native/koffi/src/cnoke/LICENSE.txt +22 -0
  19. package/dist/native/koffi/vendor/node-addon-api/LICENSE.md +9 -0
  20. package/dist/native/koffi/vendor/node-api-headers/LICENSE +21 -0
  21. package/dist/native/package.json +1 -0
  22. package/dist/native/prebuilds/android-arm/@serialport+bindings-cpp.armv7.node +0 -0
  23. package/dist/native/prebuilds/android-arm64/@serialport+bindings-cpp.armv8.node +0 -0
  24. package/dist/native/prebuilds/darwin-x64+arm64/@serialport+bindings-cpp.node +0 -0
  25. package/dist/native/prebuilds/linux-arm/@serialport+bindings-cpp.armv6.glibc.node +0 -0
  26. package/dist/native/prebuilds/linux-arm/@serialport+bindings-cpp.armv7.glibc.node +0 -0
  27. package/dist/native/prebuilds/linux-arm/@serialport+bindings-cpp.armv7.musl.node +0 -0
  28. package/dist/native/prebuilds/linux-arm64/@serialport+bindings-cpp.armv8.glibc.node +0 -0
  29. package/dist/native/prebuilds/linux-arm64/@serialport+bindings-cpp.armv8.musl.node +0 -0
  30. package/dist/native/prebuilds/linux-x64/@serialport+bindings-cpp.glibc.node +0 -0
  31. package/dist/native/prebuilds/linux-x64/@serialport+bindings-cpp.musl.node +0 -0
  32. package/dist/native/prebuilds/win32-arm64/@serialport+bindings-cpp.armv8.node +0 -0
  33. package/dist/native/prebuilds/win32-ia32/@serialport+bindings-cpp.node +0 -0
  34. package/dist/native/prebuilds/win32-x64/@serialport+bindings-cpp.node +0 -0
  35. package/licenses/atob-lite-LICENSE.md +18 -0
  36. package/licenses/debug-LICENSE +20 -0
  37. package/licenses/esptool-js-LICENSE +202 -0
  38. package/licenses/koffi-LICENSE.txt +22 -0
  39. package/licenses/ms-license.md +21 -0
  40. package/licenses/node-addon-api-LICENSE.md +9 -0
  41. package/licenses/node-gyp-build-LICENSE +21 -0
  42. package/licenses/pako-LICENSE +21 -0
  43. package/licenses/serialport__bindings-cpp-LICENSE +21 -0
  44. package/licenses/serialport__bindings-interface-LICENSE +21 -0
  45. package/licenses/serialport__parser-delimiter-LICENSE +21 -0
  46. package/licenses/serialport__parser-readline-LICENSE +21 -0
  47. package/package.json +9 -2
  48. package/dist/node_rom.py +0 -64
  49. package/dist/node_serial.py +0 -77
@@ -30,3 +30,16 @@ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
30
30
  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
31
31
  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
32
32
  SOFTWARE.
33
+
34
+ Browser and Node ROM flashing use the separately installed esptool-js 0.7.1 package,
35
+ Copyright (c) 2023 Espressif Systems (Shanghai) Co. Ltd., Apache License 2.0.
36
+ The package's esp-flasher-stub v1.2.2 set-2 binaries retain their upstream
37
+ dual Apache-2.0/MIT terms. Its pako (MIT/Zlib) and atob-lite (MIT) dependencies
38
+ retain their own notices. No upstream source or stub binary is vendored here.
39
+ The S31 native-USB watchdog reset adapter uses the register sequence also
40
+ implemented by Apache-2.0 esptool-js P4 watchdog support.
41
+
42
+ Node serial access uses @serialport/bindings-cpp 13.0.0 (MIT).
43
+ Linux USB-Serial-JTAG modem controls use Koffi 2.16.3 (MIT).
44
+ Portable CLI/plugin bundles preserve original loaders, binaries and licenses,
45
+ including Koffi cnoke and Node API header notices.
package/README.md CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  `@esp-vision/device-cli` installs the `esp-vision-device` command for device discovery, inspection, configuration, control, firmware updates, Python execution, device file operations, JPEG capture, sequential batch plans, and bounded event watches. It is an optional host interface backed by the same `@esp-vision/device-core` package used by ESP-VISION clients.
4
4
 
5
- Requires Node.js 22 or newer. Serial access requires Python with `pyserial`; firmware flashing requires Python `esptool>=5.3,<6`. LAN discovery uses the bundled multicast-DNS client.
5
+ Requires Node.js 22 or newer. Serial access uses bundled npm native bindings; firmware flashing uses the same esptool-js backend as the website. No host Python, pyserial or Python esptool installation is required. LAN discovery uses the bundled multicast-DNS client. Port permissions and ownership still apply. The deprecated `--python` option is accepted but ignored for compatibility.
6
6
 
7
7
  Run `esp-vision-device --help` for the command reference, or `esp-vision-device --help --json` for the versioned machine-readable command, output, and limit capabilities envelope.
8
8
 
@@ -26,7 +26,7 @@ For a continuous app, finish directory operations and uploads before starting it
26
26
 
27
27
  `files list`, `files read`, `files write`, `files remove`, and `files mkdir` operate on device paths. `files read DEVICE_PATH --output LOCAL_FILE` writes binary content to a local file. `files write DEVICE_PATH --file LOCAL_FILE` sends local bytes to the device. Reads are capped at 16 MiB by default; `--max-bytes` can lower that limit.
28
28
 
29
- `capture camera|screen --output LOCAL.jpg` writes one JPEG and returns its path, byte count, source, MIME type, and capture metadata. Images are never embedded as base64 in JSON output.
29
+ `capture camera|screen --output LOCAL.jpg` writes one JPEG and returns its path, byte count, source, MIME type, and capture metadata. Images are never embedded as base64 in JSON output. The `source` field identifies the requested source; it does not certify whether annotations are present. `camera` observes the application's latest camera frame, not the LCD image. Application drawing depends on firmware publication behavior; firmware advertising `debug.capture_frame.observed.v1` supplies an independent copy made at acquisition, before later drawing, without triggering a new acquisition. `screen` captures the current LCD framebuffer, including drawing rendered there; use it to verify LCD overlays and UI. It requires an initialized display, and camera/display dimensions may differ. Neither source starts the application or initializes the sensor/display for you.
30
30
 
31
31
  ## Bounded event watch
32
32
 
@@ -58,3 +58,9 @@ For a continuous app, finish directory operations and uploads before starting it
58
58
  Status, Python output, firmware phases, cancellation, errors, and duration are NDJSON events on stderr. SIGINT exits with code 130, SIGTERM with 143, argument/plan errors with 2, other failures with 1, and success with 0. Busy or uncertain operations are never retried automatically.
59
59
 
60
60
  Inspect JSON output uses the same versioned envelope as other commands. Human-readable inspect output remains a terminal table.
61
+
62
+ Device paths such as `/models` stay absolute device paths on Windows. Git Bash/MSYS may rewrite them; use PowerShell or prefix the individual command with `MSYS2_ARG_CONV_EXCL="*"`, supplying local paths in Windows form. Quoting the device path alone does not prevent conversion. Invalid device paths now fail before connecting, with a shell hint for Windows host paths.
63
+
64
+ ## Coordinated source builds
65
+
66
+ Before Core 0.8.0 is published, use `node tools/ci/mcp/install_host.mjs --output <project-artifact-directory>` from the repository root, then build the CLI. The tracked Core lock intentionally has no registry URL or integrity for the unpublished version; the installer qualifies an exact local tarball and records its hash without changing that lock. Other dependencies keep their registry locks. Publish Core first, refresh the CLI registry lock from that published version, then rebuild and qualify CLI/plugin artifacts before publishing their versions. The publishing gate rejects a missing or mismatched registry integrity.
@@ -5,11 +5,23 @@ The CLI bundle includes the following third-party packages. Their original licen
5
5
  | Package | Version | License | License file |
6
6
  | --- | --- | --- | --- |
7
7
  | @leichtgewicht/ip-codec | 2.0.5 | MIT | `leichtgewicht__ip-codec-LICENSE` |
8
+ | @serialport/bindings-cpp | 13.0.0 | MIT | `serialport__bindings-cpp-LICENSE` |
9
+ | @serialport/bindings-interface | 1.2.2 | MIT | `serialport__bindings-interface-LICENSE` |
10
+ | @serialport/parser-delimiter | 12.0.0 | MIT | `serialport__parser-delimiter-LICENSE` |
11
+ | @serialport/parser-readline | 12.0.0 | MIT | `serialport__parser-readline-LICENSE` |
8
12
  | ansi-regex | 6.4.0 | MIT | `ansi-regex-license` |
13
+ | atob-lite | 2.0.0 | MIT | `atob-lite-LICENSE.md` |
14
+ | debug | 4.4.0 | MIT | `debug-LICENSE` |
9
15
  | dns-packet | 5.6.1 | MIT | `dns-packet-LICENSE` |
10
16
  | emoji-regex | 10.6.0 | MIT | `emoji-regex-LICENSE-MIT.txt` |
17
+ | esptool-js | 0.7.1 | Apache-2.0 | `esptool-js-LICENSE` |
11
18
  | get-east-asian-width | 1.7.0 | MIT | `get-east-asian-width-license` |
19
+ | koffi | 2.16.3 | MIT | `koffi-LICENSE.txt` |
20
+ | ms | 2.1.3 | MIT | `ms-license.md` |
12
21
  | multicast-dns | 7.2.5 | MIT | `multicast-dns-LICENSE` |
22
+ | node-addon-api | 8.3.0 | MIT | `node-addon-api-LICENSE.md` |
23
+ | node-gyp-build | 4.8.4 | MIT | `node-gyp-build-LICENSE` |
24
+ | pako | 2.2.0 | (MIT AND Zlib) | `pako-LICENSE` |
13
25
  | smol-toml | 1.9.1 | BSD-3-Clause | `smol-toml-LICENSE` |
14
26
  | string-width | 7.2.0 | MIT | `string-width-license` |
15
27
  | strip-ansi | 7.2.0 | MIT | `strip-ansi-license` |
@@ -112,23 +124,31 @@ Bundled from: `node_modules/smol-toml/dist/date.js`, `node_modules/smol-toml/dis
112
124
 
113
125
  ### Source notice 6
114
126
 
115
- Bundled from: `node_modules/@esp-vision/device-core/src/firmware_feed.js`, `node_modules/@esp-vision/device-core/src/firmware_flash.js`, `node_modules/@esp-vision/device-core/src/index.js`, `node_modules/@esp-vision/device-core/src/network_discovery.js`, `node_modules/@esp-vision/device-core/src/network_discovery_node.js`, `node_modules/@esp-vision/device-core/src/node_inventory.js`, `node_modules/@esp-vision/device-core/src/node_rom.js`, `node_modules/@esp-vision/device-core/src/node_transport.js`, `src/cli.js`
127
+ Bundled from: `node_modules/pako/dist/pako.esm.mjs`
116
128
 
117
129
  ```text
118
- // SPDX-FileCopyrightText: 2026 ESP-VISION-IDE
130
+ /*! pako 2.2.0 https://github.com/nodeca/pako @license (MIT AND Zlib) */
119
131
  ```
120
132
 
121
133
  ### Source notice 7
122
134
 
123
- Bundled from: `node_modules/@esp-vision/device-core/src/firmware_io.js`, `node_modules/@esp-vision/device-core/src/firmware_release.js`, `node_modules/@esp-vision/device-core/src/node.js`
135
+ Bundled from: `node_modules/@esp-vision/device-core/src/firmware_feed.js`, `node_modules/@esp-vision/device-core/src/firmware_flash.js`, `node_modules/@esp-vision/device-core/src/index.js`, `node_modules/@esp-vision/device-core/src/network_discovery.js`, `node_modules/@esp-vision/device-core/src/network_discovery_node.js`, `node_modules/@esp-vision/device-core/src/node_inventory.js`, `node_modules/@esp-vision/device-core/src/node_rom.js`, `node_modules/@esp-vision/device-core/src/node_rom_port.js`, `node_modules/@esp-vision/device-core/src/node_transport.js`, `src/cli.js`
124
136
 
125
137
  ```text
126
- // SPDX-FileCopyrightText: 2026 Espressif Systems (Shanghai) CO LTD
138
+ // SPDX-FileCopyrightText: 2026 ESP-VISION-IDE
127
139
  ```
128
140
 
129
141
  ### Source notice 8
130
142
 
131
- Bundled from: `node_modules/@esp-vision/device-core/src/device_files.js`, `node_modules/@esp-vision/device-core/src/device_python.js`, `node_modules/@esp-vision/device-core/src/firmware_feed.js`, `node_modules/@esp-vision/device-core/src/firmware_flash.js`, `node_modules/@esp-vision/device-core/src/firmware_io.js`, `node_modules/@esp-vision/device-core/src/firmware_release.js`, `node_modules/@esp-vision/device-core/src/index.js`, `node_modules/@esp-vision/device-core/src/network_discovery.js`, `node_modules/@esp-vision/device-core/src/network_discovery_node.js`, `node_modules/@esp-vision/device-core/src/node.js`, `node_modules/@esp-vision/device-core/src/node_inventory.js`, `node_modules/@esp-vision/device-core/src/node_rom.js`, `node_modules/@esp-vision/device-core/src/node_transport.js`, `src/cli.js`
143
+ Bundled from: `node_modules/@esp-vision/device-core/src/browser_rom_compat.js`, `node_modules/@esp-vision/device-core/src/device_capture.js`, `node_modules/@esp-vision/device-core/src/firmware_io.js`, `node_modules/@esp-vision/device-core/src/firmware_partitions.js`, `node_modules/@esp-vision/device-core/src/firmware_release.js`, `node_modules/@esp-vision/device-core/src/jpeg_validate.js`, `node_modules/@esp-vision/device-core/src/node.js`, `node_modules/@esp-vision/device-core/src/node_rom.js`, `node_modules/@esp-vision/device-core/src/node_rom_probe.js`, `node_modules/@esp-vision/device-core/src/node_serial.js`, `node_modules/@esp-vision/device-core/src/node_signals.js`, `node_modules/@esp-vision/device-core/src/rom_identity.js`, `node_modules/@esp-vision/device-core/src/rom_loader.js`, `node_modules/@esp-vision/device-core/src/rom_md5.js`, `node_modules/@esp-vision/device-core/src/rom_reset.js`, `src/serial_diagnostics.js`
144
+
145
+ ```text
146
+ // SPDX-FileCopyrightText: 2026 Espressif Systems (Shanghai) CO LTD
147
+ ```
148
+
149
+ ### Source notice 9
150
+
151
+ Bundled from: `node_modules/@esp-vision/device-core/src/browser_rom_compat.js`, `node_modules/@esp-vision/device-core/src/device_capture.js`, `node_modules/@esp-vision/device-core/src/device_files.js`, `node_modules/@esp-vision/device-core/src/device_python.js`, `node_modules/@esp-vision/device-core/src/firmware_feed.js`, `node_modules/@esp-vision/device-core/src/firmware_flash.js`, `node_modules/@esp-vision/device-core/src/firmware_io.js`, `node_modules/@esp-vision/device-core/src/firmware_partitions.js`, `node_modules/@esp-vision/device-core/src/firmware_release.js`, `node_modules/@esp-vision/device-core/src/index.js`, `node_modules/@esp-vision/device-core/src/jpeg_validate.js`, `node_modules/@esp-vision/device-core/src/network_discovery.js`, `node_modules/@esp-vision/device-core/src/network_discovery_node.js`, `node_modules/@esp-vision/device-core/src/node.js`, `node_modules/@esp-vision/device-core/src/node_inventory.js`, `node_modules/@esp-vision/device-core/src/node_rom.js`, `node_modules/@esp-vision/device-core/src/node_rom_port.js`, `node_modules/@esp-vision/device-core/src/node_rom_probe.js`, `node_modules/@esp-vision/device-core/src/node_serial.js`, `node_modules/@esp-vision/device-core/src/node_signals.js`, `node_modules/@esp-vision/device-core/src/node_transport.js`, `node_modules/@esp-vision/device-core/src/rom_identity.js`, `node_modules/@esp-vision/device-core/src/rom_loader.js`, `node_modules/@esp-vision/device-core/src/rom_md5.js`, `node_modules/@esp-vision/device-core/src/rom_reset.js`, `src/cli.js`, `src/serial_diagnostics.js`
132
152
 
133
153
  ```text
134
154
  // SPDX-License-Identifier: Apache-2.0