@solongate/proxy 0.41.0 → 0.42.1

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/create.js CHANGED
@@ -213,10 +213,8 @@ console.log('MCP servers communicate over stdin/stdout \u2014 not HTTP.');
213
213
  console.log('You need an MCP client to connect:');
214
214
  console.log('');
215
215
  console.log(' Claude Code Open this folder, .mcp.json is auto-detected');
216
- console.log(' Claude Desktop Add to Settings > MCP Servers');
217
- console.log(' Windsurf Open this folder, .mcp.json is auto-detected');
218
- console.log(' Cline VS Code extension, add server in settings');
219
- console.log(' Zed Add to settings.json under mcp_servers');
216
+ console.log(' Gemini CLI Open this folder, .mcp.json is auto-detected');
217
+ console.log(' OpenClaw Uses openclaw.plugin.json config');
220
218
  console.log('');
221
219
  console.log('Press Ctrl+C to stop.');
222
220
  `
package/dist/index.js CHANGED
@@ -1618,10 +1618,8 @@ console.log('MCP servers communicate over stdin/stdout \u2014 not HTTP.');
1618
1618
  console.log('You need an MCP client to connect:');
1619
1619
  console.log('');
1620
1620
  console.log(' Claude Code Open this folder, .mcp.json is auto-detected');
1621
- console.log(' Claude Desktop Add to Settings > MCP Servers');
1622
- console.log(' Windsurf Open this folder, .mcp.json is auto-detected');
1623
- console.log(' Cline VS Code extension, add server in settings');
1624
- console.log(' Zed Add to settings.json under mcp_servers');
1621
+ console.log(' Gemini CLI Open this folder, .mcp.json is auto-detected');
1622
+ console.log(' OpenClaw Uses openclaw.plugin.json config');
1625
1623
  console.log('');
1626
1624
  console.log('Press Ctrl+C to stop.');
1627
1625
  `
