llm-cli-gateway 1.17.8 → 1.17.9
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.
- package/CHANGELOG.md +81 -0
- package/npm-shrinkwrap.json +557 -3402
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -4,6 +4,87 @@ All notable changes to the llm-cli-gateway project.
|
|
|
4
4
|
|
|
5
5
|
## Unreleased
|
|
6
6
|
|
|
7
|
+
## [1.17.9] - 2026-06-04: prod-only shrinkwrap + registry-fidelity verification
|
|
8
|
+
|
|
9
|
+
Patch release shipping a prod-only `npm-shrinkwrap.json` and correcting the
|
|
10
|
+
1.17.8 record: registry installs **do** honour the published shrinkwrap (the
|
|
11
|
+
real distribution channel), so consumers of `npm install llm-cli-gateway`
|
|
12
|
+
already get the pinned `tar-stream@3.1.7`. The 1.17.8 changelog called the
|
|
13
|
+
shrinkwrap "inert today because of npm/cli#7977" — that was wrong. npm/cli#7977
|
|
14
|
+
covers a remote-registry edge case; what we actually reproduced on this host
|
|
15
|
+
(npm 11.12.1) is that **local-tarball** installs ignore a nested shrinkwrap
|
|
16
|
+
(npm/cli#5349/#5325 class), while registry installs honour it via the
|
|
17
|
+
packument's `hasShrinkwrap` flag. This release verifies the registry path end
|
|
18
|
+
to end with a verdaccio reproduction.
|
|
19
|
+
|
|
20
|
+
### Added
|
|
21
|
+
|
|
22
|
+
- `scripts/make-prod-shrinkwrap.mjs`: deterministic generator that projects
|
|
23
|
+
`package-lock.json` into a prod-only `npm-shrinkwrap.json` — drops every
|
|
24
|
+
dev-only (`dev === true`) `packages` entry and deletes the root
|
|
25
|
+
`devDependencies` field. A byte-identical copy of the lockfile (1.17.8's
|
|
26
|
+
approach) reified all ~316 packages into consumer trees (npm/cli#4323); the
|
|
27
|
+
prod-only projection ships ~124 and eliminates the dev-dep bloat for registry
|
|
28
|
+
consumers. Output is byte-deterministic; the security audit regenerates and
|
|
29
|
+
compares for parity. `optional` (and any `devOptional`) entries are kept —
|
|
30
|
+
prod installs need them. The shrinkwrap is GENERATED at pack/publish time
|
|
31
|
+
and never committed: a committed npm-shrinkwrap.json is treated by
|
|
32
|
+
`npm ci`/`npm install` as the authoritative lockfile, and the prod-only
|
|
33
|
+
projection (no dev deps) breaks every dev/CI install with EUSAGE "lock
|
|
34
|
+
file out of sync" — discovered when the first 1.17.9 release attempt
|
|
35
|
+
failed all four `npm ci`-based workflows. `.gitignore` now covers it; the
|
|
36
|
+
CI, publish, and tag-release workflows generate it just before the
|
|
37
|
+
security audit / pack / publish steps.
|
|
38
|
+
- `scripts/verify-registry-install.sh`: registry-fidelity gate (run by
|
|
39
|
+
`scripts/pre-release.sh` and standalone). Publishes the current tree to an
|
|
40
|
+
ephemeral verdaccio, installs it into a fresh consumer dir, and asserts (a)
|
|
41
|
+
`tar-stream` resolves to `3.1.7` (shrinkwrap honoured), (b) no dev-dep markers
|
|
42
|
+
(`vitest`/`typescript`/`eslint`/`prettier`) in the consumer tree, (c) the
|
|
43
|
+
installed bin prints the expected version, (d) `better-sqlite3` loads from the
|
|
44
|
+
installed package (binding built through the pinned tar chain). The publish /
|
|
45
|
+
consumer-install / assertion flow runs entirely against throwaway temp dirs
|
|
46
|
+
(registry storage, npm cache, userconfig) and the localhost registry — the
|
|
47
|
+
package under test never reaches the public registry. One exception: the
|
|
48
|
+
verdaccio bootstrap itself (`npx --yes verdaccio`) resolves through the user's
|
|
49
|
+
normal npm config and npx cache (unavoidable for an ephemeral tool), touching
|
|
50
|
+
only verdaccio's own packages. Sets the packument's
|
|
51
|
+
`_hasShrinkwrap` flag to mirror what npmjs sets at publish (verdaccio does not
|
|
52
|
+
compute it), so the reproduction faithfully matches the real registry. Logs
|
|
53
|
+
the observed reified-package count (not hard-asserted in this release).
|
|
54
|
+
|
|
55
|
+
### Changed
|
|
56
|
+
|
|
57
|
+
- `scripts/pre-release.sh` / `scripts/refresh-release-lockfile.sh`: replace
|
|
58
|
+
`cp package-lock.json npm-shrinkwrap.json` with
|
|
59
|
+
`node scripts/make-prod-shrinkwrap.mjs`; pre-release now also runs
|
|
60
|
+
`scripts/verify-registry-install.sh` after the shrinkwrap regeneration and the
|
|
61
|
+
release gate.
|
|
62
|
+
- `scripts/release-security-audit.sh`: the shrinkwrap parity gate no longer does
|
|
63
|
+
byte-identity against the lockfile (that no longer holds — the shrinkwrap is a
|
|
64
|
+
prod-only projection). It regenerates the expected projection from
|
|
65
|
+
`package-lock.json` via the same deterministic generator into a temp file and
|
|
66
|
+
`cmp -s` against the shipped `npm-shrinkwrap.json`.
|
|
67
|
+
|
|
68
|
+
### Fixed (record correction)
|
|
69
|
+
|
|
70
|
+
- The 1.17.8 claim that the shipped shrinkwrap is "inert today because of
|
|
71
|
+
npm/cli#7977" was incorrect. Registry installs honour it (verified via the new
|
|
72
|
+
verdaccio reproduction); only **local-tarball** installs ignore it
|
|
73
|
+
(npm/cli#5349/#5325 class — our live repro). The packed-consumer-install
|
|
74
|
+
advisory in the audit is requalified accordingly: registry installs get
|
|
75
|
+
`tar-stream@3.1.7`, local-tarball installs still resolve `tar-stream@2.2.0`,
|
|
76
|
+
and the advisory (warn, not fail) stays until Phase B drops `better-sqlite3`
|
|
77
|
+
from the prod graph. The 1.17.8 entry itself is left unedited.
|
|
78
|
+
|
|
79
|
+
### Known residuals
|
|
80
|
+
|
|
81
|
+
- Consumer `npm ls` exits ELSPROBLEMS: the pinned `tar-stream@3.1.7` sits
|
|
82
|
+
outside `tar-fs`'s `^2.1.4` range. Inherent to the out-of-range pin; disappears
|
|
83
|
+
in 2.0.0 (Phase B / node:sqlite) when the `better-sqlite3 → prebuild-install
|
|
84
|
+
→ tar-fs` chain leaves the prod graph entirely.
|
|
85
|
+
- Local-tarball installs still resolve `tar-stream@2.2.0` (shrinkwrap ignored on
|
|
86
|
+
that path); the audit's advisory carve-out stays until Phase B.
|
|
87
|
+
|
|
7
88
|
## [1.17.8] - 2026-06-04: release-audit integrity fix + shrinkwrap groundwork
|
|
8
89
|
|
|
9
90
|
Patch release fixing a masking bug in the release security audit and documenting
|