blitzstrike 1.0.72 → 1.0.73

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,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
+ ## [1.0.73] — 2026-09-13
9
+
10
+ ### Added — orchestrator "in control" banner + live progress
11
+
12
+ - `run_engagement` now returns a terminal-friendly banner announcing the
13
+ engagement ("orchestrator in control") with the target, mode, and the
14
+ canonical scope→recon→analyze→verify→review→report pipeline.
15
+ - New `blitz_status` MCP tool: format a live progress snapshot (current stage,
16
+ checkmark/active/pending markers, finding counts, task status) so a driving
17
+ agent can announce progress to the user as it works.
18
+
8
19
  ## [1.0.72] — 2026-09-13
9
20
 
10
21
  ### Changed — coordinated agent guidance
package/dist/index.js CHANGED
@@ -30787,6 +30787,33 @@ function resolveFinding(finding, verdict) {
30787
30787
  }
30788
30788
 
30789
30789
  // src/orchestrator.ts
30790
+ var ENGAGEMENT_STAGES = ["scope", "recon", "analyze", "verify", "review", "report"];
30791
+ function engagementBanner(target, mode) {
30792
+ return [
30793
+ "⚡ BLITZ engagement — orchestrator in control",
30794
+ ` target: ${target}`,
30795
+ ` mode: ${mode}`,
30796
+ ` stages: ${ENGAGEMENT_STAGES.join(" → ")}`
30797
+ ].join(`
30798
+ `);
30799
+ }
30800
+ function formatStatus(opts) {
30801
+ const lines = [];
30802
+ const idx = opts.phase ? ENGAGEMENT_STAGES.indexOf(opts.phase) : -1;
30803
+ lines.push(`BLITZ engagement${idx >= 0 ? ` — ${opts.phase} (${idx + 1}/${ENGAGEMENT_STAGES.length})` : ""}`);
30804
+ if (idx >= 0) {
30805
+ lines.push(` stages: ${ENGAGEMENT_STAGES.map((s, i) => i < idx ? `${s} ✓` : i === idx ? `${s} ▶` : `${s} ☐`).join(" ")}`);
30806
+ }
30807
+ if (opts.findings) {
30808
+ const f = opts.findings;
30809
+ lines.push(` findings: ${[`${f.detected ?? 0} detected`, `${f.hypothesis ?? 0} hypothesis`, `${f.confirmed ?? 0} confirmed`, `${f.false_positive ?? 0} false_positive`].join(" · ")}`);
30810
+ }
30811
+ if (opts.tasks && opts.tasks.length) {
30812
+ lines.push(` tasks: ${opts.tasks.map((t) => `${t.objective} (${t.status})`).join(" · ")}`);
30813
+ }
30814
+ return lines.join(`
30815
+ `);
30816
+ }
30790
30817
  var _chainsCache = null;
30791
30818
  function loadChains() {
30792
30819
  if (_chainsCache)
@@ -30904,6 +30931,7 @@ function enrichScan(path, maxFiles = 2000) {
30904
30931
  }
30905
30932
  function runEngagement(target, scope = "", mode = "bug-bounty", maxFiles = 2000, remember = true) {
30906
30933
  const report = {
30934
+ banner: engagementBanner(target, mode),
30907
30935
  target,
30908
30936
  mode,
30909
30937
  tiers: {},
@@ -31057,7 +31085,7 @@ function listChains() {
31057
31085
  }
31058
31086
  var LIVE_SWEEP_PARAMS = ["q", "search", "query", "s", "id", "url", "redirect", "name", "page"];
31059
31087
  async function runLiveEngagement(url, scope = "", mode = "bug-bounty") {
31060
- const report = { target: url, mode, findings: [], scope: null, status: "" };
31088
+ const report = { banner: engagementBanner(url, mode), target: url, mode, findings: [], scope: null, status: "" };
31061
31089
  const sc = scopeCheck(url, scope, mode);
31062
31090
  report.scope = sc;
31063
31091
  if (!sc.allowed) {
@@ -53494,6 +53522,19 @@ function createServer() {
53494
53522
  content: [{ type: "text", text: JSON.stringify(r) }]
53495
53523
  };
53496
53524
  });
53525
+ server.registerTool("blitz_status", {
53526
+ title: "Engagement progress banner",
53527
+ description: "Format a terminal-friendly live progress snapshot of the running engagement — current stage (of the scope→recon→analyze→verify→review→report pipeline), finding counts, and task status. Call it to announce progress to the user as you drive the audit.",
53528
+ inputSchema: {
53529
+ phase: string2().optional().describe("Current stage: scope/recon/analyze/verify/review/report"),
53530
+ findings: record(string2(), number2()).optional().describe("Finding counts, e.g. {detected:4,hypothesis:2,confirmed:1,false_positive:0}"),
53531
+ tasks: array(object2({ id: string2(), objective: string2(), status: string2() })).optional().describe("Task list with status")
53532
+ }
53533
+ }, async ({ phase, findings, tasks }) => {
53534
+ return {
53535
+ content: [{ type: "text", text: formatStatus({ phase, findings, tasks }) }]
53536
+ };
53537
+ });
53497
53538
  server.registerTool("list_chains", {
53498
53539
  title: "STRIKE list chains",
53499
53540
  description: "STRIKE: list all escalation chains in the data layer (chains.json).",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "blitzstrike",
3
- "version": "1.0.72",
3
+ "version": "1.0.73",
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": {