blitzstrike 1.0.57 → 1.0.58
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 +13 -0
- package/README.md +2 -0
- package/dist/index.js +47 -2
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -5,6 +5,19 @@ 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
|
+
## [1.0.58] — 2026-09-13
|
|
9
|
+
|
|
10
|
+
### Fixed — total-verification pass
|
|
11
|
+
|
|
12
|
+
- **Backward-compat mission load** — `loadMission` now normalizes old persisted
|
|
13
|
+
missions (missing the P14 budget fields: `max_tokens`, `max_cost_usd`,
|
|
14
|
+
`per_task_budget`, `started_at`, `used_tokens`/`used_cost_usd`, and P9
|
|
15
|
+
`failed_approaches`) so `blitzstrike mission resume <old-id>` no longer crashes.
|
|
16
|
+
- **Scope gate** — now rejects ANY non-local target without an authorized scope
|
|
17
|
+
(previously the `https://` regex let a bare host like `example.com` slip past
|
|
18
|
+
the upfront gate). Non-local + no scope → `scope_required`.
|
|
19
|
+
- README CLI section now lists the `mission` and `benchmark` commands.
|
|
20
|
+
|
|
8
21
|
## [1.0.57] — 2026-09-13
|
|
9
22
|
|
|
10
23
|
### Added — Autonomous Security Engine (phase 18: documentation & examples)
|
package/README.md
CHANGED
|
@@ -136,6 +136,8 @@ blitzstrike serve --mcp # start MCP server over stdio (default)
|
|
|
136
136
|
blitzstrike doctor # health check: runtime + 130-tool catalog + creds
|
|
137
137
|
blitzstrike install # write MCP config to detected clients (Claude/Cursor/OpenCode)
|
|
138
138
|
blitzstrike install --dry-run # preview the config without writing
|
|
139
|
+
blitzstrike mission <target> # run an autonomous mission (source or web)
|
|
140
|
+
blitzstrike benchmark # run the autonomous benchmark (--full for whole corpus)
|
|
139
141
|
blitzstrike sync-data # fetch heavy datasets (payloads + templates) on-demand
|
|
140
142
|
blitzstrike update # check for a newer version + refresh the data cache
|
|
141
143
|
blitzstrike version # print version
|
package/dist/index.js
CHANGED
|
@@ -36491,11 +36491,56 @@ function loadMission(id) {
|
|
|
36491
36491
|
if (!existsSync7(path))
|
|
36492
36492
|
return null;
|
|
36493
36493
|
try {
|
|
36494
|
-
|
|
36494
|
+
const raw = JSON.parse(readFileSync17(path, "utf8"));
|
|
36495
|
+
return normalizeMission(raw);
|
|
36495
36496
|
} catch {
|
|
36496
36497
|
return null;
|
|
36497
36498
|
}
|
|
36498
36499
|
}
|
|
36500
|
+
function normalizeMission(raw) {
|
|
36501
|
+
const b = raw.budget ?? {};
|
|
36502
|
+
const budget = {
|
|
36503
|
+
max_time_seconds: b.max_time_seconds ?? 3600,
|
|
36504
|
+
max_tasks: b.max_tasks ?? 200,
|
|
36505
|
+
max_requests: b.max_requests ?? 1000,
|
|
36506
|
+
max_tokens: b.max_tokens ?? 2000000,
|
|
36507
|
+
max_cost_usd: b.max_cost_usd ?? 5,
|
|
36508
|
+
max_parallel_workers: b.max_parallel_workers ?? 4,
|
|
36509
|
+
risk: b.risk ?? "medium",
|
|
36510
|
+
per_task_budget: b.per_task_budget ?? { max_time_seconds: 60, max_requests: 50 },
|
|
36511
|
+
started_at: b.started_at ?? Date.now(),
|
|
36512
|
+
used_tasks: b.used_tasks ?? 0,
|
|
36513
|
+
used_requests: b.used_requests ?? 0,
|
|
36514
|
+
used_tokens: b.used_tokens ?? 0,
|
|
36515
|
+
used_cost_usd: b.used_cost_usd ?? 0
|
|
36516
|
+
};
|
|
36517
|
+
return {
|
|
36518
|
+
id: raw.id ?? "MSN-unknown",
|
|
36519
|
+
target: raw.target ?? "",
|
|
36520
|
+
scope: raw.scope ?? [],
|
|
36521
|
+
mode: raw.mode ?? "source",
|
|
36522
|
+
status: raw.status ?? "initialized",
|
|
36523
|
+
started_at: raw.started_at ?? new Date().toISOString(),
|
|
36524
|
+
updated_at: raw.updated_at ?? new Date().toISOString(),
|
|
36525
|
+
budget,
|
|
36526
|
+
discovered_assets: raw.discovered_assets ?? [],
|
|
36527
|
+
technologies: raw.technologies ?? [],
|
|
36528
|
+
endpoints: raw.endpoints ?? [],
|
|
36529
|
+
identities: raw.identities ?? [],
|
|
36530
|
+
hypotheses: raw.hypotheses ?? [],
|
|
36531
|
+
findings: raw.findings ?? [],
|
|
36532
|
+
attack_chains: raw.attack_chains ?? [],
|
|
36533
|
+
evidence: raw.evidence ?? [],
|
|
36534
|
+
tasks: raw.tasks ?? [],
|
|
36535
|
+
graph: raw.graph ?? { nodes: [], edges: [] },
|
|
36536
|
+
coverage: { dimensions: raw.coverage?.dimensions ?? {} },
|
|
36537
|
+
memory_refs: raw.memory_refs ?? [],
|
|
36538
|
+
termination_reason: raw.termination_reason ?? null,
|
|
36539
|
+
decision_log: raw.decision_log ?? [],
|
|
36540
|
+
failed_approaches: raw.failed_approaches ?? [],
|
|
36541
|
+
report: raw.report
|
|
36542
|
+
};
|
|
36543
|
+
}
|
|
36499
36544
|
function listMissions() {
|
|
36500
36545
|
if (!existsSync7(DIR))
|
|
36501
36546
|
return [];
|
|
@@ -37630,7 +37675,7 @@ async function executeTask(task, mission, scope) {
|
|
|
37630
37675
|
}
|
|
37631
37676
|
}
|
|
37632
37677
|
async function runMission(mission) {
|
|
37633
|
-
if (
|
|
37678
|
+
if (!scopeAllowed(mission)) {
|
|
37634
37679
|
return saveMission({ ...mission, status: "terminated", termination_reason: "scope_required" });
|
|
37635
37680
|
}
|
|
37636
37681
|
let m = { ...mission, status: "running" };
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "blitzstrike",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.58",
|
|
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": {
|