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.
Files changed (40) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/README.md +1 -1
  3. package/docs/SAFE-TRACE-SHARING.md +1 -1
  4. package/package.json +1 -1
  5. package/packages/cli/dist/{chunk-LKEPABND.mjs → chunk-YXDNWHNJ.mjs} +5 -8
  6. package/packages/cli/dist/chunk-YXDNWHNJ.mjs.map +1 -0
  7. package/packages/cli/dist/index.cjs +120 -21
  8. package/packages/cli/dist/index.cjs.map +1 -1
  9. package/packages/cli/dist/index.mjs +120 -18
  10. package/packages/cli/dist/index.mjs.map +1 -1
  11. package/packages/cli/dist/{src-4WYF5RFI.mjs → src-H22KNWAZ.mjs} +3 -3
  12. package/packages/cli/dist/{src-4WYF5RFI.mjs.map → src-H22KNWAZ.mjs.map} +1 -1
  13. package/packages/core/dist/advanced.cjs +1 -1
  14. package/packages/core/dist/advanced.cjs.map +1 -1
  15. package/packages/core/dist/advanced.mjs +9 -9
  16. package/packages/core/dist/checks.cjs +2 -5
  17. package/packages/core/dist/checks.cjs.map +1 -1
  18. package/packages/core/dist/checks.mjs +3 -3
  19. package/packages/core/dist/{chunk-2KJR6X4V.mjs → chunk-DK3OW6UI.mjs} +3 -3
  20. package/packages/core/dist/chunk-DK3OW6UI.mjs.map +1 -0
  21. package/packages/core/dist/{chunk-NY4ILMXK.mjs → chunk-EXGQLMVB.mjs} +3 -3
  22. package/packages/core/dist/{chunk-NY4ILMXK.mjs.map → chunk-EXGQLMVB.mjs.map} +1 -1
  23. package/packages/core/dist/{chunk-PKDBFBJ7.mjs → chunk-LXYPM2ZO.mjs} +5 -8
  24. package/packages/core/dist/{chunk-PKDBFBJ7.mjs.map → chunk-LXYPM2ZO.mjs.map} +1 -1
  25. package/packages/core/dist/{chunk-INE5IWLN.mjs → chunk-N5PZAI6Q.mjs} +3 -3
  26. package/packages/core/dist/{chunk-INE5IWLN.mjs.map → chunk-N5PZAI6Q.mjs.map} +1 -1
  27. package/packages/core/dist/{chunk-MTMTXTJL.mjs → chunk-VQUB3WRI.mjs} +4 -4
  28. package/packages/core/dist/{chunk-MTMTXTJL.mjs.map → chunk-VQUB3WRI.mjs.map} +1 -1
  29. package/packages/core/dist/exporters.cjs +58 -7
  30. package/packages/core/dist/exporters.cjs.map +1 -1
  31. package/packages/core/dist/exporters.mjs +60 -9
  32. package/packages/core/dist/exporters.mjs.map +1 -1
  33. package/packages/core/dist/index.cjs +1 -1
  34. package/packages/core/dist/index.cjs.map +1 -1
  35. package/packages/core/dist/index.mjs +4 -4
  36. package/packages/core/dist/writers.cjs +1 -1
  37. package/packages/core/dist/writers.cjs.map +1 -1
  38. package/packages/core/dist/writers.mjs +1 -1
  39. package/packages/cli/dist/chunk-LKEPABND.mjs.map +0 -1
  40. package/packages/core/dist/chunk-2KJR6X4V.mjs.map +0 -1
@@ -1,8 +1,8 @@
1
- import { buildRunWhatSummary, renderRunWhat, renderTimeline, buildRunTimeline } from './chunk-NY4ILMXK.mjs';
2
- import { summarizeObservedOutcomes, extractOutcomesFromTraceEvents, renderObservedOutcomesMarkdown, renderObservedOutcomesHtml } from './chunk-INE5IWLN.mjs';
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-2KJR6X4V.mjs';
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 parseHttpUrl(value) {
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
- return url.protocol === "http:" || url.protocol === "https:" ? url : void 0;
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 (!looksLikeHttpUrl(value)) return unchanged;
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;