Skip to content

Commit a26cf3b

Browse files
authored
chore(tools): add external-tools.json with fleet-canonical schema (#613)
Ships the fleet's canonical external-tools manifest so socket-cli validates against the same schema every other repo does: https://raw.githubusercontent.com/SocketDev/socket-btm/main/packages/build-infra/lib/external-tools-schema.json `tools` map covers the universal build prerequisites — git, node, pnpm, gh — plus the CI-only security tooling (zizmor, sfw-free, sfw-enterprise) with sha256-verified checksums pulled from socket-registry's pinned entries. Each entry carries both human-facing fields (description, version, notes — for doctor-style reporting) and machine- verify fields (repository, release, checksums — for CI download+verify). One file drives both surfaces. No workflow changes here. The schema file is consumed by: - editors / schema-aware validators (via the $schema URL) - future setup-and-install actions that want to pin pnpm/zizmor/sfw the same way socket-registry does - a future `doctor` command that reads the tools map to report what's installed vs expected
1 parent 38b7bca commit a26cf3b

1 file changed

Lines changed: 167 additions & 0 deletions

File tree

external-tools.json

Lines changed: 167 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,167 @@
1+
{
2+
"$schema": "https://raw.githubusercontent.com/SocketDev/socket-btm/main/packages/build-infra/lib/external-tools-schema.json",
3+
"description": "External tools required to build + release socket-cli. Wrapped `tools` shape matches the canonical schema every fleet repo now uses. When composite actions or scripts want sha256-verified downloads of pnpm / sfw / zizmor, they read from `config.tools.<name>` in this file.",
4+
"tools": {
5+
"git": {
6+
"description": "Git CLI — checkout, submodule init, tag signing.",
7+
"version": "2.30+",
8+
"notes": [
9+
"Required: yes (all platforms)",
10+
"Preinstalled on macOS (Xcode CLT) and most Linux distros",
11+
"Windows: https://git-scm.com/download/win or via winget/scoop"
12+
]
13+
},
14+
"node": {
15+
"description": "Node.js — runs the SDK and all build scripts.",
16+
"version": "18.20+",
17+
"notes": [
18+
"Required: yes",
19+
"package.json engines.node pins the floor (18.20.8); .node-version pins the dev version",
20+
"Consumers of the built dist/*.mjs don't need Node 25+; that's only for running .mts source natively"
21+
]
22+
},
23+
"pnpm": {
24+
"description": "pnpm — the fleet's package manager.",
25+
"version": "11.0.0-rc.5",
26+
"packageManager": "pnpm",
27+
"repository": "github:pnpm/pnpm",
28+
"release": "asset",
29+
"notes": [
30+
"Required: yes",
31+
"Bootstrap locally via `corepack enable pnpm`",
32+
"CI downloads + sha256-verifies the pinned tarball"
33+
],
34+
"checksums": {
35+
"darwin-arm64": {
36+
"asset": "pnpm-darwin-arm64.tar.gz",
37+
"sha256": "32a50710ccacfdcf14e6d5995d5368298eec913b0ce3903b9e09b6555f06f4e5"
38+
},
39+
"darwin-x64": {
40+
"asset": "pnpm-darwin-x64.tar.gz",
41+
"sha256": "71dca33f4275da6b43bf1eb40bdc4d876f59a116716eacbf01079c3d985ff85d"
42+
},
43+
"linux-arm64": {
44+
"asset": "pnpm-linux-arm64.tar.gz",
45+
"sha256": "2dd04127ff10b1f9dd20bae248b779c77a8ec67e3afa35e7256e5f94abddd493"
46+
},
47+
"linux-x64": {
48+
"asset": "pnpm-linux-x64.tar.gz",
49+
"sha256": "7ebef4b616ba41fb0d54a207b36508fae3346723283a088b43fc1e038ee6fed0"
50+
},
51+
"win-arm64": {
52+
"asset": "pnpm-win32-arm64.zip",
53+
"sha256": "e4a39ad4c251db5e34b18b98561ef25bab5506ad65cad2fa3602af58d1972667"
54+
},
55+
"win-x64": {
56+
"asset": "pnpm-win32-x64.zip",
57+
"sha256": "147485ae2f38c3d1ccf2f5db00d0244416bcd22b9114c02388e6a78f41538fc4"
58+
}
59+
}
60+
},
61+
"gh": {
62+
"description": "GitHub CLI — workflow dispatch, release downloads, PR creation.",
63+
"version": "2.63+",
64+
"notes": [
65+
"Required: only in workflows that call `gh api` / `gh pr create`",
66+
"Preinstalled on GitHub-hosted runners",
67+
"Local: `brew install gh` / `winget install gh` / `apt install gh`"
68+
]
69+
},
70+
"zizmor": {
71+
"description": "GitHub Actions security linter — audits .github/ for workflow-injection / credential-leak patterns.",
72+
"version": "1.23.1",
73+
"repository": "github:zizmorcore/zizmor",
74+
"release": "asset",
75+
"notes": [
76+
"Used by the setup-and-install composite action",
77+
"Blocks merges on medium+ findings"
78+
],
79+
"checksums": {
80+
"darwin-arm64": {
81+
"asset": "zizmor-aarch64-apple-darwin.tar.gz",
82+
"sha256": "2632561b974c69f952258c1ab4b7432d5c7f92e555704155c3ac28a2910bd717"
83+
},
84+
"darwin-x64": {
85+
"asset": "zizmor-x86_64-apple-darwin.tar.gz",
86+
"sha256": "89d5ed42081dd9d0433a10b7545fac42b35f1f030885c278b9712b32c66f2597"
87+
},
88+
"linux-arm64": {
89+
"asset": "zizmor-aarch64-unknown-linux-gnu.tar.gz",
90+
"sha256": "3725d7cd7102e4d70827186389f7d5930b6878232930d0a3eb058d7e5b47e658"
91+
},
92+
"linux-x64": {
93+
"asset": "zizmor-x86_64-unknown-linux-gnu.tar.gz",
94+
"sha256": "67a8df0a14352dd81882e14876653d097b99b0f4f6b6fe798edc0320cff27aff"
95+
},
96+
"win-x64": {
97+
"asset": "zizmor-x86_64-pc-windows-msvc.zip",
98+
"sha256": "33c2293ff02834720dd7cd8b47348aafb2e95a19bdc993c0ecaca9c804ade92a"
99+
}
100+
}
101+
},
102+
"sfw-free": {
103+
"description": "Socket Firewall (free tier) — malware gate on dep installs.",
104+
"version": "1.7.2",
105+
"repository": "github:SocketDev/sfw-free",
106+
"release": "asset",
107+
"notes": [
108+
"Used when SOCKET_API_KEY is not set",
109+
"Shims npm/yarn/pnpm so every install call passes through the firewall"
110+
],
111+
"checksums": {
112+
"darwin-arm64": {
113+
"asset": "sfw-free-macos-arm64",
114+
"sha256": "248fb588e1e1a27e7192f7b079f739fc29a9de61f0bad7e90928363022dc5643"
115+
},
116+
"darwin-x64": {
117+
"asset": "sfw-free-macos-x86_64",
118+
"sha256": "a5427d479d440f08e3789fa191ba57599be64997196daf42e67d964fec0382b4"
119+
},
120+
"linux-arm64": {
121+
"asset": "sfw-free-linux-arm64",
122+
"sha256": "84a045e4e1bb320cc5c0d3929f02e53f199398b5be0637e8846d02d9ef0027b1"
123+
},
124+
"linux-x64": {
125+
"asset": "sfw-free-linux-x86_64",
126+
"sha256": "93e2d9dfa244b82a74e014dc26b1c6af18b4adec20f35254378943db5fe91411"
127+
},
128+
"win-x64": {
129+
"asset": "sfw-free-windows-x86_64.exe",
130+
"sha256": "6d333b4cac9d7c5712e2e99677ca634ac8a3020d550c6308312c60bea97f0a28"
131+
}
132+
}
133+
},
134+
"sfw-enterprise": {
135+
"description": "Socket Firewall (enterprise tier) — selected when SOCKET_API_KEY is set.",
136+
"version": "1.7.2",
137+
"repository": "github:SocketDev/firewall-release",
138+
"release": "asset",
139+
"notes": [
140+
"Used when SOCKET_API_KEY is set (e.g. via repo secrets in CI)",
141+
"Same shims as sfw-free, broader ecosystem support"
142+
],
143+
"checksums": {
144+
"darwin-arm64": {
145+
"asset": "sfw-macos-arm64",
146+
"sha256": "b1cdc3bdbd2a3161247bd5cc215eb3c44a90b87fe0b800a33889a14f61bb0d6d"
147+
},
148+
"darwin-x64": {
149+
"asset": "sfw-macos-x86_64",
150+
"sha256": "da252d2a9a5d0edb271bb771e0d01b9cd6fa1635b6d765f61efd61edb6739f12"
151+
},
152+
"linux-arm64": {
153+
"asset": "sfw-linux-arm64",
154+
"sha256": "c24a79c27e1a01a59b7a160c165930ae029816c72b141fcfcdb2f73e0774898a"
155+
},
156+
"linux-x64": {
157+
"asset": "sfw-linux-x86_64",
158+
"sha256": "4482b52e6367bd4610519bfd57a104d5907ec87d5399142ed3bb3d222de1f33d"
159+
},
160+
"win-x64": {
161+
"asset": "sfw-windows-x86_64.exe",
162+
"sha256": "e52ad806a1c41b440f04098eb1c7e407845f03f5740a6a79006ba6fd172056ec"
163+
}
164+
}
165+
}
166+
}
167+
}

0 commit comments

Comments
 (0)