blitzstrike 1.0.49 → 1.0.50
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/dist/index.js +33 -0
- 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.50] — 2026-09-13
|
|
9
|
+
|
|
10
|
+
### Added — Autonomous Security Engine (phase 10: cross-agent memory)
|
|
11
|
+
|
|
12
|
+
- **Cross-agent Memory** (`src/mission/memory.ts`, §20):
|
|
13
|
+
- `persistMissionMemory()` — persists confirmed findings (verified),
|
|
14
|
+
rejected findings, and failed approaches (with `future_policy`) into the
|
|
15
|
+
long-term memory store; pending hypotheses are NOT persisted (unverified).
|
|
16
|
+
- `recallForTarget()` — retrieves memory relevant to a target, to seed a
|
|
17
|
+
fresh mission.
|
|
18
|
+
- Mission Control's `finalize` now persists reusable knowledge and records the
|
|
19
|
+
saved/deduped count in `memory_refs`.
|
|
20
|
+
|
|
8
21
|
## [1.0.49] — 2026-09-13
|
|
9
22
|
|
|
10
23
|
### Added — Autonomous Security Engine (phase 9: failure recovery)
|
package/dist/index.js
CHANGED
|
@@ -18716,6 +18716,34 @@ var init_recovery = __esm(() => {
|
|
|
18716
18716
|
};
|
|
18717
18717
|
});
|
|
18718
18718
|
|
|
18719
|
+
// src/mission/memory.ts
|
|
18720
|
+
function recordHypothesisOutcome(type, target, status, evidence) {
|
|
18721
|
+
return remember(`finding:${type}`, `[${status}] ${type} @ ${target}: ${evidence}`, status === "validated" ? "signature" : "lesson", [type.toLowerCase(), status], "mission", status === "validated").saved === true;
|
|
18722
|
+
}
|
|
18723
|
+
function recordFailedApproach(fa) {
|
|
18724
|
+
return remember(`failed:${fa.technique}`, `${fa.technique} failed (${fa.category}): ${fa.reason} — ${fa.future_policy}`, "lesson", ["failed", fa.category], "mission", false).saved === true;
|
|
18725
|
+
}
|
|
18726
|
+
function persistMissionMemory(mission) {
|
|
18727
|
+
let attempted = 0;
|
|
18728
|
+
let saved = 0;
|
|
18729
|
+
for (const h of mission.hypotheses) {
|
|
18730
|
+
if (h.status !== "validated" && h.status !== "rejected")
|
|
18731
|
+
continue;
|
|
18732
|
+
attempted += 1;
|
|
18733
|
+
if (recordHypothesisOutcome(h.type, h.target, h.status, h.evidence))
|
|
18734
|
+
saved += 1;
|
|
18735
|
+
}
|
|
18736
|
+
for (const fa of mission.failed_approaches) {
|
|
18737
|
+
attempted += 1;
|
|
18738
|
+
if (recordFailedApproach(fa))
|
|
18739
|
+
saved += 1;
|
|
18740
|
+
}
|
|
18741
|
+
return { saved, deduped: attempted - saved };
|
|
18742
|
+
}
|
|
18743
|
+
var init_memory2 = __esm(() => {
|
|
18744
|
+
init_memory();
|
|
18745
|
+
});
|
|
18746
|
+
|
|
18719
18747
|
// src/mission/control.ts
|
|
18720
18748
|
import { existsSync as existsSync8, statSync as statSync4 } from "node:fs";
|
|
18721
18749
|
function scopeAllowed(mission) {
|
|
@@ -18878,6 +18906,10 @@ function finalize2(mission) {
|
|
|
18878
18906
|
tasks: allResolved(m.tasks) ? 1 : 0,
|
|
18879
18907
|
hypotheses_validated: m.hypotheses.length > 0 ? m.hypotheses.filter((h) => h.status === "validated").length / m.hypotheses.length : 0
|
|
18880
18908
|
};
|
|
18909
|
+
const mem = persistMissionMemory(m);
|
|
18910
|
+
if (mem.saved > 0) {
|
|
18911
|
+
m = { ...m, memory_refs: [...m.memory_refs, `persisted:${mem.saved} (${mem.deduped} deduped)`] };
|
|
18912
|
+
}
|
|
18881
18913
|
return saveMission(m);
|
|
18882
18914
|
}
|
|
18883
18915
|
async function startMission(target, mode, opts = {}) {
|
|
@@ -18900,6 +18932,7 @@ var init_control = __esm(() => {
|
|
|
18900
18932
|
init_planner();
|
|
18901
18933
|
init_coverage();
|
|
18902
18934
|
init_recovery();
|
|
18935
|
+
init_memory2();
|
|
18903
18936
|
MODE_PROFILES = {
|
|
18904
18937
|
web: { agents: ["recon", "web", "api", "auth", "validator", "reviewer", "reporter"], verify: true, risk: "medium" },
|
|
18905
18938
|
api: { agents: ["recon", "api", "auth", "validator", "reviewer", "reporter"], verify: true, risk: "medium" },
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "blitzstrike",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.50",
|
|
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": {
|