@node9/proxy 1.59.0 → 1.61.0

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.
@@ -3438,9 +3438,10 @@ async function loadGeminiCostAsync(start, end, geminiTmpDir) {
3438
3438
  function dimensionOfBlock(checkedBy, ruleName) {
3439
3439
  if (checkedBy.includes("egress")) return "network";
3440
3440
  if (checkedBy.includes("pii") || checkedBy.includes("dlp")) return "data";
3441
- if (checkedBy === "app-permission-block" || ruleName.startsWith("app-permission:")) return "mcp";
3441
+ if (checkedBy === "loop-detected" || checkedBy === "mcp-pin-mismatch" || checkedBy.startsWith("injection"))
3442
+ return "detection";
3443
+ if (checkedBy === "app-permission-block" || ruleName.startsWith("app-permission:")) return "apps";
3442
3444
  if (ruleName.startsWith("shield:project-jail")) return "files";
3443
- if (checkedBy === "loop-detected") return "toolRules";
3444
3445
  if (checkedBy === "timeout" || checkedBy === "local-decision") return "approvals";
3445
3446
  return "toolRules";
3446
3447
  }
@@ -3543,7 +3544,9 @@ function aggregateReportFromAudit(period, opts = {}) {
3543
3544
  let dimDataObserved = 0;
3544
3545
  let dimFilesBlocked = 0;
3545
3546
  let dimToolRulesBlocked = 0;
3546
- let dimMcpBlocked = 0;
3547
+ let dimAppsBlocked = 0;
3548
+ let dimPinMismatch = 0;
3549
+ let dimInjectionBlocked = 0;
3547
3550
  for (const e of entries) {
3548
3551
  if (superseded.has(supersedeKey(e))) continue;
3549
3552
  const allow = isAllow(e.decision);
@@ -3561,6 +3564,8 @@ function aggregateReportFromAudit(period, opts = {}) {
3561
3564
  }
3562
3565
  if (e.checkedBy === "loop-detected") loopHits++;
3563
3566
  const cb = e.checkedBy ?? "";
3567
+ if (cb === "mcp-pin-mismatch") dimPinMismatch++;
3568
+ if (cb.startsWith("injection")) dimInjectionBlocked++;
3564
3569
  if (cb.includes("would-block") && (cb.includes("pii") || cb.includes("dlp"))) {
3565
3570
  dimDataObserved++;
3566
3571
  }
@@ -3572,8 +3577,8 @@ function aggregateReportFromAudit(period, opts = {}) {
3572
3577
  case "files":
3573
3578
  dimFilesBlocked++;
3574
3579
  break;
3575
- case "mcp":
3576
- dimMcpBlocked++;
3580
+ case "apps":
3581
+ dimAppsBlocked++;
3577
3582
  break;
3578
3583
  case "toolRules":
3579
3584
  dimToolRulesBlocked++;
@@ -3653,9 +3658,15 @@ function aggregateReportFromAudit(period, opts = {}) {
3653
3658
  dimensions: {
3654
3659
  network: { blocked: dimNetworkBlocked },
3655
3660
  data: { blocked: dlpBlocked, observed: dimDataObserved },
3661
+ detection: {
3662
+ loops: loopHits,
3663
+ pinMismatches: dimPinMismatch,
3664
+ injections: dimInjectionBlocked
3665
+ },
3656
3666
  approvals: { approved: userApproved, denied: userDenied, timedOut },
3657
3667
  files: { blocked: dimFilesBlocked },
3658
- toolRules: { blocked: dimToolRulesBlocked, mcp: dimMcpBlocked, loops: loopHits },
3668
+ toolRules: { blocked: dimToolRulesBlocked },
3669
+ apps: { blocked: dimAppsBlocked },
3659
3670
  cost: { totalUSD: claudeCost.total + codexCost.total + geminiCost.total }
3660
3671
  },
3661
3672
  generatedAt: now.toISOString()
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@node9/proxy",
3
- "version": "1.59.0",
3
+ "version": "1.61.0",
4
4
  "description": "The Sudo Command for AI Agents. Execution Security for Claude Code, Codex, Gemini, Cursor, Opencode, Pi, and any MCP server.",
5
5
  "main": "./dist/index.js",
6
6
  "module": "./dist/index.mjs",