@particle/tachyon-image
v0.1.0
Published
Shared library for Particle Tachyon system images: operation-graph model, particle_image_v1 + Qualcomm manifest/rawprogram/patch XML round-trip, ed25519 signing, sparse/chunk decode, format expansion, manifest-first zip, and validation. Consumed by tachyo
Maintainers
Keywords
Readme
@particle/tachyon-image
Shared library for Particle Tachyon system images. It is the single home for all image logic so the composer, CLI, on-device OTA service, and cloud server never re-implement it:
- operation-graph model (
programchunked/sparse ·erase·zero·patchGPT-arith ·gpt) particle_image_v1(Particle format) + legacy Qualcommimage_manifest_v1parse/build- rawprogram / patch / erase XML round-trip (import a real factory image, emit qdl-ready XML)
- ed25519 / JCS manifest signing + verification
- sha256 / payload_sha256 hashing (expanded-with-holes)
- Android sparse + multi-chunk decode
- format expansion:
factory|ota-image(slot)|ota-boot(slot) - manifest-first ZIP read/write (streaming, partition-decodable order)
- validation (shared by composer CI, cloud server, CLI)
Every module is unit-tested. Golden fixtures under test/fixtures/factory/ are real
rawprogram/patch/manifest.json entries pulled from the published Tachyon factory image, used to
prove lossless round-trip.
Prior art (reference, not a dependency)
The Qualcomm rawprogram/patch grammar is also implemented by linux-msm/qdl
(C, BSD-3 — authoritative) and bkerler/edl (Python, GPL-3 — most
complete parser). We read those for grammar edge cases (patch CRC ops, partofsingleimage,
sparse/erase) but implement our own in TypeScript: no JS/TS library exists, it avoids the GPL/Python
coupling, and we need a superset (op-graph + particle_image_v1 + signing) they don't provide.
Build & test
npm install
npm run build # tsc -> dist/
npm test # vitest
npm run typecheck