@johnhenry/objectify-cli
v0.0.2
Published
Persistent, versioned JSON objects backed by SQLite — a stateful, agent-friendly CLI.
Maintainers
Readme
@johnhenry/objectify-cli
objectify — persistent, versioned JSON objects backed by SQLite. A stateful,
agent-friendly CLI: create an object, use it to read/write state, log /
diff / rewind through its version history, fork an independent copy.
Full CLI reference, architecture notes, and "designed for agents" docs live at https://opensource.johnhenry.me/objectify/.
This is the first npm distribution of the
objectifyCLI. The CLI has existed as acargo build --release/ GitHub-release binary before now — this package (and its five per-platform siblings) is a new packaging story, not an import of a previously-published npm package. Versioning starts at0.0.0, matching this project's usual convention for a package's first appearance under the@johnhenryscope, extended here to cover "first npm appearance at all," since there's no prior npm version to restart from. Namedobjectify-clirather than plainobjectifybecause@johnhenry/objectifyis this project's TypeScript adapter package — the CLI command you actually run is stillobjectify, only the npm package name differs.
Install
npm install -g @johnhenry/objectify-clior run it without installing:
npx @johnhenry/objectify-cli --helpHow this works
This package is a thin ~100-line Node.js shim (bin/objectify.js). It ships
no compiled code itself — it detects your OS/architecture at runtime and
delegates to the real binary, which lives in one of six tiny per-platform
packages:
| Package | Platform |
|---|---|
| @johnhenry/objectify-cli-darwin-arm64 | macOS, Apple Silicon |
| @johnhenry/objectify-cli-darwin-x64 | macOS, Intel |
| @johnhenry/objectify-cli-linux-x64 | Linux, x64 (glibc) |
| @johnhenry/objectify-cli-linux-arm64 | Linux, arm64 (glibc) |
| @johnhenry/objectify-cli-linux-x64-musl | Linux, x64 (musl, e.g. Alpine) |
| @johnhenry/objectify-cli-win32-x64 | Windows, x64 |
npm install only downloads the one matching your machine — it's listed as
an optionalDependency with os/cpu fields, which is how npm decides which
optional dependencies to actually fetch. This is the same pattern used by
esbuild, @swc/core, and turbo. No postinstall script runs and no network
request happens beyond npm's own package resolution — see
bin/objectify.js for the full resolution logic and
error messages if the right platform package didn't get installed.
Platform support
Linux x64/arm64 builds target glibc. Linux x64 also has a separate
musl build for Alpine-based images; bin/objectify.js detects musl at
runtime (via process.report, falling back to ldd --version) and picks it
automatically. There is no arm64 musl build yet; Alpine on arm64 is
unsupported.
Integrity
Every package published from CI carries an npm provenance
attestation
(Sigstore-backed, tying the published package back to the exact GitHub
Actions run, commit, and source repo that built it) — check with
npm audit signatures after installing.
On top of that, this package ships a checksums.json manifest pinning the
expected SHA-256 of each platform binary for this version. Before executing
anything, bin/objectify.js hashes the resolved binary and compares it
against the pinned value, refusing to run on a mismatch. This is
defense-in-depth on top of provenance, not a replacement for it — see
bin/objectify.js (verifyChecksum) for details.
License
MIT — see LICENSE.
