blitzstrike 2.4.16 → 2.4.17
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 +11 -0
- package/dist/index.js +20 -11
- package/package.json +1 -1
- package/tools-catalog.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -5,6 +5,17 @@ All notable changes to Blitz Strike are documented here.
|
|
|
5
5
|
The format follows [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
|
6
6
|
and this project adheres to [Semantic Versioning](https://semver.org/).
|
|
7
7
|
|
|
8
|
+
## [2.4.17] — 2026-09-14
|
|
9
|
+
|
|
10
|
+
### Added — auto-provision toolchains + non-interactive installs
|
|
11
|
+
|
|
12
|
+
- Preflight now AUTO-PROVISIONS missing build toolchains (go, cargo, meson, ninja)
|
|
13
|
+
instead of only warning — `install-tools` installs them via apt before the
|
|
14
|
+
mass install, so `go install` / `meson build` / `ninja` no longer fail.
|
|
15
|
+
- All install commands now run with stdin closed (non-interactive) — prompts like
|
|
16
|
+
metasploit's "Overwrite? (y/N)" can no longer hang the run; `yes |` is piped
|
|
17
|
+
where an interactive confirm is required.
|
|
18
|
+
|
|
8
19
|
## [2.4.16] — 2026-09-14
|
|
9
20
|
|
|
10
21
|
### Added — auto-fallback install (toolchain provision + pip fallback)
|
package/dist/index.js
CHANGED
|
@@ -7403,6 +7403,16 @@ import { join as join6 } from "node:path";
|
|
|
7403
7403
|
import { fileURLToPath as fileURLToPath3 } from "node:url";
|
|
7404
7404
|
import { homedir as homedir3 } from "node:os";
|
|
7405
7405
|
import { spawnSync, spawn } from "node:child_process";
|
|
7406
|
+
function provisionMissingToolchains() {
|
|
7407
|
+
const missing = [];
|
|
7408
|
+
for (const [tc, inst] of Object.entries(TOOLCHAIN_INSTALL)) {
|
|
7409
|
+
if (hasCommand(tc))
|
|
7410
|
+
continue;
|
|
7411
|
+
missing.push(tc);
|
|
7412
|
+
spawnSync(inst, { shell: true, timeout: 300000, stdio: ["ignore", "pipe", "pipe"] });
|
|
7413
|
+
}
|
|
7414
|
+
return missing;
|
|
7415
|
+
}
|
|
7406
7416
|
function hasCommand(cmd) {
|
|
7407
7417
|
return spawnSync(`command -v ${cmd}`, { shell: true, timeout: 8000 }).status === 0;
|
|
7408
7418
|
}
|
|
@@ -7425,11 +7435,11 @@ function provisionToolchain(cmd) {
|
|
|
7425
7435
|
}
|
|
7426
7436
|
function runInstallCommand(cmd, timeoutMs) {
|
|
7427
7437
|
provisionToolchain(cmd);
|
|
7428
|
-
let r = spawnSync(cmd, { shell: true, timeout: timeoutMs, cwd: TOOLS_DIR });
|
|
7438
|
+
let r = spawnSync(cmd, { shell: true, timeout: timeoutMs, cwd: TOOLS_DIR, stdio: ["ignore", "pipe", "pipe"] });
|
|
7429
7439
|
let output = `${r.stdout?.toString() ?? ""}${r.stderr?.toString() ?? ""}`;
|
|
7430
7440
|
if (r.status !== 0 && /--break-system-packages/.test(cmd)) {
|
|
7431
7441
|
const alt = cmd.replace(/--break-system-packages/g, "--user");
|
|
7432
|
-
const r2 = spawnSync(alt, { shell: true, timeout: timeoutMs, cwd: TOOLS_DIR });
|
|
7442
|
+
const r2 = spawnSync(alt, { shell: true, timeout: timeoutMs, cwd: TOOLS_DIR, stdio: ["ignore", "pipe", "pipe"] });
|
|
7433
7443
|
if (r2.status === 0)
|
|
7434
7444
|
r = r2;
|
|
7435
7445
|
output = `${output}
|
|
@@ -7654,7 +7664,7 @@ function ensureToolAsync(name, timeoutMs = 300000) {
|
|
|
7654
7664
|
}
|
|
7655
7665
|
mkdirSync3(TOOLS_DIR, { recursive: true });
|
|
7656
7666
|
provisionToolchain(cmd);
|
|
7657
|
-
const inst = spawn(cmd, { shell: true, timeout: timeoutMs, cwd: TOOLS_DIR });
|
|
7667
|
+
const inst = spawn(cmd, { shell: true, timeout: timeoutMs, cwd: TOOLS_DIR, stdio: ["ignore", "pipe", "pipe"] });
|
|
7658
7668
|
let out = "";
|
|
7659
7669
|
inst.stdout?.on("data", (d) => {
|
|
7660
7670
|
out += d.toString();
|
|
@@ -7670,7 +7680,7 @@ function ensureToolAsync(name, timeoutMs = 300000) {
|
|
|
7670
7680
|
}
|
|
7671
7681
|
if (/--break-system-packages/.test(cmd)) {
|
|
7672
7682
|
const alt = cmd.replace(/--break-system-packages/g, "--user");
|
|
7673
|
-
const r2 = spawn(alt, { shell: true, timeout: timeoutMs, cwd: TOOLS_DIR });
|
|
7683
|
+
const r2 = spawn(alt, { shell: true, timeout: timeoutMs, cwd: TOOLS_DIR, stdio: ["ignore", "pipe", "pipe"] });
|
|
7674
7684
|
let out2 = "";
|
|
7675
7685
|
r2.stdout?.on("data", (d) => {
|
|
7676
7686
|
out2 += d.toString();
|
|
@@ -7724,7 +7734,9 @@ var init_catalog = __esm(() => {
|
|
|
7724
7734
|
TOOLS_DIR = process.env.BLITZSTRIKE_TOOLS_DIR ?? join6(homedir3(), ".blitzstrike", "tools");
|
|
7725
7735
|
TOOLCHAIN_INSTALL = {
|
|
7726
7736
|
go: "apt-get install -y golang-go",
|
|
7727
|
-
cargo: "apt-get install -y cargo"
|
|
7737
|
+
cargo: "apt-get install -y cargo",
|
|
7738
|
+
meson: "apt-get install -y meson",
|
|
7739
|
+
ninja: "apt-get install -y ninja-build"
|
|
7728
7740
|
};
|
|
7729
7741
|
_provisioned = new Set;
|
|
7730
7742
|
});
|
|
@@ -16053,12 +16065,9 @@ async function runInstallTools(args) {
|
|
|
16053
16065
|
}
|
|
16054
16066
|
console.log(`Installing catalog tools${category ? ` (category: ${category})` : ""} — concurrency ${concurrency}
|
|
16055
16067
|
`);
|
|
16056
|
-
const
|
|
16057
|
-
|
|
16058
|
-
|
|
16059
|
-
console.log(`⚠ Missing toolchains: ${missingChains.join(", ")} (${missingChains.map((c) => chainMap[c]).join(", ")})`);
|
|
16060
|
-
console.log(` Tools that need them will FAIL below. Install first, e.g.:
|
|
16061
|
-
apt install -y ${missingChains.map((c) => chainMap[c]).join(" ")}
|
|
16068
|
+
const provisioned = provisionMissingToolchains();
|
|
16069
|
+
if (provisioned.length) {
|
|
16070
|
+
console.log(`Provisioned missing toolchains: ${provisioned.join(", ")}
|
|
16062
16071
|
`);
|
|
16063
16072
|
}
|
|
16064
16073
|
const tools = loadTools();
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "blitzstrike",
|
|
3
|
-
"version": "2.4.
|
|
3
|
+
"version": "2.4.17",
|
|
4
4
|
"description": "Blitz Strike — a universal MCP security-audit toolbelt. BLITZ sweeps the attack surface, EAGLE-EYE traces source-to-sink, STRIKE verifies live. 57 attack chains, 130-tool catalog, intelligence data layer. One server, every agent.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
package/tools-catalog.json
CHANGED
|
@@ -2846,7 +2846,7 @@
|
|
|
2846
2846
|
}
|
|
2847
2847
|
],
|
|
2848
2848
|
"install": {
|
|
2849
|
-
"linux": "curl https://raw.githubusercontent.com/rapid7/metasploit-omnibus/master/config/templates/metasploit-framework-wrappers/msfupdate.erb |
|
|
2849
|
+
"linux": "curl -sL https://raw.githubusercontent.com/rapid7/metasploit-omnibus/master/config/templates/metasploit-framework-wrappers/msfupdate.erb -o /tmp/msfinstall && chmod +x /tmp/msfinstall && yes | /tmp/msfinstall",
|
|
2850
2850
|
"darwin": "brew install metasploit",
|
|
2851
2851
|
"win32": "manual"
|
|
2852
2852
|
},
|