@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.
- package/dist/{chunk-FUNPQPC3.mjs → chunk-P72E7RLD.mjs} +62 -13
- package/dist/chunk-P72E7RLD.mjs.map +1 -0
- package/dist/cli.cjs +60 -11
- package/dist/cli.cjs.map +1 -1
- package/dist/cli.mjs +1 -1
- package/dist/index.cjs +60 -11
- package/dist/index.cjs.map +1 -1
- package/dist/index.mjs +1 -1
- package/package.json +3 -3
- package/dist/chunk-FUNPQPC3.mjs.map +0 -1
package/dist/cli.cjs
CHANGED
|
@@ -218,7 +218,7 @@ var Redactor = class {
|
|
|
218
218
|
};
|
|
219
219
|
|
|
220
220
|
// packages/core/src/safety/credential-value-patterns.ts
|
|
221
|
-
var KEY_VALUE_SECRET_PATTERN = /\b(?:api[_-]?key|internal[_-]?token|access[_-]?token|auth[_-]?token|password|secret|token)=(?!\[(?:REDACTED(?::[^\]]*)?|HASH:[0-9a-f]{8})\](?![^\s"'
|
|
221
|
+
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;
|
|
222
222
|
var HIGH_CONFIDENCE_CREDENTIAL_PATTERNS = [
|
|
223
223
|
/^(?:basic|bearer|digest|apikey)\s+[a-z0-9._~+/=-]+$/i,
|
|
224
224
|
/\bbearer\s+[a-z0-9._~+/=-]{12,}\b/i,
|
|
@@ -3361,7 +3361,7 @@ var DEFAULT_SECRET_PATTERNS = [
|
|
|
3361
3361
|
// Keep in sync with packages/redact/src/key-value-secret.ts (KEY_VALUE_SECRET_PATTERN_SOURCE).
|
|
3362
3362
|
{
|
|
3363
3363
|
id: "key-value-secret",
|
|
3364
|
-
pattern: /\b(?:api[_-]?key|internal[_-]?token|access[_-]?token|auth[_-]?token|password|secret|token)=(?!\[(?:REDACTED(?::[^\]]*)?|HASH:[0-9a-f]{8})\](?![^\s"'
|
|
3364
|
+
pattern: /\b(?:api[_-]?key|internal[_-]?token|access[_-]?token|auth[_-]?token|password|secret|token)=(?!\[(?:REDACTED(?::[^\]]*)?|HASH:[0-9a-f]{8})\](?![^\s"'\\&#?]))([^\s"'\\]{8,})/i
|
|
3365
3365
|
}
|
|
3366
3366
|
];
|
|
3367
3367
|
function compareStrings(a, b) {
|
|
@@ -3676,9 +3676,6 @@ function limitFindings(findings, maxFindings) {
|
|
|
3676
3676
|
if (maxFindings === void 0 || findings.length <= maxFindings) return findings;
|
|
3677
3677
|
return findings.slice(0, Math.max(0, maxFindings));
|
|
3678
3678
|
}
|
|
3679
|
-
function hasRedactionMarker(value, markers) {
|
|
3680
|
-
return markers.some((marker) => value.includes(marker)) || /^\[HASH:[A-Za-z0-9_-]+\]$/.test(value);
|
|
3681
|
-
}
|
|
3682
3679
|
function isFullyRedactedValue(value, markers = ["[REDACTED]", "[REDACTED:"]) {
|
|
3683
3680
|
if (typeof value !== "string") return false;
|
|
3684
3681
|
const trimmed = value.trim();
|
|
@@ -3763,7 +3760,7 @@ function createSafetyRedactionRule(options = {}) {
|
|
|
3763
3760
|
for (const event of context.events) {
|
|
3764
3761
|
for (const entry of eventValueEntries(event, { includeSummaries: true, includeError: true })) {
|
|
3765
3762
|
if (!isSensitiveKey(entry.key ?? lastPathSegment(entry.path), sensitiveKeys)) continue;
|
|
3766
|
-
if (
|
|
3763
|
+
if (isFullyRedactedValue(entry.value, markers)) continue;
|
|
3767
3764
|
findings.push(
|
|
3768
3765
|
failFinding(
|
|
3769
3766
|
"safety.redaction",
|
|
@@ -6717,6 +6714,8 @@ var CONNECTION_PROTOCOLS = /* @__PURE__ */ new Set([
|
|
|
6717
6714
|
"amqps:"
|
|
6718
6715
|
]);
|
|
6719
6716
|
var CONNECTION_URI = /^(?:postgres|postgresql|mysql|mariadb|mongodb(?:\+srv)?|rediss?|amqps?):\/\/[^\s]+$/i;
|
|
6717
|
+
var CONNECTION_USERINFO = /^(postgres|postgresql|mysql|mariadb|mongodb(?:\+srv)?|rediss?|amqps?):\/\/([^@/?#]+)@(.+)$/i;
|
|
6718
|
+
var CONNECTION_HAS_USERINFO = /^(?:postgres|postgresql|mysql|mariadb|mongodb(?:\+srv)?|rediss?|amqps?):\/\/[^@/?#]+@/i;
|
|
6720
6719
|
var UUID_SEGMENT = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;
|
|
6721
6720
|
var HEX_SEGMENT = /^[0-9a-f]{12,}$/i;
|
|
6722
6721
|
var NUMERIC_SEGMENT = /^\d{5,}$/;
|
|
@@ -6740,6 +6739,28 @@ function parseRedactableUrl(value) {
|
|
|
6740
6739
|
return void 0;
|
|
6741
6740
|
}
|
|
6742
6741
|
}
|
|
6742
|
+
function redactConnectionUserinfoFallback(value, replacement) {
|
|
6743
|
+
const trimmed = value.trim();
|
|
6744
|
+
const match = CONNECTION_USERINFO.exec(trimmed);
|
|
6745
|
+
if (match) {
|
|
6746
|
+
const [, scheme, , rest] = match;
|
|
6747
|
+
if (scheme && rest && rest.length > 0) {
|
|
6748
|
+
return {
|
|
6749
|
+
value: `${scheme}://${rest}`,
|
|
6750
|
+
credentialRedacted: true,
|
|
6751
|
+
identifiersMasked: false
|
|
6752
|
+
};
|
|
6753
|
+
}
|
|
6754
|
+
}
|
|
6755
|
+
if (looksLikeConnectionUri(trimmed) && CONNECTION_HAS_USERINFO.test(trimmed)) {
|
|
6756
|
+
return {
|
|
6757
|
+
value: replacement,
|
|
6758
|
+
credentialRedacted: true,
|
|
6759
|
+
identifiersMasked: false
|
|
6760
|
+
};
|
|
6761
|
+
}
|
|
6762
|
+
return void 0;
|
|
6763
|
+
}
|
|
6743
6764
|
function isHttpProtocol(protocol) {
|
|
6744
6765
|
return protocol === "http:" || protocol === "https:";
|
|
6745
6766
|
}
|
|
@@ -6781,9 +6802,11 @@ function redactUrlString(value, options) {
|
|
|
6781
6802
|
identifiersMasked: false
|
|
6782
6803
|
};
|
|
6783
6804
|
if (!looksLikeUrlForRedaction(value)) return unchanged;
|
|
6784
|
-
const url = parseRedactableUrl(value);
|
|
6785
|
-
if (!url) return unchanged;
|
|
6786
6805
|
const replacement = options.replacement ?? "[REDACTED]";
|
|
6806
|
+
const url = parseRedactableUrl(value);
|
|
6807
|
+
if (!url) {
|
|
6808
|
+
return redactConnectionUserinfoFallback(value, replacement) ?? unchanged;
|
|
6809
|
+
}
|
|
6787
6810
|
const idPlaceholder = options.idPlaceholder ?? "[id]";
|
|
6788
6811
|
const http = isHttpProtocol(url.protocol);
|
|
6789
6812
|
let credentialRedacted = url.username.length > 0 || url.password.length > 0;
|
|
@@ -7575,7 +7598,7 @@ function isCredentialSensitiveKey2(key, sensitiveKeys) {
|
|
|
7575
7598
|
}
|
|
7576
7599
|
|
|
7577
7600
|
// packages/redact/src/key-value-secret.ts
|
|
7578
|
-
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"'
|
|
7601
|
+
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,})`;
|
|
7579
7602
|
var KEY_VALUE_SECRET_PATTERN2 = new RegExp(
|
|
7580
7603
|
KEY_VALUE_SECRET_PATTERN_SOURCE,
|
|
7581
7604
|
"i"
|
|
@@ -7600,6 +7623,8 @@ var CONNECTION_PROTOCOLS2 = /* @__PURE__ */ new Set([
|
|
|
7600
7623
|
"amqps:"
|
|
7601
7624
|
]);
|
|
7602
7625
|
var CONNECTION_URI2 = /^(?:postgres|postgresql|mysql|mariadb|mongodb(?:\+srv)?|rediss?|amqps?):\/\/[^\s]+$/i;
|
|
7626
|
+
var CONNECTION_USERINFO2 = /^(postgres|postgresql|mysql|mariadb|mongodb(?:\+srv)?|rediss?|amqps?):\/\/([^@/?#]+)@(.+)$/i;
|
|
7627
|
+
var CONNECTION_HAS_USERINFO2 = /^(?:postgres|postgresql|mysql|mariadb|mongodb(?:\+srv)?|rediss?|amqps?):\/\/[^@/?#]+@/i;
|
|
7603
7628
|
var UUID_SEGMENT2 = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;
|
|
7604
7629
|
var HEX_SEGMENT2 = /^[0-9a-f]{12,}$/i;
|
|
7605
7630
|
var NUMERIC_SEGMENT2 = /^\d{5,}$/;
|
|
@@ -7623,6 +7648,28 @@ function parseRedactableUrl2(value) {
|
|
|
7623
7648
|
return void 0;
|
|
7624
7649
|
}
|
|
7625
7650
|
}
|
|
7651
|
+
function redactConnectionUserinfoFallback2(value, replacement) {
|
|
7652
|
+
const trimmed = value.trim();
|
|
7653
|
+
const match = CONNECTION_USERINFO2.exec(trimmed);
|
|
7654
|
+
if (match) {
|
|
7655
|
+
const [, scheme, , rest] = match;
|
|
7656
|
+
if (scheme && rest && rest.length > 0) {
|
|
7657
|
+
return {
|
|
7658
|
+
value: `${scheme}://${rest}`,
|
|
7659
|
+
credentialRedacted: true,
|
|
7660
|
+
identifiersMasked: false
|
|
7661
|
+
};
|
|
7662
|
+
}
|
|
7663
|
+
}
|
|
7664
|
+
if (looksLikeConnectionUri2(trimmed) && CONNECTION_HAS_USERINFO2.test(trimmed)) {
|
|
7665
|
+
return {
|
|
7666
|
+
value: replacement,
|
|
7667
|
+
credentialRedacted: true,
|
|
7668
|
+
identifiersMasked: false
|
|
7669
|
+
};
|
|
7670
|
+
}
|
|
7671
|
+
return void 0;
|
|
7672
|
+
}
|
|
7626
7673
|
function isHttpProtocol2(protocol) {
|
|
7627
7674
|
return protocol === "http:" || protocol === "https:";
|
|
7628
7675
|
}
|
|
@@ -7664,9 +7711,11 @@ function redactUrlString2(value, options) {
|
|
|
7664
7711
|
identifiersMasked: false
|
|
7665
7712
|
};
|
|
7666
7713
|
if (!looksLikeUrlForRedaction2(value)) return unchanged;
|
|
7667
|
-
const url = parseRedactableUrl2(value);
|
|
7668
|
-
if (!url) return unchanged;
|
|
7669
7714
|
const replacement = options.replacement ?? "[REDACTED]";
|
|
7715
|
+
const url = parseRedactableUrl2(value);
|
|
7716
|
+
if (!url) {
|
|
7717
|
+
return redactConnectionUserinfoFallback2(value, replacement) ?? unchanged;
|
|
7718
|
+
}
|
|
7670
7719
|
const idPlaceholder = options.idPlaceholder ?? "[id]";
|
|
7671
7720
|
const http = isHttpProtocol2(url.protocol);
|
|
7672
7721
|
let credentialRedacted = url.username.length > 0 || url.password.length > 0;
|