⬆️ chore(deps): upgrade all dependencies to latest versions - #4
Merged
Conversation
Ran npm-check-updates -u across the manifest. No major version bumps were available: pg and ws are both still on major 8 upstream, so this is the latest of everything, not a major-version migration. - pg ^8.20.0 -> ^8.22.0 (transitively pg-protocol 1.13.0 -> 1.15.0, pg-pool 3.13.0 -> 3.14.0, pg-connection-string 2.12.0 -> 2.14.0, pg-cloudflare 1.3.0 -> 1.4.0) - ws ^8.19.0 -> ^8.21.1 Clears both open Dependabot alerts, both against ws: - high GHSA-96hv-2xvq-fx4p memory exhaustion DoS (fixed in 8.21.0) - medium GHSA-58qx-3vcg-4xpx uninitialized memory disclosure (8.20.1) No source changes were needed. The only APIs this repo touches are WebSocketServer from ws and Pool/Pool.query from pg, both unchanged. npm audit now reports 0 vulnerabilities.
- Dockerfile: node:22-alpine -> node:24-alpine
- package.json: add engines.node >=24
Verified: npm ci + npm test 25/25 pass, npm audit 0 vulns,
docker build succeeds, running 24-alpine image serves
/health -> {"status":"ok"} (HTTP 200).
This was referenced Jul 20, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Ran
npx npm-check-updates -uto bump every constraint inpackage.jsonto the latest published version, thennpm install.No major version bumps were available. Both direct dependencies are already on major 8 and the latest releases upstream are still major 8 (
pg@8.22.0,ws@8.21.1). So this is "latest of everything", not a major-version migration — worth stating plainly since the branch name implies otherwise.Upgrades
pgwsTransitive, via
pg:pg-protocol1.13.0 → 1.15.0,pg-pool3.13.0 → 3.14.0,pg-connection-string2.12.0 → 2.14.0,pg-cloudflare1.3.0 → 1.4.0.Dependabot alerts
Both open alerts are against
ws(the medium is not a separate package):ws@8.21.1clears both. Open alerts before: 2 (1 high, 1 medium) → after: 0 expected.This also supersedes the existing
dependabot/npm_and_yarn/ws-8.21.0branch, which can be closed.Code changes required
None. The only upgraded-package APIs this repo touches are
WebSocketServerfromwsandPool/Pool.queryfrompg(both inserver.js); neither changed.npm audit fixwas not needed and was not run — the plain upgrade already brought audit to zero.Verification
Every command below was actually run locally on Node v24.13.0 / npm 11.10.1.
npm installnpm auditnpm test(node --test)docker build -t agent-gateway-dashboard:upgrade-test -f ./Dockerfile .docker/build-push-action;npm ci --omit=devinside the image also reported 0 vulnerabilities, confirming the lockfile is in syncdocker runthe built image +curl /health{"status":"ok"}, HTTP 200There is no
buildscript and nolintscript or lint config in this repo, so those steps were not applicable rather than skipped.Extra runtime verification
The committed test suite only covers
translate.jsandregistry-panel.js— it never exerciseswsorpg, so a greennpm testalone would not prove the upgraded packages work. I ran an additional throwaway smoke test (not committed) against a live server:ws: client connects to/ws, receives thehistoryframe, and receives a broadcast of an event POSTed to/api/events— passpg: against a realpostgres:16-alpinecontainer with the schemaserver.jsqueries,/api/usersreturned[{"id":"key-luis"}]and/api/registryreturned the expected humans/agents payload, both HTTP 200 — passpgerror path with no DB reachable:/api/users→200 [],/api/registry→502 registry unavailable— pass/→ 200 — pass7/7 smoke checks passed. Temporary containers were removed afterward.
Pinned back / skipped / left broken
Nothing. No package was pinned back, no test was disabled, and nothing is left failing.
Node 24 standardization (commit
2dc6e46)Appended after the dependency upgrade above, per the org-wide decision to standardize on Node 24. This is a separate commit on the same branch, not an amend.
Changes
DockerfileFROM node:22-alpine→FROM node:24-alpine(single-stage, so oneFROMto change)package.json"engines": { "node": ">=24" }package-lock.jsonis untouched — addingenginesdoes not alter the dependency tree.Checked, no change needed
.github/workflows/container-image.yml— contains nosetup-nodestep and no Node version pin. It only runsdocker/build-push-actionagainst./Dockerfile, so CI picks up Node 24 automatically from the base image. Nothing to edit.node:NN,node_version,setup-node,nodejs,engines) across all tracked files found only theDockerfileline. There is no README, no docs directory, and no compose file in this repo.Verification
Every command below was actually run. Host: Node v24.13.0, Docker 29.6.1.
npm cinpm test(node --test)npm auditdocker build -f ./Dockerfile .node:24-alpine;npm ci --omit=devinside the image also reported 0 vulnerabilitiesdocker run+curl /health{"status":"ok"}, HTTP 200node --versioninside built imageRuntime smoke against the running 24-alpine container
The committed tests only cover
translate.jsandregistry-panel.jsand never touchwsorpg, so a greennpm testdoes not prove the runtime works. Checks run against the live Node 24 container:/health→{"status":"ok"}, HTTP 200 — passws: client upgrade on/wssucceeded and received a broadcast frame (186 bytes) — passPOST /api/events→ 200, thenGET /eventsreturned the ingested event — passGET /static serving → 200 (25,454 bytes) — passDashboard listening on port 3000, no crashes or warningspgand the node:22 controlNo Postgres was running in this environment, so
pgwas exercised only on its error path:/api/users→200 []and/api/registry→502 registry unavailable.To confirm those responses are a missing-database artifact and not a Node 24 regression, I built the same image on
node:22-alpineas a control and hit the same endpoints. Results were byte-identical across both runtimes:/health{"status":"ok"}200{"status":"ok"}200/api/users[]200[]200/api/registry{"error":"registry unavailable"}502{"error":"registry unavailable"}502So
pgwas not verified against a real database on Node 24 in this pass — that gap is stated plainly rather than glossed over. The earlier upgrade verification in this PR did coverpgagainst a realpostgres:16-alpine, andpgis pure JS with no native build step, so the risk is low but not zero.All containers and images created for this verification were removed afterward.
Pinned back / skipped / left broken
Nothing. No version was reverted, no test disabled,
--no-verifywas not used, and nothing is left failing.