@mcpjam/inspector 3.12.3 → 3.12.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.
Files changed (37) hide show
  1. package/README.md +29 -21
  2. package/bin/access-link.mjs +53 -0
  3. package/bin/start.js +47 -14
  4. package/dist/client/assets/OAuthDesktopReturnNotice-B_x9xTE-.css +2 -0
  5. package/dist/client/assets/OAuthDesktopReturnNotice-LlC451lX.js +11 -0
  6. package/dist/client/assets/{app-bootstrap-C1Jn01kP.js → app-bootstrap-2jatN7gw.js} +376 -374
  7. package/dist/client/assets/{button-RD2Dghjp.js → button-B2OH2ei2.js} +2 -2
  8. package/dist/client/assets/{chunk-YOKDWASO-DTTU1wSE.js → chunk-YOKDWASO-uJ3KOQV7.js} +5 -5
  9. package/dist/client/assets/{dead-clicks-autocapture-CDkbT21a.js → dead-clicks-autocapture-D055GjVp.js} +2 -2
  10. package/dist/client/assets/{error-reporting-Dg5b1JwS.js → error-reporting-DGP36KLx.js} +57 -57
  11. package/dist/client/assets/{error-reporting-_SEhX6IL.js → error-reporting-FWZKbZxG.js} +1 -1
  12. package/dist/client/assets/{exception-autocapture-CtxHwPtn.js → exception-autocapture-103gdJjL.js} +2 -2
  13. package/dist/client/assets/{failed-request-tracker-kUaJ-sVM.js → failed-request-tracker-Cp9_VFMm.js} +2 -2
  14. package/dist/client/assets/{highlighted-body-KPVGNVTW-CBC2hHHb.js → highlighted-body-KPVGNVTW-Dx70h1nm.js} +2 -2
  15. package/dist/client/assets/index-rskHnM3O.js +4 -0
  16. package/dist/client/assets/{jszip.min-B3Qii_az.js → jszip.min-CwJyI5tb.js} +2 -2
  17. package/dist/client/assets/{mermaid-HWGCJPDP-BzT3-9sO.js → mermaid-HWGCJPDP-Ck3prJKl.js} +1 -1
  18. package/dist/client/assets/{posthog-recorder-B06ULcLl.js → posthog-recorder-tKuMFijV.js} +2 -2
  19. package/dist/client/assets/{preload-helper-DvWwGI6x.js → preload-helper-DrcoTQ49.js} +2 -2
  20. package/dist/client/assets/{rolldown-runtime-DVMSi0Yr.js → rolldown-runtime-7FnpGOz6.js} +1 -1
  21. package/dist/client/assets/{surveys-D941hgn3.js → surveys-BsZYxM6N.js} +2 -2
  22. package/dist/client/assets/{trace-timeline-Bk3hAXNq.js → trace-timeline-BOZvHcOG.js} +1 -1
  23. package/dist/client/assets/{trace-timeline-DVZqlQSW.js → trace-timeline-Bf9Oai70.js} +8 -8
  24. package/dist/client/assets/{web-vitals-DZUBt4dL.js → web-vitals-DdzaVN3H.js} +2 -2
  25. package/dist/client/index.html +7 -7
  26. package/dist/server/chunk-3EDQFXTF.js +4801 -0
  27. package/dist/server/{chunk-5RE7KJ2M.js → chunk-4PYR7GMQ.js} +16 -197
  28. package/dist/server/{chunk-WGJHSGJP.js → chunk-QA6VJT6A.js} +961 -963
  29. package/dist/server/chunk-SH24KJBI.js +194 -0
  30. package/dist/server/{consent-lifetime-PTGAZQSU.js → consent-lifetime-M7PS6RUU.js} +3 -2
  31. package/dist/server/harness-install-cli.js +1 -1
  32. package/dist/server/index.js +15110 -16012
  33. package/dist/server/local-turn-XXOSZHMT.js +12 -0
  34. package/package.json +14 -11
  35. package/dist/client/assets/OAuthDesktopReturnNotice-C5D90OSm.js +0 -11
  36. package/dist/client/assets/OAuthDesktopReturnNotice-C95FI7VH.css +0 -2
  37. package/dist/client/assets/index-yOjxp36p.js +0 -4
