@ai-ecoverse/mcpcat 0.17.6 → 0.17.7

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.
@@ -9855,6 +9855,15 @@ function containsPlaceholders(value) {
9855
9855
  function expandPlaceholders(value, env) {
9856
9856
  return value.replace(PLACEHOLDER, (_, name) => env[name] ?? "");
9857
9857
  }
9858
+ var MIN_VAR_SECRET = 8;
9859
+ function placeholderValues(value, env) {
9860
+ const values = [];
9861
+ for (const m of value.matchAll(PLACEHOLDER)) {
9862
+ const v = env[m[1]];
9863
+ if (v !== void 0 && v.length >= MIN_VAR_SECRET) values.push(v);
9864
+ }
9865
+ return values;
9866
+ }
9858
9867
  function missingPlaceholders(value, env) {
9859
9868
  const missing = [];
9860
9869
  for (const m of value.matchAll(PLACEHOLDER)) {
@@ -11163,6 +11172,12 @@ function redactWrites(platform2, redact2) {
11163
11172
  write: (fd, data) => platform2.write(fd, typeof data === "string" ? redact2(data) : data)
11164
11173
  });
11165
11174
  }
11175
+ function redactSecrets(text, secrets) {
11176
+ const ordered = [...secrets].filter((s) => s.length > 0).sort((a, b) => b.length - a.length);
11177
+ let result = text;
11178
+ for (const secret of ordered) result = result.replaceAll(secret, "[REDACTED]");
11179
+ return result;
11180
+ }
11166
11181
 
11167
11182
  // src/render/result.ts
11168
11183
  function formatBytes(n) {
@@ -15362,15 +15377,7 @@ function isSensitiveHeader(name) {
15362
15377
  return SENSITIVE_HEADER_RE.test(name) || SENSITIVE_NAME_RE.test(name);
15363
15378
  }
15364
15379
  function redact(text, secrets) {
15365
- let result = text;
15366
- for (const secret of secrets) {
15367
- if (secret.length > 0) {
15368
- while (result.includes(secret)) {
15369
- result = result.replace(secret, "[REDACTED]");
15370
- }
15371
- }
15372
- }
15373
- return result;
15380
+ return redactSecrets(text, secrets);
15374
15381
  }
15375
15382
  function createVerboseLogger(platform2, enabled) {
15376
15383
  const secrets = /* @__PURE__ */ new Set();
@@ -16448,7 +16455,7 @@ function expandAndCollect(headers, env) {
16448
16455
  }
16449
16456
  const e = expandPlaceholders(v, env);
16450
16457
  result[k] = e;
16451
- if (e !== v) secrets.push(e);
16458
+ if (e !== v) secrets.push(e, ...placeholderValues(v, env));
16452
16459
  if (v.length > 0) secrets.push(v);
16453
16460
  }
16454
16461
  return { expanded: result, secrets, unset };
@@ -16661,13 +16668,7 @@ async function runClientVerb(platform2, version, parsed) {
16661
16668
  const configSecrets = collectConfigSecrets(resolved.headers, platform2.env);
16662
16669
  for (const s of configSecrets) verbose.secrets.add(s);
16663
16670
  const allSecrets = /* @__PURE__ */ new Set([...secrets, ...configSecrets]);
16664
- const redact2 = (text) => {
16665
- let result = text;
16666
- for (const secret of allSecrets) {
16667
- if (secret.length > 0) result = result.replaceAll(secret, "[REDACTED]");
16668
- }
16669
- return result;
16670
- };
16671
+ const redact2 = (text) => redactSecrets(text, allSecrets);
16671
16672
  const mergedHeaders = { ...configHeaders, ...expanded };
16672
16673
  const hasAuthHeader = "Authorization" in mergedHeaders;
16673
16674
  const authResolved = await resolveAuthProvider(
@@ -16778,7 +16779,7 @@ function collectConfigSecrets(headers, env) {
16778
16779
  const secrets = [];
16779
16780
  for (const [, v] of Object.entries(headers)) {
16780
16781
  const expanded = expandPlaceholders(v, env);
16781
- if (expanded !== v && expanded.length > 0) secrets.push(expanded);
16782
+ if (expanded !== v && expanded.length > 0) secrets.push(expanded, ...placeholderValues(v, env));
16782
16783
  if (v.length > 0 && v !== expanded) secrets.push(v);
16783
16784
  }
16784
16785
  return secrets;
@@ -17044,5 +17045,5 @@ try {
17044
17045
  });
17045
17046
  } catch {
17046
17047
  }
17047
- var code = await run(platform, "0.17.6", args);
17048
+ var code = await run(platform, "0.17.7", args);
17048
17049
  process.exit(code);
@@ -9476,6 +9476,15 @@ function containsPlaceholders(value) {
9476
9476
  function expandPlaceholders(value, env2) {
9477
9477
  return value.replace(PLACEHOLDER, (_, name) => env2[name] ?? "");
9478
9478
  }
9479
+ var MIN_VAR_SECRET = 8;
9480
+ function placeholderValues(value, env2) {
9481
+ const values = [];
9482
+ for (const m of value.matchAll(PLACEHOLDER)) {
9483
+ const v = env2[m[1]];
9484
+ if (v !== void 0 && v.length >= MIN_VAR_SECRET) values.push(v);
9485
+ }
9486
+ return values;
9487
+ }
9479
9488
  function missingPlaceholders(value, env2) {
9480
9489
  const missing = [];
9481
9490
  for (const m of value.matchAll(PLACEHOLDER)) {
@@ -10784,6 +10793,12 @@ function redactWrites(platform2, redact2) {
10784
10793
  write: (fd, data) => platform2.write(fd, typeof data === "string" ? redact2(data) : data)
10785
10794
  });
10786
10795
  }
10796
+ function redactSecrets(text, secrets) {
10797
+ const ordered = [...secrets].filter((s) => s.length > 0).sort((a, b) => b.length - a.length);
10798
+ let result = text;
10799
+ for (const secret of ordered) result = result.replaceAll(secret, "[REDACTED]");
10800
+ return result;
10801
+ }
10787
10802
 
10788
10803
  // src/render/result.ts
10789
10804
  function formatBytes(n) {
@@ -14983,15 +14998,7 @@ function isSensitiveHeader(name) {
14983
14998
  return SENSITIVE_HEADER_RE.test(name) || SENSITIVE_NAME_RE.test(name);
14984
14999
  }
14985
15000
  function redact(text, secrets) {
14986
- let result = text;
14987
- for (const secret of secrets) {
14988
- if (secret.length > 0) {
14989
- while (result.includes(secret)) {
14990
- result = result.replace(secret, "[REDACTED]");
14991
- }
14992
- }
14993
- }
14994
- return result;
15001
+ return redactSecrets(text, secrets);
14995
15002
  }
14996
15003
  function createVerboseLogger(platform2, enabled) {
14997
15004
  const secrets = /* @__PURE__ */ new Set();
@@ -16069,7 +16076,7 @@ function expandAndCollect(headers, env2) {
16069
16076
  }
16070
16077
  const e = expandPlaceholders(v, env2);
16071
16078
  result[k] = e;
16072
- if (e !== v) secrets.push(e);
16079
+ if (e !== v) secrets.push(e, ...placeholderValues(v, env2));
16073
16080
  if (v.length > 0) secrets.push(v);
16074
16081
  }
16075
16082
  return { expanded: result, secrets, unset };
@@ -16282,13 +16289,7 @@ async function runClientVerb(platform2, version, parsed) {
16282
16289
  const configSecrets = collectConfigSecrets(resolved.headers, platform2.env);
16283
16290
  for (const s of configSecrets) verbose.secrets.add(s);
16284
16291
  const allSecrets = /* @__PURE__ */ new Set([...secrets, ...configSecrets]);
16285
- const redact2 = (text) => {
16286
- let result = text;
16287
- for (const secret of allSecrets) {
16288
- if (secret.length > 0) result = result.replaceAll(secret, "[REDACTED]");
16289
- }
16290
- return result;
16291
- };
16292
+ const redact2 = (text) => redactSecrets(text, allSecrets);
16292
16293
  const mergedHeaders = { ...configHeaders, ...expanded };
16293
16294
  const hasAuthHeader = "Authorization" in mergedHeaders;
16294
16295
  const authResolved = await resolveAuthProvider(
@@ -16399,7 +16400,7 @@ function collectConfigSecrets(headers, env2) {
16399
16400
  const secrets = [];
16400
16401
  for (const [, v] of Object.entries(headers)) {
16401
16402
  const expanded = expandPlaceholders(v, env2);
16402
- if (expanded !== v && expanded.length > 0) secrets.push(expanded);
16403
+ if (expanded !== v && expanded.length > 0) secrets.push(expanded, ...placeholderValues(v, env2));
16403
16404
  if (v.length > 0 && v !== expanded) secrets.push(v);
16404
16405
  }
16405
16406
  return secrets;
@@ -16766,7 +16767,7 @@ async function main(ctx) {
16766
16767
  packageDir: "/node_modules/@ai-ecoverse/mcpcat"
16767
16768
  });
16768
16769
  const args = ctx.argv.slice(1);
16769
- return run(platform2, "0.17.6", args);
16770
+ return run(platform2, "0.17.7", args);
16770
16771
  }
16771
16772
  export {
16772
16773
  main as default
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ai-ecoverse/mcpcat",
3
- "version": "0.17.6",
3
+ "version": "0.17.7",
4
4
  "description": "A curl for the Model Context Protocol",
5
5
  "type": "module",
6
6
  "license": "Apache-2.0",
@@ -62,14 +62,14 @@
62
62
  },
63
63
  "devDependencies": {
64
64
  "@ai-ecoverse/slicc-bios": "1.36.1",
65
- "@ai-ecoverse/slicc-kernel": "1.141.2",
65
+ "@ai-ecoverse/slicc-kernel": "1.141.3",
66
66
  "@ai-ecoverse/slicc-shared-web": "1.29.8",
67
67
  "@biomejs/biome": "2.5.15",
68
68
  "@earendil-works/pi-codemode": "1.2.0",
69
69
  "@earendil-works/pi-mcp": "1.2.0",
70
70
  "@types/node": "26.6.5",
71
71
  "esbuild": "0.28.2",
72
- "kernel-cert-new": "npm:@ai-ecoverse/slicc-kernel@1.141.2",
72
+ "kernel-cert-new": "npm:@ai-ecoverse/slicc-kernel@1.141.3",
73
73
  "lefthook": "2.2.2",
74
74
  "monocart-coverage-reports": "2.13.2",
75
75
  "proper-lockfile": "4.1.2",