agent-inspect 6.31.4 → 6.31.5

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.
@@ -14,7 +14,7 @@ import { createServer } from 'http';
14
14
  import { createRequire } from 'module';
15
15
 
16
16
  // package.json
17
- var version = "6.31.4";
17
+ var version = "6.31.5";
18
18
 
19
19
  // packages/cli/src/trace-dir-scale.ts
20
20
  var TRACE_COUNT_WARN = 1e3;
@@ -1762,6 +1762,19 @@ var EXPORT_PAYLOAD_VERSION = "0.1.2";
1762
1762
 
1763
1763
  // packages/core/src/safety/url-redaction.ts
1764
1764
  var HTTP_URL = /^https?:\/\/[^\s]+$/i;
1765
+ var CONNECTION_PROTOCOLS = /* @__PURE__ */ new Set([
1766
+ "postgres:",
1767
+ "postgresql:",
1768
+ "mysql:",
1769
+ "mariadb:",
1770
+ "mongodb:",
1771
+ "mongodb+srv:",
1772
+ "redis:",
1773
+ "rediss:",
1774
+ "amqp:",
1775
+ "amqps:"
1776
+ ]);
1777
+ var CONNECTION_URI = /^(?:postgres|postgresql|mysql|mariadb|mongodb(?:\+srv)?|rediss?|amqps?):\/\/[^\s]+$/i;
1765
1778
  var UUID_SEGMENT = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;
1766
1779
  var HEX_SEGMENT = /^[0-9a-f]{12,}$/i;
1767
1780
  var NUMERIC_SEGMENT = /^\d{5,}$/;
@@ -1769,14 +1782,25 @@ var OPAQUE_SEGMENT = /^[A-Za-z0-9_-]{20,}$/;
1769
1782
  function looksLikeHttpUrl(value) {
1770
1783
  return HTTP_URL.test(value.trim());
1771
1784
  }
