agent-inspect 6.31.4 → 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 +12 -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 +120 -21
- package/packages/cli/dist/index.cjs.map +1 -1
- package/packages/cli/dist/index.mjs +120 -18
- 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 +58 -7
- package/packages/core/dist/exporters.cjs.map +1 -1
- package/packages/core/dist/exporters.mjs +60 -9
- 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
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { buildRunWhatSummary, renderRunWhat, renderTimeline, buildRunTimeline } from './chunk-
|
|
2
|
-
import { summarizeObservedOutcomes, extractOutcomesFromTraceEvents, renderObservedOutcomesMarkdown, renderObservedOutcomesHtml } from './chunk-
|
|
1
|
+
import { buildRunWhatSummary, renderRunWhat, renderTimeline, buildRunTimeline } from './chunk-EXGQLMVB.mjs';
|
|
2
|
+
import { summarizeObservedOutcomes, extractOutcomesFromTraceEvents, renderObservedOutcomesMarkdown, renderObservedOutcomesHtml } from './chunk-N5PZAI6Q.mjs';
|
|
3
3
|
import { escapeHtml, flattenTree, safeString, compactAttributes, stableJson, escapeMarkdown, zeroKinds } from './chunk-CAWPF22J.mjs';
|
|
4
4
|
export { compactAttributes, escapeHtml, escapeMarkdown, flattenTree, safeString, stableJson, summarizeTree } from './chunk-CAWPF22J.mjs';
|
|
5
|
-
import { resolveRedactionProfile, applyProfileMetadataCaps, truncateStringForProfile, stringContainsHighConfidenceCredential } from './chunk-
|
|
5
|
+
import { resolveRedactionProfile, applyProfileMetadataCaps, truncateStringForProfile, stringContainsHighConfidenceCredential } from './chunk-DK3OW6UI.mjs';
|
|
6
6
|
import { Redactor, DEFAULT_REDACT_KEYS, isCredentialSensitiveKey } from './chunk-VLVCLAPB.mjs';
|
|
7
7
|
import './chunk-7DHSWDKB.mjs';
|
|
8
8
|
import './chunk-EE5Z2GQ3.mjs';
|
|
@@ -14,6 +14,21 @@ var EXPORT_PAYLOAD_VERSION = "0.1.2";
|
|
|
14
14
|
|
|
15
15
|
// packages/core/src/safety/url-redaction.ts
|
|
16
16
|
var HTTP_URL = /^https?:\/\/[^\s]+$/i;
|
|
17
|
+
var CONNECTION_PROTOCOLS = /* @__PURE__ */ new Set([
|
|
18
|
+
"postgres:",
|
|
19
|
+
"postgresql:",
|
|
20
|
+
"mysql:",
|
|
21
|
+
"mariadb:",
|
|
22
|
+
"mongodb:",
|
|
23
|
+
"mongodb+srv:",
|
|
24
|
+
"redis:",
|
|
25
|
+
"rediss:",
|
|
26
|
+
"amqp:",
|
|
27
|
+
"amqps:"
|
|
28
|
+
]);
|
|
29
|
+
var CONNECTION_URI = /^(?:postgres|postgresql|mysql|mariadb|mongodb(?:\+srv)?|rediss?|amqps?):\/\/[^\s]+$/i;
|
|
30
|
+
var CONNECTION_USERINFO = /^(postgres|postgresql|mysql|mariadb|mongodb(?:\+srv)?|rediss?|amqps?):\/\/([^@/?#]+)@(.+)$/i;
|
|
31
|
+
var CONNECTION_HAS_USERINFO = /^(?:postgres|postgresql|mysql|mariadb|mongodb(?:\+srv)?|rediss?|amqps?):\/\/[^@/?#]+@/i;
|
|
17
32
|
var UUID_SEGMENT = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;
|
|
18
33
|
var HEX_SEGMENT = /^[0-9a-f]{12,}$/i;
|
|
19
34
|
var NUMERIC_SEGMENT = /^\d{5,}$/;
|
|
@@ -21,14 +36,47 @@ var OPAQUE_SEGMENT = /^[A-Za-z0-9_-]{20,}$/;
|
|
|
21
36
|
function looksLikeHttpUrl(value) {
|
|
22
37
|
return HTTP_URL.test(value.trim());
|
|
23
38
|
}
|
|
24
|
-
function
|
|
39
|
+
function looksLikeConnectionUri(value) {
|
|
40
|
+
return CONNECTION_URI.test(value.trim());
|
|
41
|
+
}
|
|
42
|
+
function looksLikeUrlForRedaction(value) {
|
|
43
|
+
return looksLikeHttpUrl(value) || looksLikeConnectionUri(value);
|
|
44
|
+
}
|
|
45
|
+
function parseRedactableUrl(value) {
|
|
25
46
|
try {
|
|
26
47
|
const url = new URL(value.trim());
|
|
27
|
-
|
|
48
|
+
if (url.protocol === "http:" || url.protocol === "https:") return url;
|
|
49
|
+
if (CONNECTION_PROTOCOLS.has(url.protocol)) return url;
|
|
50
|
+
return void 0;
|
|
28
51
|
} catch {
|
|
29
52
|
return void 0;
|
|
30
53
|
}
|
|
31
54
|
}
|
|
55
|
+
function redactConnectionUserinfoFallback(value, replacement) {
|
|
56
|
+
const trimmed = value.trim();
|
|
57
|
+
const match = CONNECTION_USERINFO.exec(trimmed);
|
|
58
|
+
if (match) {
|
|
59
|
+
const [, scheme, , rest] = match;
|
|
60
|
+
if (scheme && rest && rest.length > 0) {
|
|
61
|
+
return {
|
|
62
|
+
value: `${scheme}://${rest}`,
|
|
63
|
+
credentialRedacted: true,
|
|
64
|
+
identifiersMasked: false
|
|
65
|
+
};
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
if (looksLikeConnectionUri(trimmed) && CONNECTION_HAS_USERINFO.test(trimmed)) {
|
|
69
|
+
return {
|
|
70
|
+
value: replacement,
|
|
71
|
+
credentialRedacted: true,
|
|
72
|
+
identifiersMasked: false
|
|
73
|
+
};
|
|
74
|
+
}
|
|
75
|
+
return void 0;
|
|
76
|
+
}
|
|
77
|
+
function isHttpProtocol(protocol) {
|
|
78
|
+
return protocol === "http:" || protocol === "https:";
|
|
79
|
+
}
|
|
32
80
|
function isIdentifierSegment(segment) {
|
|
33
81
|
if (UUID_SEGMENT.test(segment)) return true;
|
|
34
82
|
if (HEX_SEGMENT.test(segment)) return true;
|
|
@@ -66,15 +114,18 @@ function redactUrlString(value, options) {
|
|
|
66
114
|
credentialRedacted: false,
|
|
67
115
|
identifiersMasked: false
|
|
68
116
|
};
|
|
69
|
-
if (!
|
|
70
|
-
const url = parseHttpUrl(value);
|
|
71
|
-
if (!url) return unchanged;
|
|
117
|
+
if (!looksLikeUrlForRedaction(value)) return unchanged;
|
|
72
118
|
const replacement = options.replacement ?? "[REDACTED]";
|
|
119
|
+
const url = parseRedactableUrl(value);
|
|
120
|
+
if (!url) {
|
|
121
|
+
return redactConnectionUserinfoFallback(value, replacement) ?? unchanged;
|
|
122
|
+
}
|
|
73
123
|
const idPlaceholder = options.idPlaceholder ?? "[id]";
|
|
124
|
+
const http = isHttpProtocol(url.protocol);
|
|
74
125
|
let credentialRedacted = url.username.length > 0 || url.password.length > 0;
|
|
75
126
|
let identifiersMasked = false;
|
|
76
127
|
let pathname = url.pathname;
|
|
77
|
-
if (options.maskPathIds === true) {
|
|
128
|
+
if (http && options.maskPathIds === true) {
|
|
78
129
|
pathname = url.pathname.split("/").map((segment) => {
|
|
79
130
|
if (segment.length === 0 || !isIdentifierSegment(decodeParam(segment))) {
|
|
80
131
|
return segment;
|