@modelcontextprotocol/inspector 0.14.2 → 0.15.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +13 -10
- package/cli/build/index.js +38 -3
- package/cli/build/transport.js +14 -1
- package/client/bin/start.js +198 -50
- package/client/dist/assets/{OAuthCallback-UvVmnvtb.js → OAuthCallback-CaW3Hcqw.js} +1 -1
- package/client/dist/assets/{OAuthDebugCallback-CrRUPVLi.js → OAuthDebugCallback-DiBt_oxh.js} +1 -1
- package/client/dist/assets/{index-Daz_CV25.js → index-BNqYF5Na.js} +561 -264
- package/client/dist/index.html +1 -1
- package/package.json +9 -7
- package/server/build/index.js +3 -2
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/OAuthCallback-
|
|
1
|
+
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/OAuthCallback-CaW3Hcqw.js","assets/oauthUtils-DTcoXpSP.js","assets/OAuthDebugCallback-DiBt_oxh.js"])))=>i.map(i=>d[i]);
|
|
2
2
|
function _mergeNamespaces(n, m2) {
|
|
3
3
|
for (var i = 0; i < m2.length; i++) {
|
|
4
4
|
const e = m2[i];
|
|
@@ -15119,9 +15119,10 @@ const enumType = ZodEnum.create;
|
|
|
15119
15119
|
ZodPromise.create;
|
|
15120
15120
|
const optionalType = ZodOptional.create;
|
|
15121
15121
|
ZodNullable.create;
|
|
15122
|
-
const LATEST_PROTOCOL_VERSION = "2025-
|
|
15122
|
+
const LATEST_PROTOCOL_VERSION = "2025-06-18";
|
|
15123
15123
|
const SUPPORTED_PROTOCOL_VERSIONS = [
|
|
15124
15124
|
LATEST_PROTOCOL_VERSION,
|
|
15125
|
+
"2025-03-26",
|
|
15125
15126
|
"2024-11-05",
|
|
15126
15127
|
"2024-10-07"
|
|
15127
15128
|
];
|
|
@@ -15143,7 +15144,8 @@ const RequestSchema = objectType({
|
|
|
15143
15144
|
});
|
|
15144
15145
|
const BaseNotificationParamsSchema = objectType({
|
|
15145
15146
|
/**
|
|
15146
|
-
*
|
|
15147
|
+
* See [MCP specification](https://github.com/modelcontextprotocol/modelcontextprotocol/blob/47339c03c143bb4ec01a26e721a1b8fe66634ebe/docs/specification/draft/basic/index.mdx#general-fields)
|
|
15148
|
+
* for notes on _meta usage.
|
|
15147
15149
|
*/
|
|
15148
15150
|
_meta: optionalType(objectType({}).passthrough())
|
|
15149
15151
|
}).passthrough();
|
|
@@ -15153,7 +15155,8 @@ const NotificationSchema = objectType({
|
|
|
15153
15155
|
});
|
|
15154
15156
|
const ResultSchema = objectType({
|
|
15155
15157
|
/**
|
|
15156
|
-
*
|
|
15158
|
+
* See [MCP specification](https://github.com/modelcontextprotocol/modelcontextprotocol/blob/47339c03c143bb4ec01a26e721a1b8fe66634ebe/docs/specification/draft/basic/index.mdx#general-fields)
|
|
15159
|
+
* for notes on _meta usage.
|
|
15157
15160
|
*/
|
|
15158
15161
|
_meta: optionalType(objectType({}).passthrough())
|
|
15159
15162
|
}).passthrough();
|
|
@@ -15224,10 +15227,22 @@ const CancelledNotificationSchema = NotificationSchema.extend({
|
|
|
15224
15227
|
reason: stringType().optional()
|
|
15225
15228
|
})
|
|
15226
15229
|
});
|
|
15227
|
-
const
|
|
15230
|
+
const BaseMetadataSchema = objectType({
|
|
15231
|
+
/** Intended for programmatic or logical use, but used as a display name in past specs or fallback */
|
|
15228
15232
|
name: stringType(),
|
|
15229
|
-
|
|
15233
|
+
/**
|
|
15234
|
+
* Intended for UI and end-user contexts — optimized to be human-readable and easily understood,
|
|
15235
|
+
* even by those unfamiliar with domain-specific terminology.
|
|
15236
|
+
*
|
|
15237
|
+
* If not provided, the name should be used for display (except for Tool,
|
|
15238
|
+
* where `annotations.title` should be given precedence over using `name`,
|
|
15239
|
+
* if present).
|
|
15240
|
+
*/
|
|
15241
|
+
title: optionalType(stringType())
|
|
15230
15242
|
}).passthrough();
|
|
15243
|
+
const ImplementationSchema = BaseMetadataSchema.extend({
|
|
15244
|
+
version: stringType()
|
|
15245
|
+
});
|
|
15231
15246
|
const ClientCapabilitiesSchema = objectType({
|
|
15232
15247
|
/**
|
|
15233
15248
|
* Experimental, non-standard capabilities that the client supports.
|
|
@@ -15237,6 +15252,10 @@ const ClientCapabilitiesSchema = objectType({
|
|
|
15237
15252
|
* Present if the client supports sampling from an LLM.
|
|
15238
15253
|
*/
|
|
15239
15254
|
sampling: optionalType(objectType({}).passthrough()),
|
|
15255
|
+
/**
|
|
15256
|
+
* Present if the client supports eliciting user input.
|
|
15257
|
+
*/
|
|
15258
|
+
elicitation: optionalType(objectType({}).passthrough()),
|
|
15240
15259
|
/**
|
|
15241
15260
|
* Present if the client supports listing roots.
|
|
15242
15261
|
*/
|
|
@@ -15371,7 +15390,12 @@ const ResourceContentsSchema = objectType({
|
|
|
15371
15390
|
/**
|
|
15372
15391
|
* The MIME type of this resource, if known.
|
|
15373
15392
|
*/
|
|
15374
|
-
mimeType: optionalType(stringType())
|
|
15393
|
+
mimeType: optionalType(stringType()),
|
|
15394
|
+
/**
|
|
15395
|
+
* See [MCP specification](https://github.com/modelcontextprotocol/modelcontextprotocol/blob/47339c03c143bb4ec01a26e721a1b8fe66634ebe/docs/specification/draft/basic/index.mdx#general-fields)
|
|
15396
|
+
* for notes on _meta usage.
|
|
15397
|
+
*/
|
|
15398
|
+
_meta: optionalType(objectType({}).passthrough())
|
|
15375
15399
|
}).passthrough();
|
|
15376
15400
|
const TextResourceContentsSchema = ResourceContentsSchema.extend({
|
|
15377
15401
|
/**
|
|
@@ -15385,17 +15409,11 @@ const BlobResourceContentsSchema = ResourceContentsSchema.extend({
|
|
|
15385
15409
|
*/
|
|
15386
15410
|
blob: stringType().base64()
|
|
15387
15411
|
});
|
|
15388
|
-
const ResourceSchema =
|
|
15412
|
+
const ResourceSchema = BaseMetadataSchema.extend({
|
|
15389
15413
|
/**
|
|
15390
15414
|
* The URI of this resource.
|
|
15391
15415
|
*/
|
|
15392
15416
|
uri: stringType(),
|
|
15393
|
-
/**
|
|
15394
|
-
* A human-readable name for this resource.
|
|
15395
|
-
*
|
|
15396
|
-
* This can be used by clients to populate UI elements.
|
|
15397
|
-
*/
|
|
15398
|
-
name: stringType(),
|
|
15399
15417
|
/**
|
|
15400
15418
|
* A description of what this resource represents.
|
|
15401
15419
|
*
|
|
@@ -15405,19 +15423,18 @@ const ResourceSchema = objectType({
|
|
|
15405
15423
|
/**
|
|
15406
15424
|
* The MIME type of this resource, if known.
|
|
15407
15425
|
*/
|
|
15408
|
-
mimeType: optionalType(stringType())
|
|
15409
|
-
}).passthrough();
|
|
15410
|
-
const ResourceTemplateSchema = objectType({
|
|
15426
|
+
mimeType: optionalType(stringType()),
|
|
15411
15427
|
/**
|
|
15412
|
-
*
|
|
15428
|
+
* See [MCP specification](https://github.com/modelcontextprotocol/modelcontextprotocol/blob/47339c03c143bb4ec01a26e721a1b8fe66634ebe/docs/specification/draft/basic/index.mdx#general-fields)
|
|
15429
|
+
* for notes on _meta usage.
|
|
15413
15430
|
*/
|
|
15414
|
-
|
|
15431
|
+
_meta: optionalType(objectType({}).passthrough())
|
|
15432
|
+
});
|
|
15433
|
+
const ResourceTemplateSchema = BaseMetadataSchema.extend({
|
|
15415
15434
|
/**
|
|
15416
|
-
* A
|
|
15417
|
-
*
|
|
15418
|
-
* This can be used by clients to populate UI elements.
|
|
15435
|
+
* A URI template (according to RFC 6570) that can be used to construct resource URIs.
|
|
15419
15436
|
*/
|
|
15420
|
-
|
|
15437
|
+
uriTemplate: stringType(),
|
|
15421
15438
|
/**
|
|
15422
15439
|
* A description of what this template is for.
|
|
15423
15440
|
*
|
|
@@ -15427,8 +15444,13 @@ const ResourceTemplateSchema = objectType({
|
|
|
15427
15444
|
/**
|
|
15428
15445
|
* The MIME type for all resources that match this template. This should only be included if all resources matching this template have the same type.
|
|
15429
15446
|
*/
|
|
15430
|
-
mimeType: optionalType(stringType())
|
|
15431
|
-
|
|
15447
|
+
mimeType: optionalType(stringType()),
|
|
15448
|
+
/**
|
|
15449
|
+
* See [MCP specification](https://github.com/modelcontextprotocol/modelcontextprotocol/blob/47339c03c143bb4ec01a26e721a1b8fe66634ebe/docs/specification/draft/basic/index.mdx#general-fields)
|
|
15450
|
+
* for notes on _meta usage.
|
|
15451
|
+
*/
|
|
15452
|
+
_meta: optionalType(objectType({}).passthrough())
|
|
15453
|
+
});
|
|
15432
15454
|
const ListResourcesRequestSchema = PaginatedRequestSchema.extend({
|
|
15433
15455
|
method: literalType("resources/list")
|
|
15434
15456
|
});
|
|
@@ -15497,11 +15519,7 @@ const PromptArgumentSchema = objectType({
|
|
|
15497
15519
|
*/
|
|
15498
15520
|
required: optionalType(booleanType())
|
|
15499
15521
|
}).passthrough();
|
|
15500
|
-
const PromptSchema =
|
|
15501
|
-
/**
|
|
15502
|
-
* The name of the prompt or prompt template.
|
|
15503
|
-
*/
|
|
15504
|
-
name: stringType(),
|
|
15522
|
+
const PromptSchema = BaseMetadataSchema.extend({
|
|
15505
15523
|
/**
|
|
15506
15524
|
* An optional description of what this prompt provides
|
|
15507
15525
|
*/
|
|
@@ -15509,8 +15527,13 @@ const PromptSchema = objectType({
|
|
|
15509
15527
|
/**
|
|
15510
15528
|
* A list of arguments to use for templating the prompt.
|
|
15511
15529
|
*/
|
|
15512
|
-
arguments: optionalType(arrayType(PromptArgumentSchema))
|
|
15513
|
-
|
|
15530
|
+
arguments: optionalType(arrayType(PromptArgumentSchema)),
|
|
15531
|
+
/**
|
|
15532
|
+
* See [MCP specification](https://github.com/modelcontextprotocol/modelcontextprotocol/blob/47339c03c143bb4ec01a26e721a1b8fe66634ebe/docs/specification/draft/basic/index.mdx#general-fields)
|
|
15533
|
+
* for notes on _meta usage.
|
|
15534
|
+
*/
|
|
15535
|
+
_meta: optionalType(objectType({}).passthrough())
|
|
15536
|
+
});
|
|
15514
15537
|
const ListPromptsRequestSchema = PaginatedRequestSchema.extend({
|
|
15515
15538
|
method: literalType("prompts/list")
|
|
15516
15539
|
});
|
|
@@ -15535,7 +15558,12 @@ const TextContentSchema = objectType({
|
|
|
15535
15558
|
/**
|
|
15536
15559
|
* The text content of the message.
|
|
15537
15560
|
*/
|
|
15538
|
-
text: stringType()
|
|
15561
|
+
text: stringType(),
|
|
15562
|
+
/**
|
|
15563
|
+
* See [MCP specification](https://github.com/modelcontextprotocol/modelcontextprotocol/blob/47339c03c143bb4ec01a26e721a1b8fe66634ebe/docs/specification/draft/basic/index.mdx#general-fields)
|
|
15564
|
+
* for notes on _meta usage.
|
|
15565
|
+
*/
|
|
15566
|
+
_meta: optionalType(objectType({}).passthrough())
|
|
15539
15567
|
}).passthrough();
|
|
15540
15568
|
const ImageContentSchema = objectType({
|
|
15541
15569
|
type: literalType("image"),
|
|
@@ -15546,7 +15574,12 @@ const ImageContentSchema = objectType({
|
|
|
15546
15574
|
/**
|
|
15547
15575
|
* The MIME type of the image. Different providers may support different image types.
|
|
15548
15576
|
*/
|
|
15549
|
-
mimeType: stringType()
|
|
15577
|
+
mimeType: stringType(),
|
|
15578
|
+
/**
|
|
15579
|
+
* See [MCP specification](https://github.com/modelcontextprotocol/modelcontextprotocol/blob/47339c03c143bb4ec01a26e721a1b8fe66634ebe/docs/specification/draft/basic/index.mdx#general-fields)
|
|
15580
|
+
* for notes on _meta usage.
|
|
15581
|
+
*/
|
|
15582
|
+
_meta: optionalType(objectType({}).passthrough())
|
|
15550
15583
|
}).passthrough();
|
|
15551
15584
|
const AudioContentSchema = objectType({
|
|
15552
15585
|
type: literalType("audio"),
|
|
@@ -15557,20 +15590,35 @@ const AudioContentSchema = objectType({
|
|
|
15557
15590
|
/**
|
|
15558
15591
|
* The MIME type of the audio. Different providers may support different audio types.
|
|
15559
15592
|
*/
|
|
15560
|
-
mimeType: stringType()
|
|
15593
|
+
mimeType: stringType(),
|
|
15594
|
+
/**
|
|
15595
|
+
* See [MCP specification](https://github.com/modelcontextprotocol/modelcontextprotocol/blob/47339c03c143bb4ec01a26e721a1b8fe66634ebe/docs/specification/draft/basic/index.mdx#general-fields)
|
|
15596
|
+
* for notes on _meta usage.
|
|
15597
|
+
*/
|
|
15598
|
+
_meta: optionalType(objectType({}).passthrough())
|
|
15561
15599
|
}).passthrough();
|
|
15562
15600
|
const EmbeddedResourceSchema = objectType({
|
|
15563
15601
|
type: literalType("resource"),
|
|
15564
|
-
resource: unionType([TextResourceContentsSchema, BlobResourceContentsSchema])
|
|
15602
|
+
resource: unionType([TextResourceContentsSchema, BlobResourceContentsSchema]),
|
|
15603
|
+
/**
|
|
15604
|
+
* See [MCP specification](https://github.com/modelcontextprotocol/modelcontextprotocol/blob/47339c03c143bb4ec01a26e721a1b8fe66634ebe/docs/specification/draft/basic/index.mdx#general-fields)
|
|
15605
|
+
* for notes on _meta usage.
|
|
15606
|
+
*/
|
|
15607
|
+
_meta: optionalType(objectType({}).passthrough())
|
|
15565
15608
|
}).passthrough();
|
|
15609
|
+
const ResourceLinkSchema = ResourceSchema.extend({
|
|
15610
|
+
type: literalType("resource_link")
|
|
15611
|
+
});
|
|
15612
|
+
const ContentBlockSchema = unionType([
|
|
15613
|
+
TextContentSchema,
|
|
15614
|
+
ImageContentSchema,
|
|
15615
|
+
AudioContentSchema,
|
|
15616
|
+
ResourceLinkSchema,
|
|
15617
|
+
EmbeddedResourceSchema
|
|
15618
|
+
]);
|
|
15566
15619
|
const PromptMessageSchema = objectType({
|
|
15567
15620
|
role: enumType(["user", "assistant"]),
|
|
15568
|
-
content:
|
|
15569
|
-
TextContentSchema,
|
|
15570
|
-
ImageContentSchema,
|
|
15571
|
-
AudioContentSchema,
|
|
15572
|
-
EmbeddedResourceSchema
|
|
15573
|
-
])
|
|
15621
|
+
content: ContentBlockSchema
|
|
15574
15622
|
}).passthrough();
|
|
15575
15623
|
const GetPromptResultSchema = ResultSchema.extend({
|
|
15576
15624
|
/**
|
|
@@ -15621,11 +15669,7 @@ const ToolAnnotationsSchema = objectType({
|
|
|
15621
15669
|
*/
|
|
15622
15670
|
openWorldHint: optionalType(booleanType())
|
|
15623
15671
|
}).passthrough();
|
|
15624
|
-
const ToolSchema =
|
|
15625
|
-
/**
|
|
15626
|
-
* The name of the tool.
|
|
15627
|
-
*/
|
|
15628
|
-
name: stringType(),
|
|
15672
|
+
const ToolSchema = BaseMetadataSchema.extend({
|
|
15629
15673
|
/**
|
|
15630
15674
|
* A human-readable description of the tool.
|
|
15631
15675
|
*/
|
|
@@ -15650,8 +15694,13 @@ const ToolSchema = objectType({
|
|
|
15650
15694
|
/**
|
|
15651
15695
|
* Optional additional tool information.
|
|
15652
15696
|
*/
|
|
15653
|
-
annotations: optionalType(ToolAnnotationsSchema)
|
|
15654
|
-
|
|
15697
|
+
annotations: optionalType(ToolAnnotationsSchema),
|
|
15698
|
+
/**
|
|
15699
|
+
* See [MCP specification](https://github.com/modelcontextprotocol/modelcontextprotocol/blob/47339c03c143bb4ec01a26e721a1b8fe66634ebe/docs/specification/draft/basic/index.mdx#general-fields)
|
|
15700
|
+
* for notes on _meta usage.
|
|
15701
|
+
*/
|
|
15702
|
+
_meta: optionalType(objectType({}).passthrough())
|
|
15703
|
+
});
|
|
15655
15704
|
const ListToolsRequestSchema = PaginatedRequestSchema.extend({
|
|
15656
15705
|
method: literalType("tools/list")
|
|
15657
15706
|
});
|
|
@@ -15665,12 +15714,7 @@ const CallToolResultSchema = ResultSchema.extend({
|
|
|
15665
15714
|
* If the Tool does not define an outputSchema, this field MUST be present in the result.
|
|
15666
15715
|
* For backwards compatibility, this field is always present, but it may be empty.
|
|
15667
15716
|
*/
|
|
15668
|
-
content: arrayType(
|
|
15669
|
-
TextContentSchema,
|
|
15670
|
-
ImageContentSchema,
|
|
15671
|
-
AudioContentSchema,
|
|
15672
|
-
EmbeddedResourceSchema
|
|
15673
|
-
])).default([]),
|
|
15717
|
+
content: arrayType(ContentBlockSchema).default([]),
|
|
15674
15718
|
/**
|
|
15675
15719
|
* An object containing structured tool output.
|
|
15676
15720
|
*
|
|
@@ -15814,7 +15858,68 @@ const CreateMessageResultSchema = ResultSchema.extend({
|
|
|
15814
15858
|
AudioContentSchema
|
|
15815
15859
|
])
|
|
15816
15860
|
});
|
|
15817
|
-
const
|
|
15861
|
+
const BooleanSchemaSchema = objectType({
|
|
15862
|
+
type: literalType("boolean"),
|
|
15863
|
+
title: optionalType(stringType()),
|
|
15864
|
+
description: optionalType(stringType()),
|
|
15865
|
+
default: optionalType(booleanType())
|
|
15866
|
+
}).passthrough();
|
|
15867
|
+
const StringSchemaSchema = objectType({
|
|
15868
|
+
type: literalType("string"),
|
|
15869
|
+
title: optionalType(stringType()),
|
|
15870
|
+
description: optionalType(stringType()),
|
|
15871
|
+
minLength: optionalType(numberType()),
|
|
15872
|
+
maxLength: optionalType(numberType()),
|
|
15873
|
+
format: optionalType(enumType(["email", "uri", "date", "date-time"]))
|
|
15874
|
+
}).passthrough();
|
|
15875
|
+
const NumberSchemaSchema = objectType({
|
|
15876
|
+
type: enumType(["number", "integer"]),
|
|
15877
|
+
title: optionalType(stringType()),
|
|
15878
|
+
description: optionalType(stringType()),
|
|
15879
|
+
minimum: optionalType(numberType()),
|
|
15880
|
+
maximum: optionalType(numberType())
|
|
15881
|
+
}).passthrough();
|
|
15882
|
+
const EnumSchemaSchema = objectType({
|
|
15883
|
+
type: literalType("string"),
|
|
15884
|
+
title: optionalType(stringType()),
|
|
15885
|
+
description: optionalType(stringType()),
|
|
15886
|
+
enum: arrayType(stringType()),
|
|
15887
|
+
enumNames: optionalType(arrayType(stringType()))
|
|
15888
|
+
}).passthrough();
|
|
15889
|
+
const PrimitiveSchemaDefinitionSchema = unionType([
|
|
15890
|
+
BooleanSchemaSchema,
|
|
15891
|
+
StringSchemaSchema,
|
|
15892
|
+
NumberSchemaSchema,
|
|
15893
|
+
EnumSchemaSchema
|
|
15894
|
+
]);
|
|
15895
|
+
const ElicitRequestSchema = RequestSchema.extend({
|
|
15896
|
+
method: literalType("elicitation/create"),
|
|
15897
|
+
params: BaseRequestParamsSchema.extend({
|
|
15898
|
+
/**
|
|
15899
|
+
* The message to present to the user.
|
|
15900
|
+
*/
|
|
15901
|
+
message: stringType(),
|
|
15902
|
+
/**
|
|
15903
|
+
* The schema for the requested user input.
|
|
15904
|
+
*/
|
|
15905
|
+
requestedSchema: objectType({
|
|
15906
|
+
type: literalType("object"),
|
|
15907
|
+
properties: recordType(stringType(), PrimitiveSchemaDefinitionSchema),
|
|
15908
|
+
required: optionalType(arrayType(stringType()))
|
|
15909
|
+
}).passthrough()
|
|
15910
|
+
})
|
|
15911
|
+
});
|
|
15912
|
+
const ElicitResultSchema = ResultSchema.extend({
|
|
15913
|
+
/**
|
|
15914
|
+
* The user's response action.
|
|
15915
|
+
*/
|
|
15916
|
+
action: enumType(["accept", "reject", "cancel"]),
|
|
15917
|
+
/**
|
|
15918
|
+
* The collected user input content (only present if action is "accept").
|
|
15919
|
+
*/
|
|
15920
|
+
content: optionalType(recordType(stringType(), unknownType()))
|
|
15921
|
+
});
|
|
15922
|
+
const ResourceTemplateReferenceSchema = objectType({
|
|
15818
15923
|
type: literalType("ref/resource"),
|
|
15819
15924
|
/**
|
|
15820
15925
|
* The URI or URI template of the resource.
|
|
@@ -15831,7 +15936,7 @@ const PromptReferenceSchema = objectType({
|
|
|
15831
15936
|
const CompleteRequestSchema = RequestSchema.extend({
|
|
15832
15937
|
method: literalType("completion/complete"),
|
|
15833
15938
|
params: BaseRequestParamsSchema.extend({
|
|
15834
|
-
ref: unionType([PromptReferenceSchema,
|
|
15939
|
+
ref: unionType([PromptReferenceSchema, ResourceTemplateReferenceSchema]),
|
|
15835
15940
|
/**
|
|
15836
15941
|
* The argument's information
|
|
15837
15942
|
*/
|
|
@@ -15844,7 +15949,13 @@ const CompleteRequestSchema = RequestSchema.extend({
|
|
|
15844
15949
|
* The value of the argument to use for completion matching.
|
|
15845
15950
|
*/
|
|
15846
15951
|
value: stringType()
|
|
15847
|
-
}).passthrough()
|
|
15952
|
+
}).passthrough(),
|
|
15953
|
+
context: optionalType(objectType({
|
|
15954
|
+
/**
|
|
15955
|
+
* Previously-resolved variables in a URI template or prompt.
|
|
15956
|
+
*/
|
|
15957
|
+
arguments: optionalType(recordType(stringType(), stringType()))
|
|
15958
|
+
}))
|
|
15848
15959
|
})
|
|
15849
15960
|
});
|
|
15850
15961
|
const CompleteResultSchema = ResultSchema.extend({
|
|
@@ -15871,7 +15982,12 @@ const RootSchema = objectType({
|
|
|
15871
15982
|
/**
|
|
15872
15983
|
* An optional name for the root.
|
|
15873
15984
|
*/
|
|
15874
|
-
name: optionalType(stringType())
|
|
15985
|
+
name: optionalType(stringType()),
|
|
15986
|
+
/**
|
|
15987
|
+
* See [MCP specification](https://github.com/modelcontextprotocol/modelcontextprotocol/blob/47339c03c143bb4ec01a26e721a1b8fe66634ebe/docs/specification/draft/basic/index.mdx#general-fields)
|
|
15988
|
+
* for notes on _meta usage.
|
|
15989
|
+
*/
|
|
15990
|
+
_meta: optionalType(objectType({}).passthrough())
|
|
15875
15991
|
}).passthrough();
|
|
15876
15992
|
const ListRootsRequestSchema = RequestSchema.extend({
|
|
15877
15993
|
method: literalType("roots/list")
|
|
@@ -15906,11 +16022,13 @@ const ClientNotificationSchema = unionType([
|
|
|
15906
16022
|
unionType([
|
|
15907
16023
|
EmptyResultSchema,
|
|
15908
16024
|
CreateMessageResultSchema,
|
|
16025
|
+
ElicitResultSchema,
|
|
15909
16026
|
ListRootsResultSchema
|
|
15910
16027
|
]);
|
|
15911
16028
|
unionType([
|
|
15912
16029
|
PingRequestSchema,
|
|
15913
16030
|
CreateMessageRequestSchema,
|
|
16031
|
+
ElicitRequestSchema,
|
|
15914
16032
|
ListRootsRequestSchema
|
|
15915
16033
|
]);
|
|
15916
16034
|
const ServerNotificationSchema = unionType([
|
|
@@ -16005,7 +16123,8 @@ const OAuthClientMetadataSchema = objectType({
|
|
|
16005
16123
|
jwks_uri: stringType().optional(),
|
|
16006
16124
|
jwks: anyType().optional(),
|
|
16007
16125
|
software_id: stringType().optional(),
|
|
16008
|
-
software_version: stringType().optional()
|
|
16126
|
+
software_version: stringType().optional(),
|
|
16127
|
+
software_statement: stringType().optional()
|
|
16009
16128
|
}).strip();
|
|
16010
16129
|
const OAuthClientInformationSchema = objectType({
|
|
16011
16130
|
client_id: stringType(),
|
|
@@ -16074,6 +16193,7 @@ const EMPTY_DEBUGGER_STATE = {
|
|
|
16074
16193
|
oauthMetadata: null,
|
|
16075
16194
|
resourceMetadata: null,
|
|
16076
16195
|
resourceMetadataError: null,
|
|
16196
|
+
resource: null,
|
|
16077
16197
|
authServerUrl: null,
|
|
16078
16198
|
oauthClientInfo: null,
|
|
16079
16199
|
authorizationUrl: null,
|
|
@@ -16227,21 +16347,40 @@ async function pkceChallenge(length) {
|
|
|
16227
16347
|
code_challenge: challenge
|
|
16228
16348
|
};
|
|
16229
16349
|
}
|
|
16350
|
+
function resourceUrlFromServerUrl(url) {
|
|
16351
|
+
const resourceURL = typeof url === "string" ? new URL(url) : new URL(url.href);
|
|
16352
|
+
resourceURL.hash = "";
|
|
16353
|
+
return resourceURL;
|
|
16354
|
+
}
|
|
16355
|
+
function checkResourceAllowed({ requestedResource, configuredResource }) {
|
|
16356
|
+
const requested = typeof requestedResource === "string" ? new URL(requestedResource) : new URL(requestedResource.href);
|
|
16357
|
+
const configured = typeof configuredResource === "string" ? new URL(configuredResource) : new URL(configuredResource.href);
|
|
16358
|
+
if (requested.origin !== configured.origin) {
|
|
16359
|
+
return false;
|
|
16360
|
+
}
|
|
16361
|
+
if (requested.pathname.length < configured.pathname.length) {
|
|
16362
|
+
return false;
|
|
16363
|
+
}
|
|
16364
|
+
const requestedPath = requested.pathname.endsWith("/") ? requested.pathname : requested.pathname + "/";
|
|
16365
|
+
const configuredPath = configured.pathname.endsWith("/") ? configured.pathname : configured.pathname + "/";
|
|
16366
|
+
return requestedPath.startsWith(configuredPath);
|
|
16367
|
+
}
|
|
16230
16368
|
class UnauthorizedError extends Error {
|
|
16231
16369
|
constructor(message) {
|
|
16232
16370
|
super(message !== null && message !== void 0 ? message : "Unauthorized");
|
|
16233
16371
|
}
|
|
16234
16372
|
}
|
|
16235
16373
|
async function auth(provider, { serverUrl, authorizationCode, scope, resourceMetadataUrl }) {
|
|
16374
|
+
let resourceMetadata;
|
|
16236
16375
|
let authorizationServerUrl = serverUrl;
|
|
16237
16376
|
try {
|
|
16238
|
-
|
|
16377
|
+
resourceMetadata = await discoverOAuthProtectedResourceMetadata(serverUrl, { resourceMetadataUrl });
|
|
16239
16378
|
if (resourceMetadata.authorization_servers && resourceMetadata.authorization_servers.length > 0) {
|
|
16240
16379
|
authorizationServerUrl = resourceMetadata.authorization_servers[0];
|
|
16241
16380
|
}
|
|
16242
|
-
} catch (
|
|
16243
|
-
console.warn("Could not load OAuth Protected Resource metadata, falling back to /.well-known/oauth-authorization-server", error);
|
|
16381
|
+
} catch (_a) {
|
|
16244
16382
|
}
|
|
16383
|
+
const resource = await selectResourceURL(serverUrl, provider, resourceMetadata);
|
|
16245
16384
|
const metadata = await discoverOAuthMetadata(authorizationServerUrl);
|
|
16246
16385
|
let clientInformation = await Promise.resolve(provider.clientInformation());
|
|
16247
16386
|
if (!clientInformation) {
|
|
@@ -16265,7 +16404,8 @@ async function auth(provider, { serverUrl, authorizationCode, scope, resourceMet
|
|
|
16265
16404
|
clientInformation,
|
|
16266
16405
|
authorizationCode,
|
|
16267
16406
|
codeVerifier: codeVerifier2,
|
|
16268
|
-
redirectUri: provider.redirectUrl
|
|
16407
|
+
redirectUri: provider.redirectUrl,
|
|
16408
|
+
resource
|
|
16269
16409
|
});
|
|
16270
16410
|
await provider.saveTokens(tokens2);
|
|
16271
16411
|
return "AUTHORIZED";
|
|
@@ -16276,12 +16416,12 @@ async function auth(provider, { serverUrl, authorizationCode, scope, resourceMet
|
|
|
16276
16416
|
const newTokens = await refreshAuthorization(authorizationServerUrl, {
|
|
16277
16417
|
metadata,
|
|
16278
16418
|
clientInformation,
|
|
16279
|
-
refreshToken: tokens.refresh_token
|
|
16419
|
+
refreshToken: tokens.refresh_token,
|
|
16420
|
+
resource
|
|
16280
16421
|
});
|
|
16281
16422
|
await provider.saveTokens(newTokens);
|
|
16282
16423
|
return "AUTHORIZED";
|
|
16283
|
-
} catch (
|
|
16284
|
-
console.error("Could not refresh OAuth tokens:", error);
|
|
16424
|
+
} catch (_b) {
|
|
16285
16425
|
}
|
|
16286
16426
|
}
|
|
16287
16427
|
const state = provider.state ? await provider.state() : void 0;
|
|
@@ -16290,12 +16430,26 @@ async function auth(provider, { serverUrl, authorizationCode, scope, resourceMet
|
|
|
16290
16430
|
clientInformation,
|
|
16291
16431
|
state,
|
|
16292
16432
|
redirectUrl: provider.redirectUrl,
|
|
16293
|
-
scope: scope || provider.clientMetadata.scope
|
|
16433
|
+
scope: scope || provider.clientMetadata.scope,
|
|
16434
|
+
resource
|
|
16294
16435
|
});
|
|
16295
16436
|
await provider.saveCodeVerifier(codeVerifier);
|
|
16296
16437
|
await provider.redirectToAuthorization(authorizationUrl);
|
|
16297
16438
|
return "REDIRECT";
|
|
16298
16439
|
}
|
|
16440
|
+
async function selectResourceURL(serverUrl, provider, resourceMetadata) {
|
|
16441
|
+
const defaultResource = resourceUrlFromServerUrl(serverUrl);
|
|
16442
|
+
if (provider.validateResourceURL) {
|
|
16443
|
+
return await provider.validateResourceURL(defaultResource, resourceMetadata === null || resourceMetadata === void 0 ? void 0 : resourceMetadata.resource);
|
|
16444
|
+
}
|
|
16445
|
+
if (!resourceMetadata) {
|
|
16446
|
+
return void 0;
|
|
16447
|
+
}
|
|
16448
|
+
if (!checkResourceAllowed({ requestedResource: defaultResource, configuredResource: resourceMetadata.resource })) {
|
|
16449
|
+
throw new Error(`Protected resource ${resourceMetadata.resource} does not match expected ${defaultResource} (or origin)`);
|
|
16450
|
+
}
|
|
16451
|
+
return new URL(resourceMetadata.resource);
|
|
16452
|
+
}
|
|
16299
16453
|
function extractResourceMetadataUrl(res) {
|
|
16300
16454
|
const authenticateHeader = res.headers.get("WWW-Authenticate");
|
|
16301
16455
|
if (!authenticateHeader) {
|
|
@@ -16303,7 +16457,6 @@ function extractResourceMetadataUrl(res) {
|
|
|
16303
16457
|
}
|
|
16304
16458
|
const [type2, scheme] = authenticateHeader.split(" ");
|
|
16305
16459
|
if (type2.toLowerCase() !== "bearer" || !scheme) {
|
|
16306
|
-
console.log("Invalid WWW-Authenticate header format, expected 'Bearer'");
|
|
16307
16460
|
return void 0;
|
|
16308
16461
|
}
|
|
16309
16462
|
const regex = /resource_metadata="([^"]*)"/;
|
|
@@ -16314,14 +16467,15 @@ function extractResourceMetadataUrl(res) {
|
|
|
16314
16467
|
try {
|
|
16315
16468
|
return new URL(match[1]);
|
|
16316
16469
|
} catch (_a) {
|
|
16317
|
-
console.log("Invalid resource metadata url: ", match[1]);
|
|
16318
16470
|
return void 0;
|
|
16319
16471
|
}
|
|
16320
16472
|
}
|
|
16321
16473
|
async function discoverOAuthProtectedResourceMetadata(serverUrl, opts) {
|
|
16322
16474
|
var _a;
|
|
16323
16475
|
let url;
|
|
16324
|
-
{
|
|
16476
|
+
if (opts === null || opts === void 0 ? void 0 : opts.resourceMetadataUrl) {
|
|
16477
|
+
url = new URL(opts === null || opts === void 0 ? void 0 : opts.resourceMetadataUrl);
|
|
16478
|
+
} else {
|
|
16325
16479
|
url = new URL("/.well-known/oauth-protected-resource", serverUrl);
|
|
16326
16480
|
}
|
|
16327
16481
|
let response;
|
|
@@ -16346,24 +16500,50 @@ async function discoverOAuthProtectedResourceMetadata(serverUrl, opts) {
|
|
|
16346
16500
|
}
|
|
16347
16501
|
return OAuthProtectedResourceMetadataSchema.parse(await response.json());
|
|
16348
16502
|
}
|
|
16349
|
-
async function
|
|
16350
|
-
var _a;
|
|
16351
|
-
const url = new URL("/.well-known/oauth-authorization-server", authorizationServerUrl);
|
|
16352
|
-
let response;
|
|
16503
|
+
async function fetchWithCorsRetry(url, headers) {
|
|
16353
16504
|
try {
|
|
16354
|
-
|
|
16355
|
-
headers: {
|
|
16356
|
-
"MCP-Protocol-Version": (_a = opts === null || opts === void 0 ? void 0 : opts.protocolVersion) !== null && _a !== void 0 ? _a : LATEST_PROTOCOL_VERSION
|
|
16357
|
-
}
|
|
16358
|
-
});
|
|
16505
|
+
return await fetch(url, { headers });
|
|
16359
16506
|
} catch (error) {
|
|
16360
16507
|
if (error instanceof TypeError) {
|
|
16361
|
-
|
|
16362
|
-
} else {
|
|
16363
|
-
throw error;
|
|
16508
|
+
return await fetch(url);
|
|
16364
16509
|
}
|
|
16510
|
+
throw error;
|
|
16365
16511
|
}
|
|
16366
|
-
|
|
16512
|
+
}
|
|
16513
|
+
function buildWellKnownPath(pathname) {
|
|
16514
|
+
let wellKnownPath = `/.well-known/oauth-authorization-server${pathname}`;
|
|
16515
|
+
if (pathname.endsWith("/")) {
|
|
16516
|
+
wellKnownPath = wellKnownPath.slice(0, -1);
|
|
16517
|
+
}
|
|
16518
|
+
return wellKnownPath;
|
|
16519
|
+
}
|
|
16520
|
+
async function tryMetadataDiscovery(url, protocolVersion) {
|
|
16521
|
+
const headers = {
|
|
16522
|
+
"MCP-Protocol-Version": protocolVersion
|
|
16523
|
+
};
|
|
16524
|
+
return await fetchWithCorsRetry(url, headers);
|
|
16525
|
+
}
|
|
16526
|
+
function shouldAttemptFallback(response, pathname) {
|
|
16527
|
+
return response.status === 404 && pathname !== "/";
|
|
16528
|
+
}
|
|
16529
|
+
async function discoverOAuthMetadata(authorizationServerUrl, opts) {
|
|
16530
|
+
var _a;
|
|
16531
|
+
const issuer = new URL(authorizationServerUrl);
|
|
16532
|
+
const protocolVersion = (_a = void 0) !== null && _a !== void 0 ? _a : LATEST_PROTOCOL_VERSION;
|
|
16533
|
+
const wellKnownPath = buildWellKnownPath(issuer.pathname);
|
|
16534
|
+
const pathAwareUrl = new URL(wellKnownPath, issuer);
|
|
16535
|
+
let response = await tryMetadataDiscovery(pathAwareUrl, protocolVersion);
|
|
16536
|
+
if (shouldAttemptFallback(response, issuer.pathname)) {
|
|
16537
|
+
try {
|
|
16538
|
+
const rootUrl = new URL("/.well-known/oauth-authorization-server", issuer);
|
|
16539
|
+
response = await tryMetadataDiscovery(rootUrl, protocolVersion);
|
|
16540
|
+
if (response.status === 404) {
|
|
16541
|
+
return void 0;
|
|
16542
|
+
}
|
|
16543
|
+
} catch (_b) {
|
|
16544
|
+
return void 0;
|
|
16545
|
+
}
|
|
16546
|
+
} else if (response.status === 404) {
|
|
16367
16547
|
return void 0;
|
|
16368
16548
|
}
|
|
16369
16549
|
if (!response.ok) {
|
|
@@ -16371,7 +16551,7 @@ async function discoverOAuthMetadata(authorizationServerUrl, opts) {
|
|
|
16371
16551
|
}
|
|
16372
16552
|
return OAuthMetadataSchema.parse(await response.json());
|
|
16373
16553
|
}
|
|
16374
|
-
async function startAuthorization(authorizationServerUrl, { metadata, clientInformation, redirectUrl, scope, state }) {
|
|
16554
|
+
async function startAuthorization(authorizationServerUrl, { metadata, clientInformation, redirectUrl, scope, state, resource }) {
|
|
16375
16555
|
const responseType = "code";
|
|
16376
16556
|
const codeChallengeMethod = "S256";
|
|
16377
16557
|
let authorizationUrl;
|
|
@@ -16400,9 +16580,12 @@ async function startAuthorization(authorizationServerUrl, { metadata, clientInfo
|
|
|
16400
16580
|
if (scope) {
|
|
16401
16581
|
authorizationUrl.searchParams.set("scope", scope);
|
|
16402
16582
|
}
|
|
16583
|
+
if (resource) {
|
|
16584
|
+
authorizationUrl.searchParams.set("resource", resource.href);
|
|
16585
|
+
}
|
|
16403
16586
|
return { authorizationUrl, codeVerifier };
|
|
16404
16587
|
}
|
|
16405
|
-
async function exchangeAuthorization(authorizationServerUrl, { metadata, clientInformation, authorizationCode, codeVerifier, redirectUri }) {
|
|
16588
|
+
async function exchangeAuthorization(authorizationServerUrl, { metadata, clientInformation, authorizationCode, codeVerifier, redirectUri, resource }) {
|
|
16406
16589
|
const grantType = "authorization_code";
|
|
16407
16590
|
let tokenUrl;
|
|
16408
16591
|
if (metadata) {
|
|
@@ -16423,6 +16606,9 @@ async function exchangeAuthorization(authorizationServerUrl, { metadata, clientI
|
|
|
16423
16606
|
if (clientInformation.client_secret) {
|
|
16424
16607
|
params.set("client_secret", clientInformation.client_secret);
|
|
16425
16608
|
}
|
|
16609
|
+
if (resource) {
|
|
16610
|
+
params.set("resource", resource.href);
|
|
16611
|
+
}
|
|
16426
16612
|
const response = await fetch(tokenUrl, {
|
|
16427
16613
|
method: "POST",
|
|
16428
16614
|
headers: {
|
|
@@ -16435,7 +16621,7 @@ async function exchangeAuthorization(authorizationServerUrl, { metadata, clientI
|
|
|
16435
16621
|
}
|
|
16436
16622
|
return OAuthTokensSchema.parse(await response.json());
|
|
16437
16623
|
}
|
|
16438
|
-
async function refreshAuthorization(authorizationServerUrl, { metadata, clientInformation, refreshToken }) {
|
|
16624
|
+
async function refreshAuthorization(authorizationServerUrl, { metadata, clientInformation, refreshToken, resource }) {
|
|
16439
16625
|
const grantType = "refresh_token";
|
|
16440
16626
|
let tokenUrl;
|
|
16441
16627
|
if (metadata) {
|
|
@@ -16454,6 +16640,9 @@ async function refreshAuthorization(authorizationServerUrl, { metadata, clientIn
|
|
|
16454
16640
|
if (clientInformation.client_secret) {
|
|
16455
16641
|
params.set("client_secret", clientInformation.client_secret);
|
|
16456
16642
|
}
|
|
16643
|
+
if (resource) {
|
|
16644
|
+
params.set("resource", resource.href);
|
|
16645
|
+
}
|
|
16457
16646
|
const response = await fetch(tokenUrl, {
|
|
16458
16647
|
method: "POST",
|
|
16459
16648
|
headers: {
|
|
@@ -16493,14 +16682,14 @@ const oauthTransitions = {
|
|
|
16493
16682
|
canTransition: async () => true,
|
|
16494
16683
|
execute: async (context) => {
|
|
16495
16684
|
var _a;
|
|
16496
|
-
let authServerUrl = new URL(context.serverUrl);
|
|
16685
|
+
let authServerUrl = new URL("/", context.serverUrl);
|
|
16497
16686
|
let resourceMetadata = null;
|
|
16498
16687
|
let resourceMetadataError = null;
|
|
16499
16688
|
try {
|
|
16500
16689
|
resourceMetadata = await discoverOAuthProtectedResourceMetadata(
|
|
16501
16690
|
context.serverUrl
|
|
16502
16691
|
);
|
|
16503
|
-
if (
|
|
16692
|
+
if ((_a = resourceMetadata == null ? void 0 : resourceMetadata.authorization_servers) == null ? void 0 : _a.length) {
|
|
16504
16693
|
authServerUrl = new URL(resourceMetadata.authorization_servers[0]);
|
|
16505
16694
|
}
|
|
16506
16695
|
} catch (e) {
|
|
@@ -16510,6 +16699,12 @@ const oauthTransitions = {
|
|
|
16510
16699
|
resourceMetadataError = new Error(String(e));
|
|
16511
16700
|
}
|
|
16512
16701
|
}
|
|
16702
|
+
const resource = await selectResourceURL(
|
|
16703
|
+
context.serverUrl,
|
|
16704
|
+
context.provider,
|
|
16705
|
+
// we default to null, so swap it for undefined if not set
|
|
16706
|
+
resourceMetadata ?? void 0
|
|
16707
|
+
);
|
|
16513
16708
|
const metadata = await discoverOAuthMetadata(authServerUrl);
|
|
16514
16709
|
if (!metadata) {
|
|
16515
16710
|
throw new Error("Failed to discover OAuth metadata");
|
|
@@ -16518,6 +16713,7 @@ const oauthTransitions = {
|
|
|
16518
16713
|
context.provider.saveServerMetadata(parsedMetadata);
|
|
16519
16714
|
context.updateState({
|
|
16520
16715
|
resourceMetadata,
|
|
16716
|
+
resource,
|
|
16521
16717
|
resourceMetadataError,
|
|
16522
16718
|
authServerUrl,
|
|
16523
16719
|
oauthMetadata: parsedMetadata,
|
|
@@ -16561,7 +16757,8 @@ const oauthTransitions = {
|
|
|
16561
16757
|
metadata,
|
|
16562
16758
|
clientInformation,
|
|
16563
16759
|
redirectUrl: context.provider.redirectUrl,
|
|
16564
|
-
scope
|
|
16760
|
+
scope,
|
|
16761
|
+
resource: context.state.resource ?? void 0
|
|
16565
16762
|
}
|
|
16566
16763
|
);
|
|
16567
16764
|
context.provider.saveCodeVerifier(codeVerifier);
|
|
@@ -16599,7 +16796,8 @@ const oauthTransitions = {
|
|
|
16599
16796
|
clientInformation,
|
|
16600
16797
|
authorizationCode: context.state.authorizationCode,
|
|
16601
16798
|
codeVerifier,
|
|
16602
|
-
redirectUri: context.provider.redirectUrl
|
|
16799
|
+
redirectUri: context.provider.redirectUrl,
|
|
16800
|
+
resource: context.state.resource ?? void 0
|
|
16603
16801
|
});
|
|
16604
16802
|
context.provider.saveTokens(tokens);
|
|
16605
16803
|
context.updateState({
|
|
@@ -22802,14 +23000,21 @@ class Protocol {
|
|
|
22802
23000
|
* The Protocol object assumes ownership of the Transport, replacing any callbacks that have already been set, and expects that it is the only user of the Transport instance going forward.
|
|
22803
23001
|
*/
|
|
22804
23002
|
async connect(transport) {
|
|
23003
|
+
var _a, _b, _c;
|
|
22805
23004
|
this._transport = transport;
|
|
23005
|
+
const _onclose = (_a = this.transport) === null || _a === void 0 ? void 0 : _a.onclose;
|
|
22806
23006
|
this._transport.onclose = () => {
|
|
23007
|
+
_onclose === null || _onclose === void 0 ? void 0 : _onclose();
|
|
22807
23008
|
this._onclose();
|
|
22808
23009
|
};
|
|
23010
|
+
const _onerror = (_b = this.transport) === null || _b === void 0 ? void 0 : _b.onerror;
|
|
22809
23011
|
this._transport.onerror = (error) => {
|
|
23012
|
+
_onerror === null || _onerror === void 0 ? void 0 : _onerror(error);
|
|
22810
23013
|
this._onerror(error);
|
|
22811
23014
|
};
|
|
23015
|
+
const _onmessage = (_c = this._transport) === null || _c === void 0 ? void 0 : _c.onmessage;
|
|
22812
23016
|
this._transport.onmessage = (message, extra) => {
|
|
23017
|
+
_onmessage === null || _onmessage === void 0 ? void 0 : _onmessage(message, extra);
|
|
22813
23018
|
if (isJSONRPCResponse(message) || isJSONRPCError(message)) {
|
|
22814
23019
|
this._onresponse(message);
|
|
22815
23020
|
} else if (isJSONRPCRequest(message)) {
|
|
@@ -22869,7 +23074,8 @@ class Protocol {
|
|
|
22869
23074
|
sendNotification: (notification) => this.notification(notification, { relatedRequestId: request.id }),
|
|
22870
23075
|
sendRequest: (r2, resultSchema, options) => this.request(r2, resultSchema, { ...options, relatedRequestId: request.id }),
|
|
22871
23076
|
authInfo: extra === null || extra === void 0 ? void 0 : extra.authInfo,
|
|
22872
|
-
requestId: request.id
|
|
23077
|
+
requestId: request.id,
|
|
23078
|
+
requestInfo: extra === null || extra === void 0 ? void 0 : extra.requestInfo
|
|
22873
23079
|
};
|
|
22874
23080
|
Promise.resolve().then(() => handler(request, fullExtra)).then((result) => {
|
|
22875
23081
|
var _a2;
|
|
@@ -23137,6 +23343,9 @@ class Client extends Protocol {
|
|
|
23137
23343
|
}
|
|
23138
23344
|
this._serverCapabilities = result.capabilities;
|
|
23139
23345
|
this._serverVersion = result.serverInfo;
|
|
23346
|
+
if (transport.setProtocolVersion) {
|
|
23347
|
+
transport.setProtocolVersion(result.protocolVersion);
|
|
23348
|
+
}
|
|
23140
23349
|
this._instructions = result.instructions;
|
|
23141
23350
|
await this.notification({
|
|
23142
23351
|
method: "notifications/initialized"
|
|
@@ -23220,6 +23429,11 @@ class Client extends Protocol {
|
|
|
23220
23429
|
throw new Error(`Client does not support sampling capability (required for ${method})`);
|
|
23221
23430
|
}
|
|
23222
23431
|
break;
|
|
23432
|
+
case "elicitation/create":
|
|
23433
|
+
if (!this._capabilities.elicitation) {
|
|
23434
|
+
throw new Error(`Client does not support elicitation capability (required for ${method})`);
|
|
23435
|
+
}
|
|
23436
|
+
break;
|
|
23223
23437
|
case "roots/list":
|
|
23224
23438
|
if (!this._capabilities.roots) {
|
|
23225
23439
|
throw new Error(`Client does not support roots capability (required for ${method})`);
|
|
@@ -23287,8 +23501,7 @@ class Client extends Protocol {
|
|
|
23287
23501
|
try {
|
|
23288
23502
|
const validator = this._ajv.compile(tool.outputSchema);
|
|
23289
23503
|
this._cachedToolOutputValidators.set(tool.name, validator);
|
|
23290
|
-
} catch (
|
|
23291
|
-
console.warn(`Failed to compile output schema for tool ${tool.name}: ${error}`);
|
|
23504
|
+
} catch (_a) {
|
|
23292
23505
|
}
|
|
23293
23506
|
}
|
|
23294
23507
|
}
|
|
@@ -23707,26 +23920,40 @@ class SSEClientTransport {
|
|
|
23707
23920
|
}
|
|
23708
23921
|
async _commonHeaders() {
|
|
23709
23922
|
var _a;
|
|
23710
|
-
const headers = {
|
|
23923
|
+
const headers = {
|
|
23924
|
+
...(_a = this._requestInit) === null || _a === void 0 ? void 0 : _a.headers
|
|
23925
|
+
};
|
|
23711
23926
|
if (this._authProvider) {
|
|
23712
23927
|
const tokens = await this._authProvider.tokens();
|
|
23713
23928
|
if (tokens) {
|
|
23714
23929
|
headers["Authorization"] = `Bearer ${tokens.access_token}`;
|
|
23715
23930
|
}
|
|
23716
23931
|
}
|
|
23932
|
+
if (this._protocolVersion) {
|
|
23933
|
+
headers["mcp-protocol-version"] = this._protocolVersion;
|
|
23934
|
+
}
|
|
23717
23935
|
return headers;
|
|
23718
23936
|
}
|
|
23719
23937
|
_startOrAuth() {
|
|
23938
|
+
var _a;
|
|
23939
|
+
const fetchImpl = ((_a = this === null || this === void 0 ? void 0 : this._eventSourceInit) === null || _a === void 0 ? void 0 : _a.fetch) || fetch;
|
|
23720
23940
|
return new Promise((resolve, reject) => {
|
|
23721
|
-
|
|
23722
|
-
|
|
23723
|
-
fetch: (url, init) =>
|
|
23724
|
-
|
|
23725
|
-
|
|
23726
|
-
...
|
|
23727
|
-
|
|
23941
|
+
this._eventSource = new EventSource(this._url.href, {
|
|
23942
|
+
...this._eventSourceInit,
|
|
23943
|
+
fetch: async (url, init) => {
|
|
23944
|
+
const headers = await this._commonHeaders();
|
|
23945
|
+
const response = await fetchImpl(url, {
|
|
23946
|
+
...init,
|
|
23947
|
+
headers: new Headers({
|
|
23948
|
+
...headers,
|
|
23949
|
+
Accept: "text/event-stream"
|
|
23950
|
+
})
|
|
23951
|
+
});
|
|
23952
|
+
if (response.status === 401 && response.headers.has("www-authenticate")) {
|
|
23953
|
+
this._resourceMetadataUrl = extractResourceMetadataUrl(response);
|
|
23728
23954
|
}
|
|
23729
|
-
|
|
23955
|
+
return response;
|
|
23956
|
+
}
|
|
23730
23957
|
});
|
|
23731
23958
|
this._abortController = new AbortController();
|
|
23732
23959
|
this._eventSource.onerror = (event) => {
|
|
@@ -23796,20 +24023,20 @@ class SSEClientTransport {
|
|
|
23796
24023
|
(_c = this.onclose) === null || _c === void 0 ? void 0 : _c.call(this);
|
|
23797
24024
|
}
|
|
23798
24025
|
async send(message) {
|
|
23799
|
-
var _a, _b
|
|
24026
|
+
var _a, _b;
|
|
23800
24027
|
if (!this._endpoint) {
|
|
23801
24028
|
throw new Error("Not connected");
|
|
23802
24029
|
}
|
|
23803
24030
|
try {
|
|
23804
24031
|
const commonHeaders = await this._commonHeaders();
|
|
23805
|
-
const headers = new Headers(
|
|
24032
|
+
const headers = new Headers(commonHeaders);
|
|
23806
24033
|
headers.set("content-type", "application/json");
|
|
23807
24034
|
const init = {
|
|
23808
24035
|
...this._requestInit,
|
|
23809
24036
|
method: "POST",
|
|
23810
24037
|
headers,
|
|
23811
24038
|
body: JSON.stringify(message),
|
|
23812
|
-
signal: (
|
|
24039
|
+
signal: (_a = this._abortController) === null || _a === void 0 ? void 0 : _a.signal
|
|
23813
24040
|
};
|
|
23814
24041
|
const response = await fetch(this._endpoint, init);
|
|
23815
24042
|
if (!response.ok) {
|
|
@@ -23825,10 +24052,13 @@ class SSEClientTransport {
|
|
|
23825
24052
|
throw new Error(`Error POSTing to endpoint (HTTP ${response.status}): ${text}`);
|
|
23826
24053
|
}
|
|
23827
24054
|
} catch (error) {
|
|
23828
|
-
(
|
|
24055
|
+
(_b = this.onerror) === null || _b === void 0 ? void 0 : _b.call(this, error);
|
|
23829
24056
|
throw error;
|
|
23830
24057
|
}
|
|
23831
24058
|
}
|
|
24059
|
+
setProtocolVersion(version2) {
|
|
24060
|
+
this._protocolVersion = version2;
|
|
24061
|
+
}
|
|
23832
24062
|
}
|
|
23833
24063
|
class EventSourceParserStream extends TransformStream {
|
|
23834
24064
|
constructor({ onError, onRetry, onComment } = {}) {
|
|
@@ -23903,6 +24133,9 @@ class StreamableHTTPClientTransport {
|
|
|
23903
24133
|
if (this._sessionId) {
|
|
23904
24134
|
headers["mcp-session-id"] = this._sessionId;
|
|
23905
24135
|
}
|
|
24136
|
+
if (this._protocolVersion) {
|
|
24137
|
+
headers["mcp-protocol-version"] = this._protocolVersion;
|
|
24138
|
+
}
|
|
23906
24139
|
return new Headers({ ...headers, ...(_a = this._requestInit) === null || _a === void 0 ? void 0 : _a.headers });
|
|
23907
24140
|
}
|
|
23908
24141
|
async _startOrAuthSse(options) {
|
|
@@ -24146,6 +24379,12 @@ class StreamableHTTPClientTransport {
|
|
|
24146
24379
|
throw error;
|
|
24147
24380
|
}
|
|
24148
24381
|
}
|
|
24382
|
+
setProtocolVersion(version2) {
|
|
24383
|
+
this._protocolVersion = version2;
|
|
24384
|
+
}
|
|
24385
|
+
get protocolVersion() {
|
|
24386
|
+
return this._protocolVersion;
|
|
24387
|
+
}
|
|
24149
24388
|
}
|
|
24150
24389
|
const StdErrNotificationSchema = NotificationSchema.extend({
|
|
24151
24390
|
method: literalType("notifications/stderr"),
|
|
@@ -24156,7 +24395,7 @@ const StdErrNotificationSchema = NotificationSchema.extend({
|
|
|
24156
24395
|
ClientNotificationSchema.or(
|
|
24157
24396
|
StdErrNotificationSchema
|
|
24158
24397
|
).or(ServerNotificationSchema).or(NotificationSchema);
|
|
24159
|
-
const version$1 = "0.
|
|
24398
|
+
const version$1 = "0.15.0";
|
|
24160
24399
|
const packageJson = {
|
|
24161
24400
|
version: version$1
|
|
24162
24401
|
};
|
|
@@ -25220,17 +25459,32 @@ const Button = reactExports.forwardRef(
|
|
|
25220
25459
|
);
|
|
25221
25460
|
Button.displayName = "Button";
|
|
25222
25461
|
/**
|
|
25223
|
-
* @license lucide-react v0.
|
|
25462
|
+
* @license lucide-react v0.523.0 - ISC
|
|
25224
25463
|
*
|
|
25225
25464
|
* This source code is licensed under the ISC license.
|
|
25226
25465
|
* See the LICENSE file in the root directory of this source tree.
|
|
25227
25466
|
*/
|
|
25228
25467
|
const toKebabCase = (string) => string.replace(/([a-z0-9])([A-Z])/g, "$1-$2").toLowerCase();
|
|
25468
|
+
const toCamelCase = (string) => string.replace(
|
|
25469
|
+
/^([A-Z])|[\s-_]+(\w)/g,
|
|
25470
|
+
(match, p1, p2) => p2 ? p2.toUpperCase() : p1.toLowerCase()
|
|
25471
|
+
);
|
|
25472
|
+
const toPascalCase = (string) => {
|
|
25473
|
+
const camelCase = toCamelCase(string);
|
|
25474
|
+
return camelCase.charAt(0).toUpperCase() + camelCase.slice(1);
|
|
25475
|
+
};
|
|
25229
25476
|
const mergeClasses = (...classes) => classes.filter((className, index2, array) => {
|
|
25230
|
-
return Boolean(className) && array.indexOf(className) === index2;
|
|
25231
|
-
}).join(" ");
|
|
25477
|
+
return Boolean(className) && className.trim() !== "" && array.indexOf(className) === index2;
|
|
25478
|
+
}).join(" ").trim();
|
|
25479
|
+
const hasA11yProp = (props) => {
|
|
25480
|
+
for (const prop in props) {
|
|
25481
|
+
if (prop.startsWith("aria-") || prop === "role" || prop === "title") {
|
|
25482
|
+
return true;
|
|
25483
|
+
}
|
|
25484
|
+
}
|
|
25485
|
+
};
|
|
25232
25486
|
/**
|
|
25233
|
-
* @license lucide-react v0.
|
|
25487
|
+
* @license lucide-react v0.523.0 - ISC
|
|
25234
25488
|
*
|
|
25235
25489
|
* This source code is licensed under the ISC license.
|
|
25236
25490
|
* See the LICENSE file in the root directory of this source tree.
|
|
@@ -25247,7 +25501,7 @@ var defaultAttributes = {
|
|
|
25247
25501
|
strokeLinejoin: "round"
|
|
25248
25502
|
};
|
|
25249
25503
|
/**
|
|
25250
|
-
* @license lucide-react v0.
|
|
25504
|
+
* @license lucide-react v0.523.0 - ISC
|
|
25251
25505
|
*
|
|
25252
25506
|
* This source code is licensed under the ISC license.
|
|
25253
25507
|
* See the LICENSE file in the root directory of this source tree.
|
|
@@ -25262,28 +25516,27 @@ const Icon$1 = reactExports.forwardRef(
|
|
|
25262
25516
|
children,
|
|
25263
25517
|
iconNode,
|
|
25264
25518
|
...rest
|
|
25265
|
-
}, ref2) =>
|
|
25266
|
-
|
|
25267
|
-
|
|
25268
|
-
|
|
25269
|
-
|
|
25270
|
-
|
|
25271
|
-
|
|
25272
|
-
|
|
25273
|
-
|
|
25274
|
-
|
|
25275
|
-
|
|
25276
|
-
|
|
25277
|
-
|
|
25278
|
-
|
|
25279
|
-
|
|
25280
|
-
|
|
25281
|
-
|
|
25282
|
-
|
|
25283
|
-
}
|
|
25519
|
+
}, ref2) => reactExports.createElement(
|
|
25520
|
+
"svg",
|
|
25521
|
+
{
|
|
25522
|
+
ref: ref2,
|
|
25523
|
+
...defaultAttributes,
|
|
25524
|
+
width: size2,
|
|
25525
|
+
height: size2,
|
|
25526
|
+
stroke: color,
|
|
25527
|
+
strokeWidth: absoluteStrokeWidth ? Number(strokeWidth) * 24 / Number(size2) : strokeWidth,
|
|
25528
|
+
className: mergeClasses("lucide", className),
|
|
25529
|
+
...!children && !hasA11yProp(rest) && { "aria-hidden": "true" },
|
|
25530
|
+
...rest
|
|
25531
|
+
},
|
|
25532
|
+
[
|
|
25533
|
+
...iconNode.map(([tag, attrs]) => reactExports.createElement(tag, attrs)),
|
|
25534
|
+
...Array.isArray(children) ? children : [children]
|
|
25535
|
+
]
|
|
25536
|
+
)
|
|
25284
25537
|
);
|
|
25285
25538
|
/**
|
|
25286
|
-
* @license lucide-react v0.
|
|
25539
|
+
* @license lucide-react v0.523.0 - ISC
|
|
25287
25540
|
*
|
|
25288
25541
|
* This source code is licensed under the ISC license.
|
|
25289
25542
|
* See the LICENSE file in the root directory of this source tree.
|
|
@@ -25293,30 +25546,41 @@ const createLucideIcon = (iconName, iconNode) => {
|
|
|
25293
25546
|
({ className, ...props }, ref2) => reactExports.createElement(Icon$1, {
|
|
25294
25547
|
ref: ref2,
|
|
25295
25548
|
iconNode,
|
|
25296
|
-
className: mergeClasses(
|
|
25549
|
+
className: mergeClasses(
|
|
25550
|
+
`lucide-${toKebabCase(toPascalCase(iconName))}`,
|
|
25551
|
+
`lucide-${iconName}`,
|
|
25552
|
+
className
|
|
25553
|
+
),
|
|
25297
25554
|
...props
|
|
25298
25555
|
})
|
|
25299
25556
|
);
|
|
25300
|
-
Component.displayName =
|
|
25557
|
+
Component.displayName = toPascalCase(iconName);
|
|
25301
25558
|
return Component;
|
|
25302
25559
|
};
|
|
25303
25560
|
/**
|
|
25304
|
-
* @license lucide-react v0.
|
|
25561
|
+
* @license lucide-react v0.523.0 - ISC
|
|
25305
25562
|
*
|
|
25306
25563
|
* This source code is licensed under the ISC license.
|
|
25307
25564
|
* See the LICENSE file in the root directory of this source tree.
|
|
25308
25565
|
*/
|
|
25309
|
-
const
|
|
25310
|
-
["path", { d: "
|
|
25311
|
-
[
|
|
25312
|
-
|
|
25566
|
+
const __iconNode$x = [
|
|
25567
|
+
["path", { d: "M10.268 21a2 2 0 0 0 3.464 0", key: "vwvbt9" }],
|
|
25568
|
+
[
|
|
25569
|
+
"path",
|
|
25570
|
+
{
|
|
25571
|
+
d: "M3.262 15.326A1 1 0 0 0 4 17h16a1 1 0 0 0 .74-1.673C19.41 13.956 18 12.499 18 8A6 6 0 0 0 6 8c0 4.499-1.411 5.956-2.738 7.326",
|
|
25572
|
+
key: "11g9vi"
|
|
25573
|
+
}
|
|
25574
|
+
]
|
|
25575
|
+
];
|
|
25576
|
+
const Bell = createLucideIcon("bell", __iconNode$x);
|
|
25313
25577
|
/**
|
|
25314
|
-
* @license lucide-react v0.
|
|
25578
|
+
* @license lucide-react v0.523.0 - ISC
|
|
25315
25579
|
*
|
|
25316
25580
|
* This source code is licensed under the ISC license.
|
|
25317
25581
|
* See the LICENSE file in the root directory of this source tree.
|
|
25318
25582
|
*/
|
|
25319
|
-
const
|
|
25583
|
+
const __iconNode$w = [
|
|
25320
25584
|
["path", { d: "m8 2 1.88 1.88", key: "fmnt4t" }],
|
|
25321
25585
|
["path", { d: "M14.12 3.88 16 2", key: "qol33r" }],
|
|
25322
25586
|
["path", { d: "M9 7.13v-1a3.003 3.003 0 1 1 6 0v1", key: "d7y7pr" }],
|
|
@@ -25334,128 +25598,135 @@ const Bug = createLucideIcon("Bug", [
|
|
|
25334
25598
|
["path", { d: "M20.97 5c0 2.1-1.6 3.8-3.5 4", key: "18gb23" }],
|
|
25335
25599
|
["path", { d: "M22 13h-4", key: "1jl80f" }],
|
|
25336
25600
|
["path", { d: "M17.2 17c2.1.1 3.8 1.9 3.8 4", key: "k3fwyw" }]
|
|
25337
|
-
]
|
|
25601
|
+
];
|
|
25602
|
+
const Bug = createLucideIcon("bug", __iconNode$w);
|
|
25338
25603
|
/**
|
|
25339
|
-
* @license lucide-react v0.
|
|
25604
|
+
* @license lucide-react v0.523.0 - ISC
|
|
25340
25605
|
*
|
|
25341
25606
|
* This source code is licensed under the ISC license.
|
|
25342
25607
|
* See the LICENSE file in the root directory of this source tree.
|
|
25343
25608
|
*/
|
|
25344
|
-
const
|
|
25609
|
+
const __iconNode$v = [
|
|
25345
25610
|
["path", { d: "M18 6 7 17l-5-5", key: "116fxf" }],
|
|
25346
25611
|
["path", { d: "m22 10-7.5 7.5L13 16", key: "ke71qq" }]
|
|
25347
|
-
]
|
|
25612
|
+
];
|
|
25613
|
+
const CheckCheck = createLucideIcon("check-check", __iconNode$v);
|
|
25348
25614
|
/**
|
|
25349
|
-
* @license lucide-react v0.
|
|
25615
|
+
* @license lucide-react v0.523.0 - ISC
|
|
25350
25616
|
*
|
|
25351
25617
|
* This source code is licensed under the ISC license.
|
|
25352
25618
|
* See the LICENSE file in the root directory of this source tree.
|
|
25353
25619
|
*/
|
|
25354
|
-
const
|
|
25620
|
+
const __iconNode$u = [["path", { d: "M20 6 9 17l-5-5", key: "1gmf2c" }]];
|
|
25621
|
+
const Check = createLucideIcon("check", __iconNode$u);
|
|
25355
25622
|
/**
|
|
25356
|
-
* @license lucide-react v0.
|
|
25623
|
+
* @license lucide-react v0.523.0 - ISC
|
|
25357
25624
|
*
|
|
25358
25625
|
* This source code is licensed under the ISC license.
|
|
25359
25626
|
* See the LICENSE file in the root directory of this source tree.
|
|
25360
25627
|
*/
|
|
25361
|
-
const
|
|
25362
|
-
|
|
25363
|
-
]);
|
|
25628
|
+
const __iconNode$t = [["path", { d: "m6 9 6 6 6-6", key: "qrunsl" }]];
|
|
25629
|
+
const ChevronDown = createLucideIcon("chevron-down", __iconNode$t);
|
|
25364
25630
|
/**
|
|
25365
|
-
* @license lucide-react v0.
|
|
25631
|
+
* @license lucide-react v0.523.0 - ISC
|
|
25366
25632
|
*
|
|
25367
25633
|
* This source code is licensed under the ISC license.
|
|
25368
25634
|
* See the LICENSE file in the root directory of this source tree.
|
|
25369
25635
|
*/
|
|
25370
|
-
const
|
|
25371
|
-
|
|
25372
|
-
]);
|
|
25636
|
+
const __iconNode$s = [["path", { d: "m9 18 6-6-6-6", key: "mthhwq" }]];
|
|
25637
|
+
const ChevronRight = createLucideIcon("chevron-right", __iconNode$s);
|
|
25373
25638
|
/**
|
|
25374
|
-
* @license lucide-react v0.
|
|
25639
|
+
* @license lucide-react v0.523.0 - ISC
|
|
25375
25640
|
*
|
|
25376
25641
|
* This source code is licensed under the ISC license.
|
|
25377
25642
|
* See the LICENSE file in the root directory of this source tree.
|
|
25378
25643
|
*/
|
|
25379
|
-
const
|
|
25644
|
+
const __iconNode$r = [["path", { d: "m18 15-6-6-6 6", key: "153udz" }]];
|
|
25645
|
+
const ChevronUp = createLucideIcon("chevron-up", __iconNode$r);
|
|
25380
25646
|
/**
|
|
25381
|
-
* @license lucide-react v0.
|
|
25647
|
+
* @license lucide-react v0.523.0 - ISC
|
|
25382
25648
|
*
|
|
25383
25649
|
* This source code is licensed under the ISC license.
|
|
25384
25650
|
* See the LICENSE file in the root directory of this source tree.
|
|
25385
25651
|
*/
|
|
25386
|
-
const
|
|
25652
|
+
const __iconNode$q = [
|
|
25387
25653
|
["path", { d: "m7 15 5 5 5-5", key: "1hf1tw" }],
|
|
25388
25654
|
["path", { d: "m7 9 5-5 5 5", key: "sgt6xg" }]
|
|
25389
|
-
]
|
|
25655
|
+
];
|
|
25656
|
+
const ChevronsUpDown = createLucideIcon("chevrons-up-down", __iconNode$q);
|
|
25390
25657
|
/**
|
|
25391
|
-
* @license lucide-react v0.
|
|
25658
|
+
* @license lucide-react v0.523.0 - ISC
|
|
25392
25659
|
*
|
|
25393
25660
|
* This source code is licensed under the ISC license.
|
|
25394
25661
|
* See the LICENSE file in the root directory of this source tree.
|
|
25395
25662
|
*/
|
|
25396
|
-
const
|
|
25663
|
+
const __iconNode$p = [
|
|
25397
25664
|
["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }],
|
|
25398
25665
|
["line", { x1: "12", x2: "12", y1: "8", y2: "12", key: "1pkeuh" }],
|
|
25399
25666
|
["line", { x1: "12", x2: "12.01", y1: "16", y2: "16", key: "4dfq90" }]
|
|
25400
|
-
]
|
|
25667
|
+
];
|
|
25668
|
+
const CircleAlert = createLucideIcon("circle-alert", __iconNode$p);
|
|
25401
25669
|
/**
|
|
25402
|
-
* @license lucide-react v0.
|
|
25670
|
+
* @license lucide-react v0.523.0 - ISC
|
|
25403
25671
|
*
|
|
25404
25672
|
* This source code is licensed under the ISC license.
|
|
25405
25673
|
* See the LICENSE file in the root directory of this source tree.
|
|
25406
25674
|
*/
|
|
25407
|
-
const
|
|
25675
|
+
const __iconNode$o = [
|
|
25408
25676
|
["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }],
|
|
25409
25677
|
["path", { d: "m9 12 2 2 4-4", key: "dzmm74" }]
|
|
25410
|
-
]
|
|
25678
|
+
];
|
|
25679
|
+
const CircleCheck = createLucideIcon("circle-check", __iconNode$o);
|
|
25411
25680
|
/**
|
|
25412
|
-
* @license lucide-react v0.
|
|
25681
|
+
* @license lucide-react v0.523.0 - ISC
|
|
25413
25682
|
*
|
|
25414
25683
|
* This source code is licensed under the ISC license.
|
|
25415
25684
|
* See the LICENSE file in the root directory of this source tree.
|
|
25416
25685
|
*/
|
|
25417
|
-
const
|
|
25686
|
+
const __iconNode$n = [
|
|
25418
25687
|
["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }],
|
|
25419
25688
|
["path", { d: "M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3", key: "1u773s" }],
|
|
25420
25689
|
["path", { d: "M12 17h.01", key: "p32p05" }]
|
|
25421
|
-
]
|
|
25690
|
+
];
|
|
25691
|
+
const CircleQuestionMark = createLucideIcon("circle-question-mark", __iconNode$n);
|
|
25422
25692
|
/**
|
|
25423
|
-
* @license lucide-react v0.
|
|
25693
|
+
* @license lucide-react v0.523.0 - ISC
|
|
25424
25694
|
*
|
|
25425
25695
|
* This source code is licensed under the ISC license.
|
|
25426
25696
|
* See the LICENSE file in the root directory of this source tree.
|
|
25427
25697
|
*/
|
|
25428
|
-
const
|
|
25429
|
-
|
|
25430
|
-
]);
|
|
25698
|
+
const __iconNode$m = [["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }]];
|
|
25699
|
+
const Circle = createLucideIcon("circle", __iconNode$m);
|
|
25431
25700
|
/**
|
|
25432
|
-
* @license lucide-react v0.
|
|
25701
|
+
* @license lucide-react v0.523.0 - ISC
|
|
25433
25702
|
*
|
|
25434
25703
|
* This source code is licensed under the ISC license.
|
|
25435
25704
|
* See the LICENSE file in the root directory of this source tree.
|
|
25436
25705
|
*/
|
|
25437
|
-
const
|
|
25706
|
+
const __iconNode$l = [
|
|
25438
25707
|
["rect", { width: "14", height: "14", x: "8", y: "8", rx: "2", ry: "2", key: "17jyea" }],
|
|
25439
25708
|
["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" }]
|
|
25440
|
-
]
|
|
25709
|
+
];
|
|
25710
|
+
const Copy = createLucideIcon("copy", __iconNode$l);
|
|
25441
25711
|
/**
|
|
25442
|
-
* @license lucide-react v0.
|
|
25712
|
+
* @license lucide-react v0.523.0 - ISC
|
|
25443
25713
|
*
|
|
25444
25714
|
* This source code is licensed under the ISC license.
|
|
25445
25715
|
* See the LICENSE file in the root directory of this source tree.
|
|
25446
25716
|
*/
|
|
25447
|
-
const
|
|
25717
|
+
const __iconNode$k = [
|
|
25448
25718
|
["path", { d: "M15 3h6v6", key: "1q9fwt" }],
|
|
25449
25719
|
["path", { d: "M10 14 21 3", key: "gplh6r" }],
|
|
25450
25720
|
["path", { d: "M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6", key: "a6xqqp" }]
|
|
25451
|
-
]
|
|
25721
|
+
];
|
|
25722
|
+
const ExternalLink = createLucideIcon("external-link", __iconNode$k);
|
|
25452
25723
|
/**
|
|
25453
|
-
* @license lucide-react v0.
|
|
25724
|
+
* @license lucide-react v0.523.0 - ISC
|
|
25454
25725
|
*
|
|
25455
25726
|
* This source code is licensed under the ISC license.
|
|
25456
25727
|
* See the LICENSE file in the root directory of this source tree.
|
|
25457
25728
|
*/
|
|
25458
|
-
const
|
|
25729
|
+
const __iconNode$j = [
|
|
25459
25730
|
[
|
|
25460
25731
|
"path",
|
|
25461
25732
|
{
|
|
@@ -25472,14 +25743,15 @@ const EyeOff = createLucideIcon("EyeOff", [
|
|
|
25472
25743
|
}
|
|
25473
25744
|
],
|
|
25474
25745
|
["path", { d: "m2 2 20 20", key: "1ooewy" }]
|
|
25475
|
-
]
|
|
25746
|
+
];
|
|
25747
|
+
const EyeOff = createLucideIcon("eye-off", __iconNode$j);
|
|
25476
25748
|
/**
|
|
25477
|
-
* @license lucide-react v0.
|
|
25749
|
+
* @license lucide-react v0.523.0 - ISC
|
|
25478
25750
|
*
|
|
25479
25751
|
* This source code is licensed under the ISC license.
|
|
25480
25752
|
* See the LICENSE file in the root directory of this source tree.
|
|
25481
25753
|
*/
|
|
25482
|
-
const
|
|
25754
|
+
const __iconNode$i = [
|
|
25483
25755
|
[
|
|
25484
25756
|
"path",
|
|
25485
25757
|
{
|
|
@@ -25488,38 +25760,41 @@ const Eye = createLucideIcon("Eye", [
|
|
|
25488
25760
|
}
|
|
25489
25761
|
],
|
|
25490
25762
|
["circle", { cx: "12", cy: "12", r: "3", key: "1v7zrd" }]
|
|
25491
|
-
]
|
|
25763
|
+
];
|
|
25764
|
+
const Eye = createLucideIcon("eye", __iconNode$i);
|
|
25492
25765
|
/**
|
|
25493
|
-
* @license lucide-react v0.
|
|
25766
|
+
* @license lucide-react v0.523.0 - ISC
|
|
25494
25767
|
*
|
|
25495
25768
|
* This source code is licensed under the ISC license.
|
|
25496
25769
|
* See the LICENSE file in the root directory of this source tree.
|
|
25497
25770
|
*/
|
|
25498
|
-
const
|
|
25771
|
+
const __iconNode$h = [
|
|
25499
25772
|
["path", { d: "M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7Z", key: "1rqfz7" }],
|
|
25500
25773
|
["path", { d: "M14 2v4a2 2 0 0 0 2 2h4", key: "tnqrlb" }],
|
|
25501
25774
|
["path", { d: "M10 9H8", key: "b1mrlr" }],
|
|
25502
25775
|
["path", { d: "M16 13H8", key: "t4e002" }],
|
|
25503
25776
|
["path", { d: "M16 17H8", key: "z1uh3a" }]
|
|
25504
|
-
]
|
|
25777
|
+
];
|
|
25778
|
+
const FileText = createLucideIcon("file-text", __iconNode$h);
|
|
25505
25779
|
/**
|
|
25506
|
-
* @license lucide-react v0.
|
|
25780
|
+
* @license lucide-react v0.523.0 - ISC
|
|
25507
25781
|
*
|
|
25508
25782
|
* This source code is licensed under the ISC license.
|
|
25509
25783
|
* See the LICENSE file in the root directory of this source tree.
|
|
25510
25784
|
*/
|
|
25511
|
-
const
|
|
25785
|
+
const __iconNode$g = [
|
|
25512
25786
|
["path", { d: "M20 7h-3a2 2 0 0 1-2-2V2", key: "x099mo" }],
|
|
25513
25787
|
["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" }],
|
|
25514
25788
|
["path", { d: "M3 7.6v12.8A1.6 1.6 0 0 0 4.6 22h9.8", key: "1nja0z" }]
|
|
25515
|
-
]
|
|
25789
|
+
];
|
|
25790
|
+
const Files = createLucideIcon("files", __iconNode$g);
|
|
25516
25791
|
/**
|
|
25517
|
-
* @license lucide-react v0.
|
|
25792
|
+
* @license lucide-react v0.523.0 - ISC
|
|
25518
25793
|
*
|
|
25519
25794
|
* This source code is licensed under the ISC license.
|
|
25520
25795
|
* See the LICENSE file in the root directory of this source tree.
|
|
25521
25796
|
*/
|
|
25522
|
-
const
|
|
25797
|
+
const __iconNode$f = [
|
|
25523
25798
|
[
|
|
25524
25799
|
"path",
|
|
25525
25800
|
{
|
|
@@ -25536,14 +25811,15 @@ const FolderTree = createLucideIcon("FolderTree", [
|
|
|
25536
25811
|
],
|
|
25537
25812
|
["path", { d: "M3 5a2 2 0 0 0 2 2h3", key: "f2jnh7" }],
|
|
25538
25813
|
["path", { d: "M3 3v13a2 2 0 0 0 2 2h3", key: "k8epm1" }]
|
|
25539
|
-
]
|
|
25814
|
+
];
|
|
25815
|
+
const FolderTree = createLucideIcon("folder-tree", __iconNode$f);
|
|
25540
25816
|
/**
|
|
25541
|
-
* @license lucide-react v0.
|
|
25817
|
+
* @license lucide-react v0.523.0 - ISC
|
|
25542
25818
|
*
|
|
25543
25819
|
* This source code is licensed under the ISC license.
|
|
25544
25820
|
* See the LICENSE file in the root directory of this source tree.
|
|
25545
25821
|
*/
|
|
25546
|
-
const
|
|
25822
|
+
const __iconNode$e = [
|
|
25547
25823
|
[
|
|
25548
25824
|
"path",
|
|
25549
25825
|
{
|
|
@@ -25552,14 +25828,15 @@ const Github = createLucideIcon("Github", [
|
|
|
25552
25828
|
}
|
|
25553
25829
|
],
|
|
25554
25830
|
["path", { d: "M9 18c-4.51 2-5-2-7-2", key: "9comsn" }]
|
|
25555
|
-
]
|
|
25831
|
+
];
|
|
25832
|
+
const Github = createLucideIcon("github", __iconNode$e);
|
|
25556
25833
|
/**
|
|
25557
|
-
* @license lucide-react v0.
|
|
25834
|
+
* @license lucide-react v0.523.0 - ISC
|
|
25558
25835
|
*
|
|
25559
25836
|
* This source code is licensed under the ISC license.
|
|
25560
25837
|
* See the LICENSE file in the root directory of this source tree.
|
|
25561
25838
|
*/
|
|
25562
|
-
const
|
|
25839
|
+
const __iconNode$d = [
|
|
25563
25840
|
["path", { d: "m15 12-8.373 8.373a1 1 0 1 1-3-3L12 9", key: "eefl8a" }],
|
|
25564
25841
|
["path", { d: "m18 15 4-4", key: "16gjal" }],
|
|
25565
25842
|
[
|
|
@@ -25569,81 +25846,85 @@ const Hammer = createLucideIcon("Hammer", [
|
|
|
25569
25846
|
key: "b7pghm"
|
|
25570
25847
|
}
|
|
25571
25848
|
]
|
|
25572
|
-
]
|
|
25849
|
+
];
|
|
25850
|
+
const Hammer = createLucideIcon("hammer", __iconNode$d);
|
|
25573
25851
|
/**
|
|
25574
|
-
* @license lucide-react v0.
|
|
25852
|
+
* @license lucide-react v0.523.0 - ISC
|
|
25575
25853
|
*
|
|
25576
25854
|
* This source code is licensed under the ISC license.
|
|
25577
25855
|
* See the LICENSE file in the root directory of this source tree.
|
|
25578
25856
|
*/
|
|
25579
|
-
const
|
|
25857
|
+
const __iconNode$c = [
|
|
25580
25858
|
["line", { x1: "4", x2: "20", y1: "9", y2: "9", key: "4lhtct" }],
|
|
25581
25859
|
["line", { x1: "4", x2: "20", y1: "15", y2: "15", key: "vyu0kd" }],
|
|
25582
25860
|
["line", { x1: "10", x2: "8", y1: "3", y2: "21", key: "1ggp8o" }],
|
|
25583
25861
|
["line", { x1: "16", x2: "14", y1: "3", y2: "21", key: "weycgp" }]
|
|
25584
|
-
]
|
|
25862
|
+
];
|
|
25863
|
+
const Hash = createLucideIcon("hash", __iconNode$c);
|
|
25585
25864
|
/**
|
|
25586
|
-
* @license lucide-react v0.
|
|
25865
|
+
* @license lucide-react v0.523.0 - ISC
|
|
25587
25866
|
*
|
|
25588
25867
|
* This source code is licensed under the ISC license.
|
|
25589
25868
|
* See the LICENSE file in the root directory of this source tree.
|
|
25590
25869
|
*/
|
|
25591
|
-
const
|
|
25870
|
+
const __iconNode$b = [
|
|
25592
25871
|
["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" }],
|
|
25593
25872
|
["path", { d: "m21 2-9.6 9.6", key: "1j0ho8" }],
|
|
25594
25873
|
["circle", { cx: "7.5", cy: "15.5", r: "5.5", key: "yqb3hr" }]
|
|
25595
|
-
]
|
|
25874
|
+
];
|
|
25875
|
+
const Key = createLucideIcon("key", __iconNode$b);
|
|
25596
25876
|
/**
|
|
25597
|
-
* @license lucide-react v0.
|
|
25877
|
+
* @license lucide-react v0.523.0 - ISC
|
|
25598
25878
|
*
|
|
25599
25879
|
* This source code is licensed under the ISC license.
|
|
25600
25880
|
* See the LICENSE file in the root directory of this source tree.
|
|
25601
25881
|
*/
|
|
25602
|
-
const
|
|
25603
|
-
|
|
25604
|
-
]);
|
|
25882
|
+
const __iconNode$a = [["path", { d: "M21 12a9 9 0 1 1-6.219-8.56", key: "13zald" }]];
|
|
25883
|
+
const LoaderCircle = createLucideIcon("loader-circle", __iconNode$a);
|
|
25605
25884
|
/**
|
|
25606
|
-
* @license lucide-react v0.
|
|
25885
|
+
* @license lucide-react v0.523.0 - ISC
|
|
25607
25886
|
*
|
|
25608
25887
|
* This source code is licensed under the ISC license.
|
|
25609
25888
|
* See the LICENSE file in the root directory of this source tree.
|
|
25610
25889
|
*/
|
|
25611
|
-
const
|
|
25890
|
+
const __iconNode$9 = [
|
|
25612
25891
|
["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" }]
|
|
25613
|
-
]
|
|
25892
|
+
];
|
|
25893
|
+
const MessageSquare = createLucideIcon("message-square", __iconNode$9);
|
|
25614
25894
|
/**
|
|
25615
|
-
* @license lucide-react v0.
|
|
25895
|
+
* @license lucide-react v0.523.0 - ISC
|
|
25616
25896
|
*
|
|
25617
25897
|
* This source code is licensed under the ISC license.
|
|
25618
25898
|
* See the LICENSE file in the root directory of this source tree.
|
|
25619
25899
|
*/
|
|
25620
|
-
const
|
|
25900
|
+
const __iconNode$8 = [["path", { d: "M5 12h14", key: "1ays0h" }]];
|
|
25901
|
+
const Minus = createLucideIcon("minus", __iconNode$8);
|
|
25621
25902
|
/**
|
|
25622
|
-
* @license lucide-react v0.
|
|
25903
|
+
* @license lucide-react v0.523.0 - ISC
|
|
25623
25904
|
*
|
|
25624
25905
|
* This source code is licensed under the ISC license.
|
|
25625
25906
|
* See the LICENSE file in the root directory of this source tree.
|
|
25626
25907
|
*/
|
|
25627
|
-
const
|
|
25628
|
-
|
|
25629
|
-
]);
|
|
25908
|
+
const __iconNode$7 = [["polygon", { points: "6 3 20 12 6 21 6 3", key: "1oa8hb" }]];
|
|
25909
|
+
const Play = createLucideIcon("play", __iconNode$7);
|
|
25630
25910
|
/**
|
|
25631
|
-
* @license lucide-react v0.
|
|
25911
|
+
* @license lucide-react v0.523.0 - ISC
|
|
25632
25912
|
*
|
|
25633
25913
|
* This source code is licensed under the ISC license.
|
|
25634
25914
|
* See the LICENSE file in the root directory of this source tree.
|
|
25635
25915
|
*/
|
|
25636
|
-
const
|
|
25916
|
+
const __iconNode$6 = [
|
|
25637
25917
|
["path", { d: "M5 12h14", key: "1ays0h" }],
|
|
25638
25918
|
["path", { d: "M12 5v14", key: "s699le" }]
|
|
25639
|
-
]
|
|
25919
|
+
];
|
|
25920
|
+
const Plus = createLucideIcon("plus", __iconNode$6);
|
|
25640
25921
|
/**
|
|
25641
|
-
* @license lucide-react v0.
|
|
25922
|
+
* @license lucide-react v0.523.0 - ISC
|
|
25642
25923
|
*
|
|
25643
25924
|
* This source code is licensed under the ISC license.
|
|
25644
25925
|
* See the LICENSE file in the root directory of this source tree.
|
|
25645
25926
|
*/
|
|
25646
|
-
const
|
|
25927
|
+
const __iconNode$5 = [
|
|
25647
25928
|
["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" }],
|
|
25648
25929
|
["path", { d: "M8 16H3v5", key: "1cv678" }],
|
|
25649
25930
|
["path", { d: "M3 12C3 9.51 4 7.26 5.64 5.64", key: "ruvoct" }],
|
|
@@ -25651,36 +25932,39 @@ const RefreshCwOff = createLucideIcon("RefreshCwOff", [
|
|
|
25651
25932
|
["path", { d: "M21 12c0 1-.16 1.97-.47 2.87", key: "4w8emr" }],
|
|
25652
25933
|
["path", { d: "M21 3v5h-5", key: "1q7to0" }],
|
|
25653
25934
|
["path", { d: "M22 22 2 2", key: "1r8tn9" }]
|
|
25654
|
-
]
|
|
25935
|
+
];
|
|
25936
|
+
const RefreshCwOff = createLucideIcon("refresh-cw-off", __iconNode$5);
|
|
25655
25937
|
/**
|
|
25656
|
-
* @license lucide-react v0.
|
|
25938
|
+
* @license lucide-react v0.523.0 - ISC
|
|
25657
25939
|
*
|
|
25658
25940
|
* This source code is licensed under the ISC license.
|
|
25659
25941
|
* See the LICENSE file in the root directory of this source tree.
|
|
25660
25942
|
*/
|
|
25661
|
-
const
|
|
25943
|
+
const __iconNode$4 = [
|
|
25662
25944
|
["path", { d: "M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8", key: "v9h5vc" }],
|
|
25663
25945
|
["path", { d: "M21 3v5h-5", key: "1q7to0" }],
|
|
25664
25946
|
["path", { d: "M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16", key: "3uifl3" }],
|
|
25665
25947
|
["path", { d: "M8 16H3v5", key: "1cv678" }]
|
|
25666
|
-
]
|
|
25948
|
+
];
|
|
25949
|
+
const RefreshCw = createLucideIcon("refresh-cw", __iconNode$4);
|
|
25667
25950
|
/**
|
|
25668
|
-
* @license lucide-react v0.
|
|
25951
|
+
* @license lucide-react v0.523.0 - ISC
|
|
25669
25952
|
*
|
|
25670
25953
|
* This source code is licensed under the ISC license.
|
|
25671
25954
|
* See the LICENSE file in the root directory of this source tree.
|
|
25672
25955
|
*/
|
|
25673
|
-
const
|
|
25956
|
+
const __iconNode$3 = [
|
|
25674
25957
|
["path", { d: "M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8", key: "1357e3" }],
|
|
25675
25958
|
["path", { d: "M3 3v5h5", key: "1xhq8a" }]
|
|
25676
|
-
]
|
|
25959
|
+
];
|
|
25960
|
+
const RotateCcw = createLucideIcon("rotate-ccw", __iconNode$3);
|
|
25677
25961
|
/**
|
|
25678
|
-
* @license lucide-react v0.
|
|
25962
|
+
* @license lucide-react v0.523.0 - ISC
|
|
25679
25963
|
*
|
|
25680
25964
|
* This source code is licensed under the ISC license.
|
|
25681
25965
|
* See the LICENSE file in the root directory of this source tree.
|
|
25682
25966
|
*/
|
|
25683
|
-
const
|
|
25967
|
+
const __iconNode$2 = [
|
|
25684
25968
|
[
|
|
25685
25969
|
"path",
|
|
25686
25970
|
{
|
|
@@ -25690,14 +25974,15 @@ const Save = createLucideIcon("Save", [
|
|
|
25690
25974
|
],
|
|
25691
25975
|
["path", { d: "M17 21v-7a1 1 0 0 0-1-1H8a1 1 0 0 0-1 1v7", key: "1ydtos" }],
|
|
25692
25976
|
["path", { d: "M7 3v4a1 1 0 0 0 1 1h7", key: "t51u73" }]
|
|
25693
|
-
]
|
|
25977
|
+
];
|
|
25978
|
+
const Save = createLucideIcon("save", __iconNode$2);
|
|
25694
25979
|
/**
|
|
25695
|
-
* @license lucide-react v0.
|
|
25980
|
+
* @license lucide-react v0.523.0 - ISC
|
|
25696
25981
|
*
|
|
25697
25982
|
* This source code is licensed under the ISC license.
|
|
25698
25983
|
* See the LICENSE file in the root directory of this source tree.
|
|
25699
25984
|
*/
|
|
25700
|
-
const
|
|
25985
|
+
const __iconNode$1 = [
|
|
25701
25986
|
[
|
|
25702
25987
|
"path",
|
|
25703
25988
|
{
|
|
@@ -25706,14 +25991,15 @@ const Send = createLucideIcon("Send", [
|
|
|
25706
25991
|
}
|
|
25707
25992
|
],
|
|
25708
25993
|
["path", { d: "m21.854 2.147-10.94 10.939", key: "12cjpa" }]
|
|
25709
|
-
]
|
|
25994
|
+
];
|
|
25995
|
+
const Send = createLucideIcon("send", __iconNode$1);
|
|
25710
25996
|
/**
|
|
25711
|
-
* @license lucide-react v0.
|
|
25997
|
+
* @license lucide-react v0.523.0 - ISC
|
|
25712
25998
|
*
|
|
25713
25999
|
* This source code is licensed under the ISC license.
|
|
25714
26000
|
* See the LICENSE file in the root directory of this source tree.
|
|
25715
26001
|
*/
|
|
25716
|
-
const
|
|
26002
|
+
const __iconNode = [
|
|
25717
26003
|
[
|
|
25718
26004
|
"path",
|
|
25719
26005
|
{
|
|
@@ -25722,7 +26008,8 @@ const Settings = createLucideIcon("Settings", [
|
|
|
25722
26008
|
}
|
|
25723
26009
|
],
|
|
25724
26010
|
["circle", { cx: "12", cy: "12", r: "3", key: "1v7zrd" }]
|
|
25725
|
-
]
|
|
26011
|
+
];
|
|
26012
|
+
const Settings = createLucideIcon("settings", __iconNode);
|
|
25726
26013
|
const OAuthStepDetails = ({
|
|
25727
26014
|
label,
|
|
25728
26015
|
isComplete,
|
|
@@ -25828,7 +26115,7 @@ const OAuthFlowProgress = ({
|
|
|
25828
26115
|
] }),
|
|
25829
26116
|
authState.resourceMetadataError && /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "mt-2 p-3 border border-blue-300 bg-blue-50 rounded-md", children: [
|
|
25830
26117
|
/* @__PURE__ */ jsxRuntimeExports.jsxs("p", { className: "text-sm font-medium text-blue-700", children: [
|
|
25831
|
-
"ℹ️
|
|
26118
|
+
"ℹ️ Problem with resource metadata from",
|
|
25832
26119
|
" ",
|
|
25833
26120
|
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
25834
26121
|
"a",
|
|
@@ -28439,8 +28726,9 @@ function getOppositeAxis(axis) {
|
|
|
28439
28726
|
function getAxisLength(axis) {
|
|
28440
28727
|
return axis === "y" ? "height" : "width";
|
|
28441
28728
|
}
|
|
28729
|
+
const yAxisSides = /* @__PURE__ */ new Set(["top", "bottom"]);
|
|
28442
28730
|
function getSideAxis(placement) {
|
|
28443
|
-
return
|
|
28731
|
+
return yAxisSides.has(getSide(placement)) ? "y" : "x";
|
|
28444
28732
|
}
|
|
28445
28733
|
function getAlignmentAxis(placement) {
|
|
28446
28734
|
return getOppositeAxis(getSideAxis(placement));
|
|
@@ -28465,19 +28753,19 @@ function getExpandedPlacements(placement) {
|
|
|
28465
28753
|
function getOppositeAlignmentPlacement(placement) {
|
|
28466
28754
|
return placement.replace(/start|end/g, (alignment) => oppositeAlignmentMap[alignment]);
|
|
28467
28755
|
}
|
|
28756
|
+
const lrPlacement = ["left", "right"];
|
|
28757
|
+
const rlPlacement = ["right", "left"];
|
|
28758
|
+
const tbPlacement = ["top", "bottom"];
|
|
28759
|
+
const btPlacement = ["bottom", "top"];
|
|
28468
28760
|
function getSideList(side, isStart, rtl) {
|
|
28469
|
-
const lr = ["left", "right"];
|
|
28470
|
-
const rl = ["right", "left"];
|
|
28471
|
-
const tb = ["top", "bottom"];
|
|
28472
|
-
const bt = ["bottom", "top"];
|
|
28473
28761
|
switch (side) {
|
|
28474
28762
|
case "top":
|
|
28475
28763
|
case "bottom":
|
|
28476
|
-
if (rtl) return isStart ?
|
|
28477
|
-
return isStart ?
|
|
28764
|
+
if (rtl) return isStart ? rlPlacement : lrPlacement;
|
|
28765
|
+
return isStart ? lrPlacement : rlPlacement;
|
|
28478
28766
|
case "left":
|
|
28479
28767
|
case "right":
|
|
28480
|
-
return isStart ?
|
|
28768
|
+
return isStart ? tbPlacement : btPlacement;
|
|
28481
28769
|
default:
|
|
28482
28770
|
return [];
|
|
28483
28771
|
}
|
|
@@ -28956,6 +29244,7 @@ const hide$2 = function(options) {
|
|
|
28956
29244
|
}
|
|
28957
29245
|
};
|
|
28958
29246
|
};
|
|
29247
|
+
const originSides = /* @__PURE__ */ new Set(["left", "top"]);
|
|
28959
29248
|
async function convertValueToCoords(state, options) {
|
|
28960
29249
|
const {
|
|
28961
29250
|
placement,
|
|
@@ -28966,7 +29255,7 @@ async function convertValueToCoords(state, options) {
|
|
|
28966
29255
|
const side = getSide(placement);
|
|
28967
29256
|
const alignment = getAlignment(placement);
|
|
28968
29257
|
const isVertical = getSideAxis(placement) === "y";
|
|
28969
|
-
const mainAxisMulti =
|
|
29258
|
+
const mainAxisMulti = originSides.has(side) ? -1 : 1;
|
|
28970
29259
|
const crossAxisMulti = rtl && isVertical ? -1 : 1;
|
|
28971
29260
|
const rawValue = evaluate(options, state);
|
|
28972
29261
|
let {
|
|
@@ -29144,7 +29433,7 @@ const limitShift$2 = function(options) {
|
|
|
29144
29433
|
if (checkCrossAxis) {
|
|
29145
29434
|
var _middlewareData$offse, _middlewareData$offse2;
|
|
29146
29435
|
const len = mainAxis === "y" ? "width" : "height";
|
|
29147
|
-
const isOriginSide =
|
|
29436
|
+
const isOriginSide = originSides.has(getSide(placement));
|
|
29148
29437
|
const limitMin = rects.reference[crossAxis] - rects.floating[len] + (isOriginSide ? ((_middlewareData$offse = middlewareData.offset) == null ? void 0 : _middlewareData$offse[crossAxis]) || 0 : 0) + (isOriginSide ? 0 : computedOffset.crossAxis);
|
|
29149
29438
|
const limitMax = rects.reference[crossAxis] + rects.reference[len] + (isOriginSide ? 0 : ((_middlewareData$offse2 = middlewareData.offset) == null ? void 0 : _middlewareData$offse2[crossAxis]) || 0) - (isOriginSide ? computedOffset.crossAxis : 0);
|
|
29150
29439
|
if (crossAxisCoord < limitMin) {
|
|
@@ -29279,6 +29568,7 @@ function isShadowRoot(value) {
|
|
|
29279
29568
|
}
|
|
29280
29569
|
return value instanceof ShadowRoot || value instanceof getWindow(value).ShadowRoot;
|
|
29281
29570
|
}
|
|
29571
|
+
const invalidOverflowDisplayValues = /* @__PURE__ */ new Set(["inline", "contents"]);
|
|
29282
29572
|
function isOverflowElement(element) {
|
|
29283
29573
|
const {
|
|
29284
29574
|
overflow,
|
|
@@ -29286,24 +29576,29 @@ function isOverflowElement(element) {
|
|
|
29286
29576
|
overflowY,
|
|
29287
29577
|
display
|
|
29288
29578
|
} = getComputedStyle$1(element);
|
|
29289
|
-
return /auto|scroll|overlay|hidden|clip/.test(overflow + overflowY + overflowX) && !
|
|
29579
|
+
return /auto|scroll|overlay|hidden|clip/.test(overflow + overflowY + overflowX) && !invalidOverflowDisplayValues.has(display);
|
|
29290
29580
|
}
|
|
29581
|
+
const tableElements = /* @__PURE__ */ new Set(["table", "td", "th"]);
|
|
29291
29582
|
function isTableElement(element) {
|
|
29292
|
-
return
|
|
29583
|
+
return tableElements.has(getNodeName(element));
|
|
29293
29584
|
}
|
|
29585
|
+
const topLayerSelectors = [":popover-open", ":modal"];
|
|
29294
29586
|
function isTopLayer(element) {
|
|
29295
|
-
return
|
|
29587
|
+
return topLayerSelectors.some((selector) => {
|
|
29296
29588
|
try {
|
|
29297
29589
|
return element.matches(selector);
|
|
29298
|
-
} catch (
|
|
29590
|
+
} catch (_e2) {
|
|
29299
29591
|
return false;
|
|
29300
29592
|
}
|
|
29301
29593
|
});
|
|
29302
29594
|
}
|
|
29595
|
+
const transformProperties = ["transform", "translate", "scale", "rotate", "perspective"];
|
|
29596
|
+
const willChangeValues = ["transform", "translate", "scale", "rotate", "perspective", "filter"];
|
|
29597
|
+
const containValues = ["paint", "layout", "strict", "content"];
|
|
29303
29598
|
function isContainingBlock(elementOrCss) {
|
|
29304
29599
|
const webkit = isWebKit();
|
|
29305
29600
|
const css = isElement(elementOrCss) ? getComputedStyle$1(elementOrCss) : elementOrCss;
|
|
29306
|
-
return
|
|
29601
|
+
return transformProperties.some((value) => css[value] ? css[value] !== "none" : false) || (css.containerType ? css.containerType !== "normal" : false) || !webkit && (css.backdropFilter ? css.backdropFilter !== "none" : false) || !webkit && (css.filter ? css.filter !== "none" : false) || willChangeValues.some((value) => (css.willChange || "").includes(value)) || containValues.some((value) => (css.contain || "").includes(value));
|
|
29307
29602
|
}
|
|
29308
29603
|
function getContainingBlock(element) {
|
|
29309
29604
|
let currentNode = getParentNode(element);
|
|
@@ -29321,8 +29616,9 @@ function isWebKit() {
|
|
|
29321
29616
|
if (typeof CSS === "undefined" || !CSS.supports) return false;
|
|
29322
29617
|
return CSS.supports("-webkit-backdrop-filter", "none");
|
|
29323
29618
|
}
|
|
29619
|
+
const lastTraversableNodeNames = /* @__PURE__ */ new Set(["html", "body", "#document"]);
|
|
29324
29620
|
function isLastTraversableNode(node) {
|
|
29325
|
-
return
|
|
29621
|
+
return lastTraversableNodeNames.has(getNodeName(node));
|
|
29326
29622
|
}
|
|
29327
29623
|
function getComputedStyle$1(element) {
|
|
29328
29624
|
return getWindow(element).getComputedStyle(element);
|
|
@@ -29605,6 +29901,7 @@ function getViewportRect(element, strategy) {
|
|
|
29605
29901
|
y
|
|
29606
29902
|
};
|
|
29607
29903
|
}
|
|
29904
|
+
const absoluteOrFixed = /* @__PURE__ */ new Set(["absolute", "fixed"]);
|
|
29608
29905
|
function getInnerBoundingClientRect(element, strategy) {
|
|
29609
29906
|
const clientRect = getBoundingClientRect(element, true, strategy === "fixed");
|
|
29610
29907
|
const top = clientRect.top + element.clientTop;
|
|
@@ -29662,7 +29959,7 @@ function getClippingElementAncestors(element, cache2) {
|
|
|
29662
29959
|
if (!currentNodeIsContaining && computedStyle.position === "fixed") {
|
|
29663
29960
|
currentContainingBlockComputedStyle = null;
|
|
29664
29961
|
}
|
|
29665
|
-
const shouldDropCurrentNode = elementIsFixed ? !currentNodeIsContaining && !currentContainingBlockComputedStyle : !currentNodeIsContaining && computedStyle.position === "static" && !!currentContainingBlockComputedStyle &&
|
|
29962
|
+
const shouldDropCurrentNode = elementIsFixed ? !currentNodeIsContaining && !currentContainingBlockComputedStyle : !currentNodeIsContaining && computedStyle.position === "static" && !!currentContainingBlockComputedStyle && absoluteOrFixed.has(currentContainingBlockComputedStyle.position) || isOverflowElement(currentNode) && !currentNodeIsContaining && hasFixedPositionAncestor(element, currentNode);
|
|
29666
29963
|
if (shouldDropCurrentNode) {
|
|
29667
29964
|
result = result.filter((ancestor) => ancestor !== currentNode);
|
|
29668
29965
|
} else {
|
|
@@ -35298,7 +35595,7 @@ const useTheme = () => {
|
|
|
35298
35595
|
[theme, setThemeWithSideEffect]
|
|
35299
35596
|
);
|
|
35300
35597
|
};
|
|
35301
|
-
const version = "0.
|
|
35598
|
+
const version = "0.15.0";
|
|
35302
35599
|
var [createTooltipContext, createTooltipScope] = createContextScope("Tooltip", [
|
|
35303
35600
|
createPopperScope
|
|
35304
35601
|
]);
|
|
@@ -36226,7 +36523,7 @@ const Sidebar = ({
|
|
|
36226
36523
|
}
|
|
36227
36524
|
),
|
|
36228
36525
|
/* @__PURE__ */ jsxRuntimeExports.jsxs(Tooltip, { children: [
|
|
36229
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx(TooltipTrigger, { asChild: true, children: /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
36526
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(TooltipTrigger, { asChild: true, children: /* @__PURE__ */ jsxRuntimeExports.jsx(CircleQuestionMark, { className: "h-4 w-4 text-muted-foreground" }) }),
|
|
36230
36527
|
/* @__PURE__ */ jsxRuntimeExports.jsx(TooltipContent, { children: configItem.description })
|
|
36231
36528
|
] })
|
|
36232
36529
|
] }),
|
|
@@ -36419,7 +36716,7 @@ const Sidebar = ({
|
|
|
36419
36716
|
href: "https://modelcontextprotocol.io/docs/tools/inspector",
|
|
36420
36717
|
target: "_blank",
|
|
36421
36718
|
rel: "noopener noreferrer",
|
|
36422
|
-
children: /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
36719
|
+
children: /* @__PURE__ */ jsxRuntimeExports.jsx(CircleQuestionMark, { className: "w-4 h-4 text-foreground" })
|
|
36423
36720
|
}
|
|
36424
36721
|
) }),
|
|
36425
36722
|
/* @__PURE__ */ jsxRuntimeExports.jsx(Button, { variant: "ghost", title: "Debugging Guide", asChild: true, children: /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
@@ -37519,13 +37816,13 @@ const App = () => {
|
|
|
37519
37816
|
) });
|
|
37520
37817
|
if (window.location.pathname === "/oauth/callback") {
|
|
37521
37818
|
const OAuthCallback = React.lazy(
|
|
37522
|
-
() => __vitePreload(() => import("./OAuthCallback-
|
|
37819
|
+
() => __vitePreload(() => import("./OAuthCallback-CaW3Hcqw.js"), true ? __vite__mapDeps([0,1]) : void 0)
|
|
37523
37820
|
);
|
|
37524
37821
|
return /* @__PURE__ */ jsxRuntimeExports.jsx(reactExports.Suspense, { fallback: /* @__PURE__ */ jsxRuntimeExports.jsx("div", { children: "Loading..." }), children: /* @__PURE__ */ jsxRuntimeExports.jsx(OAuthCallback, { onConnect: onOAuthConnect }) });
|
|
37525
37822
|
}
|
|
37526
37823
|
if (window.location.pathname === "/oauth/callback/debug") {
|
|
37527
37824
|
const OAuthDebugCallback = React.lazy(
|
|
37528
|
-
() => __vitePreload(() => import("./OAuthDebugCallback-
|
|
37825
|
+
() => __vitePreload(() => import("./OAuthDebugCallback-DiBt_oxh.js"), true ? __vite__mapDeps([2,1]) : void 0)
|
|
37529
37826
|
);
|
|
37530
37827
|
return /* @__PURE__ */ jsxRuntimeExports.jsx(reactExports.Suspense, { fallback: /* @__PURE__ */ jsxRuntimeExports.jsx("div", { children: "Loading..." }), children: /* @__PURE__ */ jsxRuntimeExports.jsx(OAuthDebugCallback, { onConnect: onOAuthDebugConnect }) });
|
|
37531
37828
|
}
|