@modelcontextprotocol/inspector 0.16.6 → 0.16.8
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 -1
- package/client/dist/assets/{OAuthCallback-Cmffn8om.js → OAuthCallback-7gQlGWPl.js} +1 -1
- package/client/dist/assets/{OAuthDebugCallback-BhzcPtuF.js → OAuthDebugCallback-67pOP7RZ.js} +1 -1
- package/client/dist/assets/{index-B_qh-Btq.js → index-3LzLs-Yz.js} +744 -221
- package/client/dist/assets/{index-C217Ot8c.css → index-CFrqgd8F.css} +97 -0
- package/client/dist/index.html +2 -2
- package/package.json +6 -5
- package/server/build/index.js +246 -119
|
@@ -7731,7 +7731,7 @@ function handleAndDispatchCustomEvent$1(name, handler, detail, { discrete }) {
|
|
|
7731
7731
|
target.dispatchEvent(event);
|
|
7732
7732
|
}
|
|
7733
7733
|
}
|
|
7734
|
-
var Root$
|
|
7734
|
+
var Root$6 = DismissableLayer;
|
|
7735
7735
|
var Branch = DismissableLayerBranch;
|
|
7736
7736
|
var useLayoutEffect2 = (globalThis == null ? void 0 : globalThis.document) ? reactExports.useLayoutEffect : () => {
|
|
7737
7737
|
};
|
|
@@ -7961,10 +7961,10 @@ var VisuallyHidden = reactExports.forwardRef(
|
|
|
7961
7961
|
}
|
|
7962
7962
|
);
|
|
7963
7963
|
VisuallyHidden.displayName = NAME$2;
|
|
7964
|
-
var Root$
|
|
7964
|
+
var Root$5 = VisuallyHidden;
|
|
7965
7965
|
var PROVIDER_NAME$1 = "ToastProvider";
|
|
7966
7966
|
var [Collection$2, useCollection$2, createCollectionScope$2] = createCollection("Toast");
|
|
7967
|
-
var [createToastContext
|
|
7967
|
+
var [createToastContext] = createContextScope("Toast", [createCollectionScope$2]);
|
|
7968
7968
|
var [ToastProviderProvider, useToastProviderContext] = createToastContext(PROVIDER_NAME$1);
|
|
7969
7969
|
var ToastProvider$1 = (props) => {
|
|
7970
7970
|
const {
|
|
@@ -8323,7 +8323,7 @@ var ToastImpl = reactExports.forwardRef(
|
|
|
8323
8323
|
),
|
|
8324
8324
|
/* @__PURE__ */ jsxRuntimeExports.jsx(ToastInteractiveProvider, { scope: __scopeToast, onClose: handleClose, children: reactDomExports.createPortal(
|
|
8325
8325
|
/* @__PURE__ */ jsxRuntimeExports.jsx(Collection$2.ItemSlot, { scope: __scopeToast, children: /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
8326
|
-
Root$
|
|
8326
|
+
Root$6,
|
|
8327
8327
|
{
|
|
8328
8328
|
asChild: true,
|
|
8329
8329
|
onEscapeKeyDown: composeEventHandlers(onEscapeKeyDown, () => {
|
|
@@ -15230,6 +15230,20 @@ const CancelledNotificationSchema = NotificationSchema.extend({
|
|
|
15230
15230
|
reason: stringType().optional()
|
|
15231
15231
|
})
|
|
15232
15232
|
});
|
|
15233
|
+
const IconSchema = objectType({
|
|
15234
|
+
/**
|
|
15235
|
+
* URL or data URI for the icon.
|
|
15236
|
+
*/
|
|
15237
|
+
src: stringType(),
|
|
15238
|
+
/**
|
|
15239
|
+
* Optional MIME type for the icon.
|
|
15240
|
+
*/
|
|
15241
|
+
mimeType: optionalType(stringType()),
|
|
15242
|
+
/**
|
|
15243
|
+
* Optional string specifying icon dimensions (e.g., "48x48 96x96").
|
|
15244
|
+
*/
|
|
15245
|
+
sizes: optionalType(stringType())
|
|
15246
|
+
}).passthrough();
|
|
15233
15247
|
const BaseMetadataSchema = objectType({
|
|
15234
15248
|
/** Intended for programmatic or logical use, but used as a display name in past specs or fallback */
|
|
15235
15249
|
name: stringType(),
|
|
@@ -15244,7 +15258,20 @@ const BaseMetadataSchema = objectType({
|
|
|
15244
15258
|
title: optionalType(stringType())
|
|
15245
15259
|
}).passthrough();
|
|
15246
15260
|
const ImplementationSchema = BaseMetadataSchema.extend({
|
|
15247
|
-
version: stringType()
|
|
15261
|
+
version: stringType(),
|
|
15262
|
+
/**
|
|
15263
|
+
* An optional URL of the website for this implementation.
|
|
15264
|
+
*/
|
|
15265
|
+
websiteUrl: optionalType(stringType()),
|
|
15266
|
+
/**
|
|
15267
|
+
* An optional list of icons for this implementation.
|
|
15268
|
+
* This can be used by clients to display the implementation in a user interface.
|
|
15269
|
+
* Each icon should have a `kind` property that specifies whether it is a data representation or a URL source, a `src` property that points to the icon file or data representation, and may also include a `mimeType` and `sizes` property.
|
|
15270
|
+
* The `mimeType` property should be a valid MIME type for the icon file, such as "image/png" or "image/svg+xml".
|
|
15271
|
+
* The `sizes` property should be a string that specifies one or more sizes at which the icon file can be used, such as "48x48" or "any" for scalable formats like SVG.
|
|
15272
|
+
* The `sizes` property is optional, and if not provided, the client should assume that the icon can be used at any size.
|
|
15273
|
+
*/
|
|
15274
|
+
icons: optionalType(arrayType(IconSchema))
|
|
15248
15275
|
});
|
|
15249
15276
|
const ClientCapabilitiesSchema = objectType({
|
|
15250
15277
|
/**
|
|
@@ -15435,6 +15462,10 @@ const ResourceSchema = BaseMetadataSchema.extend({
|
|
|
15435
15462
|
* The MIME type of this resource, if known.
|
|
15436
15463
|
*/
|
|
15437
15464
|
mimeType: optionalType(stringType()),
|
|
15465
|
+
/**
|
|
15466
|
+
* An optional list of icons for this resource.
|
|
15467
|
+
*/
|
|
15468
|
+
icons: optionalType(arrayType(IconSchema)),
|
|
15438
15469
|
/**
|
|
15439
15470
|
* See [MCP specification](https://github.com/modelcontextprotocol/modelcontextprotocol/blob/47339c03c143bb4ec01a26e721a1b8fe66634ebe/docs/specification/draft/basic/index.mdx#general-fields)
|
|
15440
15471
|
* for notes on _meta usage.
|
|
@@ -15539,6 +15570,10 @@ const PromptSchema = BaseMetadataSchema.extend({
|
|
|
15539
15570
|
* A list of arguments to use for templating the prompt.
|
|
15540
15571
|
*/
|
|
15541
15572
|
arguments: optionalType(arrayType(PromptArgumentSchema)),
|
|
15573
|
+
/**
|
|
15574
|
+
* An optional list of icons for this prompt.
|
|
15575
|
+
*/
|
|
15576
|
+
icons: optionalType(arrayType(IconSchema)),
|
|
15542
15577
|
/**
|
|
15543
15578
|
* See [MCP specification](https://github.com/modelcontextprotocol/modelcontextprotocol/blob/47339c03c143bb4ec01a26e721a1b8fe66634ebe/docs/specification/draft/basic/index.mdx#general-fields)
|
|
15544
15579
|
* for notes on _meta usage.
|
|
@@ -15706,6 +15741,10 @@ const ToolSchema = BaseMetadataSchema.extend({
|
|
|
15706
15741
|
* Optional additional tool information.
|
|
15707
15742
|
*/
|
|
15708
15743
|
annotations: optionalType(ToolAnnotationsSchema),
|
|
15744
|
+
/**
|
|
15745
|
+
* An optional list of icons for this tool.
|
|
15746
|
+
*/
|
|
15747
|
+
icons: optionalType(arrayType(IconSchema)),
|
|
15709
15748
|
/**
|
|
15710
15749
|
* See [MCP specification](https://github.com/modelcontextprotocol/modelcontextprotocol/blob/47339c03c143bb4ec01a26e721a1b8fe66634ebe/docs/specification/draft/basic/index.mdx#general-fields)
|
|
15711
15750
|
* for notes on _meta usage.
|
|
@@ -16974,9 +17013,12 @@ class InspectorOAuthClientProvider {
|
|
|
16974
17013
|
get redirectUrl() {
|
|
16975
17014
|
return window.location.origin + "/oauth/callback";
|
|
16976
17015
|
}
|
|
17016
|
+
get debugRedirectUrl() {
|
|
17017
|
+
return window.location.origin + "/oauth/callback/debug";
|
|
17018
|
+
}
|
|
16977
17019
|
get clientMetadata() {
|
|
16978
17020
|
return {
|
|
16979
|
-
redirect_uris: [this.redirectUrl],
|
|
17021
|
+
redirect_uris: [this.redirectUrl, this.debugRedirectUrl],
|
|
16980
17022
|
token_endpoint_auth_method: "none",
|
|
16981
17023
|
grant_types: ["authorization_code", "refresh_token"],
|
|
16982
17024
|
response_types: ["code"],
|
|
@@ -17059,7 +17101,7 @@ class InspectorOAuthClientProvider {
|
|
|
17059
17101
|
}
|
|
17060
17102
|
class DebugInspectorOAuthClientProvider extends InspectorOAuthClientProvider {
|
|
17061
17103
|
get redirectUrl() {
|
|
17062
|
-
return
|
|
17104
|
+
return this.debugRedirectUrl;
|
|
17063
17105
|
}
|
|
17064
17106
|
saveServerMetadata(metadata) {
|
|
17065
17107
|
const key = getServerSpecificKey(
|
|
@@ -17176,7 +17218,7 @@ const oauthTransitions = {
|
|
|
17176
17218
|
);
|
|
17177
17219
|
context.provider.saveCodeVerifier(codeVerifier);
|
|
17178
17220
|
context.updateState({
|
|
17179
|
-
authorizationUrl
|
|
17221
|
+
authorizationUrl,
|
|
17180
17222
|
oauthStep: "authorization_code"
|
|
17181
17223
|
});
|
|
17182
17224
|
}
|
|
@@ -24866,7 +24908,7 @@ class StreamableHTTPClientTransport {
|
|
|
24866
24908
|
return this._protocolVersion;
|
|
24867
24909
|
}
|
|
24868
24910
|
}
|
|
24869
|
-
const version$1 = "0.16.
|
|
24911
|
+
const version$1 = "0.16.8";
|
|
24870
24912
|
const packageJson = {
|
|
24871
24913
|
version: version$1
|
|
24872
24914
|
};
|
|
@@ -24992,8 +25034,7 @@ function useConnection({
|
|
|
24992
25034
|
args,
|
|
24993
25035
|
sseUrl,
|
|
24994
25036
|
env,
|
|
24995
|
-
|
|
24996
|
-
headerName,
|
|
25037
|
+
customHeaders,
|
|
24997
25038
|
oauthClientId,
|
|
24998
25039
|
oauthScope,
|
|
24999
25040
|
config,
|
|
@@ -25218,16 +25259,33 @@ function useConnection({
|
|
|
25218
25259
|
try {
|
|
25219
25260
|
const headers = {};
|
|
25220
25261
|
const serverAuthProvider = new InspectorOAuthClientProvider(sseUrl);
|
|
25221
|
-
|
|
25222
|
-
if (
|
|
25223
|
-
const
|
|
25224
|
-
if (
|
|
25225
|
-
|
|
25226
|
-
|
|
25227
|
-
|
|
25228
|
-
|
|
25262
|
+
let finalHeaders = customHeaders || [];
|
|
25263
|
+
if (finalHeaders.length === 0) {
|
|
25264
|
+
const oauthToken = (_a = await serverAuthProvider.tokens()) == null ? void 0 : _a.access_token;
|
|
25265
|
+
if (oauthToken) {
|
|
25266
|
+
finalHeaders = [
|
|
25267
|
+
{
|
|
25268
|
+
name: "Authorization",
|
|
25269
|
+
value: `Bearer ${oauthToken}`,
|
|
25270
|
+
enabled: true
|
|
25271
|
+
}
|
|
25272
|
+
];
|
|
25229
25273
|
}
|
|
25230
25274
|
}
|
|
25275
|
+
const customHeaderNames = [];
|
|
25276
|
+
finalHeaders.forEach((header) => {
|
|
25277
|
+
if (header.enabled && header.name.trim() && header.value.trim()) {
|
|
25278
|
+
const headerName = header.name.trim();
|
|
25279
|
+
const headerValue = header.value.trim();
|
|
25280
|
+
headers[headerName] = headerValue;
|
|
25281
|
+
if (headerName.toLowerCase() !== "authorization") {
|
|
25282
|
+
customHeaderNames.push(headerName);
|
|
25283
|
+
}
|
|
25284
|
+
}
|
|
25285
|
+
});
|
|
25286
|
+
if (customHeaderNames.length > 0) {
|
|
25287
|
+
headers["x-custom-auth-headers"] = JSON.stringify(customHeaderNames);
|
|
25288
|
+
}
|
|
25231
25289
|
const { token: proxyAuthToken, header: proxyAuthTokenHeader } = getMCPProxyAuthToken(config);
|
|
25232
25290
|
const proxyHeaders = {};
|
|
25233
25291
|
if (proxyAuthToken) {
|
|
@@ -25432,11 +25490,15 @@ function useConnection({
|
|
|
25432
25490
|
setCompletionsSupported(false);
|
|
25433
25491
|
setServerCapabilities(null);
|
|
25434
25492
|
};
|
|
25493
|
+
const clearRequestHistory = () => {
|
|
25494
|
+
setRequestHistory([]);
|
|
25495
|
+
};
|
|
25435
25496
|
return {
|
|
25436
25497
|
connectionStatus,
|
|
25437
25498
|
serverCapabilities,
|
|
25438
25499
|
mcpClient,
|
|
25439
25500
|
requestHistory,
|
|
25501
|
+
clearRequestHistory,
|
|
25440
25502
|
makeRequest,
|
|
25441
25503
|
sendNotification,
|
|
25442
25504
|
handleCompletion,
|
|
@@ -25758,10 +25820,10 @@ function focusFirst$1(candidates, preventScroll = false) {
|
|
|
25758
25820
|
function wrapArray$1(array, startIndex) {
|
|
25759
25821
|
return array.map((_, index2) => array[(startIndex + index2) % array.length]);
|
|
25760
25822
|
}
|
|
25761
|
-
var Root$
|
|
25823
|
+
var Root$4 = RovingFocusGroup;
|
|
25762
25824
|
var Item$1 = RovingFocusGroupItem;
|
|
25763
25825
|
var TABS_NAME = "Tabs";
|
|
25764
|
-
var [createTabsContext
|
|
25826
|
+
var [createTabsContext] = createContextScope(TABS_NAME, [
|
|
25765
25827
|
createRovingFocusGroupScope
|
|
25766
25828
|
]);
|
|
25767
25829
|
var useRovingFocusGroupScope = createRovingFocusGroupScope();
|
|
@@ -25816,7 +25878,7 @@ var TabsList$1 = reactExports.forwardRef(
|
|
|
25816
25878
|
const context = useTabsContext(TAB_LIST_NAME, __scopeTabs);
|
|
25817
25879
|
const rovingFocusGroupScope = useRovingFocusGroupScope(__scopeTabs);
|
|
25818
25880
|
return /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
25819
|
-
Root$
|
|
25881
|
+
Root$4,
|
|
25820
25882
|
{
|
|
25821
25883
|
asChild: true,
|
|
25822
25884
|
...rovingFocusGroupScope,
|
|
@@ -26115,7 +26177,7 @@ const createLucideIcon = (iconName, iconNode) => {
|
|
|
26115
26177
|
* This source code is licensed under the ISC license.
|
|
26116
26178
|
* See the LICENSE file in the root directory of this source tree.
|
|
26117
26179
|
*/
|
|
26118
|
-
const __iconNode$
|
|
26180
|
+
const __iconNode$y = [
|
|
26119
26181
|
["path", { d: "M10.268 21a2 2 0 0 0 3.464 0", key: "vwvbt9" }],
|
|
26120
26182
|
[
|
|
26121
26183
|
"path",
|
|
@@ -26125,14 +26187,14 @@ const __iconNode$x = [
|
|
|
26125
26187
|
}
|
|
26126
26188
|
]
|
|
26127
26189
|
];
|
|
26128
|
-
const Bell = createLucideIcon("bell", __iconNode$
|
|
26190
|
+
const Bell = createLucideIcon("bell", __iconNode$y);
|
|
26129
26191
|
/**
|
|
26130
26192
|
* @license lucide-react v0.523.0 - ISC
|
|
26131
26193
|
*
|
|
26132
26194
|
* This source code is licensed under the ISC license.
|
|
26133
26195
|
* See the LICENSE file in the root directory of this source tree.
|
|
26134
26196
|
*/
|
|
26135
|
-
const __iconNode$
|
|
26197
|
+
const __iconNode$x = [
|
|
26136
26198
|
["path", { d: "m8 2 1.88 1.88", key: "fmnt4t" }],
|
|
26137
26199
|
["path", { d: "M14.12 3.88 16 2", key: "qol33r" }],
|
|
26138
26200
|
["path", { d: "M9 7.13v-1a3.003 3.003 0 1 1 6 0v1", key: "d7y7pr" }],
|
|
@@ -26151,134 +26213,134 @@ const __iconNode$w = [
|
|
|
26151
26213
|
["path", { d: "M22 13h-4", key: "1jl80f" }],
|
|
26152
26214
|
["path", { d: "M17.2 17c2.1.1 3.8 1.9 3.8 4", key: "k3fwyw" }]
|
|
26153
26215
|
];
|
|
26154
|
-
const Bug = createLucideIcon("bug", __iconNode$
|
|
26216
|
+
const Bug = createLucideIcon("bug", __iconNode$x);
|
|
26155
26217
|
/**
|
|
26156
26218
|
* @license lucide-react v0.523.0 - ISC
|
|
26157
26219
|
*
|
|
26158
26220
|
* This source code is licensed under the ISC license.
|
|
26159
26221
|
* See the LICENSE file in the root directory of this source tree.
|
|
26160
26222
|
*/
|
|
26161
|
-
const __iconNode$
|
|
26223
|
+
const __iconNode$w = [
|
|
26162
26224
|
["path", { d: "M18 6 7 17l-5-5", key: "116fxf" }],
|
|
26163
26225
|
["path", { d: "m22 10-7.5 7.5L13 16", key: "ke71qq" }]
|
|
26164
26226
|
];
|
|
26165
|
-
const CheckCheck = createLucideIcon("check-check", __iconNode$
|
|
26227
|
+
const CheckCheck = createLucideIcon("check-check", __iconNode$w);
|
|
26166
26228
|
/**
|
|
26167
26229
|
* @license lucide-react v0.523.0 - ISC
|
|
26168
26230
|
*
|
|
26169
26231
|
* This source code is licensed under the ISC license.
|
|
26170
26232
|
* See the LICENSE file in the root directory of this source tree.
|
|
26171
26233
|
*/
|
|
26172
|
-
const __iconNode$
|
|
26173
|
-
const Check = createLucideIcon("check", __iconNode$
|
|
26234
|
+
const __iconNode$v = [["path", { d: "M20 6 9 17l-5-5", key: "1gmf2c" }]];
|
|
26235
|
+
const Check = createLucideIcon("check", __iconNode$v);
|
|
26174
26236
|
/**
|
|
26175
26237
|
* @license lucide-react v0.523.0 - ISC
|
|
26176
26238
|
*
|
|
26177
26239
|
* This source code is licensed under the ISC license.
|
|
26178
26240
|
* See the LICENSE file in the root directory of this source tree.
|
|
26179
26241
|
*/
|
|
26180
|
-
const __iconNode$
|
|
26181
|
-
const ChevronDown = createLucideIcon("chevron-down", __iconNode$
|
|
26242
|
+
const __iconNode$u = [["path", { d: "m6 9 6 6 6-6", key: "qrunsl" }]];
|
|
26243
|
+
const ChevronDown = createLucideIcon("chevron-down", __iconNode$u);
|
|
26182
26244
|
/**
|
|
26183
26245
|
* @license lucide-react v0.523.0 - ISC
|
|
26184
26246
|
*
|
|
26185
26247
|
* This source code is licensed under the ISC license.
|
|
26186
26248
|
* See the LICENSE file in the root directory of this source tree.
|
|
26187
26249
|
*/
|
|
26188
|
-
const __iconNode$
|
|
26189
|
-
const ChevronRight = createLucideIcon("chevron-right", __iconNode$
|
|
26250
|
+
const __iconNode$t = [["path", { d: "m9 18 6-6-6-6", key: "mthhwq" }]];
|
|
26251
|
+
const ChevronRight = createLucideIcon("chevron-right", __iconNode$t);
|
|
26190
26252
|
/**
|
|
26191
26253
|
* @license lucide-react v0.523.0 - ISC
|
|
26192
26254
|
*
|
|
26193
26255
|
* This source code is licensed under the ISC license.
|
|
26194
26256
|
* See the LICENSE file in the root directory of this source tree.
|
|
26195
26257
|
*/
|
|
26196
|
-
const __iconNode$
|
|
26197
|
-
const ChevronUp = createLucideIcon("chevron-up", __iconNode$
|
|
26258
|
+
const __iconNode$s = [["path", { d: "m18 15-6-6-6 6", key: "153udz" }]];
|
|
26259
|
+
const ChevronUp = createLucideIcon("chevron-up", __iconNode$s);
|
|
26198
26260
|
/**
|
|
26199
26261
|
* @license lucide-react v0.523.0 - ISC
|
|
26200
26262
|
*
|
|
26201
26263
|
* This source code is licensed under the ISC license.
|
|
26202
26264
|
* See the LICENSE file in the root directory of this source tree.
|
|
26203
26265
|
*/
|
|
26204
|
-
const __iconNode$
|
|
26266
|
+
const __iconNode$r = [
|
|
26205
26267
|
["path", { d: "m7 15 5 5 5-5", key: "1hf1tw" }],
|
|
26206
26268
|
["path", { d: "m7 9 5-5 5 5", key: "sgt6xg" }]
|
|
26207
26269
|
];
|
|
26208
|
-
const ChevronsUpDown = createLucideIcon("chevrons-up-down", __iconNode$
|
|
26270
|
+
const ChevronsUpDown = createLucideIcon("chevrons-up-down", __iconNode$r);
|
|
26209
26271
|
/**
|
|
26210
26272
|
* @license lucide-react v0.523.0 - ISC
|
|
26211
26273
|
*
|
|
26212
26274
|
* This source code is licensed under the ISC license.
|
|
26213
26275
|
* See the LICENSE file in the root directory of this source tree.
|
|
26214
26276
|
*/
|
|
26215
|
-
const __iconNode$
|
|
26277
|
+
const __iconNode$q = [
|
|
26216
26278
|
["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }],
|
|
26217
26279
|
["line", { x1: "12", x2: "12", y1: "8", y2: "12", key: "1pkeuh" }],
|
|
26218
26280
|
["line", { x1: "12", x2: "12.01", y1: "16", y2: "16", key: "4dfq90" }]
|
|
26219
26281
|
];
|
|
26220
|
-
const CircleAlert = createLucideIcon("circle-alert", __iconNode$
|
|
26282
|
+
const CircleAlert = createLucideIcon("circle-alert", __iconNode$q);
|
|
26221
26283
|
/**
|
|
26222
26284
|
* @license lucide-react v0.523.0 - ISC
|
|
26223
26285
|
*
|
|
26224
26286
|
* This source code is licensed under the ISC license.
|
|
26225
26287
|
* See the LICENSE file in the root directory of this source tree.
|
|
26226
26288
|
*/
|
|
26227
|
-
const __iconNode$
|
|
26289
|
+
const __iconNode$p = [
|
|
26228
26290
|
["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }],
|
|
26229
26291
|
["path", { d: "m9 12 2 2 4-4", key: "dzmm74" }]
|
|
26230
26292
|
];
|
|
26231
|
-
const CircleCheck = createLucideIcon("circle-check", __iconNode$
|
|
26293
|
+
const CircleCheck = createLucideIcon("circle-check", __iconNode$p);
|
|
26232
26294
|
/**
|
|
26233
26295
|
* @license lucide-react v0.523.0 - ISC
|
|
26234
26296
|
*
|
|
26235
26297
|
* This source code is licensed under the ISC license.
|
|
26236
26298
|
* See the LICENSE file in the root directory of this source tree.
|
|
26237
26299
|
*/
|
|
26238
|
-
const __iconNode$
|
|
26300
|
+
const __iconNode$o = [
|
|
26239
26301
|
["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }],
|
|
26240
26302
|
["path", { d: "M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3", key: "1u773s" }],
|
|
26241
26303
|
["path", { d: "M12 17h.01", key: "p32p05" }]
|
|
26242
26304
|
];
|
|
26243
|
-
const CircleQuestionMark = createLucideIcon("circle-question-mark", __iconNode$
|
|
26305
|
+
const CircleQuestionMark = createLucideIcon("circle-question-mark", __iconNode$o);
|
|
26244
26306
|
/**
|
|
26245
26307
|
* @license lucide-react v0.523.0 - ISC
|
|
26246
26308
|
*
|
|
26247
26309
|
* This source code is licensed under the ISC license.
|
|
26248
26310
|
* See the LICENSE file in the root directory of this source tree.
|
|
26249
26311
|
*/
|
|
26250
|
-
const __iconNode$
|
|
26251
|
-
const Circle = createLucideIcon("circle", __iconNode$
|
|
26312
|
+
const __iconNode$n = [["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }]];
|
|
26313
|
+
const Circle = createLucideIcon("circle", __iconNode$n);
|
|
26252
26314
|
/**
|
|
26253
26315
|
* @license lucide-react v0.523.0 - ISC
|
|
26254
26316
|
*
|
|
26255
26317
|
* This source code is licensed under the ISC license.
|
|
26256
26318
|
* See the LICENSE file in the root directory of this source tree.
|
|
26257
26319
|
*/
|
|
26258
|
-
const __iconNode$
|
|
26320
|
+
const __iconNode$m = [
|
|
26259
26321
|
["rect", { width: "14", height: "14", x: "8", y: "8", rx: "2", ry: "2", key: "17jyea" }],
|
|
26260
26322
|
["path", { d: "M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2", key: "zix9uf" }]
|
|
26261
26323
|
];
|
|
26262
|
-
const Copy = createLucideIcon("copy", __iconNode$
|
|
26324
|
+
const Copy = createLucideIcon("copy", __iconNode$m);
|
|
26263
26325
|
/**
|
|
26264
26326
|
* @license lucide-react v0.523.0 - ISC
|
|
26265
26327
|
*
|
|
26266
26328
|
* This source code is licensed under the ISC license.
|
|
26267
26329
|
* See the LICENSE file in the root directory of this source tree.
|
|
26268
26330
|
*/
|
|
26269
|
-
const __iconNode$
|
|
26331
|
+
const __iconNode$l = [
|
|
26270
26332
|
["path", { d: "M15 3h6v6", key: "1q9fwt" }],
|
|
26271
26333
|
["path", { d: "M10 14 21 3", key: "gplh6r" }],
|
|
26272
26334
|
["path", { d: "M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6", key: "a6xqqp" }]
|
|
26273
26335
|
];
|
|
26274
|
-
const ExternalLink = createLucideIcon("external-link", __iconNode$
|
|
26336
|
+
const ExternalLink = createLucideIcon("external-link", __iconNode$l);
|
|
26275
26337
|
/**
|
|
26276
26338
|
* @license lucide-react v0.523.0 - ISC
|
|
26277
26339
|
*
|
|
26278
26340
|
* This source code is licensed under the ISC license.
|
|
26279
26341
|
* See the LICENSE file in the root directory of this source tree.
|
|
26280
26342
|
*/
|
|
26281
|
-
const __iconNode$
|
|
26343
|
+
const __iconNode$k = [
|
|
26282
26344
|
[
|
|
26283
26345
|
"path",
|
|
26284
26346
|
{
|
|
@@ -26296,14 +26358,14 @@ const __iconNode$j = [
|
|
|
26296
26358
|
],
|
|
26297
26359
|
["path", { d: "m2 2 20 20", key: "1ooewy" }]
|
|
26298
26360
|
];
|
|
26299
|
-
const EyeOff = createLucideIcon("eye-off", __iconNode$
|
|
26361
|
+
const EyeOff = createLucideIcon("eye-off", __iconNode$k);
|
|
26300
26362
|
/**
|
|
26301
26363
|
* @license lucide-react v0.523.0 - ISC
|
|
26302
26364
|
*
|
|
26303
26365
|
* This source code is licensed under the ISC license.
|
|
26304
26366
|
* See the LICENSE file in the root directory of this source tree.
|
|
26305
26367
|
*/
|
|
26306
|
-
const __iconNode$
|
|
26368
|
+
const __iconNode$j = [
|
|
26307
26369
|
[
|
|
26308
26370
|
"path",
|
|
26309
26371
|
{
|
|
@@ -26313,40 +26375,40 @@ const __iconNode$i = [
|
|
|
26313
26375
|
],
|
|
26314
26376
|
["circle", { cx: "12", cy: "12", r: "3", key: "1v7zrd" }]
|
|
26315
26377
|
];
|
|
26316
|
-
const Eye = createLucideIcon("eye", __iconNode$
|
|
26378
|
+
const Eye = createLucideIcon("eye", __iconNode$j);
|
|
26317
26379
|
/**
|
|
26318
26380
|
* @license lucide-react v0.523.0 - ISC
|
|
26319
26381
|
*
|
|
26320
26382
|
* This source code is licensed under the ISC license.
|
|
26321
26383
|
* See the LICENSE file in the root directory of this source tree.
|
|
26322
26384
|
*/
|
|
26323
|
-
const __iconNode$
|
|
26385
|
+
const __iconNode$i = [
|
|
26324
26386
|
["path", { d: "M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7Z", key: "1rqfz7" }],
|
|
26325
26387
|
["path", { d: "M14 2v4a2 2 0 0 0 2 2h4", key: "tnqrlb" }],
|
|
26326
26388
|
["path", { d: "M10 9H8", key: "b1mrlr" }],
|
|
26327
26389
|
["path", { d: "M16 13H8", key: "t4e002" }],
|
|
26328
26390
|
["path", { d: "M16 17H8", key: "z1uh3a" }]
|
|
26329
26391
|
];
|
|
26330
|
-
const FileText = createLucideIcon("file-text", __iconNode$
|
|
26392
|
+
const FileText = createLucideIcon("file-text", __iconNode$i);
|
|
26331
26393
|
/**
|
|
26332
26394
|
* @license lucide-react v0.523.0 - ISC
|
|
26333
26395
|
*
|
|
26334
26396
|
* This source code is licensed under the ISC license.
|
|
26335
26397
|
* See the LICENSE file in the root directory of this source tree.
|
|
26336
26398
|
*/
|
|
26337
|
-
const __iconNode$
|
|
26399
|
+
const __iconNode$h = [
|
|
26338
26400
|
["path", { d: "M20 7h-3a2 2 0 0 1-2-2V2", key: "x099mo" }],
|
|
26339
26401
|
["path", { d: "M9 18a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h7l4 4v10a2 2 0 0 1-2 2Z", key: "18t6ie" }],
|
|
26340
26402
|
["path", { d: "M3 7.6v12.8A1.6 1.6 0 0 0 4.6 22h9.8", key: "1nja0z" }]
|
|
26341
26403
|
];
|
|
26342
|
-
const Files = createLucideIcon("files", __iconNode$
|
|
26404
|
+
const Files = createLucideIcon("files", __iconNode$h);
|
|
26343
26405
|
/**
|
|
26344
26406
|
* @license lucide-react v0.523.0 - ISC
|
|
26345
26407
|
*
|
|
26346
26408
|
* This source code is licensed under the ISC license.
|
|
26347
26409
|
* See the LICENSE file in the root directory of this source tree.
|
|
26348
26410
|
*/
|
|
26349
|
-
const __iconNode$
|
|
26411
|
+
const __iconNode$g = [
|
|
26350
26412
|
[
|
|
26351
26413
|
"path",
|
|
26352
26414
|
{
|
|
@@ -26364,14 +26426,14 @@ const __iconNode$f = [
|
|
|
26364
26426
|
["path", { d: "M3 5a2 2 0 0 0 2 2h3", key: "f2jnh7" }],
|
|
26365
26427
|
["path", { d: "M3 3v13a2 2 0 0 0 2 2h3", key: "k8epm1" }]
|
|
26366
26428
|
];
|
|
26367
|
-
const FolderTree = createLucideIcon("folder-tree", __iconNode$
|
|
26429
|
+
const FolderTree = createLucideIcon("folder-tree", __iconNode$g);
|
|
26368
26430
|
/**
|
|
26369
26431
|
* @license lucide-react v0.523.0 - ISC
|
|
26370
26432
|
*
|
|
26371
26433
|
* This source code is licensed under the ISC license.
|
|
26372
26434
|
* See the LICENSE file in the root directory of this source tree.
|
|
26373
26435
|
*/
|
|
26374
|
-
const __iconNode$
|
|
26436
|
+
const __iconNode$f = [
|
|
26375
26437
|
[
|
|
26376
26438
|
"path",
|
|
26377
26439
|
{
|
|
@@ -26381,14 +26443,14 @@ const __iconNode$e = [
|
|
|
26381
26443
|
],
|
|
26382
26444
|
["path", { d: "M9 18c-4.51 2-5-2-7-2", key: "9comsn" }]
|
|
26383
26445
|
];
|
|
26384
|
-
const Github = createLucideIcon("github", __iconNode$
|
|
26446
|
+
const Github = createLucideIcon("github", __iconNode$f);
|
|
26385
26447
|
/**
|
|
26386
26448
|
* @license lucide-react v0.523.0 - ISC
|
|
26387
26449
|
*
|
|
26388
26450
|
* This source code is licensed under the ISC license.
|
|
26389
26451
|
* See the LICENSE file in the root directory of this source tree.
|
|
26390
26452
|
*/
|
|
26391
|
-
const __iconNode$
|
|
26453
|
+
const __iconNode$e = [
|
|
26392
26454
|
["path", { d: "m15 12-8.373 8.373a1 1 0 1 1-3-3L12 9", key: "eefl8a" }],
|
|
26393
26455
|
["path", { d: "m18 15 4-4", key: "16gjal" }],
|
|
26394
26456
|
[
|
|
@@ -26399,84 +26461,84 @@ const __iconNode$d = [
|
|
|
26399
26461
|
}
|
|
26400
26462
|
]
|
|
26401
26463
|
];
|
|
26402
|
-
const Hammer = createLucideIcon("hammer", __iconNode$
|
|
26464
|
+
const Hammer = createLucideIcon("hammer", __iconNode$e);
|
|
26403
26465
|
/**
|
|
26404
26466
|
* @license lucide-react v0.523.0 - ISC
|
|
26405
26467
|
*
|
|
26406
26468
|
* This source code is licensed under the ISC license.
|
|
26407
26469
|
* See the LICENSE file in the root directory of this source tree.
|
|
26408
26470
|
*/
|
|
26409
|
-
const __iconNode$
|
|
26471
|
+
const __iconNode$d = [
|
|
26410
26472
|
["line", { x1: "4", x2: "20", y1: "9", y2: "9", key: "4lhtct" }],
|
|
26411
26473
|
["line", { x1: "4", x2: "20", y1: "15", y2: "15", key: "vyu0kd" }],
|
|
26412
26474
|
["line", { x1: "10", x2: "8", y1: "3", y2: "21", key: "1ggp8o" }],
|
|
26413
26475
|
["line", { x1: "16", x2: "14", y1: "3", y2: "21", key: "weycgp" }]
|
|
26414
26476
|
];
|
|
26415
|
-
const Hash = createLucideIcon("hash", __iconNode$
|
|
26477
|
+
const Hash = createLucideIcon("hash", __iconNode$d);
|
|
26416
26478
|
/**
|
|
26417
26479
|
* @license lucide-react v0.523.0 - ISC
|
|
26418
26480
|
*
|
|
26419
26481
|
* This source code is licensed under the ISC license.
|
|
26420
26482
|
* See the LICENSE file in the root directory of this source tree.
|
|
26421
26483
|
*/
|
|
26422
|
-
const __iconNode$
|
|
26484
|
+
const __iconNode$c = [
|
|
26423
26485
|
["path", { d: "m15.5 7.5 2.3 2.3a1 1 0 0 0 1.4 0l2.1-2.1a1 1 0 0 0 0-1.4L19 4", key: "g0fldk" }],
|
|
26424
26486
|
["path", { d: "m21 2-9.6 9.6", key: "1j0ho8" }],
|
|
26425
26487
|
["circle", { cx: "7.5", cy: "15.5", r: "5.5", key: "yqb3hr" }]
|
|
26426
26488
|
];
|
|
26427
|
-
const Key = createLucideIcon("key", __iconNode$
|
|
26489
|
+
const Key = createLucideIcon("key", __iconNode$c);
|
|
26428
26490
|
/**
|
|
26429
26491
|
* @license lucide-react v0.523.0 - ISC
|
|
26430
26492
|
*
|
|
26431
26493
|
* This source code is licensed under the ISC license.
|
|
26432
26494
|
* See the LICENSE file in the root directory of this source tree.
|
|
26433
26495
|
*/
|
|
26434
|
-
const __iconNode$
|
|
26435
|
-
const LoaderCircle = createLucideIcon("loader-circle", __iconNode$
|
|
26496
|
+
const __iconNode$b = [["path", { d: "M21 12a9 9 0 1 1-6.219-8.56", key: "13zald" }]];
|
|
26497
|
+
const LoaderCircle = createLucideIcon("loader-circle", __iconNode$b);
|
|
26436
26498
|
/**
|
|
26437
26499
|
* @license lucide-react v0.523.0 - ISC
|
|
26438
26500
|
*
|
|
26439
26501
|
* This source code is licensed under the ISC license.
|
|
26440
26502
|
* See the LICENSE file in the root directory of this source tree.
|
|
26441
26503
|
*/
|
|
26442
|
-
const __iconNode$
|
|
26504
|
+
const __iconNode$a = [
|
|
26443
26505
|
["path", { d: "M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z", key: "1lielz" }]
|
|
26444
26506
|
];
|
|
26445
|
-
const MessageSquare = createLucideIcon("message-square", __iconNode$
|
|
26507
|
+
const MessageSquare = createLucideIcon("message-square", __iconNode$a);
|
|
26446
26508
|
/**
|
|
26447
26509
|
* @license lucide-react v0.523.0 - ISC
|
|
26448
26510
|
*
|
|
26449
26511
|
* This source code is licensed under the ISC license.
|
|
26450
26512
|
* See the LICENSE file in the root directory of this source tree.
|
|
26451
26513
|
*/
|
|
26452
|
-
const __iconNode$
|
|
26453
|
-
const Minus = createLucideIcon("minus", __iconNode$
|
|
26514
|
+
const __iconNode$9 = [["path", { d: "M5 12h14", key: "1ays0h" }]];
|
|
26515
|
+
const Minus = createLucideIcon("minus", __iconNode$9);
|
|
26454
26516
|
/**
|
|
26455
26517
|
* @license lucide-react v0.523.0 - ISC
|
|
26456
26518
|
*
|
|
26457
26519
|
* This source code is licensed under the ISC license.
|
|
26458
26520
|
* See the LICENSE file in the root directory of this source tree.
|
|
26459
26521
|
*/
|
|
26460
|
-
const __iconNode$
|
|
26461
|
-
const Play = createLucideIcon("play", __iconNode$
|
|
26522
|
+
const __iconNode$8 = [["polygon", { points: "6 3 20 12 6 21 6 3", key: "1oa8hb" }]];
|
|
26523
|
+
const Play = createLucideIcon("play", __iconNode$8);
|
|
26462
26524
|
/**
|
|
26463
26525
|
* @license lucide-react v0.523.0 - ISC
|
|
26464
26526
|
*
|
|
26465
26527
|
* This source code is licensed under the ISC license.
|
|
26466
26528
|
* See the LICENSE file in the root directory of this source tree.
|
|
26467
26529
|
*/
|
|
26468
|
-
const __iconNode$
|
|
26530
|
+
const __iconNode$7 = [
|
|
26469
26531
|
["path", { d: "M5 12h14", key: "1ays0h" }],
|
|
26470
26532
|
["path", { d: "M12 5v14", key: "s699le" }]
|
|
26471
26533
|
];
|
|
26472
|
-
const Plus = createLucideIcon("plus", __iconNode$
|
|
26534
|
+
const Plus = createLucideIcon("plus", __iconNode$7);
|
|
26473
26535
|
/**
|
|
26474
26536
|
* @license lucide-react v0.523.0 - ISC
|
|
26475
26537
|
*
|
|
26476
26538
|
* This source code is licensed under the ISC license.
|
|
26477
26539
|
* See the LICENSE file in the root directory of this source tree.
|
|
26478
26540
|
*/
|
|
26479
|
-
const __iconNode$
|
|
26541
|
+
const __iconNode$6 = [
|
|
26480
26542
|
["path", { d: "M21 8L18.74 5.74A9.75 9.75 0 0 0 12 3C11 3 10.03 3.16 9.13 3.47", key: "1krf6h" }],
|
|
26481
26543
|
["path", { d: "M8 16H3v5", key: "1cv678" }],
|
|
26482
26544
|
["path", { d: "M3 12C3 9.51 4 7.26 5.64 5.64", key: "ruvoct" }],
|
|
@@ -26485,38 +26547,38 @@ const __iconNode$5 = [
|
|
|
26485
26547
|
["path", { d: "M21 3v5h-5", key: "1q7to0" }],
|
|
26486
26548
|
["path", { d: "M22 22 2 2", key: "1r8tn9" }]
|
|
26487
26549
|
];
|
|
26488
|
-
const RefreshCwOff = createLucideIcon("refresh-cw-off", __iconNode$
|
|
26550
|
+
const RefreshCwOff = createLucideIcon("refresh-cw-off", __iconNode$6);
|
|
26489
26551
|
/**
|
|
26490
26552
|
* @license lucide-react v0.523.0 - ISC
|
|
26491
26553
|
*
|
|
26492
26554
|
* This source code is licensed under the ISC license.
|
|
26493
26555
|
* See the LICENSE file in the root directory of this source tree.
|
|
26494
26556
|
*/
|
|
26495
|
-
const __iconNode$
|
|
26557
|
+
const __iconNode$5 = [
|
|
26496
26558
|
["path", { d: "M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8", key: "v9h5vc" }],
|
|
26497
26559
|
["path", { d: "M21 3v5h-5", key: "1q7to0" }],
|
|
26498
26560
|
["path", { d: "M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16", key: "3uifl3" }],
|
|
26499
26561
|
["path", { d: "M8 16H3v5", key: "1cv678" }]
|
|
26500
26562
|
];
|
|
26501
|
-
const RefreshCw = createLucideIcon("refresh-cw", __iconNode$
|
|
26563
|
+
const RefreshCw = createLucideIcon("refresh-cw", __iconNode$5);
|
|
26502
26564
|
/**
|
|
26503
26565
|
* @license lucide-react v0.523.0 - ISC
|
|
26504
26566
|
*
|
|
26505
26567
|
* This source code is licensed under the ISC license.
|
|
26506
26568
|
* See the LICENSE file in the root directory of this source tree.
|
|
26507
26569
|
*/
|
|
26508
|
-
const __iconNode$
|
|
26570
|
+
const __iconNode$4 = [
|
|
26509
26571
|
["path", { d: "M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8", key: "1357e3" }],
|
|
26510
26572
|
["path", { d: "M3 3v5h5", key: "1xhq8a" }]
|
|
26511
26573
|
];
|
|
26512
|
-
const RotateCcw = createLucideIcon("rotate-ccw", __iconNode$
|
|
26574
|
+
const RotateCcw = createLucideIcon("rotate-ccw", __iconNode$4);
|
|
26513
26575
|
/**
|
|
26514
26576
|
* @license lucide-react v0.523.0 - ISC
|
|
26515
26577
|
*
|
|
26516
26578
|
* This source code is licensed under the ISC license.
|
|
26517
26579
|
* See the LICENSE file in the root directory of this source tree.
|
|
26518
26580
|
*/
|
|
26519
|
-
const __iconNode$
|
|
26581
|
+
const __iconNode$3 = [
|
|
26520
26582
|
[
|
|
26521
26583
|
"path",
|
|
26522
26584
|
{
|
|
@@ -26527,14 +26589,14 @@ const __iconNode$2 = [
|
|
|
26527
26589
|
["path", { d: "M17 21v-7a1 1 0 0 0-1-1H8a1 1 0 0 0-1 1v7", key: "1ydtos" }],
|
|
26528
26590
|
["path", { d: "M7 3v4a1 1 0 0 0 1 1h7", key: "t51u73" }]
|
|
26529
26591
|
];
|
|
26530
|
-
const Save = createLucideIcon("save", __iconNode$
|
|
26592
|
+
const Save = createLucideIcon("save", __iconNode$3);
|
|
26531
26593
|
/**
|
|
26532
26594
|
* @license lucide-react v0.523.0 - ISC
|
|
26533
26595
|
*
|
|
26534
26596
|
* This source code is licensed under the ISC license.
|
|
26535
26597
|
* See the LICENSE file in the root directory of this source tree.
|
|
26536
26598
|
*/
|
|
26537
|
-
const __iconNode$
|
|
26599
|
+
const __iconNode$2 = [
|
|
26538
26600
|
[
|
|
26539
26601
|
"path",
|
|
26540
26602
|
{
|
|
@@ -26544,14 +26606,14 @@ const __iconNode$1 = [
|
|
|
26544
26606
|
],
|
|
26545
26607
|
["path", { d: "m21.854 2.147-10.94 10.939", key: "12cjpa" }]
|
|
26546
26608
|
];
|
|
26547
|
-
const Send = createLucideIcon("send", __iconNode$
|
|
26609
|
+
const Send = createLucideIcon("send", __iconNode$2);
|
|
26548
26610
|
/**
|
|
26549
26611
|
* @license lucide-react v0.523.0 - ISC
|
|
26550
26612
|
*
|
|
26551
26613
|
* This source code is licensed under the ISC license.
|
|
26552
26614
|
* See the LICENSE file in the root directory of this source tree.
|
|
26553
26615
|
*/
|
|
26554
|
-
const __iconNode = [
|
|
26616
|
+
const __iconNode$1 = [
|
|
26555
26617
|
[
|
|
26556
26618
|
"path",
|
|
26557
26619
|
{
|
|
@@ -26561,7 +26623,21 @@ const __iconNode = [
|
|
|
26561
26623
|
],
|
|
26562
26624
|
["circle", { cx: "12", cy: "12", r: "3", key: "1v7zrd" }]
|
|
26563
26625
|
];
|
|
26564
|
-
const Settings = createLucideIcon("settings", __iconNode);
|
|
26626
|
+
const Settings = createLucideIcon("settings", __iconNode$1);
|
|
26627
|
+
/**
|
|
26628
|
+
* @license lucide-react v0.523.0 - ISC
|
|
26629
|
+
*
|
|
26630
|
+
* This source code is licensed under the ISC license.
|
|
26631
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
26632
|
+
*/
|
|
26633
|
+
const __iconNode = [
|
|
26634
|
+
["path", { d: "M3 6h18", key: "d0wm0j" }],
|
|
26635
|
+
["path", { d: "M19 6v14c0 1-1 2-2 2H7c-1 0-2-1-2-2V6", key: "4alrt4" }],
|
|
26636
|
+
["path", { d: "M8 6V4c0-1 1-2 2-2h4c1 0 2 1 2 2v2", key: "v07s0e" }],
|
|
26637
|
+
["line", { x1: "10", x2: "10", y1: "11", y2: "17", key: "1uufr5" }],
|
|
26638
|
+
["line", { x1: "14", x2: "14", y1: "11", y2: "17", key: "xtxkd" }]
|
|
26639
|
+
];
|
|
26640
|
+
const Trash2 = createLucideIcon("trash-2", __iconNode);
|
|
26565
26641
|
const OAuthStepDetails = ({
|
|
26566
26642
|
label,
|
|
26567
26643
|
isComplete,
|
|
@@ -26730,7 +26806,7 @@ const OAuthFlowProgress = ({
|
|
|
26730
26806
|
children: authState.authorizationUrl && /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "mt-2 p-3 border rounded-md bg-muted", children: [
|
|
26731
26807
|
/* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "font-medium mb-2 text-sm", children: "Authorization URL:" }),
|
|
26732
26808
|
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex items-center gap-2", children: [
|
|
26733
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "text-xs break-all", children: authState.authorizationUrl }),
|
|
26809
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "text-xs break-all", children: String(authState.authorizationUrl) }),
|
|
26734
26810
|
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
26735
26811
|
"button",
|
|
26736
26812
|
{
|
|
@@ -26992,7 +27068,7 @@ const AuthDebugger = ({
|
|
|
26992
27068
|
SESSION_KEYS.AUTH_DEBUGGER_STATE,
|
|
26993
27069
|
JSON.stringify(currentState)
|
|
26994
27070
|
);
|
|
26995
|
-
window.location.href = currentState.authorizationUrl;
|
|
27071
|
+
window.location.href = currentState.authorizationUrl.toString();
|
|
26996
27072
|
break;
|
|
26997
27073
|
}
|
|
26998
27074
|
}
|
|
@@ -27171,6 +27247,23 @@ function updateObject(obj, path, value) {
|
|
|
27171
27247
|
}
|
|
27172
27248
|
return newObj;
|
|
27173
27249
|
}
|
|
27250
|
+
function useCopy({ timeout = 500 } = {}) {
|
|
27251
|
+
const [copied, setCopied] = reactExports.useState(false);
|
|
27252
|
+
reactExports.useEffect(() => {
|
|
27253
|
+
let timeoutId;
|
|
27254
|
+
if (copied) {
|
|
27255
|
+
timeoutId = setTimeout(() => {
|
|
27256
|
+
setCopied(false);
|
|
27257
|
+
}, timeout);
|
|
27258
|
+
}
|
|
27259
|
+
return () => {
|
|
27260
|
+
if (timeoutId) {
|
|
27261
|
+
clearTimeout(timeoutId);
|
|
27262
|
+
}
|
|
27263
|
+
};
|
|
27264
|
+
}, [copied]);
|
|
27265
|
+
return { copied, setCopied };
|
|
27266
|
+
}
|
|
27174
27267
|
const JsonView = reactExports.memo(
|
|
27175
27268
|
({
|
|
27176
27269
|
data: data2,
|
|
@@ -27181,20 +27274,7 @@ const JsonView = reactExports.memo(
|
|
|
27181
27274
|
isError = false
|
|
27182
27275
|
}) => {
|
|
27183
27276
|
const { toast: toast2 } = useToast();
|
|
27184
|
-
const
|
|
27185
|
-
reactExports.useEffect(() => {
|
|
27186
|
-
let timeoutId;
|
|
27187
|
-
if (copied) {
|
|
27188
|
-
timeoutId = setTimeout(() => {
|
|
27189
|
-
setCopied(false);
|
|
27190
|
-
}, 500);
|
|
27191
|
-
}
|
|
27192
|
-
return () => {
|
|
27193
|
-
if (timeoutId) {
|
|
27194
|
-
clearTimeout(timeoutId);
|
|
27195
|
-
}
|
|
27196
|
-
};
|
|
27197
|
-
}, [copied]);
|
|
27277
|
+
const { copied, setCopied } = useCopy();
|
|
27198
27278
|
const normalizedData = reactExports.useMemo(() => {
|
|
27199
27279
|
return typeof data2 === "string" ? tryParseJson(data2).success ? tryParseJson(data2).data : data2 : data2;
|
|
27200
27280
|
}, [data2]);
|
|
@@ -27383,7 +27463,9 @@ const JsonNode = reactExports.memo(
|
|
|
27383
27463
|
JsonNode.displayName = "JsonNode";
|
|
27384
27464
|
const HistoryAndNotifications = ({
|
|
27385
27465
|
requestHistory,
|
|
27386
|
-
serverNotifications
|
|
27466
|
+
serverNotifications,
|
|
27467
|
+
onClearHistory,
|
|
27468
|
+
onClearNotifications
|
|
27387
27469
|
}) => {
|
|
27388
27470
|
const [expandedRequests, setExpandedRequests] = reactExports.useState({});
|
|
27389
27471
|
const [expandedNotifications, setExpandedNotifications] = reactExports.useState({});
|
|
@@ -27395,7 +27477,19 @@ const HistoryAndNotifications = ({
|
|
|
27395
27477
|
};
|
|
27396
27478
|
return /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "bg-card overflow-hidden flex h-full", children: [
|
|
27397
27479
|
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex-1 overflow-y-auto p-4 border-r", children: [
|
|
27398
|
-
/* @__PURE__ */ jsxRuntimeExports.
|
|
27480
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex items-center justify-between mb-4", children: [
|
|
27481
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("h2", { className: "text-lg font-semibold", children: "History" }),
|
|
27482
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
27483
|
+
Button,
|
|
27484
|
+
{
|
|
27485
|
+
variant: "outline",
|
|
27486
|
+
size: "sm",
|
|
27487
|
+
onClick: onClearHistory,
|
|
27488
|
+
disabled: requestHistory.length === 0,
|
|
27489
|
+
children: "Clear"
|
|
27490
|
+
}
|
|
27491
|
+
)
|
|
27492
|
+
] }),
|
|
27399
27493
|
requestHistory.length === 0 ? /* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "text-sm text-gray-500 dark:text-gray-400 italic", children: "No history yet" }) : /* @__PURE__ */ jsxRuntimeExports.jsx("ul", { className: "space-y-3", children: requestHistory.slice().reverse().map((request, index2) => /* @__PURE__ */ jsxRuntimeExports.jsxs(
|
|
27400
27494
|
"li",
|
|
27401
27495
|
{
|
|
@@ -27445,7 +27539,19 @@ const HistoryAndNotifications = ({
|
|
|
27445
27539
|
)) })
|
|
27446
27540
|
] }),
|
|
27447
27541
|
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex-1 overflow-y-auto p-4", children: [
|
|
27448
|
-
/* @__PURE__ */ jsxRuntimeExports.
|
|
27542
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex items-center justify-between mb-4", children: [
|
|
27543
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("h2", { className: "text-lg font-semibold", children: "Server Notifications" }),
|
|
27544
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
27545
|
+
Button,
|
|
27546
|
+
{
|
|
27547
|
+
variant: "outline",
|
|
27548
|
+
size: "sm",
|
|
27549
|
+
onClick: onClearNotifications,
|
|
27550
|
+
disabled: serverNotifications.length === 0,
|
|
27551
|
+
children: "Clear"
|
|
27552
|
+
}
|
|
27553
|
+
)
|
|
27554
|
+
] }),
|
|
27449
27555
|
serverNotifications.length === 0 ? /* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "text-sm text-gray-500 dark:text-gray-400 italic", children: "No notifications yet" }) : /* @__PURE__ */ jsxRuntimeExports.jsx("ul", { className: "space-y-3", children: serverNotifications.slice().reverse().map((notification, index2) => /* @__PURE__ */ jsxRuntimeExports.jsxs(
|
|
27450
27556
|
"li",
|
|
27451
27557
|
{
|
|
@@ -28552,7 +28658,7 @@ var hideOthers = function(originalTarget, parentNode, markerName) {
|
|
|
28552
28658
|
return applyAttributeToOthers(targets, activeParentNode, markerName, "aria-hidden");
|
|
28553
28659
|
};
|
|
28554
28660
|
var DIALOG_NAME = "Dialog";
|
|
28555
|
-
var [createDialogContext
|
|
28661
|
+
var [createDialogContext] = createContextScope(DIALOG_NAME);
|
|
28556
28662
|
var [DialogProvider, useDialogContext] = createDialogContext(DIALOG_NAME);
|
|
28557
28663
|
var Dialog = (props) => {
|
|
28558
28664
|
const {
|
|
@@ -28602,7 +28708,7 @@ var DialogTrigger = reactExports.forwardRef(
|
|
|
28602
28708
|
"aria-haspopup": "dialog",
|
|
28603
28709
|
"aria-expanded": context.open,
|
|
28604
28710
|
"aria-controls": context.contentId,
|
|
28605
|
-
"data-state": getState$
|
|
28711
|
+
"data-state": getState$3(context.open),
|
|
28606
28712
|
...triggerProps,
|
|
28607
28713
|
ref: composedTriggerRef,
|
|
28608
28714
|
onClick: composeEventHandlers(props.onClick, context.onOpenToggle)
|
|
@@ -28642,7 +28748,7 @@ var DialogOverlayImpl = reactExports.forwardRef(
|
|
|
28642
28748
|
/* @__PURE__ */ jsxRuntimeExports.jsx(ReactRemoveScroll, { as: Slot$2, allowPinchZoom: true, shards: [context.contentRef], children: /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
28643
28749
|
Primitive.div,
|
|
28644
28750
|
{
|
|
28645
|
-
"data-state": getState$
|
|
28751
|
+
"data-state": getState$3(context.open),
|
|
28646
28752
|
...overlayProps,
|
|
28647
28753
|
ref: forwardedRef,
|
|
28648
28754
|
style: { pointerEvents: "auto", ...overlayProps.style }
|
|
@@ -28761,7 +28867,7 @@ var DialogContentImpl = reactExports.forwardRef(
|
|
|
28761
28867
|
id: context.contentId,
|
|
28762
28868
|
"aria-describedby": context.descriptionId,
|
|
28763
28869
|
"aria-labelledby": context.titleId,
|
|
28764
|
-
"data-state": getState$
|
|
28870
|
+
"data-state": getState$3(context.open),
|
|
28765
28871
|
...contentProps,
|
|
28766
28872
|
ref: composedRefs,
|
|
28767
28873
|
onDismiss: () => context.onOpenChange(false)
|
|
@@ -28811,7 +28917,7 @@ var DialogClose = reactExports.forwardRef(
|
|
|
28811
28917
|
}
|
|
28812
28918
|
);
|
|
28813
28919
|
DialogClose.displayName = CLOSE_NAME$1;
|
|
28814
|
-
function getState$
|
|
28920
|
+
function getState$3(open) {
|
|
28815
28921
|
return open ? "open" : "closed";
|
|
28816
28922
|
}
|
|
28817
28923
|
var TITLE_WARNING_NAME = "DialogTitleWarning";
|
|
@@ -28849,7 +28955,7 @@ var DescriptionWarning = ({ contentRef, descriptionId }) => {
|
|
|
28849
28955
|
}, [MESSAGE, contentRef, descriptionId]);
|
|
28850
28956
|
return null;
|
|
28851
28957
|
};
|
|
28852
|
-
var Root$
|
|
28958
|
+
var Root$3 = Dialog;
|
|
28853
28959
|
var Portal$2 = DialogPortal$1;
|
|
28854
28960
|
var Overlay = DialogOverlay$1;
|
|
28855
28961
|
var Content$1 = DialogContent$1;
|
|
@@ -29084,7 +29190,7 @@ var N = '[cmdk-group=""]', Y = '[cmdk-group-items=""]', be = '[cmdk-group-headin
|
|
|
29084
29190
|
}, []), reactExports.createElement(Primitive.div, { ref: composeRefs(d, o), ...c, "cmdk-list": "", role: "listbox", tabIndex: -1, "aria-activedescendant": p2, "aria-label": u2, id: b.listId }, B(r2, (m2) => reactExports.createElement("div", { ref: composeRefs(f, b.listInnerRef), "cmdk-list-sizer": "" }, m2)));
|
|
29085
29191
|
}), xe = reactExports.forwardRef((r2, o) => {
|
|
29086
29192
|
let { open: n, onOpenChange: u2, overlayClassName: c, contentClassName: d, container: f, ...p2 } = r2;
|
|
29087
|
-
return reactExports.createElement(Root$
|
|
29193
|
+
return reactExports.createElement(Root$3, { open: n, onOpenChange: u2 }, reactExports.createElement(Portal$2, { container: f }, reactExports.createElement(Overlay, { "cmdk-overlay": "", className: c }), reactExports.createElement(Content$1, { "aria-label": r2.label, "cmdk-dialog": "", className: d }, reactExports.createElement(me, { ref: o, ...p2 }))));
|
|
29088
29194
|
}), Ie = reactExports.forwardRef((r2, o) => P((u2) => u2.filtered.count === 0) ? reactExports.createElement(Primitive.div, { ref: o, ...r2, "cmdk-empty": "", role: "presentation" }) : null), Pe = reactExports.forwardRef((r2, o) => {
|
|
29089
29195
|
let { progress: n, children: u2, label: c = "Loading...", ...d } = r2;
|
|
29090
29196
|
return reactExports.createElement(Primitive.div, { ref: o, ...d, "cmdk-loading": "", role: "progressbar", "aria-valuenow": n, "aria-valuemin": 0, "aria-valuemax": 100, "aria-label": c }, B(r2, (f) => reactExports.createElement("div", { "aria-hidden": true }, f)));
|
|
@@ -31176,7 +31282,7 @@ var Arrow$1 = reactExports.forwardRef((props, forwardedRef) => {
|
|
|
31176
31282
|
);
|
|
31177
31283
|
});
|
|
31178
31284
|
Arrow$1.displayName = NAME$1;
|
|
31179
|
-
var Root$
|
|
31285
|
+
var Root$2 = Arrow$1;
|
|
31180
31286
|
function useSize(element) {
|
|
31181
31287
|
const [size2, setSize] = reactExports.useState(void 0);
|
|
31182
31288
|
useLayoutEffect2(() => {
|
|
@@ -31423,7 +31529,7 @@ var PopperArrow = reactExports.forwardRef(function PopperArrow2(props, forwarded
|
|
|
31423
31529
|
visibility: contentContext.shouldHideArrow ? "hidden" : void 0
|
|
31424
31530
|
},
|
|
31425
31531
|
children: /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
31426
|
-
Root$
|
|
31532
|
+
Root$2,
|
|
31427
31533
|
{
|
|
31428
31534
|
...arrowProps,
|
|
31429
31535
|
ref: forwardedRef,
|
|
@@ -31483,7 +31589,7 @@ var Anchor = PopperAnchor;
|
|
|
31483
31589
|
var Content = PopperContent;
|
|
31484
31590
|
var Arrow = PopperArrow;
|
|
31485
31591
|
var POPOVER_NAME = "Popover";
|
|
31486
|
-
var [createPopoverContext
|
|
31592
|
+
var [createPopoverContext] = createContextScope(POPOVER_NAME, [
|
|
31487
31593
|
createPopperScope
|
|
31488
31594
|
]);
|
|
31489
31595
|
var usePopperScope$2 = createPopperScope();
|
|
@@ -31553,7 +31659,7 @@ var PopoverTrigger$1 = reactExports.forwardRef(
|
|
|
31553
31659
|
"aria-haspopup": "dialog",
|
|
31554
31660
|
"aria-expanded": context.open,
|
|
31555
31661
|
"aria-controls": context.contentId,
|
|
31556
|
-
"data-state": getState$
|
|
31662
|
+
"data-state": getState$2(context.open),
|
|
31557
31663
|
...triggerProps,
|
|
31558
31664
|
ref: composedTriggerRef,
|
|
31559
31665
|
onClick: composeEventHandlers(props.onClick, context.onOpenToggle)
|
|
@@ -31705,7 +31811,7 @@ var PopoverContentImpl = reactExports.forwardRef(
|
|
|
31705
31811
|
children: /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
31706
31812
|
Content,
|
|
31707
31813
|
{
|
|
31708
|
-
"data-state": getState$
|
|
31814
|
+
"data-state": getState$2(context.open),
|
|
31709
31815
|
role: "dialog",
|
|
31710
31816
|
id: context.contentId,
|
|
31711
31817
|
...popperScope,
|
|
@@ -31756,7 +31862,7 @@ var PopoverArrow = reactExports.forwardRef(
|
|
|
31756
31862
|
}
|
|
31757
31863
|
);
|
|
31758
31864
|
PopoverArrow.displayName = ARROW_NAME$2;
|
|
31759
|
-
function getState$
|
|
31865
|
+
function getState$2(open) {
|
|
31760
31866
|
return open ? "open" : "closed";
|
|
31761
31867
|
}
|
|
31762
31868
|
var Root2$1 = Popover$1;
|
|
@@ -31868,19 +31974,19 @@ var Label$2 = reactExports.forwardRef((props, forwardedRef) => {
|
|
|
31868
31974
|
);
|
|
31869
31975
|
});
|
|
31870
31976
|
Label$2.displayName = NAME;
|
|
31871
|
-
var Root = Label$2;
|
|
31977
|
+
var Root$1 = Label$2;
|
|
31872
31978
|
const labelVariants = cva(
|
|
31873
31979
|
"text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70"
|
|
31874
31980
|
);
|
|
31875
31981
|
const Label$1 = reactExports.forwardRef(({ className, ...props }, ref2) => /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
31876
|
-
Root,
|
|
31982
|
+
Root$1,
|
|
31877
31983
|
{
|
|
31878
31984
|
ref: ref2,
|
|
31879
31985
|
className: cn(labelVariants(), className),
|
|
31880
31986
|
...props
|
|
31881
31987
|
}
|
|
31882
31988
|
));
|
|
31883
|
-
Label$1.displayName = Root.displayName;
|
|
31989
|
+
Label$1.displayName = Root$1.displayName;
|
|
31884
31990
|
const ListPane = ({
|
|
31885
31991
|
items: items2,
|
|
31886
31992
|
listItems,
|
|
@@ -35190,7 +35296,7 @@ var OPEN_KEYS = [" ", "Enter", "ArrowUp", "ArrowDown"];
|
|
|
35190
35296
|
var SELECTION_KEYS = [" ", "Enter"];
|
|
35191
35297
|
var SELECT_NAME = "Select";
|
|
35192
35298
|
var [Collection, useCollection, createCollectionScope] = createCollection(SELECT_NAME);
|
|
35193
|
-
var [createSelectContext
|
|
35299
|
+
var [createSelectContext] = createContextScope(SELECT_NAME, [
|
|
35194
35300
|
createCollectionScope,
|
|
35195
35301
|
createPopperScope
|
|
35196
35302
|
]);
|
|
@@ -36237,7 +36343,7 @@ var SelectArrow = reactExports.forwardRef(
|
|
|
36237
36343
|
}
|
|
36238
36344
|
);
|
|
36239
36345
|
SelectArrow.displayName = ARROW_NAME$1;
|
|
36240
|
-
var BUBBLE_INPUT_NAME$
|
|
36346
|
+
var BUBBLE_INPUT_NAME$2 = "SelectBubbleInput";
|
|
36241
36347
|
var SelectBubbleInput = reactExports.forwardRef(
|
|
36242
36348
|
({ __scopeSelect, value, ...props }, forwardedRef) => {
|
|
36243
36349
|
const ref2 = reactExports.useRef(null);
|
|
@@ -36269,7 +36375,7 @@ var SelectBubbleInput = reactExports.forwardRef(
|
|
|
36269
36375
|
);
|
|
36270
36376
|
}
|
|
36271
36377
|
);
|
|
36272
|
-
SelectBubbleInput.displayName = BUBBLE_INPUT_NAME$
|
|
36378
|
+
SelectBubbleInput.displayName = BUBBLE_INPUT_NAME$2;
|
|
36273
36379
|
function shouldShowPlaceholder(value) {
|
|
36274
36380
|
return value === "" || value === void 0;
|
|
36275
36381
|
}
|
|
@@ -36472,8 +36578,8 @@ const useTheme = () => {
|
|
|
36472
36578
|
[theme, setThemeWithSideEffect]
|
|
36473
36579
|
);
|
|
36474
36580
|
};
|
|
36475
|
-
const version = "0.16.
|
|
36476
|
-
var [createTooltipContext
|
|
36581
|
+
const version = "0.16.8";
|
|
36582
|
+
var [createTooltipContext] = createContextScope("Tooltip", [
|
|
36477
36583
|
createPopperScope
|
|
36478
36584
|
]);
|
|
36479
36585
|
var usePopperScope = createPopperScope();
|
|
@@ -36798,7 +36904,7 @@ var TooltipContentImpl = reactExports.forwardRef(
|
|
|
36798
36904
|
},
|
|
36799
36905
|
children: [
|
|
36800
36906
|
/* @__PURE__ */ jsxRuntimeExports.jsx(Slottable, { children }),
|
|
36801
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx(VisuallyHiddenContentContextProvider, { scope: __scopeTooltip, isInside: true, children: /* @__PURE__ */ jsxRuntimeExports.jsx(Root$
|
|
36907
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(VisuallyHiddenContentContextProvider, { scope: __scopeTooltip, isInside: true, children: /* @__PURE__ */ jsxRuntimeExports.jsx(Root$5, { id: context.contentId, role: "tooltip", children: ariaLabel || children }) })
|
|
36802
36908
|
]
|
|
36803
36909
|
}
|
|
36804
36910
|
)
|
|
@@ -36955,6 +37061,394 @@ const TooltipContent = reactExports.forwardRef(({ className, sideOffset = 4, ...
|
|
|
36955
37061
|
}
|
|
36956
37062
|
));
|
|
36957
37063
|
TooltipContent.displayName = Content2.displayName;
|
|
37064
|
+
const Textarea = reactExports.forwardRef(
|
|
37065
|
+
({ className, ...props }, ref2) => {
|
|
37066
|
+
return /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
37067
|
+
"textarea",
|
|
37068
|
+
{
|
|
37069
|
+
className: cn(
|
|
37070
|
+
"flex min-h-[60px] w-full rounded-md border border-input bg-transparent px-3 py-2 text-sm shadow-sm placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50",
|
|
37071
|
+
className
|
|
37072
|
+
),
|
|
37073
|
+
ref: ref2,
|
|
37074
|
+
...props
|
|
37075
|
+
}
|
|
37076
|
+
);
|
|
37077
|
+
}
|
|
37078
|
+
);
|
|
37079
|
+
Textarea.displayName = "Textarea";
|
|
37080
|
+
var SWITCH_NAME = "Switch";
|
|
37081
|
+
var [createSwitchContext] = createContextScope(SWITCH_NAME);
|
|
37082
|
+
var [SwitchProvider, useSwitchContext] = createSwitchContext(SWITCH_NAME);
|
|
37083
|
+
var Switch$1 = reactExports.forwardRef(
|
|
37084
|
+
(props, forwardedRef) => {
|
|
37085
|
+
const {
|
|
37086
|
+
__scopeSwitch,
|
|
37087
|
+
name,
|
|
37088
|
+
checked: checkedProp,
|
|
37089
|
+
defaultChecked,
|
|
37090
|
+
required: required2,
|
|
37091
|
+
disabled,
|
|
37092
|
+
value = "on",
|
|
37093
|
+
onCheckedChange,
|
|
37094
|
+
form,
|
|
37095
|
+
...switchProps
|
|
37096
|
+
} = props;
|
|
37097
|
+
const [button, setButton] = reactExports.useState(null);
|
|
37098
|
+
const composedRefs = useComposedRefs(forwardedRef, (node) => setButton(node));
|
|
37099
|
+
const hasConsumerStoppedPropagationRef = reactExports.useRef(false);
|
|
37100
|
+
const isFormControl = button ? form || !!button.closest("form") : true;
|
|
37101
|
+
const [checked, setChecked] = useControllableState({
|
|
37102
|
+
prop: checkedProp,
|
|
37103
|
+
defaultProp: defaultChecked ?? false,
|
|
37104
|
+
onChange: onCheckedChange,
|
|
37105
|
+
caller: SWITCH_NAME
|
|
37106
|
+
});
|
|
37107
|
+
return /* @__PURE__ */ jsxRuntimeExports.jsxs(SwitchProvider, { scope: __scopeSwitch, checked, disabled, children: [
|
|
37108
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
37109
|
+
Primitive.button,
|
|
37110
|
+
{
|
|
37111
|
+
type: "button",
|
|
37112
|
+
role: "switch",
|
|
37113
|
+
"aria-checked": checked,
|
|
37114
|
+
"aria-required": required2,
|
|
37115
|
+
"data-state": getState$1(checked),
|
|
37116
|
+
"data-disabled": disabled ? "" : void 0,
|
|
37117
|
+
disabled,
|
|
37118
|
+
value,
|
|
37119
|
+
...switchProps,
|
|
37120
|
+
ref: composedRefs,
|
|
37121
|
+
onClick: composeEventHandlers(props.onClick, (event) => {
|
|
37122
|
+
setChecked((prevChecked) => !prevChecked);
|
|
37123
|
+
if (isFormControl) {
|
|
37124
|
+
hasConsumerStoppedPropagationRef.current = event.isPropagationStopped();
|
|
37125
|
+
if (!hasConsumerStoppedPropagationRef.current) event.stopPropagation();
|
|
37126
|
+
}
|
|
37127
|
+
})
|
|
37128
|
+
}
|
|
37129
|
+
),
|
|
37130
|
+
isFormControl && /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
37131
|
+
SwitchBubbleInput,
|
|
37132
|
+
{
|
|
37133
|
+
control: button,
|
|
37134
|
+
bubbles: !hasConsumerStoppedPropagationRef.current,
|
|
37135
|
+
name,
|
|
37136
|
+
value,
|
|
37137
|
+
checked,
|
|
37138
|
+
required: required2,
|
|
37139
|
+
disabled,
|
|
37140
|
+
form,
|
|
37141
|
+
style: { transform: "translateX(-100%)" }
|
|
37142
|
+
}
|
|
37143
|
+
)
|
|
37144
|
+
] });
|
|
37145
|
+
}
|
|
37146
|
+
);
|
|
37147
|
+
Switch$1.displayName = SWITCH_NAME;
|
|
37148
|
+
var THUMB_NAME = "SwitchThumb";
|
|
37149
|
+
var SwitchThumb = reactExports.forwardRef(
|
|
37150
|
+
(props, forwardedRef) => {
|
|
37151
|
+
const { __scopeSwitch, ...thumbProps } = props;
|
|
37152
|
+
const context = useSwitchContext(THUMB_NAME, __scopeSwitch);
|
|
37153
|
+
return /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
37154
|
+
Primitive.span,
|
|
37155
|
+
{
|
|
37156
|
+
"data-state": getState$1(context.checked),
|
|
37157
|
+
"data-disabled": context.disabled ? "" : void 0,
|
|
37158
|
+
...thumbProps,
|
|
37159
|
+
ref: forwardedRef
|
|
37160
|
+
}
|
|
37161
|
+
);
|
|
37162
|
+
}
|
|
37163
|
+
);
|
|
37164
|
+
SwitchThumb.displayName = THUMB_NAME;
|
|
37165
|
+
var BUBBLE_INPUT_NAME$1 = "SwitchBubbleInput";
|
|
37166
|
+
var SwitchBubbleInput = reactExports.forwardRef(
|
|
37167
|
+
({
|
|
37168
|
+
__scopeSwitch,
|
|
37169
|
+
control,
|
|
37170
|
+
checked,
|
|
37171
|
+
bubbles = true,
|
|
37172
|
+
...props
|
|
37173
|
+
}, forwardedRef) => {
|
|
37174
|
+
const ref2 = reactExports.useRef(null);
|
|
37175
|
+
const composedRefs = useComposedRefs(ref2, forwardedRef);
|
|
37176
|
+
const prevChecked = usePrevious(checked);
|
|
37177
|
+
const controlSize = useSize(control);
|
|
37178
|
+
reactExports.useEffect(() => {
|
|
37179
|
+
const input = ref2.current;
|
|
37180
|
+
if (!input) return;
|
|
37181
|
+
const inputProto = window.HTMLInputElement.prototype;
|
|
37182
|
+
const descriptor = Object.getOwnPropertyDescriptor(
|
|
37183
|
+
inputProto,
|
|
37184
|
+
"checked"
|
|
37185
|
+
);
|
|
37186
|
+
const setChecked = descriptor.set;
|
|
37187
|
+
if (prevChecked !== checked && setChecked) {
|
|
37188
|
+
const event = new Event("click", { bubbles });
|
|
37189
|
+
setChecked.call(input, checked);
|
|
37190
|
+
input.dispatchEvent(event);
|
|
37191
|
+
}
|
|
37192
|
+
}, [prevChecked, checked, bubbles]);
|
|
37193
|
+
return /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
37194
|
+
"input",
|
|
37195
|
+
{
|
|
37196
|
+
type: "checkbox",
|
|
37197
|
+
"aria-hidden": true,
|
|
37198
|
+
defaultChecked: checked,
|
|
37199
|
+
...props,
|
|
37200
|
+
tabIndex: -1,
|
|
37201
|
+
ref: composedRefs,
|
|
37202
|
+
style: {
|
|
37203
|
+
...props.style,
|
|
37204
|
+
...controlSize,
|
|
37205
|
+
position: "absolute",
|
|
37206
|
+
pointerEvents: "none",
|
|
37207
|
+
opacity: 0,
|
|
37208
|
+
margin: 0
|
|
37209
|
+
}
|
|
37210
|
+
}
|
|
37211
|
+
);
|
|
37212
|
+
}
|
|
37213
|
+
);
|
|
37214
|
+
SwitchBubbleInput.displayName = BUBBLE_INPUT_NAME$1;
|
|
37215
|
+
function getState$1(checked) {
|
|
37216
|
+
return checked ? "checked" : "unchecked";
|
|
37217
|
+
}
|
|
37218
|
+
var Root = Switch$1;
|
|
37219
|
+
var Thumb = SwitchThumb;
|
|
37220
|
+
const Switch = reactExports.forwardRef(({ className, ...props }, ref2) => /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
37221
|
+
Root,
|
|
37222
|
+
{
|
|
37223
|
+
className: cn(
|
|
37224
|
+
"peer inline-flex h-5 w-9 shrink-0 cursor-pointer items-center rounded-full border-2 border-transparent shadow-sm transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-primary data-[state=unchecked]:bg-input",
|
|
37225
|
+
className
|
|
37226
|
+
),
|
|
37227
|
+
...props,
|
|
37228
|
+
ref: ref2,
|
|
37229
|
+
children: /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
37230
|
+
Thumb,
|
|
37231
|
+
{
|
|
37232
|
+
className: cn(
|
|
37233
|
+
"pointer-events-none block h-4 w-4 rounded-full bg-background shadow-lg ring-0 transition-transform data-[state=checked]:translate-x-4 data-[state=unchecked]:translate-x-0"
|
|
37234
|
+
)
|
|
37235
|
+
}
|
|
37236
|
+
)
|
|
37237
|
+
}
|
|
37238
|
+
));
|
|
37239
|
+
Switch.displayName = Root.displayName;
|
|
37240
|
+
const createEmptyHeader = () => ({
|
|
37241
|
+
name: "",
|
|
37242
|
+
value: "",
|
|
37243
|
+
enabled: true
|
|
37244
|
+
});
|
|
37245
|
+
const createHeaderFromBearerToken = (bearerToken, headerName) => ({
|
|
37246
|
+
name: headerName || "Authorization",
|
|
37247
|
+
value: (headerName == null ? void 0 : headerName.toLowerCase()) === "authorization" || !headerName ? `Bearer ${bearerToken}` : bearerToken,
|
|
37248
|
+
enabled: true
|
|
37249
|
+
});
|
|
37250
|
+
const migrateFromLegacyAuth = (bearerToken, headerName) => {
|
|
37251
|
+
return bearerToken ? [createHeaderFromBearerToken(bearerToken, headerName)] : [];
|
|
37252
|
+
};
|
|
37253
|
+
const CustomHeaders = ({
|
|
37254
|
+
headers,
|
|
37255
|
+
onChange,
|
|
37256
|
+
className
|
|
37257
|
+
}) => {
|
|
37258
|
+
const [isJsonMode, setIsJsonMode] = reactExports.useState(false);
|
|
37259
|
+
const [jsonValue, setJsonValue] = reactExports.useState("");
|
|
37260
|
+
const [jsonError, setJsonError] = reactExports.useState(null);
|
|
37261
|
+
const [visibleValues, setVisibleValues] = reactExports.useState(/* @__PURE__ */ new Set());
|
|
37262
|
+
const updateHeader = (index2, field, value) => {
|
|
37263
|
+
const newHeaders = [...headers];
|
|
37264
|
+
newHeaders[index2] = { ...newHeaders[index2], [field]: value };
|
|
37265
|
+
onChange(newHeaders);
|
|
37266
|
+
};
|
|
37267
|
+
const addHeader = () => {
|
|
37268
|
+
onChange([...headers, createEmptyHeader()]);
|
|
37269
|
+
};
|
|
37270
|
+
const removeHeader = (index2) => {
|
|
37271
|
+
const newHeaders = headers.filter((_, i) => i !== index2);
|
|
37272
|
+
onChange(newHeaders);
|
|
37273
|
+
};
|
|
37274
|
+
const toggleValueVisibility = (index2) => {
|
|
37275
|
+
const newVisible = new Set(visibleValues);
|
|
37276
|
+
if (newVisible.has(index2)) {
|
|
37277
|
+
newVisible.delete(index2);
|
|
37278
|
+
} else {
|
|
37279
|
+
newVisible.add(index2);
|
|
37280
|
+
}
|
|
37281
|
+
setVisibleValues(newVisible);
|
|
37282
|
+
};
|
|
37283
|
+
const switchToJsonMode = () => {
|
|
37284
|
+
const jsonObject = {};
|
|
37285
|
+
headers.forEach((header) => {
|
|
37286
|
+
if (header.enabled && header.name.trim() && header.value.trim()) {
|
|
37287
|
+
jsonObject[header.name.trim()] = header.value.trim();
|
|
37288
|
+
}
|
|
37289
|
+
});
|
|
37290
|
+
setJsonValue(JSON.stringify(jsonObject, null, 2));
|
|
37291
|
+
setJsonError(null);
|
|
37292
|
+
setIsJsonMode(true);
|
|
37293
|
+
};
|
|
37294
|
+
const switchToFormMode = () => {
|
|
37295
|
+
try {
|
|
37296
|
+
const parsed = JSON.parse(jsonValue);
|
|
37297
|
+
if (typeof parsed !== "object" || parsed === null || Array.isArray(parsed)) {
|
|
37298
|
+
setJsonError("JSON must be an object with string key-value pairs");
|
|
37299
|
+
return;
|
|
37300
|
+
}
|
|
37301
|
+
const newHeaders = Object.entries(parsed).map(
|
|
37302
|
+
([name, value]) => ({
|
|
37303
|
+
name,
|
|
37304
|
+
value: String(value),
|
|
37305
|
+
enabled: true
|
|
37306
|
+
})
|
|
37307
|
+
);
|
|
37308
|
+
onChange(newHeaders);
|
|
37309
|
+
setJsonError(null);
|
|
37310
|
+
setIsJsonMode(false);
|
|
37311
|
+
} catch {
|
|
37312
|
+
setJsonError("Invalid JSON format");
|
|
37313
|
+
}
|
|
37314
|
+
};
|
|
37315
|
+
const handleJsonChange = (value) => {
|
|
37316
|
+
setJsonValue(value);
|
|
37317
|
+
setJsonError(null);
|
|
37318
|
+
};
|
|
37319
|
+
if (isJsonMode) {
|
|
37320
|
+
return /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: `space-y-3 ${className}`, children: [
|
|
37321
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex justify-between items-center gap-2", children: [
|
|
37322
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("h4", { className: "text-sm font-semibold flex-shrink-0", children: "Custom Headers (JSON)" }),
|
|
37323
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
37324
|
+
Button,
|
|
37325
|
+
{
|
|
37326
|
+
type: "button",
|
|
37327
|
+
variant: "outline",
|
|
37328
|
+
size: "sm",
|
|
37329
|
+
onClick: switchToFormMode,
|
|
37330
|
+
className: "flex-shrink-0",
|
|
37331
|
+
children: "Switch to Form"
|
|
37332
|
+
}
|
|
37333
|
+
)
|
|
37334
|
+
] }),
|
|
37335
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "space-y-2", children: [
|
|
37336
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
37337
|
+
Textarea,
|
|
37338
|
+
{
|
|
37339
|
+
value: jsonValue,
|
|
37340
|
+
onChange: (e) => handleJsonChange(e.target.value),
|
|
37341
|
+
placeholder: '{\\n "Authorization": "Bearer token123",\\n "X-Tenant-ID": "acme-inc",\\n "X-Environment": "staging"\\n}',
|
|
37342
|
+
className: "font-mono text-sm min-h-[100px] resize-none"
|
|
37343
|
+
}
|
|
37344
|
+
),
|
|
37345
|
+
jsonError && /* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "text-sm text-red-600", children: jsonError }),
|
|
37346
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "text-xs text-muted-foreground", children: "Enter headers as a JSON object with string key-value pairs." })
|
|
37347
|
+
] })
|
|
37348
|
+
] });
|
|
37349
|
+
}
|
|
37350
|
+
return /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: `space-y-3 ${className}`, children: [
|
|
37351
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex justify-between items-center gap-2", children: [
|
|
37352
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("h4", { className: "text-sm font-semibold flex-shrink-0", children: "Custom Headers" }),
|
|
37353
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex gap-1 flex-shrink-0", children: [
|
|
37354
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
37355
|
+
Button,
|
|
37356
|
+
{
|
|
37357
|
+
type: "button",
|
|
37358
|
+
variant: "outline",
|
|
37359
|
+
size: "sm",
|
|
37360
|
+
onClick: switchToJsonMode,
|
|
37361
|
+
className: "text-xs px-2",
|
|
37362
|
+
children: "JSON"
|
|
37363
|
+
}
|
|
37364
|
+
),
|
|
37365
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs(
|
|
37366
|
+
Button,
|
|
37367
|
+
{
|
|
37368
|
+
type: "button",
|
|
37369
|
+
variant: "outline",
|
|
37370
|
+
size: "sm",
|
|
37371
|
+
onClick: addHeader,
|
|
37372
|
+
className: "text-xs px-2",
|
|
37373
|
+
"data-testid": "add-header-button",
|
|
37374
|
+
children: [
|
|
37375
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(Plus, { className: "w-3 h-3 mr-1" }),
|
|
37376
|
+
"Add"
|
|
37377
|
+
]
|
|
37378
|
+
}
|
|
37379
|
+
)
|
|
37380
|
+
] })
|
|
37381
|
+
] }),
|
|
37382
|
+
headers.length === 0 ? /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "text-center py-4 text-muted-foreground", children: [
|
|
37383
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "text-sm", children: "No custom headers configured" }),
|
|
37384
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "text-xs mt-1", children: 'Click "Add" to get started' })
|
|
37385
|
+
] }) : /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "space-y-2 max-h-[300px] overflow-y-auto", children: headers.map((header, index2) => /* @__PURE__ */ jsxRuntimeExports.jsxs(
|
|
37386
|
+
"div",
|
|
37387
|
+
{
|
|
37388
|
+
className: "flex items-start gap-2 p-2 border rounded-md",
|
|
37389
|
+
children: [
|
|
37390
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
37391
|
+
Switch,
|
|
37392
|
+
{
|
|
37393
|
+
checked: header.enabled,
|
|
37394
|
+
onCheckedChange: (enabled) => updateHeader(index2, "enabled", enabled),
|
|
37395
|
+
className: "shrink-0 mt-2"
|
|
37396
|
+
}
|
|
37397
|
+
),
|
|
37398
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex-1 min-w-0 space-y-2", children: [
|
|
37399
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
37400
|
+
Input,
|
|
37401
|
+
{
|
|
37402
|
+
placeholder: "Header Name",
|
|
37403
|
+
value: header.name,
|
|
37404
|
+
onChange: (e) => updateHeader(index2, "name", e.target.value),
|
|
37405
|
+
className: "font-mono text-xs",
|
|
37406
|
+
"data-testid": `header-name-input-${index2}`
|
|
37407
|
+
}
|
|
37408
|
+
),
|
|
37409
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "relative", children: [
|
|
37410
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
37411
|
+
Input,
|
|
37412
|
+
{
|
|
37413
|
+
placeholder: "Header Value",
|
|
37414
|
+
value: header.value,
|
|
37415
|
+
onChange: (e) => updateHeader(index2, "value", e.target.value),
|
|
37416
|
+
type: visibleValues.has(index2) ? "text" : "password",
|
|
37417
|
+
className: "font-mono text-xs pr-8",
|
|
37418
|
+
"data-testid": `header-value-input-${index2}`
|
|
37419
|
+
}
|
|
37420
|
+
),
|
|
37421
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
37422
|
+
Button,
|
|
37423
|
+
{
|
|
37424
|
+
type: "button",
|
|
37425
|
+
variant: "ghost",
|
|
37426
|
+
size: "sm",
|
|
37427
|
+
onClick: () => toggleValueVisibility(index2),
|
|
37428
|
+
className: "absolute right-1 top-1/2 -translate-y-1/2 h-6 w-6 p-0",
|
|
37429
|
+
children: visibleValues.has(index2) ? /* @__PURE__ */ jsxRuntimeExports.jsx(EyeOff, { className: "w-3 h-3" }) : /* @__PURE__ */ jsxRuntimeExports.jsx(Eye, { className: "w-3 h-3" })
|
|
37430
|
+
}
|
|
37431
|
+
)
|
|
37432
|
+
] })
|
|
37433
|
+
] }),
|
|
37434
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
37435
|
+
Button,
|
|
37436
|
+
{
|
|
37437
|
+
type: "button",
|
|
37438
|
+
variant: "ghost",
|
|
37439
|
+
size: "sm",
|
|
37440
|
+
onClick: () => removeHeader(index2),
|
|
37441
|
+
className: "shrink-0 text-red-600 hover:text-red-700 hover:bg-red-50 h-6 w-6 p-0 mt-2",
|
|
37442
|
+
children: /* @__PURE__ */ jsxRuntimeExports.jsx(Trash2, { className: "w-3 h-3" })
|
|
37443
|
+
}
|
|
37444
|
+
)
|
|
37445
|
+
]
|
|
37446
|
+
},
|
|
37447
|
+
index2
|
|
37448
|
+
)) }),
|
|
37449
|
+
headers.length > 0 && /* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "text-xs text-muted-foreground", children: "Use the toggle to enable/disable headers. Only enabled headers with both name and value will be sent." })
|
|
37450
|
+
] });
|
|
37451
|
+
};
|
|
36958
37452
|
const Sidebar = ({
|
|
36959
37453
|
connectionStatus,
|
|
36960
37454
|
transportType,
|
|
@@ -36967,10 +37461,8 @@ const Sidebar = ({
|
|
|
36967
37461
|
setSseUrl,
|
|
36968
37462
|
env,
|
|
36969
37463
|
setEnv,
|
|
36970
|
-
|
|
36971
|
-
|
|
36972
|
-
headerName,
|
|
36973
|
-
setHeaderName,
|
|
37464
|
+
customHeaders,
|
|
37465
|
+
setCustomHeaders,
|
|
36974
37466
|
oauthClientId,
|
|
36975
37467
|
setOauthClientId,
|
|
36976
37468
|
oauthScope,
|
|
@@ -37046,7 +37538,7 @@ const Sidebar = ({
|
|
|
37046
37538
|
setCopiedServerEntry(true);
|
|
37047
37539
|
toast2({
|
|
37048
37540
|
title: "Config entry copied",
|
|
37049
|
-
description: transportType === "stdio" ? "Server configuration has been copied to clipboard. Add this to your mcp.json inside the 'mcpServers' object with your preferred server name." : "SSE URL has been copied. Use this URL directly in your MCP Client."
|
|
37541
|
+
description: transportType === "stdio" ? "Server configuration has been copied to clipboard. Add this to your mcp.json inside the 'mcpServers' object with your preferred server name." : transportType === "streamable-http" ? "Streamable HTTP URL has been copied. Use this URL directly in your MCP Client." : "SSE URL has been copied. Use this URL directly in your MCP Client."
|
|
37050
37542
|
});
|
|
37051
37543
|
setTimeout(() => {
|
|
37052
37544
|
setCopiedServerEntry(false);
|
|
@@ -37339,42 +37831,13 @@ const Sidebar = ({
|
|
|
37339
37831
|
}
|
|
37340
37832
|
),
|
|
37341
37833
|
showAuthConfig && /* @__PURE__ */ jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [
|
|
37342
|
-
/* @__PURE__ */ jsxRuntimeExports.
|
|
37343
|
-
|
|
37344
|
-
|
|
37345
|
-
|
|
37346
|
-
|
|
37347
|
-
|
|
37348
|
-
|
|
37349
|
-
placeholder: "Authorization",
|
|
37350
|
-
onChange: (e) => setHeaderName && setHeaderName(e.target.value),
|
|
37351
|
-
"data-testid": "header-input",
|
|
37352
|
-
className: "font-mono",
|
|
37353
|
-
value: headerName
|
|
37354
|
-
}
|
|
37355
|
-
),
|
|
37356
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
37357
|
-
"label",
|
|
37358
|
-
{
|
|
37359
|
-
className: "text-sm font-medium",
|
|
37360
|
-
htmlFor: "bearer-token-input",
|
|
37361
|
-
children: "Bearer Token"
|
|
37362
|
-
}
|
|
37363
|
-
),
|
|
37364
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
37365
|
-
Input,
|
|
37366
|
-
{
|
|
37367
|
-
id: "bearer-token-input",
|
|
37368
|
-
placeholder: "Bearer Token",
|
|
37369
|
-
value: bearerToken,
|
|
37370
|
-
onChange: (e) => setBearerToken(e.target.value),
|
|
37371
|
-
"data-testid": "bearer-token-input",
|
|
37372
|
-
className: "font-mono",
|
|
37373
|
-
type: "password"
|
|
37374
|
-
}
|
|
37375
|
-
)
|
|
37376
|
-
] })
|
|
37377
|
-
] }),
|
|
37834
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "p-3 rounded border overflow-hidden", children: /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
37835
|
+
CustomHeaders,
|
|
37836
|
+
{
|
|
37837
|
+
headers: customHeaders,
|
|
37838
|
+
onChange: setCustomHeaders
|
|
37839
|
+
}
|
|
37840
|
+
) }),
|
|
37378
37841
|
transportType !== "stdio" && // OAuth Configuration
|
|
37379
37842
|
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "space-y-2 p-3 rounded border", children: [
|
|
37380
37843
|
/* @__PURE__ */ jsxRuntimeExports.jsx("h4", { className: "text-sm font-semibold flex items-center", children: "OAuth 2.0 Flow" }),
|
|
@@ -37648,7 +38111,7 @@ const Sidebar = ({
|
|
|
37648
38111
|
] });
|
|
37649
38112
|
};
|
|
37650
38113
|
var CHECKBOX_NAME = "Checkbox";
|
|
37651
|
-
var [createCheckboxContext
|
|
38114
|
+
var [createCheckboxContext] = createContextScope(CHECKBOX_NAME);
|
|
37652
38115
|
var [CheckboxProviderImpl, useCheckboxContext] = createCheckboxContext(CHECKBOX_NAME);
|
|
37653
38116
|
function CheckboxProvider(props) {
|
|
37654
38117
|
const {
|
|
@@ -37923,22 +38386,6 @@ const Checkbox = reactExports.forwardRef(({ className, ...props }, ref2) => /* @
|
|
|
37923
38386
|
}
|
|
37924
38387
|
));
|
|
37925
38388
|
Checkbox.displayName = Checkbox$1.displayName;
|
|
37926
|
-
const Textarea = reactExports.forwardRef(
|
|
37927
|
-
({ className, ...props }, ref2) => {
|
|
37928
|
-
return /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
37929
|
-
"textarea",
|
|
37930
|
-
{
|
|
37931
|
-
className: cn(
|
|
37932
|
-
"flex min-h-[60px] w-full rounded-md border border-input bg-transparent px-3 py-2 text-sm shadow-sm placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50",
|
|
37933
|
-
className
|
|
37934
|
-
),
|
|
37935
|
-
ref: ref2,
|
|
37936
|
-
...props
|
|
37937
|
-
}
|
|
37938
|
-
);
|
|
37939
|
-
}
|
|
37940
|
-
);
|
|
37941
|
-
Textarea.displayName = "Textarea";
|
|
37942
38389
|
const ResourceLinkView = reactExports.memo(
|
|
37943
38390
|
({
|
|
37944
38391
|
uri,
|
|
@@ -38186,6 +38633,8 @@ const ToolsTab = ({
|
|
|
38186
38633
|
const [isToolRunning, setIsToolRunning] = reactExports.useState(false);
|
|
38187
38634
|
const [isOutputSchemaExpanded, setIsOutputSchemaExpanded] = reactExports.useState(false);
|
|
38188
38635
|
const [isMetaExpanded, setIsMetaExpanded] = reactExports.useState(false);
|
|
38636
|
+
const { toast: toast2 } = useToast();
|
|
38637
|
+
const { copied, setCopied } = useCopy();
|
|
38189
38638
|
reactExports.useEffect(() => {
|
|
38190
38639
|
const params2 = Object.entries(
|
|
38191
38640
|
(selectedTool == null ? void 0 : selectedTool.inputSchema.properties) ?? []
|
|
@@ -38385,27 +38834,52 @@ const ToolsTab = ({
|
|
|
38385
38834
|
}
|
|
38386
38835
|
)
|
|
38387
38836
|
] }),
|
|
38388
|
-
/* @__PURE__ */ jsxRuntimeExports.
|
|
38389
|
-
|
|
38390
|
-
|
|
38391
|
-
|
|
38392
|
-
|
|
38393
|
-
|
|
38394
|
-
|
|
38395
|
-
|
|
38396
|
-
|
|
38397
|
-
|
|
38398
|
-
|
|
38399
|
-
|
|
38400
|
-
|
|
38401
|
-
/* @__PURE__ */ jsxRuntimeExports.
|
|
38402
|
-
|
|
38403
|
-
|
|
38404
|
-
/* @__PURE__ */ jsxRuntimeExports.
|
|
38405
|
-
|
|
38406
|
-
|
|
38407
|
-
|
|
38408
|
-
|
|
38837
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex gap-2", children: [
|
|
38838
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
38839
|
+
Button,
|
|
38840
|
+
{
|
|
38841
|
+
onClick: async () => {
|
|
38842
|
+
try {
|
|
38843
|
+
setIsToolRunning(true);
|
|
38844
|
+
await callTool(selectedTool.name, params);
|
|
38845
|
+
} finally {
|
|
38846
|
+
setIsToolRunning(false);
|
|
38847
|
+
}
|
|
38848
|
+
},
|
|
38849
|
+
disabled: isToolRunning,
|
|
38850
|
+
children: isToolRunning ? /* @__PURE__ */ jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [
|
|
38851
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(LoaderCircle, { className: "w-4 h-4 mr-2 animate-spin" }),
|
|
38852
|
+
"Running..."
|
|
38853
|
+
] }) : /* @__PURE__ */ jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [
|
|
38854
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(Send, { className: "w-4 h-4 mr-2" }),
|
|
38855
|
+
"Run Tool"
|
|
38856
|
+
] })
|
|
38857
|
+
}
|
|
38858
|
+
),
|
|
38859
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs(
|
|
38860
|
+
Button,
|
|
38861
|
+
{
|
|
38862
|
+
onClick: async () => {
|
|
38863
|
+
try {
|
|
38864
|
+
navigator.clipboard.writeText(
|
|
38865
|
+
JSON.stringify(params, null, 2)
|
|
38866
|
+
);
|
|
38867
|
+
setCopied(true);
|
|
38868
|
+
} catch (error) {
|
|
38869
|
+
toast2({
|
|
38870
|
+
title: "Error",
|
|
38871
|
+
description: `There was an error copying input to the clipboard: ${error instanceof Error ? error.message : String(error)}`,
|
|
38872
|
+
variant: "destructive"
|
|
38873
|
+
});
|
|
38874
|
+
}
|
|
38875
|
+
},
|
|
38876
|
+
children: [
|
|
38877
|
+
copied ? /* @__PURE__ */ jsxRuntimeExports.jsx(CheckCheck, { className: "h-4 w-4 mr-2 dark:text-green-700 text-green-600" }) : /* @__PURE__ */ jsxRuntimeExports.jsx(Copy, { className: "h-4 w-4 mr-2" }),
|
|
38878
|
+
"Copy Input"
|
|
38879
|
+
]
|
|
38880
|
+
}
|
|
38881
|
+
)
|
|
38882
|
+
] }),
|
|
38409
38883
|
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
38410
38884
|
ToolResults,
|
|
38411
38885
|
{
|
|
@@ -38595,6 +39069,31 @@ const App = () => {
|
|
|
38595
39069
|
const [oauthScope, setOauthScope] = reactExports.useState(() => {
|
|
38596
39070
|
return localStorage.getItem("lastOauthScope") || "";
|
|
38597
39071
|
});
|
|
39072
|
+
const [customHeaders, setCustomHeaders] = reactExports.useState(() => {
|
|
39073
|
+
const savedHeaders = localStorage.getItem("lastCustomHeaders");
|
|
39074
|
+
if (savedHeaders) {
|
|
39075
|
+
try {
|
|
39076
|
+
return JSON.parse(savedHeaders);
|
|
39077
|
+
} catch (error) {
|
|
39078
|
+
console.warn(
|
|
39079
|
+
`Failed to parse custom headers: "${savedHeaders}", will try legacy migration`,
|
|
39080
|
+
error
|
|
39081
|
+
);
|
|
39082
|
+
}
|
|
39083
|
+
}
|
|
39084
|
+
const legacyToken = localStorage.getItem("lastBearerToken") || "";
|
|
39085
|
+
const legacyHeaderName = localStorage.getItem("lastHeaderName") || "";
|
|
39086
|
+
if (legacyToken) {
|
|
39087
|
+
return migrateFromLegacyAuth(legacyToken, legacyHeaderName);
|
|
39088
|
+
}
|
|
39089
|
+
return [
|
|
39090
|
+
{
|
|
39091
|
+
name: "Authorization",
|
|
39092
|
+
value: "Bearer ",
|
|
39093
|
+
enabled: true
|
|
39094
|
+
}
|
|
39095
|
+
];
|
|
39096
|
+
});
|
|
38598
39097
|
const [pendingSampleRequests, setPendingSampleRequests] = reactExports.useState([]);
|
|
38599
39098
|
const [pendingElicitationRequests, setPendingElicitationRequests] = reactExports.useState([]);
|
|
38600
39099
|
const [isAuthDebuggerVisible, setIsAuthDebuggerVisible] = reactExports.useState(false);
|
|
@@ -38636,6 +39135,7 @@ const App = () => {
|
|
|
38636
39135
|
serverCapabilities,
|
|
38637
39136
|
mcpClient,
|
|
38638
39137
|
requestHistory,
|
|
39138
|
+
clearRequestHistory,
|
|
38639
39139
|
makeRequest,
|
|
38640
39140
|
sendNotification,
|
|
38641
39141
|
handleCompletion,
|
|
@@ -38648,8 +39148,7 @@ const App = () => {
|
|
|
38648
39148
|
args,
|
|
38649
39149
|
sseUrl,
|
|
38650
39150
|
env,
|
|
38651
|
-
|
|
38652
|
-
headerName,
|
|
39151
|
+
customHeaders,
|
|
38653
39152
|
oauthClientId,
|
|
38654
39153
|
oauthScope,
|
|
38655
39154
|
config,
|
|
@@ -38720,11 +39219,32 @@ const App = () => {
|
|
|
38720
39219
|
localStorage.setItem("lastTransportType", transportType);
|
|
38721
39220
|
}, [transportType]);
|
|
38722
39221
|
reactExports.useEffect(() => {
|
|
38723
|
-
|
|
39222
|
+
if (bearerToken) {
|
|
39223
|
+
localStorage.setItem("lastBearerToken", bearerToken);
|
|
39224
|
+
} else {
|
|
39225
|
+
localStorage.removeItem("lastBearerToken");
|
|
39226
|
+
}
|
|
38724
39227
|
}, [bearerToken]);
|
|
38725
39228
|
reactExports.useEffect(() => {
|
|
38726
|
-
|
|
39229
|
+
if (headerName) {
|
|
39230
|
+
localStorage.setItem("lastHeaderName", headerName);
|
|
39231
|
+
} else {
|
|
39232
|
+
localStorage.removeItem("lastHeaderName");
|
|
39233
|
+
}
|
|
38727
39234
|
}, [headerName]);
|
|
39235
|
+
reactExports.useEffect(() => {
|
|
39236
|
+
localStorage.setItem("lastCustomHeaders", JSON.stringify(customHeaders));
|
|
39237
|
+
}, [customHeaders]);
|
|
39238
|
+
reactExports.useEffect(() => {
|
|
39239
|
+
if (customHeaders.length === 0 && (bearerToken || headerName)) {
|
|
39240
|
+
const migratedHeaders = migrateFromLegacyAuth(bearerToken, headerName);
|
|
39241
|
+
if (migratedHeaders.length > 0) {
|
|
39242
|
+
setCustomHeaders(migratedHeaders);
|
|
39243
|
+
setBearerToken("");
|
|
39244
|
+
setHeaderName("");
|
|
39245
|
+
}
|
|
39246
|
+
}
|
|
39247
|
+
}, [bearerToken, headerName, customHeaders, setCustomHeaders]);
|
|
38728
39248
|
reactExports.useEffect(() => {
|
|
38729
39249
|
localStorage.setItem("lastOauthClientId", oauthClientId);
|
|
38730
39250
|
}, [oauthClientId]);
|
|
@@ -39083,6 +39603,9 @@ const App = () => {
|
|
|
39083
39603
|
const handleRootsChange = async () => {
|
|
39084
39604
|
await sendNotification({ method: "notifications/roots/list_changed" });
|
|
39085
39605
|
};
|
|
39606
|
+
const handleClearNotifications = () => {
|
|
39607
|
+
setNotifications([]);
|
|
39608
|
+
};
|
|
39086
39609
|
const sendLogLevelRequest = async (level) => {
|
|
39087
39610
|
await sendMCPRequest(
|
|
39088
39611
|
{
|
|
@@ -39104,13 +39627,13 @@ const App = () => {
|
|
|
39104
39627
|
) });
|
|
39105
39628
|
if (window.location.pathname === "/oauth/callback") {
|
|
39106
39629
|
const OAuthCallback = React.lazy(
|
|
39107
|
-
() => __vitePreload(() => import("./OAuthCallback-
|
|
39630
|
+
() => __vitePreload(() => import("./OAuthCallback-7gQlGWPl.js"), true ? [] : void 0)
|
|
39108
39631
|
);
|
|
39109
39632
|
return /* @__PURE__ */ jsxRuntimeExports.jsx(reactExports.Suspense, { fallback: /* @__PURE__ */ jsxRuntimeExports.jsx("div", { children: "Loading..." }), children: /* @__PURE__ */ jsxRuntimeExports.jsx(OAuthCallback, { onConnect: onOAuthConnect }) });
|
|
39110
39633
|
}
|
|
39111
39634
|
if (window.location.pathname === "/oauth/callback/debug") {
|
|
39112
39635
|
const OAuthDebugCallback = React.lazy(
|
|
39113
|
-
() => __vitePreload(() => import("./OAuthDebugCallback-
|
|
39636
|
+
() => __vitePreload(() => import("./OAuthDebugCallback-67pOP7RZ.js"), true ? [] : void 0)
|
|
39114
39637
|
);
|
|
39115
39638
|
return /* @__PURE__ */ jsxRuntimeExports.jsx(reactExports.Suspense, { fallback: /* @__PURE__ */ jsxRuntimeExports.jsx("div", { children: "Loading..." }), children: /* @__PURE__ */ jsxRuntimeExports.jsx(OAuthDebugCallback, { onConnect: onOAuthDebugConnect }) });
|
|
39116
39639
|
}
|
|
@@ -39142,10 +39665,8 @@ const App = () => {
|
|
|
39142
39665
|
setEnv,
|
|
39143
39666
|
config,
|
|
39144
39667
|
setConfig,
|
|
39145
|
-
|
|
39146
|
-
|
|
39147
|
-
headerName,
|
|
39148
|
-
setHeaderName,
|
|
39668
|
+
customHeaders,
|
|
39669
|
+
setCustomHeaders,
|
|
39149
39670
|
oauthClientId,
|
|
39150
39671
|
setOauthClientId,
|
|
39151
39672
|
oauthScope,
|
|
@@ -39457,7 +39978,9 @@ const App = () => {
|
|
|
39457
39978
|
HistoryAndNotifications,
|
|
39458
39979
|
{
|
|
39459
39980
|
requestHistory,
|
|
39460
|
-
serverNotifications: notifications
|
|
39981
|
+
serverNotifications: notifications,
|
|
39982
|
+
onClearHistory: clearRequestHistory,
|
|
39983
|
+
onClearNotifications: handleClearNotifications
|
|
39461
39984
|
}
|
|
39462
39985
|
) })
|
|
39463
39986
|
]
|