@mcpjam/inspector 3.5.3 → 3.6.0
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/client/assets/{dead-clicks-autocapture-D8D_hUBo.js → dead-clicks-autocapture-DS75rhsB.js} +2 -2
- package/dist/client/assets/{exception-autocapture-Cxa_sN4f.js → exception-autocapture-CThMdM5R.js} +2 -2
- package/dist/client/assets/{highlighted-body-OFNGDK62-OcAFdPRW.js → highlighted-body-OFNGDK62-ke8EIoOQ.js} +2 -2
- package/dist/client/assets/index-CPW_Ce8t.css +1 -0
- package/dist/client/assets/{index-CvIJV4Y2.js → index-CkYhASsm.js} +6 -6
- package/dist/client/assets/{jszip.min-zC59qNn8.js → jszip.min-DowTxfW4.js} +2 -2
- package/dist/client/assets/{posthog-recorder-AYS1fM5l.js → posthog-recorder-RyHcazD-.js} +2 -2
- package/dist/client/assets/{surveys-D73wkgp3.js → surveys-DpitDMpf.js} +2 -2
- package/dist/client/assets/{web-vitals-C8d9ZvK2.js → web-vitals-BixN9p_3.js} +2 -2
- package/dist/client/index.html +2 -2
- package/dist/server/{chunk-RXVH6JUZ.js → chunk-2WXL3DNI.js} +28 -9
- package/dist/server/chunk-PZ5AY32C.js +10 -0
- package/dist/server/{chunk-RP4R2FQ5.js → chunk-RRGPQWGQ.js} +11 -3
- package/dist/server/{consent-lifetime-YBODZG23.js → consent-lifetime-RZJBI5QR.js} +3 -2
- package/dist/server/harness-install-cli.js +2 -1
- package/dist/server/index.js +31165 -24652
- package/package.json +15 -8
- package/dist/client/assets/index-BiIQnFll.css +0 -1
|
@@ -37,7 +37,7 @@ function resolveEnvironment() {
|
|
|
37
37
|
}
|
|
38
38
|
return "dev";
|
|
39
39
|
}
|
|
40
|
-
var BAKED_VERSION = "3.
|
|
40
|
+
var BAKED_VERSION = "3.6.0";
|
|
41
41
|
function blankToNull(value) {
|
|
42
42
|
return value === void 0 || value.trim() === "" ? null : value;
|
|
43
43
|
}
|
|
@@ -48,6 +48,30 @@ function resolveRelease() {
|
|
|
48
48
|
return blankToNull(process.env.RAILWAY_GIT_COMMIT_SHA) ?? blankToNull(process.env.GIT_SHA) ?? resolveAppVersion();
|
|
49
49
|
}
|
|
50
50
|
|
|
51
|
+
// shared/secret-shape-redaction.ts
|
|
52
|
+
var authHeaderLike = () => /\b(authorization["']?\s*:\s*)["']?[^\n\r"'`]+/gi;
|
|
53
|
+
var tokenLike = () => /\bBearer\s+[A-Za-z0-9._~\-+/=]+\b/gi;
|
|
54
|
+
var skKeyLike = () => /\bsk-(?:[A-Za-z0-9]+-)*[A-Za-z0-9]{16,}\b/g;
|
|
55
|
+
var jwtLike = () => /\beyJ[A-Za-z0-9_-]{10,}\.[A-Za-z0-9_-]{10,}\.[A-Za-z0-9_-]{10,}\b/g;
|
|
56
|
+
var secretParamLike = () => /\b((?:api[_-]?key|apikey|access[_-]?token|refresh[_-]?token|id[_-]?token|client[_-]?secret|authorization|secret|password|passwd|pwd|token|auth|key|sig|signature)\s*[=:]\s*["']?)[^&\s"'`]+/gi;
|
|
57
|
+
var urlBasicAuthLike = () => /(\/\/[^\s/:@]+:)[^\s@/]+@/g;
|
|
58
|
+
function redactSecretShapes(text, replacement = "[redacted]") {
|
|
59
|
+
if (!text) return text;
|
|
60
|
+
const parts = text.split(SECRET_PLACEHOLDER);
|
|
61
|
+
if (parts.length === 1) return redactSegment(text, replacement);
|
|
62
|
+
return parts.map(
|
|
63
|
+
(part, index) => (
|
|
64
|
+
// Odd segments are the captured names.
|
|
65
|
+
index % 2 === 1 ? `{{secret:${part}}}` : redactSegment(part, replacement)
|
|
66
|
+
)
|
|
67
|
+
).join("");
|
|
68
|
+
}
|
|
69
|
+
var SECRET_PLACEHOLDER = /\{\{secret:([A-Z_][A-Z0-9_]*)\}\}/g;
|
|
70
|
+
function redactSegment(text, replacement) {
|
|
71
|
+
if (!text) return text;
|
|
72
|
+
return text.replace(authHeaderLike(), `$1${replacement}`).replace(tokenLike(), `Bearer ${replacement}`).replace(jwtLike(), replacement).replace(urlBasicAuthLike(), `$1${replacement}@`).replace(skKeyLike(), replacement).replace(secretParamLike(), `$1${replacement}`);
|
|
73
|
+
}
|
|
74
|
+
|
|
51
75
|
// server/utils/log-scrubber.ts
|
|
52
76
|
var FORBIDDEN_KEY_SUBSTRINGS = [
|
|
53
77
|
"authorization",
|
|
@@ -69,13 +93,7 @@ var FORBIDDEN_KEY_SUBSTRINGS = [
|
|
|
69
93
|
"x-mcpjam-harness-lease"
|
|
70
94
|
];
|
|
71
95
|
var ALLOWLISTED_KEYS = /* @__PURE__ */ new Set(["emaildomain"]);
|
|
72
|
-
var AUTH_HEADER_LIKE = /\b(authorization["']?\s*:\s*)["']?[^\n\r"'`]+/gi;
|
|
73
|
-
var TOKEN_LIKE = /\bBearer\s+[A-Za-z0-9._\-+/=]+\b/gi;
|
|
74
96
|
var EMAIL_LIKE = /\b[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,}\b/gi;
|
|
75
|
-
var SK_KEY_LIKE = /\bsk-[A-Za-z0-9]{16,}\b/g;
|
|
76
|
-
var JWT_LIKE = /\beyJ[A-Za-z0-9_-]{10,}\.[A-Za-z0-9_-]{10,}\.[A-Za-z0-9_-]{10,}\b/g;
|
|
77
|
-
var SECRET_PARAM_LIKE = /\b((?:api[_-]?key|apikey|access[_-]?token|refresh[_-]?token|id[_-]?token|client[_-]?secret|authorization|secret|password|passwd|pwd|token|auth|key|sig|signature)\s*[=:]\s*["']?)[^&\s"'`]+/gi;
|
|
78
|
-
var URL_BASIC_AUTH_LIKE = /(\/\/[^\s/:@]+:)[^\s@/]+@/g;
|
|
79
97
|
function isForbiddenKey(key) {
|
|
80
98
|
const lower = key.toLowerCase();
|
|
81
99
|
if (ALLOWLISTED_KEYS.has(lower)) return false;
|
|
@@ -83,7 +101,7 @@ function isForbiddenKey(key) {
|
|
|
83
101
|
return FORBIDDEN_KEY_SUBSTRINGS.some((s) => lower.includes(s));
|
|
84
102
|
}
|
|
85
103
|
function scrubString(s) {
|
|
86
|
-
return s.replace(
|
|
104
|
+
return s.replace(authHeaderLike(), "$1[redacted]").replace(tokenLike(), "Bearer [redacted-token]").replace(jwtLike(), "[redacted-jwt]").replace(urlBasicAuthLike(), "$1[redacted]@").replace(EMAIL_LIKE, "[redacted-email]").replace(skKeyLike(), "[redacted-secret]").replace(secretParamLike(), "$1[redacted]");
|
|
87
105
|
}
|
|
88
106
|
function scrubLogPayload(value) {
|
|
89
107
|
return scrubValue(value, /* @__PURE__ */ new WeakSet());
|
|
@@ -2821,6 +2839,7 @@ export {
|
|
|
2821
2839
|
resolveEnvironment,
|
|
2822
2840
|
resolveAppVersion,
|
|
2823
2841
|
resolveRelease,
|
|
2842
|
+
redactSecretShapes,
|
|
2824
2843
|
markOriginCaptureHandled,
|
|
2825
2844
|
ensureStampable,
|
|
2826
2845
|
isOriginCaptureHandled,
|
|
@@ -2855,4 +2874,4 @@ export {
|
|
|
2855
2874
|
installRuntimePack,
|
|
2856
2875
|
reportLocalHarnessRuntimeStatusInBackground
|
|
2857
2876
|
};
|
|
2858
|
-
//# sourceMappingURL=chunk-
|
|
2877
|
+
//# sourceMappingURL=chunk-2WXL3DNI.js.map
|
|
@@ -127,7 +127,7 @@ var consent = createDeviceConsent(
|
|
|
127
127
|
);
|
|
128
128
|
async function grantLocalBrowserConsent() {
|
|
129
129
|
const grant = await consent.grant();
|
|
130
|
-
const { invalidateBrowserConsentLifetimes: invalidateBrowserConsentLifetimes2 } = await import("./consent-lifetime-
|
|
130
|
+
const { invalidateBrowserConsentLifetimes: invalidateBrowserConsentLifetimes2 } = await import("./consent-lifetime-RZJBI5QR.js");
|
|
131
131
|
await invalidateBrowserConsentLifetimes2(await consent.fingerprint());
|
|
132
132
|
return grant;
|
|
133
133
|
}
|
|
@@ -136,7 +136,7 @@ var getBrowserConsentFingerprint = consent.fingerprint;
|
|
|
136
136
|
var verifyAndFingerprintBrowserConsent = consent.verifyAndFingerprint;
|
|
137
137
|
async function revokeLocalBrowserConsent(token) {
|
|
138
138
|
await consent.revoke(token);
|
|
139
|
-
const { invalidateBrowserConsentLifetimes: invalidateBrowserConsentLifetimes2 } = await import("./consent-lifetime-
|
|
139
|
+
const { invalidateBrowserConsentLifetimes: invalidateBrowserConsentLifetimes2 } = await import("./consent-lifetime-RZJBI5QR.js");
|
|
140
140
|
await invalidateBrowserConsentLifetimes2(await consent.fingerprint());
|
|
141
141
|
}
|
|
142
142
|
function watchBrowserConsentChanges(changed) {
|
|
@@ -184,6 +184,12 @@ function webmcpInspectorReachable(env = process.env) {
|
|
|
184
184
|
function hostedBrowserEnabled(env = process.env) {
|
|
185
185
|
return env.HOSTED_BROWSER_TOOLS_ENABLED === "1";
|
|
186
186
|
}
|
|
187
|
+
function browserShapeRedactionEnabled(env = process.env) {
|
|
188
|
+
return env.MCPJAM_BROWSER_SHAPE_REDACTION !== "0";
|
|
189
|
+
}
|
|
190
|
+
function browserSecretPlaceholdersEnabled(env = process.env) {
|
|
191
|
+
return env.MCPJAM_BROWSER_SECRET_PLACEHOLDERS === "1";
|
|
192
|
+
}
|
|
187
193
|
function webmcpPageToolsMode(env = process.env) {
|
|
188
194
|
return env.MCPJAM_WEBMCP_PAGE_TOOLS === "verbs" ? "verbs" : "first_class";
|
|
189
195
|
}
|
|
@@ -628,6 +634,8 @@ export {
|
|
|
628
634
|
webmcpInspectorHostedEnabled,
|
|
629
635
|
webmcpInspectorReachable,
|
|
630
636
|
hostedBrowserEnabled,
|
|
637
|
+
browserShapeRedactionEnabled,
|
|
638
|
+
browserSecretPlaceholdersEnabled,
|
|
631
639
|
webmcpPageToolsMode,
|
|
632
640
|
EVAL_WIDGET_MODEL_CONTEXT,
|
|
633
641
|
CORS_ORIGINS,
|
|
@@ -670,4 +678,4 @@ export {
|
|
|
670
678
|
createBrowserConsentLifetime,
|
|
671
679
|
invalidateBrowserConsentLifetimes
|
|
672
680
|
};
|
|
673
|
-
//# sourceMappingURL=chunk-
|
|
681
|
+
//# sourceMappingURL=chunk-RRGPQWGQ.js.map
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import {
|
|
2
2
|
createBrowserConsentLifetime,
|
|
3
3
|
invalidateBrowserConsentLifetimes
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-RRGPQWGQ.js";
|
|
5
|
+
import "./chunk-PZ5AY32C.js";
|
|
5
6
|
export {
|
|
6
7
|
createBrowserConsentLifetime,
|
|
7
8
|
invalidateBrowserConsentLifetimes
|
|
8
9
|
};
|
|
9
|
-
//# sourceMappingURL=consent-lifetime-
|
|
10
|
+
//# sourceMappingURL=consent-lifetime-RZJBI5QR.js.map
|