blitzstrike 1.0.73 → 1.0.75

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,25 @@ 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.75] — 2026-09-13
9
+
10
+ ### Added — plan checklist in the engagement banner
11
+
12
+ - `run_engagement` now renders its engagement plan as a checkbox checklist
13
+ (`[✓] done / [☐] pending`) right under the "orchestrator in control" banner,
14
+ so the terminal shows both the takeover notice and what was/will be done.
15
+
16
+ ## [1.0.74] — 2026-09-13
17
+
18
+ ### Fixed — banner now visibly surfaces in the terminal
19
+
20
+ - `run_engagement` now returns the "orchestrator in control" banner as a
21
+ standalone first text block (plus a one-line status summary), instead of
22
+ burying it inside the JSON result — so it actually appears in the client
23
+ terminal when the engagement starts.
24
+ - `bs-orchestrate-engagement` now instructs the driving agent to relay the
25
+ banner verbatim and drive `blitz_status` for live progress.
26
+
8
27
  ## [1.0.73] — 2026-09-13
9
28
 
10
29
  ### Added — orchestrator "in control" banner + live progress
package/dist/index.js CHANGED
@@ -30814,6 +30814,16 @@ function formatStatus(opts) {
30814
30814
  return lines.join(`
30815
30815
  `);
30816
30816
  }
30817
+ function formatPlanChecklist(plan) {
30818
+ const mark = (s) => s === "done" ? "✓" : s === "pending" ? "☐" : "▶";
30819
+ const items = plan.map((p) => `[${mark(p.status)}] ${p.state}`);
30820
+ const rows = [];
30821
+ for (let i = 0;i < items.length; i += 3) {
30822
+ rows.push(" " + items.slice(i, i + 3).map((s) => s.padEnd(22)).join(""));
30823
+ }
30824
+ return rows.join(`
30825
+ `);
30826
+ }
30817
30827
  var _chainsCache = null;
30818
30828
  function loadChains() {
30819
30829
  if (_chainsCache)
@@ -53518,8 +53528,19 @@ function createServer() {
53518
53528
  }, async ({ target, scope, mode, max_files, remember }) => {
53519
53529
  const isUrl = /^https?:\/\//i.test(target);
53520
53530
  const r = isUrl ? await runLiveEngagement(target, scope ?? "", mode ?? "bug-bounty") : runEngagement(target, scope ?? "", mode ?? "bug-bounty", max_files ?? 2000, remember ?? true);
53531
+ const banner = typeof r.banner === "string" ? r.banner : "";
53532
+ const planText = Array.isArray(r.plan) && r.plan.length ? `
53533
+
53534
+ plan:
53535
+ ${formatPlanChecklist(r.plan)}` : "";
53536
+ const statusLine = r.status === "BLOCKED" ? `✋ BLOCKED — ${r.reason ?? "scope required"}` : `→ ${Array.isArray(r.findings) ? r.findings.length : 0} finding(s), status=${r.status ?? "COMPLETE"}`;
53521
53537
  return {
53522
- content: [{ type: "text", text: JSON.stringify(r) }]
53538
+ content: [
53539
+ { type: "text", text: banner ? `${banner}${planText}
53540
+
53541
+ ${statusLine}` : statusLine },
53542
+ { type: "text", text: JSON.stringify(r) }
53543
+ ]
53523
53544
  };
53524
53545
  });
53525
53546
  server.registerTool("blitz_status", {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "blitzstrike",
3
- "version": "1.0.73",
3
+ "version": "1.0.75",
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": {
@@ -15,6 +15,12 @@ deterministic MCP tools; never guess a finding — produce it from tool output.
15
15
  Static source paths on disk are always in-scope; live URLs require an
16
16
  explicit scope.
17
17
 
18
+ **Announce takeover.** When you start an engagement, `run_engagement`
19
+ returns a `banner` ("orchestrator in control") as a standalone text block.
20
+ RELAY that banner verbatim to the user — it is the visible signal that you
21
+ have taken control, not a detail to bury in a JSON dump. Then drive
22
+ `blitz_status` at each stage to show live progress.
23
+
18
24
  2. **Recon (passive-first).** For a live target: `live_recon` (fingerprint, WAF,
19
25
  endpoints, tech). For a source tree: `blitz_scan` (entry points + sinks),
20
26
  `detect_framework`, `list_attack_vectors`.