@@ -0,0 +1,194 @@
1
+ // shared/hosted-web-timeouts.ts
2
+ var WEB_CONNECT_TIMEOUT_MS = 1e4;
3
+ var WEB_CALL_TIMEOUT_MS = 3e4;
4
+ var WEB_STREAM_TIMEOUT_MS = 12e4;
5
+
6
+ // server/config.ts
7
+ var SERVER_PORT = process.env.SERVER_PORT ? parseInt(process.env.SERVER_PORT, 10) : 6274;
8
+ var SERVER_HOSTNAME = process.env.ENVIRONMENT === "dev" ? "localhost" : "127.0.0.1";
9
+ var LOCAL_SERVER_ADDR = `http://localhost:${SERVER_PORT}`;
10
+ var HOSTED_MODE = process.env.VITE_MCPJAM_HOSTED_MODE === "true";
11
+ var LOCAL_BROWSER_ENABLED = !HOSTED_MODE && process.env.MCPJAM_LOCAL_BROWSER_ENABLED !== "false";
12
+ var LOCAL_COMPUTER_ENABLED = !HOSTED_MODE && process.env.MCPJAM_LOCAL_COMPUTER_ENABLED !== "false";
13
+ var LOCAL_HARNESS_ENABLED = !HOSTED_MODE && process.env.MCPJAM_LOCAL_HARNESS_ENABLED !== "false";
14
+ var SCHEDULED_EVALS_WRITE_ENABLED = process.env.MCPJAM_SCHEDULED_EVALS_WRITE_ENABLED === "true";
15
+ var WEBMCP_INSPECTOR_ENABLED = process.env.MCPJAM_WEBMCP_INSPECTOR_ENABLED !== "false";
16
+ function webmcpInspectorHostedEnabled(env = process.env) {
17
+ return HOSTED_MODE && env.MCPJAM_WEBMCP_INSPECTOR_HOSTED_ENABLED === "1";
18
+ }
19
+ function webmcpInspectorReachable(env = process.env) {
20
+ if (!WEBMCP_INSPECTOR_ENABLED) return false;
21
+ return !HOSTED_MODE || webmcpInspectorHostedEnabled(env);
22
+ }
23
+ function hostedBrowserEnabled(env = process.env) {
24
+ return env.HOSTED_BROWSER_TOOLS_ENABLED === "1";
25
+ }
26
+ function browserShapeRedactionEnabled(env = process.env) {
27
+ return env.MCPJAM_BROWSER_SHAPE_REDACTION !== "0";
28
+ }
29
+ function browserSecretPlaceholdersEnabled(env = process.env) {
30
+ return env.MCPJAM_BROWSER_SECRET_PLACEHOLDERS === "1";
31
+ }
32
+ function webmcpPageToolsMode(env = process.env) {
33
+ return env.MCPJAM_WEBMCP_PAGE_TOOLS === "verbs" ? "verbs" : "first_class";
34
+ }
35
+ var EVAL_WIDGET_MODEL_CONTEXT = process.env.MCPJAM_EVAL_WIDGET_MODEL_CONTEXT === "true";
36
+ var WEB_ALLOWED_ORIGINS = (process.env.WEB_ALLOWED_ORIGINS ?? "").split(",").map((origin) => origin.trim()).filter((origin) => origin.length > 0);
37
+ var CLIENT_PORT = process.env.CLIENT_PORT || "5173";
38
+ var DEFAULT_CORS_ORIGINS = [
39
+ `http://localhost:${CLIENT_PORT}`,
40
+ // Vite dev server
41
+ "http://localhost:8080",
42
+ // Electron renderer dev server
43
+ `http://localhost:${SERVER_PORT}`,
44
+ // Hono server
45
+ `http://127.0.0.1:${SERVER_PORT}`,
46
+ // Hono server production
47
+ "https://staging.mcpjam.com"
48
+ // Hosted deployment
49
+ ];
50
+ var CORS_ORIGINS = HOSTED_MODE && WEB_ALLOWED_ORIGINS.length > 0 ? WEB_ALLOWED_ORIGINS : Array.from(/* @__PURE__ */ new Set([...DEFAULT_CORS_ORIGINS, ...WEB_ALLOWED_ORIGINS]));
51
+ var CORS_OPTIONS = {
52
+ origin: CORS_ORIGINS,
53
+ credentials: true,
54
+ exposeHeaders: ["x-request-id", "x-mcpjam-error-origin", "X-MCPJam-Session"]
55
+ };
56
+ var ELICITATION_FORM_TTL_MS = 5 * 6e4;
57
+ var ELICITATION_URL_CONSENT_TTL_MS = 2 * 6e4;
58
+ var ELICITATION_POLL_INTERVAL_MS = 1e3;
59
+ var ELICITATION_POLL_JITTER_MS = 250;
60
+ var ELICITATION_POLL_MAX_FAILURES = 5;
61
+ var ELICITATION_SERVICE_ROUTE_TIMEOUT_MS = 1e4;
62
+ var ELICITATION_TIMEOUT_EXTENSION_MS = ELICITATION_FORM_TTL_MS + 3e4;
63
+ var MRTR_CONTINUATION_TTL_MS = 10 * 6e4;
64
+ var MRTR_CONTINUATION_ROUTE_TIMEOUT_MS = 1e4;
65
+ var MRTR_CONTINUATION_LEASE_TTL_MS = 4 * MRTR_CONTINUATION_ROUTE_TIMEOUT_MS + WEB_CALL_TIMEOUT_MS + 6e4;
66
+ var MRTR_RESUME_STATE_MAX_BYTES = 128 * 1024;
67
+ var MRTR_DISPLAY_FIELD_MAX_BYTES = 16 * 1024;
68
+ var MRTR_RESPONSE_CONTENT_MAX_BYTES = 64 * 1024;
69
+ var MRTR_TEARDOWN_TIMEOUT_MS = 5e3;
70
+ var MCPJAM_HOSTED_ORIGIN = process.env.MCPJAM_HOSTED_ORIGIN?.replace(/\/+$/, "") || "https://app.mcpjam.com";
71
+ var MCPJAM_PUBLIC_ORIGIN = process.env.MCPJAM_PUBLIC_ORIGIN?.replace(/\/+$/, "") || null;
72
+ function parseAllowedHosts(raw) {
73
+ return raw ? raw.split(",").map((h) => h.trim().toLowerCase()).filter((h) => h.length > 0) : [];
74
+ }
75
+ var ALLOWED_HOSTS = parseAllowedHosts(
76
+ process.env.MCPJAM_ALLOWED_HOSTS
77
+ );
78
+ var CANIUSE_LANDING_HOSTS = new Set(
79
+ (process.env.CANIUSE_LANDING_HOSTS ?? "caniuse.dev,www.caniuse.dev").split(",").map((h) => h.trim().toLowerCase()).filter((h) => h.length > 0)
80
+ );
81
+ var SCORE_LANDING_HOSTS = new Set(
82
+ (process.env.SCORE_LANDING_HOSTS ?? "score.mcpjam.com,www.score.mcpjam.com").split(",").map((h) => h.trim().toLowerCase()).filter((h) => h.length > 0)
83
+ );
84
+ var BARE_HOSTNAME = /^[a-z0-9]([a-z0-9-]*[a-z0-9])?(\.[a-z0-9]([a-z0-9-]*[a-z0-9])?)*$/;
85
+ function parseSandboxHosts(raw) {
86
+ return new Set(
87
+ raw.split(",").map((h) => h.trim().toLowerCase()).filter((h) => BARE_HOSTNAME.test(h))
88
+ );
89
+ }
90
+ var SANDBOX_HOSTS = parseSandboxHosts(
91
+ process.env.SANDBOX_HOSTS ?? "sandbox.mcpjam.com,sandbox-staging.mcpjam.com"
92
+ );
93
+ function resolveSandboxIsolation(sandboxHosts = SANDBOX_HOSTS, hostedOrigin = MCPJAM_HOSTED_ORIGIN) {
94
+ if (sandboxHosts.size === 0) {
95
+ return "unset";
96
+ }
97
+ let appHost;
98
+ try {
99
+ appHost = new URL(hostedOrigin).hostname.toLowerCase();
100
+ } catch {
101
+ return "unset";
102
+ }
103
+ return sandboxHosts.has(appHost) ? "same-origin" : "ok";
104
+ }
105
+
106
+ // server/utils/local-capability.ts
107
+ import { createHash, randomBytes, timingSafeEqual } from "crypto";
108
+ import { mkdir, writeFile, rename, chmod } from "fs/promises";
109
+ import { dirname } from "path";
110
+ function mintCapabilityToken() {
111
+ return randomBytes(32).toString("base64url");
112
+ }
113
+ function capabilityFingerprint(token) {
114
+ return createHash("sha256").update(token, "utf8").digest("hex");
115
+ }
116
+ function capabilityMatches(token, hash) {
117
+ if (typeof token !== "string" || token.length < 16 || token.length > 256 || !/^[0-9a-f]{64}$/.test(hash))
118
+ return false;
119
+ return timingSafeEqual(
120
+ Buffer.from(capabilityFingerprint(token), "hex"),
121
+ Buffer.from(hash, "hex")
122
+ );
123
+ }
124
+ function createCapabilityMutationLock() {
125
+ let chain = Promise.resolve();
126
+ return function withLock(op) {
127
+ const run = chain.then(op, op);
128
+ chain = run.then(
129
+ () => void 0,
130
+ () => void 0
131
+ );
132
+ return run;
133
+ };
134
+ }
135
+ async function persistCapabilityState(file, state) {
136
+ await mkdir(dirname(file), { recursive: true, mode: 448 });
137
+ const tmp = `${file}.tmp`;
138
+ await writeFile(tmp, JSON.stringify(state), { mode: 384 });
139
+ await chmod(tmp, 384);
140
+ await rename(tmp, file);
141
+ }
142
+
143
+ export {
144
+ WEB_CONNECT_TIMEOUT_MS,
145
+ WEB_CALL_TIMEOUT_MS,
146
+ WEB_STREAM_TIMEOUT_MS,
147
+ SERVER_PORT,
148
+ SERVER_HOSTNAME,
149
+ LOCAL_SERVER_ADDR,
150
+ HOSTED_MODE,
151
+ LOCAL_BROWSER_ENABLED,
152
+ LOCAL_COMPUTER_ENABLED,
153
+ LOCAL_HARNESS_ENABLED,
154
+ SCHEDULED_EVALS_WRITE_ENABLED,
155
+ WEBMCP_INSPECTOR_ENABLED,
156
+ webmcpInspectorHostedEnabled,
157
+ webmcpInspectorReachable,
158
+ hostedBrowserEnabled,
159
+ browserShapeRedactionEnabled,
160
+ browserSecretPlaceholdersEnabled,
161
+ webmcpPageToolsMode,
162
+ EVAL_WIDGET_MODEL_CONTEXT,
163
+ WEB_ALLOWED_ORIGINS,
164
+ CORS_ORIGINS,
165
+ CORS_OPTIONS,
166
+ ELICITATION_FORM_TTL_MS,
167
+ ELICITATION_URL_CONSENT_TTL_MS,
168
+ ELICITATION_POLL_INTERVAL_MS,
169
+ ELICITATION_POLL_JITTER_MS,
170
+ ELICITATION_POLL_MAX_FAILURES,
171
+ ELICITATION_SERVICE_ROUTE_TIMEOUT_MS,
172
+ ELICITATION_TIMEOUT_EXTENSION_MS,
173
+ MRTR_CONTINUATION_TTL_MS,
174
+ MRTR_CONTINUATION_ROUTE_TIMEOUT_MS,
175
+ MRTR_CONTINUATION_LEASE_TTL_MS,
176
+ MRTR_RESUME_STATE_MAX_BYTES,
177
+ MRTR_DISPLAY_FIELD_MAX_BYTES,
178
+ MRTR_RESPONSE_CONTENT_MAX_BYTES,
179
+ MRTR_TEARDOWN_TIMEOUT_MS,
180
+ MCPJAM_HOSTED_ORIGIN,
181
+ MCPJAM_PUBLIC_ORIGIN,
182
+ parseAllowedHosts,
183
+ ALLOWED_HOSTS,
184
+ CANIUSE_LANDING_HOSTS,
185
+ SCORE_LANDING_HOSTS,
186
+ SANDBOX_HOSTS,
187
+ resolveSandboxIsolation,
188
+ mintCapabilityToken,
189
+ capabilityFingerprint,
190
+ capabilityMatches,
191
+ createCapabilityMutationLock,
192
+ persistCapabilityState
193
+ };
194
+ //# sourceMappingURL=chunk-SH24KJBI.js.map
@@ -1,10 +1,11 @@
1
1
  import {
2
2
  createBrowserConsentLifetime,
3
3
  invalidateBrowserConsentLifetimes
4
- } from "./chunk-5RE7KJ2M.js";
4
+ } from "./chunk-4PYR7GMQ.js";
5
+ import "./chunk-SH24KJBI.js";
5
6
  import "./chunk-PZ5AY32C.js";
6
7
  export {
7
8
  createBrowserConsentLifetime,
8
9
  invalidateBrowserConsentLifetimes
9
10
  };
10
- //# sourceMappingURL=consent-lifetime-PTGAZQSU.js.map
11
+ //# sourceMappingURL=consent-lifetime-M7PS6RUU.js.map
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  installRuntimePack,
3
3
  readRuntimeInstallStatus
4
- } from "./chunk-WGJHSGJP.js";
4
+ } from "./chunk-QA6VJT6A.js";
5
5
  import "./chunk-PZ5AY32C.js";
6
6
 
7
7
  // server/harness-install-cli.ts