@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.
- package/dist/cli.js +408 -83
- package/dist/cli.mjs +408 -83
- package/dist/dashboard.mjs +17 -6
- package/package.json +1 -1
package/dist/dashboard.mjs
CHANGED
|
@@ -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 === "
|
|
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
|
|
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 "
|
|
3576
|
-
|
|
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
|
|
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.
|
|
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",
|