@mcp-use/inspector 20.0.0-beta.16 → 20.0.0-beta.17
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/README.md +25 -58
- package/dist/app/inspector.css +2 -0
- package/dist/{cdn → app}/inspector.js +7855 -7629
- package/dist/cli.js +292 -286
- package/dist/client/auth/manufact-auth.d.ts +1 -1
- package/dist/client/auth/manufact-auth.d.ts.map +1 -1
- package/dist/client/index.js +1 -1
- package/dist/server/{chunk-XCNS5CIW.js → chunk-2K7OKCVV.js} +67 -67
- package/dist/server/{chunk-UJLXHNQP.js → chunk-EKD2XITW.js} +3 -2
- package/dist/server/{chunk-FHC5ZGMM.js → chunk-EPPZCSJQ.js} +23 -77
- package/dist/server/chunk-JWDVSQED.js +156 -0
- package/dist/server/{chunk-M5TZA42I.js → chunk-PZF2PUDE.js} +15 -11
- package/dist/server/{chunk-R5ZEVRE5.js → chunk-RFJAZOK7.js} +27 -8
- package/dist/server/{chunk-OWR2BIBW.js → chunk-RKFQG67Z.js} +1 -3
- package/dist/server/{chunk-K2F2AJOI.js → chunk-V5A5XLFJ.js} +148 -5
- package/dist/server/cli.js +11 -16
- package/dist/server/create-dev-api-app.d.ts.map +1 -1
- package/dist/server/create-dev-api-app.js +4 -4
- package/dist/server/favicon-links.d.ts +2 -2
- package/dist/server/favicon-links.d.ts.map +1 -1
- package/dist/server/index.d.ts +2 -3
- package/dist/server/index.d.ts.map +1 -1
- package/dist/server/index.js +8 -13
- package/dist/server/{cdn-shell.d.ts → inspector-shell.d.ts} +7 -5
- package/dist/server/inspector-shell.d.ts.map +1 -0
- package/dist/server/inspector-shell.js +10 -0
- package/dist/server/middleware.d.ts +52 -27
- package/dist/server/middleware.d.ts.map +1 -1
- package/dist/server/middleware.js +8 -10
- package/dist/server/proxy/index.js +2 -2
- package/dist/server/proxy/mcp-proxy.d.ts.map +1 -1
- package/dist/server/proxy/mcp-proxy.js +2 -2
- package/dist/server/proxy/oauth-proxy.d.ts +2 -0
- package/dist/server/proxy/oauth-proxy.d.ts.map +1 -1
- package/dist/server/proxy/oauth-proxy.js +1 -1
- package/dist/server/proxy-routes.d.ts.map +1 -1
- package/dist/server/proxy-routes.js +3 -3
- package/dist/server/server.js +4 -4
- package/dist/server/static-assets.d.ts +3 -3
- package/dist/server/static-assets.d.ts.map +1 -1
- package/dist/server/static-assets.js +3 -3
- package/dist/server/version.js +1 -1
- package/dist/server/vite-dev-api-plugin.js +4 -4
- package/dist/web/assets/index-Dj_E94k4.css +1 -0
- package/dist/web/assets/index-O3gsi3le.js +643 -0
- package/dist/web/index.html +3 -3
- package/package.json +30 -11
- package/dist/cdn/inspector.css +0 -2
- package/dist/server/asset-urls.d.ts +0 -15
- package/dist/server/asset-urls.d.ts.map +0 -1
- package/dist/server/asset-urls.js +0 -13
- package/dist/server/cdn-shell.d.ts.map +0 -1
- package/dist/server/cdn-shell.js +0 -12
- package/dist/server/chunk-J4FNYLBF.js +0 -54
- package/dist/server/chunk-JZT7N2BJ.js +0 -58
- package/dist/server/chunk-QXOCY5ZE.js +0 -72
- package/dist/server/favicon-static.d.ts +0 -4
- package/dist/server/favicon-static.d.ts.map +0 -1
- package/dist/server/favicon-static.js +0 -8
- package/dist/web/assets/index-BgHcVJO3.js +0 -643
- package/dist/web/assets/index-bCIH1Sdx.css +0 -1
- /package/dist/{cdn → app}/apple-touch-icon.png +0 -0
- /package/dist/{cdn → app}/favicon-96x96.png +0 -0
- /package/dist/{cdn → app}/favicon-black.svg +0 -0
- /package/dist/{cdn → app}/favicon-white.svg +0 -0
- /package/dist/{cdn → app}/favicon.ico +0 -0
- /package/dist/{cdn → app}/favicon.svg +0 -0
- /package/dist/{cdn → app}/providers/anthropic.png +0 -0
- /package/dist/{cdn → app}/providers/google.png +0 -0
- /package/dist/{cdn → app}/providers/openai.png +0 -0
- /package/dist/{cdn → app}/site.webmanifest +0 -0
- /package/dist/{cdn → app}/web-app-manifest-192x192.png +0 -0
- /package/dist/{cdn → app}/web-app-manifest-512x512.png +0 -0
|
@@ -1,11 +1,10 @@
|
|
|
1
1
|
import {
|
|
2
2
|
registerInspectorProxyRoutes
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-EKD2XITW.js";
|
|
4
4
|
|
|
5
5
|
// src/server/create-dev-api-app.ts
|
|
6
6
|
import { Hono } from "hono";
|
|
7
7
|
import { cors } from "hono/cors";
|
|
8
|
-
import { logger } from "hono/logger";
|
|
9
8
|
function createDevApiApp() {
|
|
10
9
|
const app = new Hono();
|
|
11
10
|
app.use(
|
|
@@ -27,7 +26,6 @@ function createDevApiApp() {
|
|
|
27
26
|
exposeHeaders: ["*"]
|
|
28
27
|
})
|
|
29
28
|
);
|
|
30
|
-
app.use("/inspector/api/*", logger());
|
|
31
29
|
registerInspectorProxyRoutes(app, {
|
|
32
30
|
oauthProxyAllowedOrigins: [],
|
|
33
31
|
oauthProxyAllowLoopback: true
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
// src/server/proxy/oauth-proxy.ts
|
|
2
2
|
import { lookup } from "dns/promises";
|
|
3
|
+
import { Buffer } from "buffer";
|
|
3
4
|
import { isIP } from "net";
|
|
4
5
|
var SAFE_REQUEST_HEADERS = /* @__PURE__ */ new Set([
|
|
5
6
|
"accept",
|
|
@@ -24,6 +25,8 @@ var ENDPOINT_FIELDS = [
|
|
|
24
25
|
];
|
|
25
26
|
var BINDING_TTL_MS = 10 * 60 * 1e3;
|
|
26
27
|
var MAX_BINDINGS = 100;
|
|
28
|
+
var CONFIDENTIAL_CLIENT_TTL_MS = 24 * 60 * 60 * 1e3;
|
|
29
|
+
var MAX_CONFIDENTIAL_CLIENTS = 500;
|
|
27
30
|
function mountOAuthProxy(app, options = {}) {
|
|
28
31
|
const {
|
|
29
32
|
basePath = "/oauth",
|
|
@@ -32,15 +35,17 @@ function mountOAuthProxy(app, options = {}) {
|
|
|
32
35
|
timeoutMs = 1e4,
|
|
33
36
|
maxRequestBodyBytes = 64 * 1024,
|
|
34
37
|
maxResponseBodyBytes = 1024 * 1024,
|
|
38
|
+
callbackPath = "/oauth/callback",
|
|
35
39
|
enableLogging = true,
|
|
36
40
|
authenticate,
|
|
37
41
|
validateServerUrl
|
|
38
42
|
} = options;
|
|
39
43
|
const origins = new Set(allowedOrigins.map(normalizeOrigin));
|
|
40
44
|
const bindings = /* @__PURE__ */ new Map();
|
|
45
|
+
const confidentialClients = /* @__PURE__ */ new Map();
|
|
41
46
|
app.use(`${basePath}/*`, async (c, next) => {
|
|
42
47
|
const origin = c.req.header("Origin");
|
|
43
|
-
if (origin && !isAllowedOrigin(origin, c
|
|
48
|
+
if (origin && !isAllowedOrigin(origin, c, origins)) {
|
|
44
49
|
return c.json({ error: "Origin not allowed" }, 403);
|
|
45
50
|
}
|
|
46
51
|
if (c.req.method === "OPTIONS") {
|
|
@@ -197,7 +202,24 @@ function mountOAuthProxy(app, options = {}) {
|
|
|
197
202
|
}
|
|
198
203
|
try {
|
|
199
204
|
const headers = filterRequestHeaders(request.headers);
|
|
200
|
-
|
|
205
|
+
let body = serializeBody(request.body, headers);
|
|
206
|
+
if (endpointKind === "registration") {
|
|
207
|
+
const publicOrigin = normalizeOrigin(
|
|
208
|
+
c.req.header("Origin") ?? new URL(c.req.url).origin
|
|
209
|
+
);
|
|
210
|
+
body = enforceRegistrationRedirectUri(
|
|
211
|
+
body,
|
|
212
|
+
headers,
|
|
213
|
+
new URL(callbackPath, publicOrigin).toString()
|
|
214
|
+
);
|
|
215
|
+
} else {
|
|
216
|
+
body = applyConfidentialClientAuthentication({
|
|
217
|
+
body,
|
|
218
|
+
headers,
|
|
219
|
+
bindingKey,
|
|
220
|
+
clients: confidentialClients
|
|
221
|
+
});
|
|
222
|
+
}
|
|
201
223
|
if (new TextEncoder().encode(body ?? "").byteLength > maxRequestBodyBytes) {
|
|
202
224
|
return c.json({ error: "OAuth request body too large" }, 413);
|
|
203
225
|
}
|
|
@@ -225,6 +247,14 @@ function mountOAuthProxy(app, options = {}) {
|
|
|
225
247
|
} catch {
|
|
226
248
|
}
|
|
227
249
|
}
|
|
250
|
+
if (endpointKind === "registration" && upstream.ok && responseBody && typeof responseBody === "object" && !Array.isArray(responseBody)) {
|
|
251
|
+
responseBody = retainConfidentialClient({
|
|
252
|
+
responseBody,
|
|
253
|
+
binding,
|
|
254
|
+
bindingKey,
|
|
255
|
+
clients: confidentialClients
|
|
256
|
+
});
|
|
257
|
+
}
|
|
228
258
|
return c.json({
|
|
229
259
|
status: upstream.status,
|
|
230
260
|
statusText: upstream.statusText,
|
|
@@ -331,6 +361,7 @@ async function bindProtectedResource(metadata, serverUrl, binding, allowLoopback
|
|
|
331
361
|
}
|
|
332
362
|
binding.authorizationServers = issuers;
|
|
333
363
|
binding.endpoints.clear();
|
|
364
|
+
binding.tokenEndpointAuthMethods.clear();
|
|
334
365
|
}
|
|
335
366
|
async function bindAuthorizationServer(metadata, expectedIssuer, binding, allowLoopback) {
|
|
336
367
|
if (typeof metadata.issuer !== "string" || canonicalUrl(new URL(metadata.issuer)) !== expectedIssuer) {
|
|
@@ -339,6 +370,11 @@ async function bindAuthorizationServer(metadata, expectedIssuer, binding, allowL
|
|
|
339
370
|
);
|
|
340
371
|
}
|
|
341
372
|
binding.endpoints.clear();
|
|
373
|
+
binding.tokenEndpointAuthMethods = new Set(
|
|
374
|
+
Array.isArray(metadata.token_endpoint_auth_methods_supported) ? metadata.token_endpoint_auth_methods_supported.filter(
|
|
375
|
+
(method) => typeof method === "string"
|
|
376
|
+
) : []
|
|
377
|
+
);
|
|
342
378
|
for (const [field, kind] of ENDPOINT_FIELDS) {
|
|
343
379
|
const value = metadata[field];
|
|
344
380
|
if (value === void 0) continue;
|
|
@@ -435,7 +471,17 @@ function filterResponseHeaders(headers) {
|
|
|
435
471
|
}
|
|
436
472
|
function serializeBody(body, headers) {
|
|
437
473
|
if (body === void 0 || body === null) return void 0;
|
|
438
|
-
if (typeof body === "string")
|
|
474
|
+
if (typeof body === "string") {
|
|
475
|
+
if (!headers.has("content-type")) {
|
|
476
|
+
try {
|
|
477
|
+
JSON.parse(body);
|
|
478
|
+
headers.set("content-type", "application/json");
|
|
479
|
+
} catch {
|
|
480
|
+
headers.set("content-type", "application/x-www-form-urlencoded");
|
|
481
|
+
}
|
|
482
|
+
}
|
|
483
|
+
return body;
|
|
484
|
+
}
|
|
439
485
|
const contentType = headers.get("content-type") ?? "";
|
|
440
486
|
if (contentType.includes("application/x-www-form-urlencoded") && typeof body === "object" && !Array.isArray(body)) {
|
|
441
487
|
const params = new URLSearchParams();
|
|
@@ -451,6 +497,77 @@ function serializeBody(body, headers) {
|
|
|
451
497
|
}
|
|
452
498
|
return JSON.stringify(body);
|
|
453
499
|
}
|
|
500
|
+
function confidentialClientKey(bindingKey, clientId) {
|
|
501
|
+
return `${bindingKey}\0${clientId}`;
|
|
502
|
+
}
|
|
503
|
+
function retainConfidentialClient(options) {
|
|
504
|
+
const { responseBody, binding, bindingKey, clients } = options;
|
|
505
|
+
const clientId = responseBody.client_id;
|
|
506
|
+
const clientSecret = responseBody.client_secret;
|
|
507
|
+
if (typeof clientId !== "string" || typeof clientSecret !== "string") {
|
|
508
|
+
return responseBody;
|
|
509
|
+
}
|
|
510
|
+
const returnedMethod = responseBody.token_endpoint_auth_method;
|
|
511
|
+
const authMethod = returnedMethod === "client_secret_post" || returnedMethod === "client_secret_basic" ? returnedMethod : binding.tokenEndpointAuthMethods.has("client_secret_basic") ? "client_secret_basic" : "client_secret_post";
|
|
512
|
+
const upstreamExpiry = responseBody.client_secret_expires_at;
|
|
513
|
+
const expiresAt = upstreamExpiry === 0 ? Number.POSITIVE_INFINITY : typeof upstreamExpiry === "number" && upstreamExpiry > 0 ? upstreamExpiry * 1e3 : Date.now() + CONFIDENTIAL_CLIENT_TTL_MS;
|
|
514
|
+
pruneConfidentialClients(clients);
|
|
515
|
+
clients.set(confidentialClientKey(bindingKey, clientId), {
|
|
516
|
+
clientSecret,
|
|
517
|
+
authMethod,
|
|
518
|
+
expiresAt
|
|
519
|
+
});
|
|
520
|
+
while (clients.size > MAX_CONFIDENTIAL_CLIENTS) {
|
|
521
|
+
const oldest = clients.keys().next().value;
|
|
522
|
+
if (!oldest) break;
|
|
523
|
+
clients.delete(oldest);
|
|
524
|
+
}
|
|
525
|
+
const browserSafe = { ...responseBody };
|
|
526
|
+
delete browserSafe.client_secret;
|
|
527
|
+
delete browserSafe.client_secret_expires_at;
|
|
528
|
+
browserSafe.token_endpoint_auth_method = "none";
|
|
529
|
+
return browserSafe;
|
|
530
|
+
}
|
|
531
|
+
function applyConfidentialClientAuthentication(options) {
|
|
532
|
+
const { body, headers, bindingKey, clients } = options;
|
|
533
|
+
if (!body || !(headers.get("content-type") ?? "").includes(
|
|
534
|
+
"application/x-www-form-urlencoded"
|
|
535
|
+
)) {
|
|
536
|
+
return body;
|
|
537
|
+
}
|
|
538
|
+
const params = new URLSearchParams(body);
|
|
539
|
+
const clientId = params.get("client_id");
|
|
540
|
+
if (!clientId) return body;
|
|
541
|
+
const key = confidentialClientKey(bindingKey, clientId);
|
|
542
|
+
const client = clients.get(key);
|
|
543
|
+
if (!client) return body;
|
|
544
|
+
if (client.expiresAt <= Date.now()) {
|
|
545
|
+
clients.delete(key);
|
|
546
|
+
return body;
|
|
547
|
+
}
|
|
548
|
+
params.delete("client_secret");
|
|
549
|
+
if (client.authMethod === "client_secret_basic") {
|
|
550
|
+
const encoded = Buffer.from(
|
|
551
|
+
`${encodeOAuthClientCredential(clientId)}:${encodeOAuthClientCredential(client.clientSecret)}`,
|
|
552
|
+
"utf8"
|
|
553
|
+
).toString("base64");
|
|
554
|
+
headers.set("authorization", `Basic ${encoded}`);
|
|
555
|
+
} else {
|
|
556
|
+
headers.delete("authorization");
|
|
557
|
+
params.set("client_id", clientId);
|
|
558
|
+
params.set("client_secret", client.clientSecret);
|
|
559
|
+
}
|
|
560
|
+
return params.toString();
|
|
561
|
+
}
|
|
562
|
+
function encodeOAuthClientCredential(value) {
|
|
563
|
+
return new URLSearchParams({ value }).toString().slice("value=".length);
|
|
564
|
+
}
|
|
565
|
+
function pruneConfidentialClients(clients) {
|
|
566
|
+
const now = Date.now();
|
|
567
|
+
for (const [key, client] of clients) {
|
|
568
|
+
if (client.expiresAt <= now) clients.delete(key);
|
|
569
|
+
}
|
|
570
|
+
}
|
|
454
571
|
async function readRequestCapped(request, maxBytes) {
|
|
455
572
|
const declared = Number(request.headers.get("content-length"));
|
|
456
573
|
if (Number.isFinite(declared) && declared > maxBytes) {
|
|
@@ -510,6 +627,7 @@ function getBinding(bindings, key) {
|
|
|
510
627
|
return {
|
|
511
628
|
authorizationServers: /* @__PURE__ */ new Set(),
|
|
512
629
|
endpoints: /* @__PURE__ */ new Map(),
|
|
630
|
+
tokenEndpointAuthMethods: /* @__PURE__ */ new Set(),
|
|
513
631
|
updatedAt: Date.now()
|
|
514
632
|
};
|
|
515
633
|
}
|
|
@@ -532,6 +650,23 @@ function canonicalUrl(url) {
|
|
|
532
650
|
}
|
|
533
651
|
return copy.toString().replace(/\/$/, "");
|
|
534
652
|
}
|
|
653
|
+
function enforceRegistrationRedirectUri(body, headers, callbackUrl) {
|
|
654
|
+
if (!body) return body;
|
|
655
|
+
const contentType = headers.get("content-type") ?? "";
|
|
656
|
+
if (!contentType.includes("json")) return body;
|
|
657
|
+
try {
|
|
658
|
+
const parsed = JSON.parse(body);
|
|
659
|
+
if (!parsed || typeof parsed !== "object" || Array.isArray(parsed)) {
|
|
660
|
+
return body;
|
|
661
|
+
}
|
|
662
|
+
return JSON.stringify({
|
|
663
|
+
...parsed,
|
|
664
|
+
redirect_uris: [callbackUrl]
|
|
665
|
+
});
|
|
666
|
+
} catch {
|
|
667
|
+
return body;
|
|
668
|
+
}
|
|
669
|
+
}
|
|
535
670
|
function normalizeOrigin(origin) {
|
|
536
671
|
const url = new URL(origin);
|
|
537
672
|
if (url.pathname !== "/" || url.search || url.hash) {
|
|
@@ -539,10 +674,18 @@ function normalizeOrigin(origin) {
|
|
|
539
674
|
}
|
|
540
675
|
return url.origin;
|
|
541
676
|
}
|
|
542
|
-
function isAllowedOrigin(origin,
|
|
677
|
+
function isAllowedOrigin(origin, c, allowed) {
|
|
543
678
|
try {
|
|
544
679
|
const normalized = normalizeOrigin(origin);
|
|
545
|
-
|
|
680
|
+
if (normalized === new URL(c.req.url).origin || allowed.has(normalized)) {
|
|
681
|
+
return true;
|
|
682
|
+
}
|
|
683
|
+
const originUrl = new URL(normalized);
|
|
684
|
+
const forwardedHost = c.req.header("x-forwarded-host")?.split(",")[0]?.trim();
|
|
685
|
+
const requestHost = forwardedHost || c.req.header("host");
|
|
686
|
+
if (!requestHost || originUrl.host !== requestHost) return false;
|
|
687
|
+
const forwardedProto = c.req.header("x-forwarded-proto")?.split(",")[0]?.trim();
|
|
688
|
+
return !forwardedProto || `${forwardedProto}:` === originUrl.protocol;
|
|
546
689
|
} catch {
|
|
547
690
|
return false;
|
|
548
691
|
}
|
package/dist/server/cli.js
CHANGED
|
@@ -4,28 +4,25 @@ import {
|
|
|
4
4
|
isValidUrl
|
|
5
5
|
} from "./chunk-KD7K27XK.js";
|
|
6
6
|
import {
|
|
7
|
-
|
|
8
|
-
} from "./chunk-
|
|
9
|
-
import "./chunk-
|
|
7
|
+
registerInspectorShell
|
|
8
|
+
} from "./chunk-EPPZCSJQ.js";
|
|
9
|
+
import "./chunk-PZF2PUDE.js";
|
|
10
10
|
import {
|
|
11
11
|
getInspectorVersion
|
|
12
|
-
} from "./chunk-
|
|
13
|
-
import "./chunk-
|
|
12
|
+
} from "./chunk-RFJAZOK7.js";
|
|
13
|
+
import "./chunk-WFT4JHYI.js";
|
|
14
14
|
import {
|
|
15
15
|
registerInspectorProxyRoutes
|
|
16
|
-
} from "./chunk-
|
|
16
|
+
} from "./chunk-EKD2XITW.js";
|
|
17
17
|
import "./chunk-IKTZUWSX.js";
|
|
18
|
-
import "./chunk-
|
|
19
|
-
import "./chunk-
|
|
20
|
-
import "./chunk-J4FNYLBF.js";
|
|
21
|
-
import "./chunk-WFT4JHYI.js";
|
|
18
|
+
import "./chunk-2K7OKCVV.js";
|
|
19
|
+
import "./chunk-V5A5XLFJ.js";
|
|
22
20
|
import "./chunk-PKBMQBKP.js";
|
|
23
21
|
|
|
24
22
|
// src/server/cli.ts
|
|
25
23
|
import { serve } from "@hono/node-server";
|
|
26
24
|
import { Hono } from "hono";
|
|
27
25
|
import { cors } from "hono/cors";
|
|
28
|
-
import { logger } from "hono/logger";
|
|
29
26
|
import open from "open";
|
|
30
27
|
var args = process.argv.slice(2);
|
|
31
28
|
var mcpUrl;
|
|
@@ -98,15 +95,13 @@ app.use(
|
|
|
98
95
|
exposeHeaders: ["*"]
|
|
99
96
|
})
|
|
100
97
|
);
|
|
101
|
-
app.use("/inspector/api/proxy/*", logger());
|
|
102
|
-
var inspectorMode = process.env.MCP_INSPECTOR_MODE ?? (process.env.RAILWAY_ENVIRONMENT_NAME ? "cloud" : "standalone");
|
|
103
98
|
registerInspectorProxyRoutes(app, {
|
|
104
99
|
autoConnectUrl: mcpUrl,
|
|
105
100
|
oauthProxyAllowedOrigins: [],
|
|
106
|
-
oauthProxyAllowLoopback:
|
|
101
|
+
oauthProxyAllowLoopback: true
|
|
107
102
|
});
|
|
108
|
-
|
|
109
|
-
inspectorMode,
|
|
103
|
+
registerInspectorShell(app, {
|
|
104
|
+
inspectorMode: "standalone",
|
|
110
105
|
manufactChatUrl: process.env.MANUFACT_CHAT_URL
|
|
111
106
|
});
|
|
112
107
|
async function startServer() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create-dev-api-app.d.ts","sourceRoot":"","sources":["../../src/server/create-dev-api-app.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"create-dev-api-app.d.ts","sourceRoot":"","sources":["../../src/server/create-dev-api-app.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAI5B,qEAAqE;AACrE,wBAAgB,eAAe,IAAI,IAAI,CA6BtC"}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import {
|
|
2
2
|
createDevApiApp
|
|
3
|
-
} from "./chunk-
|
|
4
|
-
import "./chunk-
|
|
3
|
+
} from "./chunk-RKFQG67Z.js";
|
|
4
|
+
import "./chunk-EKD2XITW.js";
|
|
5
5
|
import "./chunk-IKTZUWSX.js";
|
|
6
|
-
import "./chunk-
|
|
7
|
-
import "./chunk-
|
|
6
|
+
import "./chunk-2K7OKCVV.js";
|
|
7
|
+
import "./chunk-V5A5XLFJ.js";
|
|
8
8
|
import "./chunk-PKBMQBKP.js";
|
|
9
9
|
export {
|
|
10
10
|
createDevApiApp
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
/** Bust Chrome's aggressive favicon cache when the asset changes. */
|
|
2
2
|
export declare const FAVICON_CACHE_VERSION = "4";
|
|
3
|
-
/** Static favicon assets copied
|
|
3
|
+
/** Static favicon assets copied alongside the Inspector browser bundle. */
|
|
4
4
|
export declare const INSPECTOR_FAVICON_ASSETS: readonly ["favicon.svg", "favicon-96x96.png", "favicon.ico", "apple-touch-icon.png", "site.webmanifest", "web-app-manifest-192x192.png", "web-app-manifest-512x512.png", "favicon-black.svg", "favicon-white.svg"];
|
|
5
5
|
/**
|
|
6
6
|
* Render `<link>` tags for inspector favicons.
|
|
7
7
|
*
|
|
8
8
|
* Uses same-origin `favicon-black.svg` (light icon in all color schemes).
|
|
9
|
-
*
|
|
9
|
+
* Keep favicon URLs on the same package-local asset route as the application.
|
|
10
10
|
*/
|
|
11
11
|
export declare function renderInspectorFaviconLinks(basePath?: string): string;
|
|
12
12
|
//# sourceMappingURL=favicon-links.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"favicon-links.d.ts","sourceRoot":"","sources":["../../src/server/favicon-links.ts"],"names":[],"mappings":"AAAA,qEAAqE;AACrE,eAAO,MAAM,qBAAqB,MAAM,CAAC;AAEzC,
|
|
1
|
+
{"version":3,"file":"favicon-links.d.ts","sourceRoot":"","sources":["../../src/server/favicon-links.ts"],"names":[],"mappings":"AAAA,qEAAqE;AACrE,eAAO,MAAM,qBAAqB,MAAM,CAAC;AAEzC,2EAA2E;AAC3E,eAAO,MAAM,wBAAwB,oNAU3B,CAAC;AAEX;;;;;GAKG;AACH,wBAAgB,2BAA2B,CAAC,QAAQ,SAAK,GAAG,MAAM,CAIjE"}
|
package/dist/server/index.d.ts
CHANGED
|
@@ -1,10 +1,9 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* MCP Inspector -
|
|
2
|
+
* MCP Inspector - local Fetch handler and framework mounting adapters
|
|
3
3
|
*
|
|
4
4
|
* This is the main entry point for importing the inspector as a library.
|
|
5
5
|
* For standalone server usage, see cli.ts
|
|
6
6
|
*/
|
|
7
|
-
export { mountInspector } from "./middleware.js";
|
|
7
|
+
export { mountInspector, type InspectorFetchHandler, type MountInspectorOptions, } from "./middleware.js";
|
|
8
8
|
export { registerInspectorProxyRoutes, type InspectorProxyRoutesConfig, } from "./proxy-routes.js";
|
|
9
|
-
export { registerInspectorCdnShell, type CdnShellConfig, type InspectorMode, } from "./cdn-shell.js";
|
|
10
9
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/server/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/server/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EACL,cAAc,EACd,KAAK,qBAAqB,EAC1B,KAAK,qBAAqB,GAC3B,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,4BAA4B,EAC5B,KAAK,0BAA0B,GAChC,MAAM,mBAAmB,CAAC"}
|
package/dist/server/index.js
CHANGED
|
@@ -1,23 +1,18 @@
|
|
|
1
1
|
import {
|
|
2
2
|
mountInspector
|
|
3
|
-
} from "./chunk-
|
|
4
|
-
import
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
import "./chunk-
|
|
8
|
-
import "./chunk-R5ZEVRE5.js";
|
|
9
|
-
import "./chunk-JZT7N2BJ.js";
|
|
3
|
+
} from "./chunk-JWDVSQED.js";
|
|
4
|
+
import "./chunk-EPPZCSJQ.js";
|
|
5
|
+
import "./chunk-PZF2PUDE.js";
|
|
6
|
+
import "./chunk-RFJAZOK7.js";
|
|
7
|
+
import "./chunk-WFT4JHYI.js";
|
|
10
8
|
import {
|
|
11
9
|
registerInspectorProxyRoutes
|
|
12
|
-
} from "./chunk-
|
|
10
|
+
} from "./chunk-EKD2XITW.js";
|
|
13
11
|
import "./chunk-IKTZUWSX.js";
|
|
14
|
-
import "./chunk-
|
|
15
|
-
import "./chunk-
|
|
16
|
-
import "./chunk-J4FNYLBF.js";
|
|
17
|
-
import "./chunk-WFT4JHYI.js";
|
|
12
|
+
import "./chunk-2K7OKCVV.js";
|
|
13
|
+
import "./chunk-V5A5XLFJ.js";
|
|
18
14
|
import "./chunk-PKBMQBKP.js";
|
|
19
15
|
export {
|
|
20
16
|
mountInspector,
|
|
21
|
-
registerInspectorCdnShell,
|
|
22
17
|
registerInspectorProxyRoutes
|
|
23
18
|
};
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import type { Hono } from "hono";
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
export type CdnShellConfig = {
|
|
2
|
+
type InspectorMode = "standalone" | "embedded" | "cloud";
|
|
3
|
+
type InspectorShellConfig = {
|
|
5
4
|
basePath?: string;
|
|
6
5
|
devMode?: boolean;
|
|
7
6
|
sandboxOrigin?: string | null;
|
|
@@ -10,9 +9,12 @@ export type CdnShellConfig = {
|
|
|
10
9
|
inspectorMode?: InspectorMode;
|
|
11
10
|
manufactChatUrl?: string | null;
|
|
12
11
|
disableTelemetry?: boolean;
|
|
12
|
+
/** Preserve the standalone CLI's `/` to `/inspector` redirect (default true). */
|
|
13
|
+
rootRedirect?: boolean;
|
|
13
14
|
};
|
|
14
15
|
/**
|
|
15
16
|
* Serve the inspector UI at `${basePath}/inspector`.
|
|
16
17
|
*/
|
|
17
|
-
export declare function
|
|
18
|
-
|
|
18
|
+
export declare function registerInspectorShell(app: Hono, config?: InspectorShellConfig, basePath?: string): void;
|
|
19
|
+
export {};
|
|
20
|
+
//# sourceMappingURL=inspector-shell.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"inspector-shell.d.ts","sourceRoot":"","sources":["../../src/server/inspector-shell.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAW,IAAI,EAAE,MAAM,MAAM,CAAC;AAM1C,KAAK,aAAa,GAAG,YAAY,GAAG,UAAU,GAAG,OAAO,CAAC;AAEzD,KAAK,oBAAoB,GAAG;IAC1B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,6FAA6F;IAC7F,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,eAAe,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,iFAAiF;IACjF,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB,CAAC;AAkJF;;GAEG;AACH,wBAAgB,sBAAsB,CACpC,GAAG,EAAE,IAAI,EACT,MAAM,CAAC,EAAE,oBAAoB,EAC7B,QAAQ,GAAE,MAAW,QAyDtB"}
|
|
@@ -1,40 +1,65 @@
|
|
|
1
1
|
import type { Express } from "express";
|
|
2
2
|
import { Hono } from "hono";
|
|
3
|
-
/**
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
* import { mountInspector } from '@mcp-use/inspector'
|
|
14
|
-
*
|
|
15
|
-
* const server = new MCPServer({ name: 'my-server', version: '1.0.0' })
|
|
16
|
-
* mountInspector(server) // Mounts at /inspector
|
|
17
|
-
* mountInspector(server, { autoConnectUrl: 'http://localhost:3000/mcp' }) // With auto-connect
|
|
18
|
-
* ```
|
|
19
|
-
*/
|
|
20
|
-
export declare function mountInspector(app: Express | Hono, config?: {
|
|
3
|
+
/** Web-standard handler returned by {@link mountInspector}. */
|
|
4
|
+
export type InspectorFetchHandler = (request: globalThis.Request) => Promise<globalThis.Response>;
|
|
5
|
+
/** Configuration shared by framework-neutral and framework-mounted inspectors. */
|
|
6
|
+
export interface MountInspectorOptions {
|
|
7
|
+
/**
|
|
8
|
+
* MCP URL passed to the client for automatic connection. For the returned
|
|
9
|
+
* Fetch handler, omission derives `${request.origin}${basePath}` so localhost
|
|
10
|
+
* and public tunnel URLs both target the listener the browser actually used.
|
|
11
|
+
* Pass `null` to disable auto-connect.
|
|
12
|
+
*/
|
|
21
13
|
autoConnectUrl?: string | null;
|
|
22
14
|
manufactChatUrl?: string | null;
|
|
23
|
-
/** Whether
|
|
15
|
+
/** Whether to enable the same-origin development sandbox (default `true`). */
|
|
24
16
|
devMode?: boolean;
|
|
25
|
-
/** Override the sandbox origin for MCP Apps widgets
|
|
17
|
+
/** Override the sandbox origin for MCP Apps widgets. */
|
|
26
18
|
sandboxOrigin?: string | null;
|
|
27
19
|
/** Explicit cross-origin callers of the OAuth BFF. Same-origin is implicit. */
|
|
28
20
|
oauthProxyAllowedOrigins?: readonly string[];
|
|
29
|
-
/** Allow OAuth
|
|
21
|
+
/** Allow OAuth and MCP proxy requests to loopback targets (default `true`). */
|
|
30
22
|
oauthProxyAllowLoopback?: boolean;
|
|
31
23
|
/**
|
|
32
|
-
*
|
|
33
|
-
*
|
|
34
|
-
*
|
|
35
|
-
* `${basePath}/inspector/api/*`. Injected into the client HTML as
|
|
36
|
-
* `window.__MCP_BASE_PATH__` so the client can derive its own URLs.
|
|
24
|
+
* Server-wide MCP path prefix (default `/mcp`; `""` = root). The Inspector
|
|
25
|
+
* is served from `${basePath}/inspector` and its API from
|
|
26
|
+
* `${basePath}/inspector/api/*`.
|
|
37
27
|
*/
|
|
38
28
|
basePath?: string;
|
|
39
|
-
}
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Create or mount the local MCP Inspector.
|
|
32
|
+
*
|
|
33
|
+
* With options (or no arguments), this returns a framework-neutral Fetch
|
|
34
|
+
* handler. A development server can dispatch Inspector requests to this
|
|
35
|
+
* handler on its existing listener without starting a child process or a
|
|
36
|
+
* second port.
|
|
37
|
+
*
|
|
38
|
+
* Passing an Express or Hono app preserves the v1 mounting API. Hono routes
|
|
39
|
+
* are registered directly; Express receives a narrowly scoped adapter.
|
|
40
|
+
*
|
|
41
|
+
* The UI bundle is always served from this installed package. The same Hono
|
|
42
|
+
* route implementation owns the UI, MCP proxy, OAuth BFF, callback, health,
|
|
43
|
+
* and config routes in every integration.
|
|
44
|
+
*
|
|
45
|
+
* @example Framework-neutral, same-listener use
|
|
46
|
+
* ```typescript
|
|
47
|
+
* const inspector = mountInspector({
|
|
48
|
+
* basePath: "/mcp",
|
|
49
|
+
* autoConnectUrl: "http://localhost:3000/mcp",
|
|
50
|
+
* });
|
|
51
|
+
*
|
|
52
|
+
* const response = await inspector(request);
|
|
53
|
+
* ```
|
|
54
|
+
*
|
|
55
|
+
* @example Legacy Hono or Express mounting
|
|
56
|
+
* ```typescript
|
|
57
|
+
* mountInspector(app, {
|
|
58
|
+
* basePath: "/mcp",
|
|
59
|
+
* autoConnectUrl: "http://localhost:3000/mcp",
|
|
60
|
+
* });
|
|
61
|
+
* ```
|
|
62
|
+
*/
|
|
63
|
+
export declare function mountInspector(options?: MountInspectorOptions): InspectorFetchHandler;
|
|
64
|
+
export declare function mountInspector(app: Express | Hono, options?: MountInspectorOptions): void;
|
|
40
65
|
//# sourceMappingURL=middleware.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"middleware.d.ts","sourceRoot":"","sources":["../../src/server/middleware.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAmC,MAAM,SAAS,CAAC;AACxE,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"middleware.d.ts","sourceRoot":"","sources":["../../src/server/middleware.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAmC,MAAM,SAAS,CAAC;AACxE,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAQ5B,+DAA+D;AAC/D,MAAM,MAAM,qBAAqB,GAAG,CAClC,OAAO,EAAE,UAAU,CAAC,OAAO,KACxB,OAAO,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;AAElC,kFAAkF;AAClF,MAAM,WAAW,qBAAqB;IACpC;;;;;OAKG;IACH,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,eAAe,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,8EAA8E;IAC9E,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,wDAAwD;IACxD,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,+EAA+E;IAC/E,wBAAwB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC7C,+EAA+E;IAC/E,uBAAuB,CAAC,EAAE,OAAO,CAAC;IAClC;;;;OAIG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,wBAAgB,cAAc,CAC5B,OAAO,CAAC,EAAE,qBAAqB,GAC9B,qBAAqB,CAAC;AAEzB,wBAAgB,cAAc,CAC5B,GAAG,EAAE,OAAO,GAAG,IAAI,EACnB,OAAO,CAAC,EAAE,qBAAqB,GAC9B,IAAI,CAAC"}
|
|
@@ -1,16 +1,14 @@
|
|
|
1
1
|
import {
|
|
2
2
|
mountInspector
|
|
3
|
-
} from "./chunk-
|
|
4
|
-
import "./chunk-
|
|
5
|
-
import "./chunk-
|
|
6
|
-
import "./chunk-
|
|
7
|
-
import "./chunk-JZT7N2BJ.js";
|
|
8
|
-
import "./chunk-UJLXHNQP.js";
|
|
9
|
-
import "./chunk-IKTZUWSX.js";
|
|
10
|
-
import "./chunk-XCNS5CIW.js";
|
|
11
|
-
import "./chunk-K2F2AJOI.js";
|
|
12
|
-
import "./chunk-J4FNYLBF.js";
|
|
3
|
+
} from "./chunk-JWDVSQED.js";
|
|
4
|
+
import "./chunk-EPPZCSJQ.js";
|
|
5
|
+
import "./chunk-PZF2PUDE.js";
|
|
6
|
+
import "./chunk-RFJAZOK7.js";
|
|
13
7
|
import "./chunk-WFT4JHYI.js";
|
|
8
|
+
import "./chunk-EKD2XITW.js";
|
|
9
|
+
import "./chunk-IKTZUWSX.js";
|
|
10
|
+
import "./chunk-2K7OKCVV.js";
|
|
11
|
+
import "./chunk-V5A5XLFJ.js";
|
|
14
12
|
import "./chunk-PKBMQBKP.js";
|
|
15
13
|
export {
|
|
16
14
|
mountInspector
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import "../chunk-IKTZUWSX.js";
|
|
2
2
|
import {
|
|
3
3
|
mountMcpProxy
|
|
4
|
-
} from "../chunk-
|
|
4
|
+
} from "../chunk-2K7OKCVV.js";
|
|
5
5
|
import {
|
|
6
6
|
mountOAuthProxy
|
|
7
|
-
} from "../chunk-
|
|
7
|
+
} from "../chunk-V5A5XLFJ.js";
|
|
8
8
|
import "../chunk-PKBMQBKP.js";
|
|
9
9
|
export {
|
|
10
10
|
mountMcpProxy,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mcp-proxy.d.ts","sourceRoot":"","sources":["../../../src/server/proxy/mcp-proxy.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"mcp-proxy.d.ts","sourceRoot":"","sources":["../../../src/server/proxy/mcp-proxy.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAQ1C;;GAEG;AACH,UAAU,eAAe;IACvB;;;;OAIG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd;;;;;;;;;;;OAWG;IACH,YAAY,CAAC,EAAE,CAAC,CAAC,EAAE,OAAO,KAAK,OAAO,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC;IAE1D;;;;;;;;;;;OAWG;IACH,eAAe,CAAC,EAAE,CAChB,SAAS,EAAE,MAAM,EACjB,CAAC,EAAE,OAAO,KACP,OAAO,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC;IAEhC,mEAAmE;IACnE,aAAa,CAAC,EAAE,OAAO,CAAC;IAExB;;;OAGG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAED,+EAA+E;AAC/E,wBAAgB,sBAAsB,CACpC,WAAW,EAAE,MAAM,EACnB,aAAa,EAAE,MAAM,GAAG,IAAI,GAC3B,OAAO,CAET;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0CG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,IAAI,EAAE,OAAO,GAAE,eAAoB,GAAG,IAAI,CAiO5E"}
|
|
@@ -12,6 +12,8 @@ interface OAuthProxyOptions {
|
|
|
12
12
|
maxRequestBodyBytes?: number;
|
|
13
13
|
/** @default 1048576 */
|
|
14
14
|
maxResponseBodyBytes?: number;
|
|
15
|
+
/** Exact browser callback path enforced on dynamic registrations. */
|
|
16
|
+
callbackPath?: string;
|
|
15
17
|
/** @default true */
|
|
16
18
|
enableLogging?: boolean;
|
|
17
19
|
/** Optional authentication applied before any outbound request. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"oauth-proxy.d.ts","sourceRoot":"","sources":["../../../src/server/proxy/oauth-proxy.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"oauth-proxy.d.ts","sourceRoot":"","sources":["../../../src/server/proxy/oauth-proxy.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AA6B1C,UAAU,iBAAiB;IACzB,wBAAwB;IACxB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,kGAAkG;IAClG,cAAc,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACnC,+FAA+F;IAC/F,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,qBAAqB;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,qBAAqB;IACrB,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,uBAAuB;IACvB,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,qEAAqE;IACrE,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,oBAAoB;IACpB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,mEAAmE;IACnE,YAAY,CAAC,EAAE,CAAC,CAAC,EAAE,OAAO,KAAK,OAAO,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC;IAC1D,gFAAgF;IAChF,iBAAiB,CAAC,EAAE,CAClB,SAAS,EAAE,MAAM,EACjB,CAAC,EAAE,OAAO,KACP,OAAO,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC;CACjC;AA4BD,wBAAgB,eAAe,CAC7B,GAAG,EAAE,IAAI,EACT,OAAO,GAAE,iBAAsB,GAC9B,IAAI,CAmRN;AAkDD,uEAAuE;AACvE,wBAAsB,iBAAiB,CACrC,KAAK,EAAE,MAAM,EACb,aAAa,UAAQ,GACpB,OAAO,CAAC,OAAO,CAAC,CAElB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"proxy-routes.d.ts","sourceRoot":"","sources":["../../src/server/proxy-routes.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAGjC,MAAM,MAAM,0BAA0B,GAAG;IACvC,iEAAiE;IACjE,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,+EAA+E;IAC/E,wBAAwB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC7C,0EAA0E;IAC1E,uBAAuB,CAAC,EAAE,OAAO,CAAC;IAClC,6CAA6C;IAC7C,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB,CAAC;AAEF;;GAEG;AACH,wBAAgB,4BAA4B,CAC1C,GAAG,EAAE,IAAI,EACT,MAAM,CAAC,EAAE,0BAA0B,EACnC,QAAQ,GAAE,MAAW,
|
|
1
|
+
{"version":3,"file":"proxy-routes.d.ts","sourceRoot":"","sources":["../../src/server/proxy-routes.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAGjC,MAAM,MAAM,0BAA0B,GAAG;IACvC,iEAAiE;IACjE,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,+EAA+E;IAC/E,wBAAwB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC7C,0EAA0E;IAC1E,uBAAuB,CAAC,EAAE,OAAO,CAAC;IAClC,6CAA6C;IAC7C,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB,CAAC;AAEF;;GAEG;AACH,wBAAgB,4BAA4B,CAC1C,GAAG,EAAE,IAAI,EACT,MAAM,CAAC,EAAE,0BAA0B,EACnC,QAAQ,GAAE,MAAW,QAoCtB"}
|