agent-inspect 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/CHANGELOG.md +6 -0
- package/README.md +1 -1
- package/docs/SAFE-TRACE-SHARING.md +1 -1
- package/package.json +1 -1
- package/packages/cli/dist/{chunk-LKEPABND.mjs → chunk-YXDNWHNJ.mjs} +5 -8
- package/packages/cli/dist/chunk-YXDNWHNJ.mjs.map +1 -0
- package/packages/cli/dist/index.cjs +61 -12
- package/packages/cli/dist/index.cjs.map +1 -1
- package/packages/cli/dist/index.mjs +61 -9
- package/packages/cli/dist/index.mjs.map +1 -1
- package/packages/cli/dist/{src-4WYF5RFI.mjs → src-H22KNWAZ.mjs} +3 -3
- package/packages/cli/dist/{src-4WYF5RFI.mjs.map → src-H22KNWAZ.mjs.map} +1 -1
- package/packages/core/dist/advanced.cjs +1 -1
- package/packages/core/dist/advanced.cjs.map +1 -1
- package/packages/core/dist/advanced.mjs +9 -9
- package/packages/core/dist/checks.cjs +2 -5
- package/packages/core/dist/checks.cjs.map +1 -1
- package/packages/core/dist/checks.mjs +3 -3
- package/packages/core/dist/{chunk-2KJR6X4V.mjs → chunk-DK3OW6UI.mjs} +3 -3
- package/packages/core/dist/chunk-DK3OW6UI.mjs.map +1 -0
- package/packages/core/dist/{chunk-NY4ILMXK.mjs → chunk-EXGQLMVB.mjs} +3 -3
- package/packages/core/dist/{chunk-NY4ILMXK.mjs.map → chunk-EXGQLMVB.mjs.map} +1 -1
- package/packages/core/dist/{chunk-PKDBFBJ7.mjs → chunk-LXYPM2ZO.mjs} +5 -8
- package/packages/core/dist/{chunk-PKDBFBJ7.mjs.map → chunk-LXYPM2ZO.mjs.map} +1 -1
- package/packages/core/dist/{chunk-INE5IWLN.mjs → chunk-N5PZAI6Q.mjs} +3 -3
- package/packages/core/dist/{chunk-INE5IWLN.mjs.map → chunk-N5PZAI6Q.mjs.map} +1 -1
- package/packages/core/dist/{chunk-MTMTXTJL.mjs → chunk-VQUB3WRI.mjs} +4 -4
- package/packages/core/dist/{chunk-MTMTXTJL.mjs.map → chunk-VQUB3WRI.mjs.map} +1 -1
- package/packages/core/dist/exporters.cjs +29 -3
- package/packages/core/dist/exporters.cjs.map +1 -1
- package/packages/core/dist/exporters.mjs +31 -5
- package/packages/core/dist/exporters.mjs.map +1 -1
- package/packages/core/dist/index.cjs +1 -1
- package/packages/core/dist/index.cjs.map +1 -1
- package/packages/core/dist/index.mjs +4 -4
- package/packages/core/dist/writers.cjs +1 -1
- package/packages/core/dist/writers.cjs.map +1 -1
- package/packages/core/dist/writers.mjs +1 -1
- package/packages/cli/dist/chunk-LKEPABND.mjs.map +0 -1
- package/packages/core/dist/chunk-2KJR6X4V.mjs.map +0 -1
|
@@ -261,7 +261,7 @@ function stringContainsHighConfidenceCredential(value) {
|
|
|
261
261
|
var KEY_VALUE_SECRET_PATTERN, HIGH_CONFIDENCE_CREDENTIAL_PATTERNS;
|
|
262
262
|
var init_credential_value_patterns = __esm({
|
|
263
263
|
"packages/core/src/safety/credential-value-patterns.ts"() {
|
|
264
|
-
KEY_VALUE_SECRET_PATTERN = /\b(?:api[_-]?key|internal[_-]?token|access[_-]?token|auth[_-]?token|password|secret|token)=(?!\[(?:REDACTED(?::[^\]]*)?|HASH:[0-9a-f]{8})\](?![^\s"'
|
|
264
|
+
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;
|
|
265
265
|
HIGH_CONFIDENCE_CREDENTIAL_PATTERNS = [
|
|
266
266
|
/^(?:basic|bearer|digest|apikey)\s+[a-z0-9._~+/=-]+$/i,
|
|
267
267
|
/\bbearer\s+[a-z0-9._~+/=-]{12,}\b/i,
|
|
@@ -5848,9 +5848,6 @@ function limitFindings(findings, maxFindings) {
|
|
|
5848
5848
|
if (maxFindings === void 0 || findings.length <= maxFindings) return findings;
|
|
5849
5849
|
return findings.slice(0, Math.max(0, maxFindings));
|
|
5850
5850
|
}
|
|
5851
|
-
function hasRedactionMarker(value, markers) {
|
|
5852
|
-
return markers.some((marker) => value.includes(marker)) || /^\[HASH:[A-Za-z0-9_-]+\]$/.test(value);
|
|
5853
|
-
}
|
|
5854
5851
|
function isFullyRedactedValue(value, markers = ["[REDACTED]", "[REDACTED:"]) {
|
|
5855
5852
|
if (typeof value !== "string") return false;
|
|
5856
5853
|
const trimmed = value.trim();
|
|
@@ -6837,7 +6834,7 @@ function createSafetyRedactionRule(options = {}) {
|
|
|
6837
6834
|
for (const event of context.events) {
|
|
6838
6835
|
for (const entry of eventValueEntries(event, { includeSummaries: true, includeError: true })) {
|
|
6839
6836
|
if (!isSensitiveKey(entry.key ?? lastPathSegment(entry.path), sensitiveKeys)) continue;
|
|
6840
|
-
if (
|
|
6837
|
+
if (isFullyRedactedValue(entry.value, markers)) continue;
|
|
6841
6838
|
findings.push(
|
|
6842
6839
|
failFinding(
|
|
6843
6840
|
"safety.redaction",
|
|
@@ -7362,7 +7359,7 @@ var init_checks2 = __esm({
|
|
|
7362
7359
|
// Keep in sync with packages/redact/src/key-value-secret.ts (KEY_VALUE_SECRET_PATTERN_SOURCE).
|
|
7363
7360
|
{
|
|
7364
7361
|
id: "key-value-secret",
|
|
7365
|
-
pattern: /\b(?:api[_-]?key|internal[_-]?token|access[_-]?token|auth[_-]?token|password|secret|token)=(?!\[(?:REDACTED(?::[^\]]*)?|HASH:[0-9a-f]{8})\](?![^\s"'
|
|
7362
|
+
pattern: /\b(?:api[_-]?key|internal[_-]?token|access[_-]?token|auth[_-]?token|password|secret|token)=(?!\[(?:REDACTED(?::[^\]]*)?|HASH:[0-9a-f]{8})\](?![^\s"'\\&#?]))([^\s"'\\]{8,})/i
|
|
7366
7363
|
}
|
|
7367
7364
|
];
|
|
7368
7365
|
}
|
|
@@ -16165,7 +16162,7 @@ var init_src = __esm({
|
|
|
16165
16162
|
});
|
|
16166
16163
|
|
|
16167
16164
|
// package.json
|
|
16168
|
-
var version = "6.31.
|
|
16165
|
+
var version = "6.31.6";
|
|
16169
16166
|
|
|
16170
16167
|
// packages/cli/src/list.ts
|
|
16171
16168
|
init_advanced();
|
|
@@ -17975,6 +17972,8 @@ var CONNECTION_PROTOCOLS = /* @__PURE__ */ new Set([
|
|
|
17975
17972
|
"amqps:"
|
|
17976
17973
|
]);
|
|
17977
17974
|
var CONNECTION_URI = /^(?:postgres|postgresql|mysql|mariadb|mongodb(?:\+srv)?|rediss?|amqps?):\/\/[^\s]+$/i;
|
|
17975
|
+
var CONNECTION_USERINFO = /^(postgres|postgresql|mysql|mariadb|mongodb(?:\+srv)?|rediss?|amqps?):\/\/([^@/?#]+)@(.+)$/i;
|
|
17976
|
+
var CONNECTION_HAS_USERINFO = /^(?:postgres|postgresql|mysql|mariadb|mongodb(?:\+srv)?|rediss?|amqps?):\/\/[^@/?#]+@/i;
|
|
17978
17977
|
var UUID_SEGMENT = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;
|
|
17979
17978
|
var HEX_SEGMENT = /^[0-9a-f]{12,}$/i;
|
|
17980
17979
|
var NUMERIC_SEGMENT = /^\d{5,}$/;
|
|
@@ -17998,6 +17997,28 @@ function parseRedactableUrl(value) {
|
|
|
17998
17997
|
return void 0;
|
|
17999
17998
|
}
|
|
18000
17999
|
}
|
|
18000
|
+
function redactConnectionUserinfoFallback(value, replacement) {
|
|
18001
|
+
const trimmed = value.trim();
|
|
18002
|
+
const match = CONNECTION_USERINFO.exec(trimmed);
|
|
18003
|
+
if (match) {
|
|
18004
|
+
const [, scheme, , rest] = match;
|
|
18005
|
+
if (scheme && rest && rest.length > 0) {
|
|
18006
|
+
return {
|
|
18007
|
+
value: `${scheme}://${rest}`,
|
|
18008
|
+
credentialRedacted: true,
|
|
18009
|
+
identifiersMasked: false
|
|
18010
|
+
};
|
|
18011
|
+
}
|
|
18012
|
+
}
|
|
18013
|
+
if (looksLikeConnectionUri(trimmed) && CONNECTION_HAS_USERINFO.test(trimmed)) {
|
|
18014
|
+
return {
|
|
18015
|
+
value: replacement,
|
|
18016
|
+
credentialRedacted: true,
|
|
18017
|
+
identifiersMasked: false
|
|
18018
|
+
};
|
|
18019
|
+
}
|
|
18020
|
+
return void 0;
|
|
18021
|
+
}
|
|
18001
18022
|
function isHttpProtocol(protocol) {
|
|
18002
18023
|
return protocol === "http:" || protocol === "https:";
|
|
18003
18024
|
}
|
|
@@ -18039,9 +18060,11 @@ function redactUrlString(value, options) {
|
|
|
18039
18060
|
identifiersMasked: false
|
|
18040
18061
|
};
|
|
18041
18062
|
if (!looksLikeUrlForRedaction(value)) return unchanged;
|
|
18042
|
-
const url = parseRedactableUrl(value);
|
|
18043
|
-
if (!url) return unchanged;
|
|
18044
18063
|
const replacement = options.replacement ?? "[REDACTED]";
|
|
18064
|
+
const url = parseRedactableUrl(value);
|
|
18065
|
+
if (!url) {
|
|
18066
|
+
return redactConnectionUserinfoFallback(value, replacement) ?? unchanged;
|
|
18067
|
+
}
|
|
18045
18068
|
const idPlaceholder = options.idPlaceholder ?? "[id]";
|
|
18046
18069
|
const http = isHttpProtocol(url.protocol);
|
|
18047
18070
|
let credentialRedacted = url.username.length > 0 || url.password.length > 0;
|
|
@@ -20302,7 +20325,7 @@ function isCredentialSensitiveKey2(key, sensitiveKeys) {
|
|
|
20302
20325
|
}
|
|
20303
20326
|
|
|
20304
20327
|
// packages/redact/src/key-value-secret.ts
|
|
20305
|
-
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"'
|
|
20328
|
+
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,})`;
|
|
20306
20329
|
var KEY_VALUE_SECRET_PATTERN2 = new RegExp(
|
|
20307
20330
|
KEY_VALUE_SECRET_PATTERN_SOURCE,
|
|
20308
20331
|
"i"
|
|
@@ -20327,6 +20350,8 @@ var CONNECTION_PROTOCOLS2 = /* @__PURE__ */ new Set([
|
|
|
20327
20350
|
"amqps:"
|
|
20328
20351
|
]);
|
|
20329
20352
|
var CONNECTION_URI2 = /^(?:postgres|postgresql|mysql|mariadb|mongodb(?:\+srv)?|rediss?|amqps?):\/\/[^\s]+$/i;
|
|
20353
|
+
var CONNECTION_USERINFO2 = /^(postgres|postgresql|mysql|mariadb|mongodb(?:\+srv)?|rediss?|amqps?):\/\/([^@/?#]+)@(.+)$/i;
|
|
20354
|
+
var CONNECTION_HAS_USERINFO2 = /^(?:postgres|postgresql|mysql|mariadb|mongodb(?:\+srv)?|rediss?|amqps?):\/\/[^@/?#]+@/i;
|
|
20330
20355
|
var UUID_SEGMENT2 = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;
|
|
20331
20356
|
var HEX_SEGMENT2 = /^[0-9a-f]{12,}$/i;
|
|
20332
20357
|
var NUMERIC_SEGMENT2 = /^\d{5,}$/;
|
|
@@ -20350,6 +20375,28 @@ function parseRedactableUrl2(value) {
|
|
|
20350
20375
|
return void 0;
|
|
20351
20376
|
}
|
|
20352
20377
|
}
|
|
20378
|
+
function redactConnectionUserinfoFallback2(value, replacement) {
|
|
20379
|
+
const trimmed = value.trim();
|
|
20380
|
+
const match = CONNECTION_USERINFO2.exec(trimmed);
|
|
20381
|
+
if (match) {
|
|
20382
|
+
const [, scheme, , rest] = match;
|
|
20383
|
+
if (scheme && rest && rest.length > 0) {
|
|
20384
|
+
return {
|
|
20385
|
+
value: `${scheme}://${rest}`,
|
|
20386
|
+
credentialRedacted: true,
|
|
20387
|
+
identifiersMasked: false
|
|
20388
|
+
};
|
|
20389
|
+
}
|
|
20390
|
+
}
|
|
20391
|
+
if (looksLikeConnectionUri2(trimmed) && CONNECTION_HAS_USERINFO2.test(trimmed)) {
|
|
20392
|
+
return {
|
|
20393
|
+
value: replacement,
|
|
20394
|
+
credentialRedacted: true,
|
|
20395
|
+
identifiersMasked: false
|
|
20396
|
+
};
|
|
20397
|
+
}
|
|
20398
|
+
return void 0;
|
|
20399
|
+
}
|
|
20353
20400
|
function isHttpProtocol2(protocol) {
|
|
20354
20401
|
return protocol === "http:" || protocol === "https:";
|
|
20355
20402
|
}
|
|
@@ -20391,9 +20438,11 @@ function redactUrlString2(value, options) {
|
|
|
20391
20438
|
identifiersMasked: false
|
|
20392
20439
|
};
|
|
20393
20440
|
if (!looksLikeUrlForRedaction2(value)) return unchanged;
|
|
20394
|
-
const url = parseRedactableUrl2(value);
|
|
20395
|
-
if (!url) return unchanged;
|
|
20396
20441
|
const replacement = options.replacement ?? "[REDACTED]";
|
|
20442
|
+
const url = parseRedactableUrl2(value);
|
|
20443
|
+
if (!url) {
|
|
20444
|
+
return redactConnectionUserinfoFallback2(value, replacement) ?? unchanged;
|
|
20445
|
+
}
|
|
20397
20446
|
const idPlaceholder = options.idPlaceholder ?? "[id]";
|
|
20398
20447
|
const http = isHttpProtocol2(url.protocol);
|
|
20399
20448
|
let credentialRedacted = url.username.length > 0 || url.password.length > 0;
|