1772
- function parseHttpUrl(value) {
1785
+ function looksLikeConnectionUri(value) {
1786
+ return CONNECTION_URI.test(value.trim());
1787
+ }
1788
+ function looksLikeUrlForRedaction(value) {
1789
+ return looksLikeHttpUrl(value) || looksLikeConnectionUri(value);
1790
+ }
1791
+ function parseRedactableUrl(value) {
1773
1792
  try {
1774
1793
  const url = new URL(value.trim());
1775
- return url.protocol === "http:" || url.protocol === "https:" ? url : void 0;
1794
+ if (url.protocol === "http:" || url.protocol === "https:") return url;
1795
+ if (CONNECTION_PROTOCOLS.has(url.protocol)) return url;
1796
+ return void 0;
1776
1797
  } catch {
1777
1798
  return void 0;
1778
1799
  }
1779
1800
  }
1801
+ function isHttpProtocol(protocol) {
1802
+ return protocol === "http:" || protocol === "https:";
1803
+ }
1780
1804
  function isIdentifierSegment(segment) {
1781
1805
  if (UUID_SEGMENT.test(segment)) return true;
1782
1806
  if (HEX_SEGMENT.test(segment)) return true;
@@ -1814,15 +1838,16 @@ function redactUrlString(value, options) {
1814
1838
  credentialRedacted: false,
1815
1839
  identifiersMasked: false
1816
1840
  };
1817
- if (!looksLikeHttpUrl(value)) return unchanged;
1818
- const url = parseHttpUrl(value);
1841
+ if (!looksLikeUrlForRedaction(value)) return unchanged;
1842
+ const url = parseRedactableUrl(value);
1819
1843
  if (!url) return unchanged;
1820
1844
  const replacement = options.replacement ?? "[REDACTED]";
1821
1845
  const idPlaceholder = options.idPlaceholder ?? "[id]";
1846
+ const http = isHttpProtocol(url.protocol);
1822
1847
  let credentialRedacted = url.username.length > 0 || url.password.length > 0;
1823
1848
  let identifiersMasked = false;
1824
1849
  let pathname = url.pathname;
1825
- if (options.maskPathIds === true) {
1850
+ if (http && options.maskPathIds === true) {
1826
1851
  pathname = url.pathname.split("/").map((segment) => {
1827
1852
  if (segment.length === 0 || !isIdentifierSegment(decodeParam(segment))) {
1828
1853
  return segment;
@@ -4049,6 +4074,19 @@ function valueContainsKeyValueSecret(value) {
4049
4074
 
4050
4075
  // packages/redact/src/url-redaction.ts
4051
4076
  var HTTP_URL2 = /^https?:\/\/[^\s]+$/i;
4077
+ var CONNECTION_PROTOCOLS2 = /* @__PURE__ */ new Set([
4078
+ "postgres:",
4079
+ "postgresql:",
4080
+ "mysql:",
4081
+ "mariadb:",
4082
+ "mongodb:",
4083
+ "mongodb+srv:",
4084
+ "redis:",
4085
+ "rediss:",
4086
+ "amqp:",
4087
+ "amqps:"
4088
+ ]);
4089
+ var CONNECTION_URI2 = /^(?:postgres|postgresql|mysql|mariadb|mongodb(?:\+srv)?|rediss?|amqps?):\/\/[^\s]+$/i;
4052
4090
  var UUID_SEGMENT2 = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;
4053
4091
  var HEX_SEGMENT2 = /^[0-9a-f]{12,}$/i;
4054
4092
  var NUMERIC_SEGMENT2 = /^\d{5,}$/;
@@ -4056,14 +4094,25 @@ var OPAQUE_SEGMENT2 = /^[A-Za-z0-9_-]{20,}$/;
4056
4094
  function looksLikeHttpUrl2(value) {
4057
4095
  return HTTP_URL2.test(value.trim());
4058
4096
  }
4059
- function parseHttpUrl2(value) {
4097
+ function looksLikeConnectionUri2(value) {
4098
+ return CONNECTION_URI2.test(value.trim());
4099
+ }
4100
+ function looksLikeUrlForRedaction2(value) {
4101
+ return looksLikeHttpUrl2(value) || looksLikeConnectionUri2(value);
4102
+ }
4103
+ function parseRedactableUrl2(value) {
4060
4104
  try {
4061
4105
  const url = new URL(value.trim());
4062
- return url.protocol === "http:" || url.protocol === "https:" ? url : void 0;
4106
+ if (url.protocol === "http:" || url.protocol === "https:") return url;
4107
+ if (CONNECTION_PROTOCOLS2.has(url.protocol)) return url;
4108
+ return void 0;
4063
4109
  } catch {
4064
4110
  return void 0;
4065
4111
  }
4066
4112
  }
4113
+ function isHttpProtocol2(protocol) {
4114
+ return protocol === "http:" || protocol === "https:";
4115
+ }
4067
4116
  function isIdentifierSegment2(segment) {
4068
4117
  if (UUID_SEGMENT2.test(segment)) return true;
4069
4118
  if (HEX_SEGMENT2.test(segment)) return true;
@@ -4101,15 +4150,16 @@ function redactUrlString2(value, options) {
4101
4150
  credentialRedacted: false,
4102
4151
  identifiersMasked: false
4103
4152
  };
4104
- if (!looksLikeHttpUrl2(value)) return unchanged;
4105
- const url = parseHttpUrl2(value);
4153
+ if (!looksLikeUrlForRedaction2(value)) return unchanged;
4154
+ const url = parseRedactableUrl2(value);
4106
4155
  if (!url) return unchanged;
4107
4156
  const replacement = options.replacement ?? "[REDACTED]";
4108
4157
  const idPlaceholder = options.idPlaceholder ?? "[id]";
4158
+ const http = isHttpProtocol2(url.protocol);
4109
4159
  let credentialRedacted = url.username.length > 0 || url.password.length > 0;
4110
4160
  let identifiersMasked = false;
4111
4161
  let pathname = url.pathname;
4112
- if (options.maskPathIds === true) {
4162
+ if (http && options.maskPathIds === true) {
4113
4163
  pathname = url.pathname.split("/").map((segment) => {
4114
4164
  if (segment.length === 0 || !isIdentifierSegment2(decodeParam2(segment))) {
4115
4165
  return segment;
@@ -4559,7 +4609,7 @@ var Redactor2 = class {
4559
4609
  return applyRule(rule, value, this.#replacement);
4560
4610
  }
4561
4611
  }
4562
- if (typeof value === "string" && looksLikeHttpUrl2(value)) {
4612
+ if (typeof value === "string" && looksLikeUrlForRedaction2(value)) {
4563
4613
  const url = redactUrlString2(value, {
4564
4614
  sensitiveKeys: this.#sensitiveKeys,
4565
4615
  isSensitiveValue: (candidate) => this.#detect(candidate, key, path30) !== void 0,