@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
|
@@ -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"'
|
|
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"'
|
|
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 (
|
|
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"'
|
|
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-
|
|
9085
|
-
//# sourceMappingURL=chunk-
|
|
9133
|
+
//# sourceMappingURL=chunk-P72E7RLD.mjs.map
|
|
9134
|
+
//# sourceMappingURL=chunk-P72E7RLD.mjs.map
|