blitzstrike 2.4.175 → 2.4.176

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 CHANGED
@@ -5,6 +5,15 @@ 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.176] — 2026-10-11
9
+
10
+ ### Added — retest context (completes the retest loop)
11
+
12
+ - New `retest_context` tool: given a confirmed/still_vulnerable/inconclusive
13
+ finding, return everything needed to re-verify it — finding key fields, PoC
14
+ evidence grouped by role (proof/baseline/verification) + reproducible flag,
15
+ the active operation constraints, and the current goal state.
16
+
8
17
  ## [2.4.175] — 2026-10-11
9
18
 
10
19
  ### Added — evidence roles (structured proof/baseline/verification/supporting)
package/dist/index.js CHANGED
@@ -66811,6 +66811,48 @@ ${statusLine}` : statusLine },
66811
66811
  ].filter(Boolean);
66812
66812
  return { content: [{ type: "text", text: JSON.stringify({ ...roles, missing: missing.length ? missing : undefined, hint: roles.reproducible ? "reproducible — evidence complete" : "NOT reproducible — attach the missing roles via finding_attach_evidence" }) }] };
66813
66813
  });
66814
+ server.registerTool("retest_context", {
66815
+ title: "Build the retest context for a confirmed finding",
66816
+ description: "RETEST: given a CONFIRMED (or still_vulnerable/inconclusive) finding, return everything needed to re-verify it in one shot: the finding's key fields (target/method/param/severity), its PoC evidence grouped by role (proof/baseline/verification) + reproducible flag, the active operation constraints (red lines), and the current goal state. Then re-run the proof request and record the verdict with retest_finding.",
66817
+ inputSchema: {
66818
+ finding: string2().describe("JSON of the Finding object to retest")
66819
+ }
66820
+ }, async ({ finding }) => {
66821
+ let f;
66822
+ try {
66823
+ f = JSON.parse(finding);
66824
+ } catch {
66825
+ return { content: [{ type: "text", text: JSON.stringify({ error: "invalid finding JSON" }) }] };
66826
+ }
66827
+ const ev = f.evidence ?? [];
66828
+ const roles = evidenceRoles(ev);
66829
+ const byRole = { proof: [], baseline: [], verification: [], supporting: [] };
66830
+ for (const e of ev)
66831
+ byRole[e.role].push({ evidence_id: e.evidence_id, type: e.type, description: e.description, artifacts: e.artifacts.map((a) => a.name) });
66832
+ const missing = ["proof", "baseline", "verification"].filter((r) => !roles[r]);
66833
+ const goals = goalStatus();
66834
+ return {
66835
+ content: [{
66836
+ type: "text",
66837
+ text: JSON.stringify({
66838
+ finding: {
66839
+ id: f.id,
66840
+ status: f.status,
66841
+ title: f.title,
66842
+ severity: f.classification?.severity,
66843
+ cwe: f.classification?.cwe,
66844
+ target: f.target,
66845
+ method: f.target?.method,
66846
+ param: f.target?.param
66847
+ },
66848
+ poc: { ...byRole, reproducible: roles.reproducible, missing: missing.length ? missing : undefined },
66849
+ constraints: listConstraints(),
66850
+ goals: { all_met: goals.all_met, met: goals.met, total: goals.total },
66851
+ retest_hint: "Re-run the proof request (or the original PoC path) against the CURRENT target. Still reproduces → retest_finding(verdict=still_vulnerable); no longer reproduces → fixed; a blocker (WAF/target down/missing login) prevents a verdict → inconclusive."
66852
+ })
66853
+ }]
66854
+ };
66855
+ });
66814
66856
  server.registerTool("redact", {
66815
66857
  title: "Redact secrets from text",
66816
66858
  description: "EVIDENCE: redact passwords/API keys/tokens/cookies/private keys from text before persisting evidence or reporting.",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "blitzstrike",
3
- "version": "2.4.175",
3
+ "version": "2.4.176",
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": {