@agent-inspect/mcp-server 6.31.5 → 6.31.6

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.
@@ -208,7 +208,7 @@ var Redactor = class {
208
208
  };
209
209
 
210
210
  // packages/core/src/safety/credential-value-patterns.ts
211
- var KEY_VALUE_SECRET_PATTERN = /\b(?:api[_-]?key|internal[_-]?token|access[_-]?token|auth[_-]?token|password|secret|token)=(?!\[(?:REDACTED(?::[^\]]*)?|HASH:[0-9a-f]{8})\](?![^\s"'\\&#?;/]))([^\s"'\\]{8,})/i;
211
+ var KEY_VALUE_SECRET_PATTERN = /\b(?:api[_-]?key|internal[_-]?token|access[_-]?token|auth[_-]?token|password|secret|token)=(?!\[(?:REDACTED(?::[^\]]*)?|HASH:[0-9a-f]{8})\](?![^\s"'\\&#?]))([^\s"'\\]{8,})/i;
212
212
  var HIGH_CONFIDENCE_CREDENTIAL_PATTERNS = [
213
213
  /^(?:basic|bearer|digest|apikey)\s+[a-z0-9._~+/=-]+$/i,
214
214
  /\bbearer\s+[a-z0-9._~+/=-]{12,}\b/i,
@@ -3351,7 +3351,7 @@ var DEFAULT_SECRET_PATTERNS = [
3351
3351
  // Keep in sync with packages/redact/src/key-value-secret.ts (KEY_VALUE_SECRET_PATTERN_SOURCE).
3352
3352
  {
3353
3353
  id: "key-value-secret",
3354
- pattern: /\b(?:api[_-]?key|internal[_-]?token|access[_-]?token|auth[_-]?token|password|secret|token)=(?!\[(?:REDACTED(?::[^\]]*)?|HASH:[0-9a-f]{8})\](?![^\s"'\\&#?;/]))([^\s"'\\]{8,})/i
3354
+ pattern: /\b(?:api[_-]?key|internal[_-]?token|access[_-]?token|auth[_-]?token|password|secret|token)=(?!\[(?:REDACTED(?::[^\]]*)?|HASH:[0-9a-f]{8})\](?![^\s"'\\&#?]))([^\s"'\\]{8,})/i
3355
3355
  }
3356
3356
  ];
3357
3357
  function compareStrings(a, b) {
@@ -3666,9 +3666,6 @@ function limitFindings(findings, maxFindings) {
3666
3666
  if (maxFindings === void 0 || findings.length <= maxFindings) return findings;
3667
3667
  return findings.slice(0, Math.max(0, maxFindings));
3668
3668
  }
3669
- function hasRedactionMarker(value, markers) {
3670
- return markers.some((marker) => value.includes(marker)) || /^\[HASH:[A-Za-z0-9_-]+\]$/.test(value);
3671
- }
3672
3669
  function isFullyRedactedValue(value, markers = ["[REDACTED]", "[REDACTED:"]) {
3673
3670
  if (typeof value !== "string") return false;
3674
3671
  const trimmed = value.trim();
@@ -3753,7 +3750,7 @@ function createSafetyRedactionRule(options = {}) {
3753
3750
  for (const event of context.events) {
3754
3751
  for (const entry of eventValueEntries(event, { includeSummaries: true, includeError: true })) {
3755
3752
  if (!isSensitiveKey(entry.key ?? lastPathSegment(entry.path), sensitiveKeys)) continue;
3756
- if (typeof entry.value === "string" && hasRedactionMarker(entry.value, markers)) continue;
3753
+ if (isFullyRedactedValue(entry.value, markers)) continue;
3757
3754
  findings.push(
3758
3755
  failFinding(
3759
3756
  "safety.redaction",
@@ -6707,6 +6704,8 @@ var CONNECTION_PROTOCOLS = /* @__PURE__ */ new Set([
6707
6704
  "amqps:"
6708
6705
  ]);
6709
6706
  var CONNECTION_URI = /^(?:postgres|postgresql|mysql|mariadb|mongodb(?:\+srv)?|rediss?|amqps?):\/\/[^\s]+$/i;
6707
+ var CONNECTION_USERINFO = /^(postgres|postgresql|mysql|mariadb|mongodb(?:\+srv)?|rediss?|amqps?):\/\/([^@/?#]+)@(.+)$/i;
6708
+ var CONNECTION_HAS_USERINFO = /^(?:postgres|postgresql|mysql|mariadb|mongodb(?:\+srv)?|rediss?|amqps?):\/\/[^@/?#]+@/i;
6710
6709
  var UUID_SEGMENT = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;
6711
6710
  var HEX_SEGMENT = /^[0-9a-f]{12,}$/i;
6712
6711
  var NUMERIC_SEGMENT = /^\d{5,}$/;
@@ -6730,6 +6729,28 @@ function parseRedactableUrl(value) {
6730
6729
  return void 0;
6731
6730
  }
6732
6731
  }
6732
+ function redactConnectionUserinfoFallback(value, replacement) {
6733
+ const trimmed = value.trim();
6734
+ const match = CONNECTION_USERINFO.exec(trimmed);
6735
+ if (match) {
6736
+ const [, scheme, , rest] = match;
6737
+ if (scheme && rest && rest.length > 0) {
6738
+ return {
6739
+ value: `${scheme}://${rest}`,
6740
+ credentialRedacted: true,
6741
+ identifiersMasked: false
6742
+ };
6743
+ }
6744
+ }
6745
+ if (looksLikeConnectionUri(trimmed) && CONNECTION_HAS_USERINFO.test(trimmed)) {
6746
+ return {
6747
+ value: replacement,
6748
+ credentialRedacted: true,
6749
+ identifiersMasked: false
6750
+ };
6751
+ }
6752
+ return void 0;
6753
+ }
6733
6754
  function isHttpProtocol(protocol) {
6734
6755
  return protocol === "http:" || protocol === "https:";
6735
6756
  }
@@ -6771,9 +6792,11 @@ function redactUrlString(value, options) {
6771
6792
  identifiersMasked: false
6772
6793
  };
6773
6794
  if (!looksLikeUrlForRedaction(value)) return unchanged;
6774
- const url = parseRedactableUrl(value);
6775
- if (!url) return unchanged;
6776
6795
  const replacement = options.replacement ?? "[REDACTED]";
6796
+ const url = parseRedactableUrl(value);
6797
+ if (!url) {
6798
+ return redactConnectionUserinfoFallback(value, replacement) ?? unchanged;
6799
+ }
6777
6800
  const idPlaceholder = options.idPlaceholder ?? "[id]";
6778
6801
  const http = isHttpProtocol(url.protocol);
6779
6802
  let credentialRedacted = url.username.length > 0 || url.password.length > 0;
@@ -7565,7 +7588,7 @@ function isCredentialSensitiveKey2(key, sensitiveKeys) {
7565
7588
  }
7566
7589
 
7567
7590
  // packages/redact/src/key-value-secret.ts
7568
- var KEY_VALUE_SECRET_PATTERN_SOURCE = String.raw`\b(?:api[_-]?key|internal[_-]?token|access[_-]?token|auth[_-]?token|password|secret|token)=(?!\[(?:REDACTED(?::[^\]]*)?|HASH:[0-9a-f]{8})\](?![^\s"'\\&#?;/]))([^\s"'\\]{8,})`;
7591
+ var KEY_VALUE_SECRET_PATTERN_SOURCE = String.raw`\b(?:api[_-]?key|internal[_-]?token|access[_-]?token|auth[_-]?token|password|secret|token)=(?!\[(?:REDACTED(?::[^\]]*)?|HASH:[0-9a-f]{8})\](?![^\s"'\\&#?]))([^\s"'\\]{8,})`;
7569
7592
  var KEY_VALUE_SECRET_PATTERN2 = new RegExp(
7570
7593
  KEY_VALUE_SECRET_PATTERN_SOURCE,
7571
7594
  "i"
@@ -7590,6 +7613,8 @@ var CONNECTION_PROTOCOLS2 = /* @__PURE__ */ new Set([
7590
7613
  "amqps:"
7591
7614
  ]);
7592
7615
  var CONNECTION_URI2 = /^(?:postgres|postgresql|mysql|mariadb|mongodb(?:\+srv)?|rediss?|amqps?):\/\/[^\s]+$/i;
7616
+ var CONNECTION_USERINFO2 = /^(postgres|postgresql|mysql|mariadb|mongodb(?:\+srv)?|rediss?|amqps?):\/\/([^@/?#]+)@(.+)$/i;
7617
+ var CONNECTION_HAS_USERINFO2 = /^(?:postgres|postgresql|mysql|mariadb|mongodb(?:\+srv)?|rediss?|amqps?):\/\/[^@/?#]+@/i;
7593
7618
  var UUID_SEGMENT2 = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;
7594
7619
  var HEX_SEGMENT2 = /^[0-9a-f]{12,}$/i;
7595
7620
  var NUMERIC_SEGMENT2 = /^\d{5,}$/;
@@ -7613,6 +7638,28 @@ function parseRedactableUrl2(value) {
7613
7638
  return void 0;
7614
7639
  }
7615
7640
  }
7641
+ function redactConnectionUserinfoFallback2(value, replacement) {
7642
+ const trimmed = value.trim();
7643
+ const match = CONNECTION_USERINFO2.exec(trimmed);
7644
+ if (match) {
7645
+ const [, scheme, , rest] = match;
7646
+ if (scheme && rest && rest.length > 0) {
7647
+ return {
7648
+ value: `${scheme}://${rest}`,
7649
+ credentialRedacted: true,
7650
+ identifiersMasked: false
7651
+ };
7652
+ }
7653
+ }
7654
+ if (looksLikeConnectionUri2(trimmed) && CONNECTION_HAS_USERINFO2.test(trimmed)) {
7655
+ return {
7656
+ value: replacement,
7657
+ credentialRedacted: true,
7658
+ identifiersMasked: false
7659
+ };
7660
+ }
7661
+ return void 0;
7662
+ }
7616
7663
  function isHttpProtocol2(protocol) {
7617
7664
  return protocol === "http:" || protocol === "https:";
7618
7665
  }
@@ -7654,9 +7701,11 @@ function redactUrlString2(value, options) {
7654
7701
  identifiersMasked: false
7655
7702
  };
7656
7703
  if (!looksLikeUrlForRedaction2(value)) return unchanged;
7657
- const url = parseRedactableUrl2(value);
7658
- if (!url) return unchanged;
7659
7704
  const replacement = options.replacement ?? "[REDACTED]";
7705
+ const url = parseRedactableUrl2(value);
7706
+ if (!url) {
7707
+ return redactConnectionUserinfoFallback2(value, replacement) ?? unchanged;
7708
+ }
7660
7709
  const idPlaceholder = options.idPlaceholder ?? "[id]";
7661
7710
  const http = isHttpProtocol2(url.protocol);
7662
7711
  let credentialRedacted = url.username.length > 0 || url.password.length > 0;
@@ -9081,5 +9130,5 @@ async function runReadOnlyMcpServer(options = {}) {
9081
9130
  }
9082
9131
 
9083
9132
  export { MCP_MAX_REQUEST_BYTES, MCP_PROTOCOL_VERSION, MCP_SERVER_INSTRUCTIONS, READ_ONLY_TOOLS, TRACE_DATA_UNTRUSTED_WARNING, callReadOnlyTool, createMcpServerContext, handleMcpProtocolLine, runReadOnlyMcpServer };
9084
- //# sourceMappingURL=chunk-FUNPQPC3.mjs.map
9085
- //# sourceMappingURL=chunk-FUNPQPC3.mjs.map
9133
+ //# sourceMappingURL=chunk-P72E7RLD.mjs.map
9134
+ //# sourceMappingURL=chunk-P72E7RLD.mjs.map