@node9/proxy 1.48.0 → 1.50.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 CHANGED
@@ -4216,6 +4216,42 @@ var init_shields = __esm({
4216
4216
  }
4217
4217
  });
4218
4218
 
4219
+ // src/config/managed.ts
4220
+ function rankIn(order, value) {
4221
+ return order.indexOf(value);
4222
+ }
4223
+ function resolveByOrder(order, local, cloud, locked) {
4224
+ if (rankIn(order, cloud) === -1) return local;
4225
+ if (locked) return cloud;
4226
+ return rankIn(order, local) > rankIn(order, cloud) ? local : cloud;
4227
+ }
4228
+ function resolveManagedMode(local, cloud, locked) {
4229
+ return resolveByOrder(MODE_ORDER, local, cloud, locked);
4230
+ }
4231
+ function applyManagedEgress(local, managed, locked) {
4232
+ const next = { ...local };
4233
+ if (typeof managed.enabled === "boolean") {
4234
+ next.enabled = locked.includes("egressEnabled") ? managed.enabled : local.enabled || managed.enabled;
4235
+ }
4236
+ if (typeof managed.mode === "string") {
4237
+ next.mode = resolveByOrder(
4238
+ EGRESS_MODE_ORDER,
4239
+ local.mode,
4240
+ managed.mode,
4241
+ locked.includes("egressMode")
4242
+ );
4243
+ }
4244
+ return next;
4245
+ }
4246
+ var MODE_ORDER, EGRESS_MODE_ORDER;
4247
+ var init_managed = __esm({
4248
+ "src/config/managed.ts"() {
4249
+ "use strict";
4250
+ MODE_ORDER = ["observe", "audit", "standard", "strict"];
4251
+ EGRESS_MODE_ORDER = ["off", "review", "block"];
4252
+ }
4253
+ });
4254
+
4219
4255
  // src/config/index.ts