@@ -2689,9 +2687,23 @@ var TrustLevel = {
2689
2687
  var Permission = {
2690
2688
  READ: "READ",
2691
2689
  WRITE: "WRITE",
2692
- EXECUTE: "EXECUTE"
2690
+ EXECUTE: "EXECUTE",
2691
+ NETWORK: "NETWORK"
2693
2692
  };
2694
- var PermissionSchema = z.enum(["READ", "WRITE", "EXECUTE"]);
2693
+ var PermissionSchema = z.enum(["READ", "WRITE", "EXECUTE", "NETWORK"]);
2694
+ function guessPermission(toolName) {
2695
+ const name = toolName.toLowerCase();
2696
+ if (name.includes("exec") || name.includes("shell") || name.includes("run") || name.includes("eval")) {
2697
+ return Permission.EXECUTE;
2698
+ }
2699
+ if (name.includes("fetch") || name.includes("http") || name.includes("request") || name.includes("curl") || name.includes("network") || name.includes("download") || name.includes("upload")) {
2700
+ return Permission.NETWORK;
2701
+ }
2702
+ if (name.includes("write") || name.includes("create") || name.includes("delete") || name.includes("update") || name.includes("set") || name.includes("edit") || name.includes("remove") || name.includes("insert")) {
2703
+ return Permission.WRITE;
2704
+ }
2705
+ return Permission.READ;
2706
+ }
2695
2707
  var NO_PERMISSIONS = Object.freeze(
2696
2708
  /* @__PURE__ */ new Set()
2697
2709
  );
@@ -4573,7 +4585,7 @@ async function interceptToolCall(params, upstreamCall, options) {
4573
4585
  toolName: params.name,
4574
4586
  serverName: "default",
4575
4587
  arguments: params.arguments ?? {},
4576
- requiredPermission: Permission.EXECUTE,
4588
+ requiredPermission: guessPermission(params.name),
4577
4589
  timestamp
4578
4590
  };
4579
4591
  if (options.rateLimiter) {
@@ -6227,6 +6239,7 @@ var SolonGateProxy = class {
6227
6239
  arguments: args ?? {},
6228
6240
  decision: "DENY",
6229
6241
  reason: `Prompt injection detected: ${threats}`,
6242
+ permission: guessPermission(name),
6230
6243
  evaluationTimeMs: 0,
6231
6244
  promptInjection: piResult,
6232
6245
  agent_id: this.agentId ?? void 0,
@@ -6322,6 +6335,7 @@ var SolonGateProxy = class {
6322
6335
  arguments: args ?? {},
6323
6336
  decision,
6324
6337
  reason,
6338
+ permission: guessPermission(name),
6325
6339
  matchedRule,
6326
6340
  evaluationTimeMs,
6327
6341
  promptInjection: piResult,
@@ -6483,14 +6497,7 @@ ${msg.content.text}`;
6483
6497
  * Guess tool permissions from tool name.
6484
6498
  */
6485
6499
  guessPermissions(toolName) {
6486
- const name = toolName.toLowerCase();
6487
- if (name.includes("exec") || name.includes("shell") || name.includes("run") || name.includes("eval")) {
6488
- return ["EXECUTE"];
6489
- }
6490
- if (name.includes("write") || name.includes("create") || name.includes("delete") || name.includes("update") || name.includes("set")) {
6491
- return ["WRITE"];
6492
- }
6493
- return ["READ"];
6500
+ return [guessPermission(toolName)];
6494
6501
  }
6495
6502
  /**
6496
6503
  * Register the upstream MCP server to the SolonGate Cloud API.
package/dist/lib.js CHANGED
@@ -634,9 +634,23 @@ var TrustLevel = {
634
634
  var Permission = {
635
635
  READ: "READ",
636
636
  WRITE: "WRITE",
637
- EXECUTE: "EXECUTE"
637
+ EXECUTE: "EXECUTE",
638
+ NETWORK: "NETWORK"
638
639
  };
639
- var PermissionSchema = z.enum(["READ", "WRITE", "EXECUTE"]);
640
+ var PermissionSchema = z.enum(["READ", "WRITE", "EXECUTE", "NETWORK"]);
641
+ function guessPermission(toolName) {
642
+ const name = toolName.toLowerCase();
643
+ if (name.includes("exec") || name.includes("shell") || name.includes("run") || name.includes("eval")) {
644
+ return Permission.EXECUTE;
645
+ }
646
+ if (name.includes("fetch") || name.includes("http") || name.includes("request") || name.includes("curl") || name.includes("network") || name.includes("download") || name.includes("upload")) {
647
+ return Permission.NETWORK;
648
+ }
649
+ if (name.includes("write") || name.includes("create") || name.includes("delete") || name.includes("update") || name.includes("set") || name.includes("edit") || name.includes("remove") || name.includes("insert")) {
650
+ return Permission.WRITE;
651
+ }
652
+ return Permission.READ;
653
+ }
640
654
  var NO_PERMISSIONS = Object.freeze(
641
655
  /* @__PURE__ */ new Set()
642
656
  );
@@ -2694,7 +2708,7 @@ async function interceptToolCall(params, upstreamCall, options) {
2694
2708
  toolName: params.name,
2695
2709
  serverName: "default",
2696
2710
  arguments: params.arguments ?? {},
2697
- requiredPermission: Permission.EXECUTE,
2711
+ requiredPermission: guessPermission(params.name),
2698
2712
  timestamp
2699
2713
  };
2700
2714
  if (options.rateLimiter) {
@@ -4551,6 +4565,7 @@ var SolonGateProxy = class {
4551
4565
  arguments: args ?? {},
4552
4566
  decision: "DENY",
4553
4567
  reason: `Prompt injection detected: ${threats}`,
4568
+ permission: guessPermission(name),
4554
4569
  evaluationTimeMs: 0,
4555
4570
  promptInjection: piResult,
4556
4571
  agent_id: this.agentId ?? void 0,
@@ -4646,6 +4661,7 @@ var SolonGateProxy = class {
4646
4661
  arguments: args ?? {},
4647
4662
  decision,
4648
4663
  reason,
4664
+ permission: guessPermission(name),
4649
4665
  matchedRule,
4650
4666
  evaluationTimeMs,
4651
4667
  promptInjection: piResult,
@@ -4807,14 +4823,7 @@ ${msg.content.text}`;
4807
4823
  * Guess tool permissions from tool name.
4808
4824
  */
4809
4825
  guessPermissions(toolName) {
4810
- const name = toolName.toLowerCase();
4811
- if (name.includes("exec") || name.includes("shell") || name.includes("run") || name.includes("eval")) {
4812
- return ["EXECUTE"];
4813
- }
4814
- if (name.includes("write") || name.includes("create") || name.includes("delete") || name.includes("update") || name.includes("set")) {
4815
- return ["WRITE"];
4816
- }
4817
- return ["READ"];
4826
+ return [guessPermission(toolName)];
4818
4827
  }
4819
4828
  /**
4820
4829
  * Register the upstream MCP server to the SolonGate Cloud API.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@solongate/proxy",
3
- "version": "0.41.0",
3
+ "version": "0.42.1",
4
4
  "description": "AI tool security proxy — protect any AI tool server with customizable policies, path/command constraints, rate limiting, and audit logging. Zero code changes required.",
5
5
  "type": "module",
6
6
  "bin": {