@node9/proxy 1.60.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 +26 -8
- package/dist/cli.mjs +26 -8
- package/dist/dashboard.mjs +17 -6
- package/package.json +1 -1
package/dist/cli.js
CHANGED
|
@@ -49212,9 +49212,10 @@ function loadGeminiCost(start, end, geminiTmpDir2) {
|
|
|
49212
49212
|
function dimensionOfBlock(checkedBy, ruleName) {
|
|
49213
49213
|
if (checkedBy.includes("egress")) return "network";
|
|
49214
49214
|
if (checkedBy.includes("pii") || checkedBy.includes("dlp")) return "data";
|
|
49215
|
-
if (checkedBy === "
|
|
49215
|
+
if (checkedBy === "loop-detected" || checkedBy === "mcp-pin-mismatch" || checkedBy.startsWith("injection"))
|
|
49216
|
+
return "detection";
|
|
49217
|
+
if (checkedBy === "app-permission-block" || ruleName.startsWith("app-permission:")) return "apps";
|
|
49216
49218
|
if (ruleName.startsWith("shield:project-jail")) return "files";
|
|
49217
|
-
if (checkedBy === "loop-detected") return "toolRules";
|
|
49218
49219
|
if (checkedBy === "timeout" || checkedBy === "local-decision") return "approvals";
|
|
49219
49220
|
return "toolRules";
|
|
49220
49221
|
}
|
|
@@ -49317,7 +49318,9 @@ function aggregateReportFromAudit(period, opts = {}) {
|
|
|
49317
49318
|
let dimDataObserved = 0;
|
|
49318
49319
|
let dimFilesBlocked = 0;
|
|
49319
49320
|
let dimToolRulesBlocked = 0;
|
|
49320
|
-
let
|
|
49321
|
+
let dimAppsBlocked = 0;
|
|
49322
|
+
let dimPinMismatch = 0;
|
|
49323
|
+
let dimInjectionBlocked = 0;
|
|
49321
49324
|
for (const e of entries) {
|
|
49322
49325
|
if (superseded.has(supersedeKey(e))) continue;
|
|
49323
49326
|
const allow = isAllow(e.decision);
|
|
@@ -49335,6 +49338,8 @@ function aggregateReportFromAudit(period, opts = {}) {
|
|
|
49335
49338
|
}
|
|
49336
49339
|
if (e.checkedBy === "loop-detected") loopHits++;
|
|
49337
49340
|
const cb = e.checkedBy ?? "";
|
|
49341
|
+
if (cb === "mcp-pin-mismatch") dimPinMismatch++;
|
|
49342
|
+
if (cb.startsWith("injection")) dimInjectionBlocked++;
|
|
49338
49343
|
if (cb.includes("would-block") && (cb.includes("pii") || cb.includes("dlp"))) {
|
|
49339
49344
|
dimDataObserved++;
|
|
49340
49345
|
}
|
|
@@ -49346,8 +49351,8 @@ function aggregateReportFromAudit(period, opts = {}) {
|
|
|
49346
49351
|
case "files":
|
|
49347
49352
|
dimFilesBlocked++;
|
|
49348
49353
|
break;
|
|
49349
|
-
case "
|
|
49350
|
-
|
|
49354
|
+
case "apps":
|
|
49355
|
+
dimAppsBlocked++;
|
|
49351
49356
|
break;
|
|
49352
49357
|
case "toolRules":
|
|
49353
49358
|
dimToolRulesBlocked++;
|
|
@@ -49427,9 +49432,15 @@ function aggregateReportFromAudit(period, opts = {}) {
|
|
|
49427
49432
|
dimensions: {
|
|
49428
49433
|
network: { blocked: dimNetworkBlocked },
|
|
49429
49434
|
data: { blocked: dlpBlocked, observed: dimDataObserved },
|
|
49435
|
+
detection: {
|
|
49436
|
+
loops: loopHits,
|
|
49437
|
+
pinMismatches: dimPinMismatch,
|
|
49438
|
+
injections: dimInjectionBlocked
|
|
49439
|
+
},
|
|
49430
49440
|
approvals: { approved: userApproved, denied: userDenied, timedOut },
|
|
49431
49441
|
files: { blocked: dimFilesBlocked },
|
|
49432
|
-
toolRules: { blocked: dimToolRulesBlocked
|
|
49442
|
+
toolRules: { blocked: dimToolRulesBlocked },
|
|
49443
|
+
apps: { blocked: dimAppsBlocked },
|
|
49433
49444
|
cost: { totalUSD: claudeCost.total + codexCost.total + geminiCost.total }
|
|
49434
49445
|
},
|
|
49435
49446
|
generatedAt: now.toISOString()
|
|
@@ -49729,6 +49740,12 @@ function renderTerminalReport(data, responseDlpEntries, excludeTests) {
|
|
|
49729
49740
|
d.data.blocked + d.data.observed > 0,
|
|
49730
49741
|
`${num2(d.data.blocked)} blocked \xB7 ${num2(d.data.observed)} observed (DLP/PII)`
|
|
49731
49742
|
);
|
|
49743
|
+
dimRow(
|
|
49744
|
+
"\u{1F501}",
|
|
49745
|
+
"Detection",
|
|
49746
|
+
d.detection.loops + d.detection.pinMismatches + d.detection.injections > 0,
|
|
49747
|
+
`${num2(d.detection.loops)} loops \xB7 ${num2(d.detection.pinMismatches)} pin \xB7 ${num2(d.detection.injections)} injection`
|
|
49748
|
+
);
|
|
49732
49749
|
dimRow(
|
|
49733
49750
|
"\u270B",
|
|
49734
49751
|
"Approvals",
|
|
@@ -49739,9 +49756,10 @@ function renderTerminalReport(data, responseDlpEntries, excludeTests) {
|
|
|
49739
49756
|
dimRow(
|
|
49740
49757
|
"\u{1F6E0}",
|
|
49741
49758
|
"Tool rules",
|
|
49742
|
-
d.toolRules.blocked
|
|
49743
|
-
`${num2(d.toolRules.blocked)} shields/rules
|
|
49759
|
+
d.toolRules.blocked > 0,
|
|
49760
|
+
`${num2(d.toolRules.blocked)} shields/rules`
|
|
49744
49761
|
);
|
|
49762
|
+
dimRow("\u{1F9E9}", "Apps (MCP)", d.apps.blocked > 0, `${num2(d.apps.blocked)} app-permission blocks`);
|
|
49745
49763
|
dimRow("\u{1F4B0}", "Cost", d.cost.totalUSD > 0, `${fmtCost2(d.cost.totalUSD)} this period`);
|
|
49746
49764
|
}
|
|
49747
49765
|
console.log("");
|
package/dist/cli.mjs
CHANGED
|
@@ -49205,9 +49205,10 @@ function loadGeminiCost(start, end, geminiTmpDir2) {
|
|
|
49205
49205
|
function dimensionOfBlock(checkedBy, ruleName) {
|
|
49206
49206
|
if (checkedBy.includes("egress")) return "network";
|
|
49207
49207
|
if (checkedBy.includes("pii") || checkedBy.includes("dlp")) return "data";
|
|
49208
|
-
if (checkedBy === "
|
|
49208
|
+
if (checkedBy === "loop-detected" || checkedBy === "mcp-pin-mismatch" || checkedBy.startsWith("injection"))
|
|
49209
|
+
return "detection";
|
|
49210
|
+
if (checkedBy === "app-permission-block" || ruleName.startsWith("app-permission:")) return "apps";
|
|
49209
49211
|
if (ruleName.startsWith("shield:project-jail")) return "files";
|
|
49210
|
-
if (checkedBy === "loop-detected") return "toolRules";
|
|
49211
49212
|
if (checkedBy === "timeout" || checkedBy === "local-decision") return "approvals";
|
|
49212
49213
|
return "toolRules";
|
|
49213
49214
|
}
|
|
@@ -49310,7 +49311,9 @@ function aggregateReportFromAudit(period, opts = {}) {
|
|
|
49310
49311
|
let dimDataObserved = 0;
|
|
49311
49312
|
let dimFilesBlocked = 0;
|
|
49312
49313
|
let dimToolRulesBlocked = 0;
|
|
49313
|
-
let
|
|
49314
|
+
let dimAppsBlocked = 0;
|
|
49315
|
+
let dimPinMismatch = 0;
|
|
49316
|
+
let dimInjectionBlocked = 0;
|
|
49314
49317
|
for (const e of entries) {
|
|
49315
49318
|
if (superseded.has(supersedeKey(e))) continue;
|
|
49316
49319
|
const allow = isAllow(e.decision);
|
|
@@ -49328,6 +49331,8 @@ function aggregateReportFromAudit(period, opts = {}) {
|
|
|
49328
49331
|
}
|
|
49329
49332
|
if (e.checkedBy === "loop-detected") loopHits++;
|
|
49330
49333
|
const cb = e.checkedBy ?? "";
|
|
49334
|
+
if (cb === "mcp-pin-mismatch") dimPinMismatch++;
|
|
49335
|
+
if (cb.startsWith("injection")) dimInjectionBlocked++;
|
|
49331
49336
|
if (cb.includes("would-block") && (cb.includes("pii") || cb.includes("dlp"))) {
|
|
49332
49337
|
dimDataObserved++;
|
|
49333
49338
|
}
|
|
@@ -49339,8 +49344,8 @@ function aggregateReportFromAudit(period, opts = {}) {
|
|
|
49339
49344
|
case "files":
|
|
49340
49345
|
dimFilesBlocked++;
|
|
49341
49346
|
break;
|
|
49342
|
-
case "
|
|
49343
|
-
|
|
49347
|
+
case "apps":
|
|
49348
|
+
dimAppsBlocked++;
|
|
49344
49349
|
break;
|
|
49345
49350
|
case "toolRules":
|
|
49346
49351
|
dimToolRulesBlocked++;
|
|
@@ -49420,9 +49425,15 @@ function aggregateReportFromAudit(period, opts = {}) {
|
|
|
49420
49425
|
dimensions: {
|
|
49421
49426
|
network: { blocked: dimNetworkBlocked },
|
|
49422
49427
|
data: { blocked: dlpBlocked, observed: dimDataObserved },
|
|
49428
|
+
detection: {
|
|
49429
|
+
loops: loopHits,
|
|
49430
|
+
pinMismatches: dimPinMismatch,
|
|
49431
|
+
injections: dimInjectionBlocked
|
|
49432
|
+
},
|
|
49423
49433
|
approvals: { approved: userApproved, denied: userDenied, timedOut },
|
|
49424
49434
|
files: { blocked: dimFilesBlocked },
|
|
49425
|
-
toolRules: { blocked: dimToolRulesBlocked
|
|
49435
|
+
toolRules: { blocked: dimToolRulesBlocked },
|
|
49436
|
+
apps: { blocked: dimAppsBlocked },
|
|
49426
49437
|
cost: { totalUSD: claudeCost.total + codexCost.total + geminiCost.total }
|
|
49427
49438
|
},
|
|
49428
49439
|
generatedAt: now.toISOString()
|
|
@@ -49722,6 +49733,12 @@ function renderTerminalReport(data, responseDlpEntries, excludeTests) {
|
|
|
49722
49733
|
d.data.blocked + d.data.observed > 0,
|
|
49723
49734
|
`${num2(d.data.blocked)} blocked \xB7 ${num2(d.data.observed)} observed (DLP/PII)`
|
|
49724
49735
|
);
|
|
49736
|
+
dimRow(
|
|
49737
|
+
"\u{1F501}",
|
|
49738
|
+
"Detection",
|
|
49739
|
+
d.detection.loops + d.detection.pinMismatches + d.detection.injections > 0,
|
|
49740
|
+
`${num2(d.detection.loops)} loops \xB7 ${num2(d.detection.pinMismatches)} pin \xB7 ${num2(d.detection.injections)} injection`
|
|
49741
|
+
);
|
|
49725
49742
|
dimRow(
|
|
49726
49743
|
"\u270B",
|
|
49727
49744
|
"Approvals",
|
|
@@ -49732,9 +49749,10 @@ function renderTerminalReport(data, responseDlpEntries, excludeTests) {
|
|
|
49732
49749
|
dimRow(
|
|
49733
49750
|
"\u{1F6E0}",
|
|
49734
49751
|
"Tool rules",
|
|
49735
|
-
d.toolRules.blocked
|
|
49736
|
-
`${num2(d.toolRules.blocked)} shields/rules
|
|
49752
|
+
d.toolRules.blocked > 0,
|
|
49753
|
+
`${num2(d.toolRules.blocked)} shields/rules`
|
|
49737
49754
|
);
|
|
49755
|
+
dimRow("\u{1F9E9}", "Apps (MCP)", d.apps.blocked > 0, `${num2(d.apps.blocked)} app-permission blocks`);
|
|
49738
49756
|
dimRow("\u{1F4B0}", "Cost", d.cost.totalUSD > 0, `${fmtCost2(d.cost.totalUSD)} this period`);
|
|
49739
49757
|
}
|
|
49740
49758
|
console.log("");
|
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",
|