4220
4256
  function _resetConfigCache() {
4221
4257
  cachedConfig = null;
@@ -4426,6 +4462,27 @@ function getConfig(cwd) {
4426
4462
  if (Array.isArray(raw.shields)) {
4427
4463
  cloudManagedShields = raw.shields.filter((s) => typeof s === "string");
4428
4464
  }
4465
+ if (raw.managedConfig && typeof raw.managedConfig === "object") {
4466
+ const mc = raw.managedConfig;
4467
+ const locked = Array.isArray(mc.locked) ? mc.locked.filter((f) => typeof f === "string") : [];
4468
+ if (typeof mc.mode === "string") {
4469
+ mergedSettings.mode = resolveManagedMode(
4470
+ mergedSettings.mode,
4471
+ mc.mode,
4472
+ locked.includes("mode")
4473
+ );
4474
+ }
4475
+ if (mc.egress && typeof mc.egress === "object") {
4476
+ mergedPolicy.egress = applyManagedEgress(
4477
+ mergedPolicy.egress,
4478
+ {
4479
+ enabled: typeof mc.egress.enabled === "boolean" ? mc.egress.enabled : void 0,
4480
+ mode: typeof mc.egress.mode === "string" ? mc.egress.mode : void 0
4481
+ },
4482
+ locked
4483
+ );
4484
+ }
4485
+ }
4429
4486
  if (raw.panicMode === true) {
4430
4487
  mergedSettings.panicMode = true;
4431
4488
  }
@@ -4537,6 +4594,7 @@ var init_config = __esm({
4537
4594
  import_os3 = __toESM(require("os"));
4538
4595
  init_config_schema();
4539
4596
  init_shields();
4597
+ init_managed();
4540
4598
  DANGEROUS_WORDS = [
4541
4599
  "mkfs",
4542
4600
  // formats/wipes a filesystem partition
@@ -16890,6 +16948,21 @@ function extractRules(body) {
16890
16948
  function extractShields(body) {
16891
16949
  return Array.isArray(body.shields) ? body.shields.filter((s) => typeof s === "string") : [];
16892
16950
  }
16951
+ function extractManagedConfig(body) {
16952
+ const mc = body.managedConfig;
16953
+ if (!mc || typeof mc !== "object") return void 0;
16954
+ const out = {
16955
+ locked: Array.isArray(mc.locked) ? mc.locked.filter((f) => typeof f === "string") : []
16956
+ };
16957
+ if (typeof mc.mode === "string") out.mode = mc.mode;
16958
+ if (mc.egress && typeof mc.egress === "object") {
16959
+ const e = {};
16960
+ if (typeof mc.egress.enabled === "boolean") e.enabled = mc.egress.enabled;
16961
+ if (typeof mc.egress.mode === "string") e.mode = mc.egress.mode;
16962
+ if (e.enabled !== void 0 || e.mode !== void 0) out.egress = e;
16963
+ }
16964
+ return out.mode !== void 0 || out.egress !== void 0 ? out : void 0;
16965
+ }
16893
16966
  function writeCache2(cache) {
16894
16967
  const dir = import_path31.default.dirname(rulesCacheFile());
16895
16968
  if (!import_fs32.default.existsSync(dir)) import_fs32.default.mkdirSync(dir, { recursive: true });
@@ -16910,7 +16983,8 @@ async function syncOnce() {
16910
16983
  shadowMode: result.body.shadowMode,
16911
16984
  syncIntervalHours: result.body.syncIntervalHours,
16912
16985
  workspaceId: result.body.workspaceId,
16913
- shields: extractShields(result.body)
16986
+ shields: extractShields(result.body),
16987
+ managedConfig: extractManagedConfig(result.body)
16914
16988
  };
16915
16989
  writeCache2(cache);
16916
16990
  }
@@ -17083,7 +17157,8 @@ async function runCloudSync() {
17083
17157
  shadowMode: result.body.shadowMode,
17084
17158
  syncIntervalHours: result.body.syncIntervalHours,
17085
17159
  workspaceId: result.body.workspaceId,
17086
- shields: extractShields(result.body)
17160
+ shields: extractShields(result.body),
17161
+ managedConfig: extractManagedConfig(result.body)
17087
17162
  };
17088
17163
  writeCache2(cache);
17089
17164
  maybePushBlast();
package/dist/cli.mjs CHANGED
@@ -4194,6 +4194,42 @@ var init_shields = __esm({
4194
4194
  }
4195
4195
  });
4196
4196
 
4197
+ // src/config/managed.ts
4198
+ function rankIn(order, value) {
4199
+ return order.indexOf(value);
4200
+ }
4201
+ function resolveByOrder(order, local, cloud, locked) {
4202
+ if (rankIn(order, cloud) === -1) return local;
4203
+ if (locked) return cloud;
4204
+ return rankIn(order, local) > rankIn(order, cloud) ? local : cloud;
4205
+ }
4206
+ function resolveManagedMode(local, cloud, locked) {
4207
+ return resolveByOrder(MODE_ORDER, local, cloud, locked);
4208
+ }
4209
+ function applyManagedEgress(local, managed, locked) {
4210
+ const next = { ...local };
4211
+ if (typeof managed.enabled === "boolean") {
4212
+ next.enabled = locked.includes("egressEnabled") ? managed.enabled : local.enabled || managed.enabled;
4213
+ }
4214
+ if (typeof managed.mode === "string") {
4215
+ next.mode = resolveByOrder(
4216
+ EGRESS_MODE_ORDER,
4217
+ local.mode,
4218
+ managed.mode,
4219
+ locked.includes("egressMode")
4220
+ );
4221
+ }
4222
+ return next;
4223
+ }
4224
+ var MODE_ORDER, EGRESS_MODE_ORDER;
4225
+ var init_managed = __esm({
4226
+ "src/config/managed.ts"() {
4227
+ "use strict";
4228
+ MODE_ORDER = ["observe", "audit", "standard", "strict"];
4229
+ EGRESS_MODE_ORDER = ["off", "review", "block"];
4230
+ }
4231
+ });
4232
+
4197
4233
  // src/config/index.ts
4198
4234
  import fs3 from "fs";
4199
4235
  import path3 from "path";
@@ -4407,6 +4443,27 @@ function getConfig(cwd) {
4407
4443
  if (Array.isArray(raw.shields)) {
4408
4444
  cloudManagedShields = raw.shields.filter((s) => typeof s === "string");
4409
4445
  }
4446
+ if (raw.managedConfig && typeof raw.managedConfig === "object") {
4447
+ const mc = raw.managedConfig;
4448
+ const locked = Array.isArray(mc.locked) ? mc.locked.filter((f) => typeof f === "string") : [];
4449
+ if (typeof mc.mode === "string") {
4450
+ mergedSettings.mode = resolveManagedMode(
4451
+ mergedSettings.mode,
4452
+ mc.mode,
4453
+ locked.includes("mode")
4454
+ );
4455
+ }
4456
+ if (mc.egress && typeof mc.egress === "object") {
4457
+ mergedPolicy.egress = applyManagedEgress(
4458
+ mergedPolicy.egress,
4459
+ {
4460
+ enabled: typeof mc.egress.enabled === "boolean" ? mc.egress.enabled : void 0,
4461
+ mode: typeof mc.egress.mode === "string" ? mc.egress.mode : void 0
4462
+ },
4463
+ locked
4464
+ );
4465
+ }
4466
+ }
4410
4467
  if (raw.panicMode === true) {
4411
4468
  mergedSettings.panicMode = true;
4412
4469
  }
@@ -4515,6 +4572,7 @@ var init_config = __esm({
4515
4572
  "use strict";
4516
4573
  init_config_schema();
4517
4574
  init_shields();
4575
+ init_managed();
4518
4576
  DANGEROUS_WORDS = [
4519
4577
  "mkfs",
4520
4578
  // formats/wipes a filesystem partition
@@ -16864,6 +16922,21 @@ function extractRules(body) {
16864
16922
  function extractShields(body) {
16865
16923
  return Array.isArray(body.shields) ? body.shields.filter((s) => typeof s === "string") : [];
16866
16924
  }
16925
+ function extractManagedConfig(body) {
16926
+ const mc = body.managedConfig;
16927
+ if (!mc || typeof mc !== "object") return void 0;
16928
+ const out = {
16929
+ locked: Array.isArray(mc.locked) ? mc.locked.filter((f) => typeof f === "string") : []
16930
+ };
16931
+ if (typeof mc.mode === "string") out.mode = mc.mode;
16932
+ if (mc.egress && typeof mc.egress === "object") {
16933
+ const e = {};
16934
+ if (typeof mc.egress.enabled === "boolean") e.enabled = mc.egress.enabled;
16935
+ if (typeof mc.egress.mode === "string") e.mode = mc.egress.mode;
16936
+ if (e.enabled !== void 0 || e.mode !== void 0) out.egress = e;
16937
+ }
16938
+ return out.mode !== void 0 || out.egress !== void 0 ? out : void 0;
16939
+ }
16867
16940
  function writeCache2(cache) {
16868
16941
  const dir = path31.dirname(rulesCacheFile());
16869
16942
  if (!fs32.existsSync(dir)) fs32.mkdirSync(dir, { recursive: true });
@@ -16884,7 +16957,8 @@ async function syncOnce() {
16884
16957
  shadowMode: result.body.shadowMode,
16885
16958
  syncIntervalHours: result.body.syncIntervalHours,
16886
16959
  workspaceId: result.body.workspaceId,
16887
- shields: extractShields(result.body)
16960
+ shields: extractShields(result.body),
16961
+ managedConfig: extractManagedConfig(result.body)
16888
16962
  };
16889
16963
  writeCache2(cache);
16890
16964
  }
@@ -17057,7 +17131,8 @@ async function runCloudSync() {
17057
17131
  shadowMode: result.body.shadowMode,
17058
17132
  syncIntervalHours: result.body.syncIntervalHours,
17059
17133
  workspaceId: result.body.workspaceId,
17060
- shields: extractShields(result.body)
17134
+ shields: extractShields(result.body),
17135
+ managedConfig: extractManagedConfig(result.body)
17061
17136
  };
17062
17137
  writeCache2(cache);
17063
17138
  maybePushBlast();
@@ -2412,6 +2412,13 @@ var init_shields = __esm({
2412
2412
  }
2413
2413
  });
2414
2414
 
2415
+ // src/config/managed.ts
2416
+ var init_managed = __esm({
2417
+ "src/config/managed.ts"() {
2418
+ "use strict";
2419
+ }
2420
+ });
2421
+
2415
2422
  // src/config/index.ts
2416
2423
  var DANGEROUS_WORDS, DEFAULT_CONFIG;
2417
2424
  var init_config = __esm({
@@ -2419,6 +2426,7 @@ var init_config = __esm({
2419
2426
  "use strict";
2420
2427
  init_config_schema();
2421
2428
  init_shields();
2429
+ init_managed();
2422
2430
  DANGEROUS_WORDS = [
2423
2431
  "mkfs",
2424
2432
  // formats/wipes a filesystem partition
package/dist/index.js CHANGED
@@ -3501,6 +3501,36 @@ function readShieldOverrides() {
3501
3501
  return readShieldsFile().overrides ?? {};
3502
3502
  }
3503
3503
 
3504
+ // src/config/managed.ts
3505
+ var MODE_ORDER = ["observe", "audit", "standard", "strict"];
3506
+ var EGRESS_MODE_ORDER = ["off", "review", "block"];
3507
+ function rankIn(order, value) {
3508
+ return order.indexOf(value);
3509
+ }
3510
+ function resolveByOrder(order, local, cloud, locked) {
3511
+ if (rankIn(order, cloud) === -1) return local;
3512
+ if (locked) return cloud;
3513
+ return rankIn(order, local) > rankIn(order, cloud) ? local : cloud;
3514
+ }
3515
+ function resolveManagedMode(local, cloud, locked) {
3516
+ return resolveByOrder(MODE_ORDER, local, cloud, locked);
3517
+ }
3518
+ function applyManagedEgress(local, managed, locked) {
3519
+ const next = { ...local };
3520
+ if (typeof managed.enabled === "boolean") {
3521
+ next.enabled = locked.includes("egressEnabled") ? managed.enabled : local.enabled || managed.enabled;
3522
+ }
3523
+ if (typeof managed.mode === "string") {
3524
+ next.mode = resolveByOrder(
3525
+ EGRESS_MODE_ORDER,
3526
+ local.mode,
3527
+ managed.mode,
3528
+ locked.includes("egressMode")
3529
+ );
3530
+ }
3531
+ return next;
3532
+ }
3533
+
3504
3534
  // src/config/index.ts
3505
3535
  var DANGEROUS_WORDS = [
3506
3536
  "mkfs",
@@ -3958,6 +3988,27 @@ function getConfig(cwd) {
3958
3988
  if (Array.isArray(raw.shields)) {
3959
3989
  cloudManagedShields = raw.shields.filter((s) => typeof s === "string");
3960
3990
  }
3991
+ if (raw.managedConfig && typeof raw.managedConfig === "object") {
3992
+ const mc = raw.managedConfig;
3993
+ const locked = Array.isArray(mc.locked) ? mc.locked.filter((f) => typeof f === "string") : [];
3994
+ if (typeof mc.mode === "string") {
3995
+ mergedSettings.mode = resolveManagedMode(
3996
+ mergedSettings.mode,
3997
+ mc.mode,
3998
+ locked.includes("mode")
3999
+ );
4000
+ }
4001
+ if (mc.egress && typeof mc.egress === "object") {
4002
+ mergedPolicy.egress = applyManagedEgress(
4003
+ mergedPolicy.egress,
4004
+ {
4005
+ enabled: typeof mc.egress.enabled === "boolean" ? mc.egress.enabled : void 0,
4006
+ mode: typeof mc.egress.mode === "string" ? mc.egress.mode : void 0
4007
+ },
4008
+ locked
4009
+ );
4010
+ }
4011
+ }
3961
4012
  if (raw.panicMode === true) {
3962
4013
  mergedSettings.panicMode = true;
3963
4014
  }
package/dist/index.mjs CHANGED
@@ -3471,6 +3471,36 @@ function readShieldOverrides() {
3471
3471
  return readShieldsFile().overrides ?? {};
3472
3472
  }
3473
3473
 
3474
+ // src/config/managed.ts
3475
+ var MODE_ORDER = ["observe", "audit", "standard", "strict"];
3476
+ var EGRESS_MODE_ORDER = ["off", "review", "block"];
3477
+ function rankIn(order, value) {
3478
+ return order.indexOf(value);
3479
+ }
3480
+ function resolveByOrder(order, local, cloud, locked) {
3481
+ if (rankIn(order, cloud) === -1) return local;
3482
+ if (locked) return cloud;
3483
+ return rankIn(order, local) > rankIn(order, cloud) ? local : cloud;
3484
+ }
3485
+ function resolveManagedMode(local, cloud, locked) {
3486
+ return resolveByOrder(MODE_ORDER, local, cloud, locked);
3487
+ }
3488
+ function applyManagedEgress(local, managed, locked) {
3489
+ const next = { ...local };
3490
+ if (typeof managed.enabled === "boolean") {
3491
+ next.enabled = locked.includes("egressEnabled") ? managed.enabled : local.enabled || managed.enabled;
3492
+ }
3493
+ if (typeof managed.mode === "string") {
3494
+ next.mode = resolveByOrder(
3495
+ EGRESS_MODE_ORDER,
3496
+ local.mode,
3497
+ managed.mode,
3498
+ locked.includes("egressMode")
3499
+ );
3500
+ }
3501
+ return next;
3502
+ }
3503
+
3474
3504
  // src/config/index.ts
3475
3505
  var DANGEROUS_WORDS = [
3476
3506
  "mkfs",
@@ -3928,6 +3958,27 @@ function getConfig(cwd) {
3928
3958
  if (Array.isArray(raw.shields)) {
3929
3959
  cloudManagedShields = raw.shields.filter((s) => typeof s === "string");
3930
3960
  }
3961
+ if (raw.managedConfig && typeof raw.managedConfig === "object") {
3962
+ const mc = raw.managedConfig;
3963
+ const locked = Array.isArray(mc.locked) ? mc.locked.filter((f) => typeof f === "string") : [];
3964
+ if (typeof mc.mode === "string") {
3965
+ mergedSettings.mode = resolveManagedMode(
3966
+ mergedSettings.mode,
3967
+ mc.mode,
3968
+ locked.includes("mode")
3969
+ );
3970
+ }
3971
+ if (mc.egress && typeof mc.egress === "object") {
3972
+ mergedPolicy.egress = applyManagedEgress(
3973
+ mergedPolicy.egress,
3974
+ {
3975
+ enabled: typeof mc.egress.enabled === "boolean" ? mc.egress.enabled : void 0,
3976
+ mode: typeof mc.egress.mode === "string" ? mc.egress.mode : void 0
3977
+ },
3978
+ locked
3979
+ );
3980
+ }
3981
+ }
3931
3982
  if (raw.panicMode === true) {
3932
3983
  mergedSettings.panicMode = true;
3933
3984
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@node9/proxy",
3
- "version": "1.48.0",
3
+ "version": "1.50.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",