@trops/dash-core 0.1.65 → 0.1.67
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.esm.js +886 -668
- package/dist/index.esm.js.map +1 -1
- package/dist/index.js +886 -668
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/index.esm.js
CHANGED
|
@@ -26514,94 +26514,105 @@ var ProviderDetail = function ProviderDetail(_ref) {
|
|
|
26514
26514
|
text: isMcp ? "MCP Server" : "API Credentials"
|
|
26515
26515
|
})]
|
|
26516
26516
|
})]
|
|
26517
|
-
}), isMcp && provider.mcpConfig && /*#__PURE__*/jsxs(
|
|
26518
|
-
|
|
26519
|
-
|
|
26520
|
-
|
|
26521
|
-
|
|
26522
|
-
|
|
26523
|
-
|
|
26524
|
-
|
|
26525
|
-
|
|
26526
|
-
|
|
26527
|
-
className: "flex gap-2",
|
|
26528
|
-
children: [/*#__PURE__*/jsx("span", {
|
|
26529
|
-
className: "opacity-50 w-20",
|
|
26530
|
-
children: "Transport:"
|
|
26531
|
-
}), /*#__PURE__*/jsx("span", {
|
|
26532
|
-
children: provider.mcpConfig.transport === "streamable_http" ? "Streamable HTTP" : "stdio"
|
|
26533
|
-
})]
|
|
26534
|
-
}), provider.mcpConfig.transport === "streamable_http" ? /*#__PURE__*/jsxs("div", {
|
|
26535
|
-
className: "flex gap-2",
|
|
26536
|
-
children: [/*#__PURE__*/jsx("span", {
|
|
26537
|
-
className: "opacity-50 w-20",
|
|
26538
|
-
children: "Endpoint:"
|
|
26539
|
-
}), /*#__PURE__*/jsx("span", {
|
|
26540
|
-
className: "text-xs opacity-70",
|
|
26541
|
-
children: "Remote hosted server"
|
|
26542
|
-
})]
|
|
26543
|
-
}) : /*#__PURE__*/jsxs(Fragment, {
|
|
26517
|
+
}), isMcp && provider.mcpConfig && /*#__PURE__*/jsxs(Fragment, {
|
|
26518
|
+
children: [/*#__PURE__*/jsx("div", {
|
|
26519
|
+
className: "space-y-4",
|
|
26520
|
+
children: /*#__PURE__*/jsxs("div", {
|
|
26521
|
+
className: "border-t border-white/10 pt-4",
|
|
26522
|
+
children: [/*#__PURE__*/jsx("p", {
|
|
26523
|
+
className: "text-xs font-semibold opacity-40 uppercase tracking-wider mb-3",
|
|
26524
|
+
children: "Server Configuration"
|
|
26525
|
+
}), /*#__PURE__*/jsxs("div", {
|
|
26526
|
+
className: "space-y-2 text-sm",
|
|
26544
26527
|
children: [/*#__PURE__*/jsxs("div", {
|
|
26545
26528
|
className: "flex gap-2",
|
|
26546
26529
|
children: [/*#__PURE__*/jsx("span", {
|
|
26547
26530
|
className: "opacity-50 w-20",
|
|
26548
|
-
children: "
|
|
26549
|
-
}), /*#__PURE__*/
|
|
26550
|
-
|
|
26551
|
-
children: [provider.mcpConfig.command, " ", (provider.mcpConfig.args || []).join(" ")]
|
|
26531
|
+
children: "Transport:"
|
|
26532
|
+
}), /*#__PURE__*/jsx("span", {
|
|
26533
|
+
children: provider.mcpConfig.transport === "streamable_http" ? "Streamable HTTP" : "stdio"
|
|
26552
26534
|
})]
|
|
26553
|
-
}), provider.mcpConfig.
|
|
26535
|
+
}), provider.mcpConfig.transport === "streamable_http" ? /*#__PURE__*/jsxs("div", {
|
|
26554
26536
|
className: "flex gap-2",
|
|
26555
26537
|
children: [/*#__PURE__*/jsx("span", {
|
|
26556
26538
|
className: "opacity-50 w-20",
|
|
26557
|
-
children: "
|
|
26539
|
+
children: "Endpoint:"
|
|
26558
26540
|
}), /*#__PURE__*/jsx("span", {
|
|
26559
|
-
className: "text-xs",
|
|
26560
|
-
children:
|
|
26541
|
+
className: "text-xs opacity-70",
|
|
26542
|
+
children: "Remote hosted server"
|
|
26543
|
+
})]
|
|
26544
|
+
}) : /*#__PURE__*/jsxs(Fragment, {
|
|
26545
|
+
children: [/*#__PURE__*/jsxs("div", {
|
|
26546
|
+
className: "flex gap-2",
|
|
26547
|
+
children: [/*#__PURE__*/jsx("span", {
|
|
26548
|
+
className: "opacity-50 w-20",
|
|
26549
|
+
children: "Command:"
|
|
26550
|
+
}), /*#__PURE__*/jsxs("code", {
|
|
26551
|
+
className: "text-xs bg-white/5 px-2 py-0.5 rounded",
|
|
26552
|
+
children: [provider.mcpConfig.command, " ", (provider.mcpConfig.args || []).join(" ")]
|
|
26553
|
+
})]
|
|
26554
|
+
}), provider.mcpConfig.envMapping && Object.keys(provider.mcpConfig.envMapping).length > 0 && /*#__PURE__*/jsxs("div", {
|
|
26555
|
+
className: "flex gap-2",
|
|
26556
|
+
children: [/*#__PURE__*/jsx("span", {
|
|
26557
|
+
className: "opacity-50 w-20",
|
|
26558
|
+
children: "Env Vars:"
|
|
26559
|
+
}), /*#__PURE__*/jsx("span", {
|
|
26560
|
+
className: "text-xs",
|
|
26561
|
+
children: Object.keys(provider.mcpConfig.envMapping).join(", ")
|
|
26562
|
+
})]
|
|
26561
26563
|
})]
|
|
26562
26564
|
})]
|
|
26563
26565
|
})]
|
|
26564
|
-
})]
|
|
26565
|
-
}), authResult && /*#__PURE__*/jsx("div", {
|
|
26566
|
-
className: "p-3 rounded-lg text-sm ".concat(authResult.success ? "bg-green-900/30 border border-green-700 text-green-300" : "bg-red-900/30 border border-red-700 text-red-300"),
|
|
26567
|
-
children: /*#__PURE__*/jsxs("div", {
|
|
26568
|
-
className: "flex items-center gap-2",
|
|
26569
|
-
children: [/*#__PURE__*/jsx(FontAwesomeIcon, {
|
|
26570
|
-
icon: authResult.success ? "circle-check" : "circle-exclamation"
|
|
26571
|
-
}), /*#__PURE__*/jsx("span", {
|
|
26572
|
-
children: authResult.message
|
|
26573
|
-
})]
|
|
26574
|
-
})
|
|
26575
|
-
}), testResult && /*#__PURE__*/jsx("div", {
|
|
26576
|
-
className: "p-3 rounded-lg text-sm ".concat(testResult.success ? "bg-green-900/30 border border-green-700 text-green-300" : "bg-red-900/30 border border-red-700 text-red-300"),
|
|
26577
|
-
children: /*#__PURE__*/jsxs("div", {
|
|
26578
|
-
className: "flex items-center gap-2",
|
|
26579
|
-
children: [/*#__PURE__*/jsx(FontAwesomeIcon, {
|
|
26580
|
-
icon: testResult.success ? "circle-check" : "circle-exclamation"
|
|
26581
|
-
}), /*#__PURE__*/jsx("span", {
|
|
26582
|
-
children: testResult.message
|
|
26583
|
-
})]
|
|
26584
26566
|
})
|
|
26585
|
-
}),
|
|
26586
|
-
|
|
26587
|
-
|
|
26588
|
-
|
|
26589
|
-
|
|
26590
|
-
|
|
26591
|
-
|
|
26592
|
-
className: "text-xs font-semibold opacity-40 uppercase tracking-wider",
|
|
26593
|
-
children: "Allowed Tools"
|
|
26594
|
-
}), /*#__PURE__*/jsx("div", {
|
|
26595
|
-
className: "flex flex-wrap gap-1",
|
|
26596
|
-
children: provider.allowedTools.map(function (tool) {
|
|
26597
|
-
return /*#__PURE__*/jsx("span", {
|
|
26598
|
-
className: "text-xs font-mono px-2 py-0.5 rounded bg-white/5 opacity-70",
|
|
26599
|
-
children: tool
|
|
26600
|
-
}, tool);
|
|
26567
|
+
}), /*#__PURE__*/jsxs("div", {
|
|
26568
|
+
className: "space-y-4",
|
|
26569
|
+
children: [/*#__PURE__*/jsx("div", {
|
|
26570
|
+
className: "border-t border-white/10 pt-4",
|
|
26571
|
+
children: /*#__PURE__*/jsx("p", {
|
|
26572
|
+
className: "text-xs font-semibold opacity-40 uppercase tracking-wider mb-3",
|
|
26573
|
+
children: "Connection & Tools"
|
|
26601
26574
|
})
|
|
26602
|
-
}), /*#__PURE__*/
|
|
26603
|
-
className: "text-
|
|
26604
|
-
children:
|
|
26575
|
+
}), authResult && /*#__PURE__*/jsx("div", {
|
|
26576
|
+
className: "p-3 rounded-lg text-sm ".concat(authResult.success ? "bg-green-900/30 border border-green-700 text-green-300" : "bg-red-900/30 border border-red-700 text-red-300"),
|
|
26577
|
+
children: /*#__PURE__*/jsxs("div", {
|
|
26578
|
+
className: "flex items-center gap-2",
|
|
26579
|
+
children: [/*#__PURE__*/jsx(FontAwesomeIcon, {
|
|
26580
|
+
icon: authResult.success ? "circle-check" : "circle-exclamation"
|
|
26581
|
+
}), /*#__PURE__*/jsx("span", {
|
|
26582
|
+
children: authResult.message
|
|
26583
|
+
})]
|
|
26584
|
+
})
|
|
26585
|
+
}), testResult && /*#__PURE__*/jsx("div", {
|
|
26586
|
+
className: "p-3 rounded-lg text-sm ".concat(testResult.success ? "bg-green-900/30 border border-green-700 text-green-300" : "bg-red-900/30 border border-red-700 text-red-300"),
|
|
26587
|
+
children: /*#__PURE__*/jsxs("div", {
|
|
26588
|
+
className: "flex items-center gap-2",
|
|
26589
|
+
children: [/*#__PURE__*/jsx(FontAwesomeIcon, {
|
|
26590
|
+
icon: testResult.success ? "circle-check" : "circle-exclamation"
|
|
26591
|
+
}), /*#__PURE__*/jsx("span", {
|
|
26592
|
+
children: testResult.message
|
|
26593
|
+
})]
|
|
26594
|
+
})
|
|
26595
|
+
}), (testResult === null || testResult === void 0 ? void 0 : testResult.success) && ((_testResult$tools = testResult.tools) === null || _testResult$tools === void 0 ? void 0 : _testResult$tools.length) > 0 && selectedTools && /*#__PURE__*/jsx(ToolSelector, {
|
|
26596
|
+
tools: testResult.tools,
|
|
26597
|
+
selectedTools: selectedTools,
|
|
26598
|
+
onSelectionChange: setSelectedTools
|
|
26599
|
+
}), !testResult && (provider === null || provider === void 0 ? void 0 : provider.allowedTools) && provider.allowedTools.length > 0 && /*#__PURE__*/jsxs("div", {
|
|
26600
|
+
className: "space-y-2",
|
|
26601
|
+
children: [/*#__PURE__*/jsx("div", {
|
|
26602
|
+
className: "flex flex-wrap gap-1",
|
|
26603
|
+
children: provider.allowedTools.map(function (tool) {
|
|
26604
|
+
return /*#__PURE__*/jsx("span", {
|
|
26605
|
+
className: "text-xs font-mono px-2 py-0.5 rounded bg-white/5 opacity-70",
|
|
26606
|
+
children: tool
|
|
26607
|
+
}, tool);
|
|
26608
|
+
})
|
|
26609
|
+
}), /*#__PURE__*/jsxs("p", {
|
|
26610
|
+
className: "text-xs opacity-40",
|
|
26611
|
+
children: [provider.allowedTools.length, " tool", provider.allowedTools.length !== 1 ? "s" : "", " allowed \u2014 test connection to modify"]
|
|
26612
|
+
})]
|
|
26613
|
+
}), !testResult && (!(provider !== null && provider !== void 0 && provider.allowedTools) || provider.allowedTools.length === 0) && /*#__PURE__*/jsx("p", {
|
|
26614
|
+
className: "text-sm opacity-40",
|
|
26615
|
+
children: "No tools configured \u2014 use Test Connection to discover available tools."
|
|
26605
26616
|
})]
|
|
26606
26617
|
})]
|
|
26607
26618
|
})]
|
|
@@ -26798,19 +26809,25 @@ var CustomMcpServerForm = function CustomMcpServerForm(_ref2) {
|
|
|
26798
26809
|
selectedTools = _useState22[0],
|
|
26799
26810
|
setSelectedTools = _useState22[1];
|
|
26800
26811
|
|
|
26801
|
-
//
|
|
26802
|
-
var _useState23 = useState(
|
|
26812
|
+
// Wizard step state
|
|
26813
|
+
var _useState23 = useState(0),
|
|
26803
26814
|
_useState24 = _slicedToArray(_useState23, 2),
|
|
26804
|
-
|
|
26805
|
-
|
|
26806
|
-
|
|
26815
|
+
wizardStep = _useState24[0],
|
|
26816
|
+
setWizardStep = _useState24[1];
|
|
26817
|
+
|
|
26818
|
+
// JSON editor state
|
|
26819
|
+
var _useState25 = useState("form"),
|
|
26807
26820
|
_useState26 = _slicedToArray(_useState25, 2),
|
|
26808
|
-
|
|
26809
|
-
|
|
26810
|
-
var _useState27 = useState(
|
|
26821
|
+
viewMode = _useState26[0],
|
|
26822
|
+
setViewMode = _useState26[1]; // "form" | "json"
|
|
26823
|
+
var _useState27 = useState(""),
|
|
26811
26824
|
_useState28 = _slicedToArray(_useState27, 2),
|
|
26812
|
-
|
|
26813
|
-
|
|
26825
|
+
jsonText = _useState28[0],
|
|
26826
|
+
setJsonText = _useState28[1];
|
|
26827
|
+
var _useState29 = useState(null),
|
|
26828
|
+
_useState30 = _slicedToArray(_useState29, 2),
|
|
26829
|
+
jsonError = _useState30[0],
|
|
26830
|
+
setJsonError = _useState30[1];
|
|
26814
26831
|
|
|
26815
26832
|
// Clear credential data when transport changes (derived fields change entirely)
|
|
26816
26833
|
// Only in create mode — in edit mode the initial transport is set correctly
|
|
@@ -26821,6 +26838,23 @@ var CustomMcpServerForm = function CustomMcpServerForm(_ref2) {
|
|
|
26821
26838
|
}
|
|
26822
26839
|
}, [transport, isEditMode]);
|
|
26823
26840
|
|
|
26841
|
+
// Wizard step navigation with validation gates
|
|
26842
|
+
var handleWizardStepChange = function handleWizardStepChange(newStep) {
|
|
26843
|
+
if (newStep < wizardStep) {
|
|
26844
|
+
setWizardStep(newStep);
|
|
26845
|
+
return;
|
|
26846
|
+
}
|
|
26847
|
+
// Step 0→1: validate form (skip validation in JSON mode, handled on save)
|
|
26848
|
+
if (wizardStep === 0 && newStep >= 1) {
|
|
26849
|
+
if (viewMode === "form" && !validateForm()) return;
|
|
26850
|
+
}
|
|
26851
|
+
// Step 1→2: require test success OR edit mode with existing tools
|
|
26852
|
+
if (wizardStep === 1 && newStep >= 2) {
|
|
26853
|
+
if (!(testResult !== null && testResult !== void 0 && testResult.success) && !(isEditMode && initialAllowedTools)) return;
|
|
26854
|
+
}
|
|
26855
|
+
setWizardStep(newStep);
|
|
26856
|
+
};
|
|
26857
|
+
|
|
26824
26858
|
// Build mcpConfig from current state
|
|
26825
26859
|
var mcpConfig = useMemo(function () {
|
|
26826
26860
|
return buildMcpConfig(transport, {
|
|
@@ -26832,6 +26866,16 @@ var CustomMcpServerForm = function CustomMcpServerForm(_ref2) {
|
|
|
26832
26866
|
});
|
|
26833
26867
|
}, [transport, command, args, envMappingRows, url, headerRows]);
|
|
26834
26868
|
|
|
26869
|
+
// Invalidate test result when config changes after a test
|
|
26870
|
+
var mcpConfigRef = useRef(mcpConfig);
|
|
26871
|
+
useEffect(function () {
|
|
26872
|
+
if (mcpConfigRef.current !== mcpConfig && testResult) {
|
|
26873
|
+
setTestResult(null);
|
|
26874
|
+
setSelectedTools(initialAllowedTools);
|
|
26875
|
+
}
|
|
26876
|
+
mcpConfigRef.current = mcpConfig;
|
|
26877
|
+
}, [mcpConfig, testResult, initialAllowedTools]);
|
|
26878
|
+
|
|
26835
26879
|
// Derive credential fields from the live mcpConfig
|
|
26836
26880
|
var formFields = useMemo(function () {
|
|
26837
26881
|
return deriveFormFields(mcpConfig, initialCredentialSchema);
|
|
@@ -27032,414 +27076,487 @@ var CustomMcpServerForm = function CustomMcpServerForm(_ref2) {
|
|
|
27032
27076
|
return /*#__PURE__*/jsxs("div", {
|
|
27033
27077
|
className: "flex flex-col flex-1 min-h-0",
|
|
27034
27078
|
children: [/*#__PURE__*/jsxs("div", {
|
|
27035
|
-
className: "flex-
|
|
27036
|
-
children: [/*#__PURE__*/
|
|
27037
|
-
|
|
27038
|
-
|
|
27039
|
-
|
|
27040
|
-
|
|
27041
|
-
|
|
27042
|
-
|
|
27043
|
-
className: "text-lg"
|
|
27044
|
-
})
|
|
27045
|
-
}), /*#__PURE__*/jsxs("div", {
|
|
27046
|
-
children: [/*#__PURE__*/jsx(SubHeading3, {
|
|
27047
|
-
title: isEditMode ? "Edit MCP Server" : "Configure Custom MCP Server",
|
|
27048
|
-
padding: false
|
|
27049
|
-
}), /*#__PURE__*/jsx("p", {
|
|
27050
|
-
className: "text-sm opacity-50 mt-1",
|
|
27051
|
-
children: isEditMode ? "Modify this MCP server configuration" : "Define a custom MCP server connection"
|
|
27052
|
-
})]
|
|
27053
|
-
})]
|
|
27054
|
-
}), /*#__PURE__*/jsxs("div", {
|
|
27055
|
-
className: "flex flex-col gap-2",
|
|
27056
|
-
children: [/*#__PURE__*/jsx(FormLabel, {
|
|
27057
|
-
label: "Provider Name",
|
|
27058
|
-
required: true
|
|
27059
|
-
}), /*#__PURE__*/jsx("p", {
|
|
27060
|
-
className: "text-sm opacity-50",
|
|
27061
|
-
children: "A name to identify this MCP server (e.g., \"My Custom Server\")"
|
|
27062
|
-
}), /*#__PURE__*/jsx(InputText, {
|
|
27063
|
-
value: providerName,
|
|
27064
|
-
onChange: function onChange(value) {
|
|
27065
|
-
setProviderName(value);
|
|
27066
|
-
if (formErrors.providerName && value !== null && value !== void 0 && value.trim()) {
|
|
27067
|
-
setFormErrors(function (prev) {
|
|
27068
|
-
var next = _objectSpread$5({}, prev);
|
|
27069
|
-
delete next.providerName;
|
|
27070
|
-
return next;
|
|
27071
|
-
});
|
|
27072
|
-
}
|
|
27073
|
-
},
|
|
27074
|
-
placeholder: "Enter provider name"
|
|
27075
|
-
}), formErrors.providerName && /*#__PURE__*/jsx("p", {
|
|
27076
|
-
className: "text-sm text-red-400",
|
|
27077
|
-
children: formErrors.providerName
|
|
27078
|
-
})]
|
|
27079
|
+
className: "flex items-center gap-3 px-6 pt-6 pb-2",
|
|
27080
|
+
children: [/*#__PURE__*/jsx("button", {
|
|
27081
|
+
onClick: onBack,
|
|
27082
|
+
className: "text-gray-400 hover:text-gray-200 transition-colors",
|
|
27083
|
+
children: /*#__PURE__*/jsx(FontAwesomeIcon, {
|
|
27084
|
+
icon: "arrow-left",
|
|
27085
|
+
className: "text-lg"
|
|
27086
|
+
})
|
|
27079
27087
|
}), /*#__PURE__*/jsxs("div", {
|
|
27080
|
-
|
|
27081
|
-
|
|
27082
|
-
|
|
27083
|
-
if (viewMode === "json") handleSwitchToForm();
|
|
27084
|
-
},
|
|
27085
|
-
className: "px-3 py-1 text-xs font-medium rounded-l transition-colors ".concat(viewMode === "form" ? "bg-white/10 text-white" : "text-white/50 hover:text-white/70"),
|
|
27086
|
-
children: "Form"
|
|
27087
|
-
}), /*#__PURE__*/jsx("button", {
|
|
27088
|
-
onClick: function onClick() {
|
|
27089
|
-
if (viewMode === "form") handleSwitchToJson();
|
|
27090
|
-
},
|
|
27091
|
-
className: "px-3 py-1 text-xs font-medium rounded-r transition-colors ".concat(viewMode === "json" ? "bg-white/10 text-white" : "text-white/50 hover:text-white/70"),
|
|
27092
|
-
children: "JSON"
|
|
27093
|
-
})]
|
|
27094
|
-
}), jsonError && /*#__PURE__*/jsx("p", {
|
|
27095
|
-
className: "text-sm text-red-400",
|
|
27096
|
-
children: jsonError
|
|
27097
|
-
}), viewMode === "json" && /*#__PURE__*/jsxs("div", {
|
|
27098
|
-
className: "space-y-2",
|
|
27099
|
-
children: [/*#__PURE__*/jsx("p", {
|
|
27100
|
-
className: "text-xs font-semibold opacity-40 uppercase tracking-wider",
|
|
27101
|
-
children: "MCP Server Configuration (JSON)"
|
|
27088
|
+
children: [/*#__PURE__*/jsx(SubHeading3, {
|
|
27089
|
+
title: isEditMode ? "Edit MCP Server" : "Configure Custom MCP Server",
|
|
27090
|
+
padding: false
|
|
27102
27091
|
}), /*#__PURE__*/jsx("p", {
|
|
27103
|
-
className: "text-sm opacity-50",
|
|
27104
|
-
children: "
|
|
27105
|
-
}), /*#__PURE__*/jsx(CodeEditorInline, {
|
|
27106
|
-
code: jsonText,
|
|
27107
|
-
setCode: function setCode(val) {
|
|
27108
|
-
setJsonText(val);
|
|
27109
|
-
setJsonError(null);
|
|
27110
|
-
},
|
|
27111
|
-
language: "json",
|
|
27112
|
-
placeholder: '{\n "type": "stdio",\n "command": "npx",\n "args": ["-y", "package-name"],\n "env": {\n "API_KEY": "${API_KEY}"\n }\n}'
|
|
27092
|
+
className: "text-sm opacity-50 mt-1",
|
|
27093
|
+
children: isEditMode ? "Modify this MCP server configuration" : "Define a custom MCP server connection"
|
|
27113
27094
|
})]
|
|
27114
|
-
})
|
|
27115
|
-
|
|
27116
|
-
|
|
27117
|
-
|
|
27118
|
-
|
|
27119
|
-
|
|
27120
|
-
|
|
27121
|
-
|
|
27122
|
-
|
|
27123
|
-
|
|
27124
|
-
|
|
27125
|
-
|
|
27126
|
-
|
|
27127
|
-
|
|
27128
|
-
className: "
|
|
27129
|
-
children: [/*#__PURE__*/
|
|
27130
|
-
|
|
27131
|
-
|
|
27132
|
-
icon: "terminal"
|
|
27133
|
-
}), /*#__PURE__*/jsx("span", {
|
|
27134
|
-
className: "font-semibold text-sm",
|
|
27135
|
-
children: "Local Process (stdio)"
|
|
27136
|
-
})]
|
|
27095
|
+
})]
|
|
27096
|
+
}), /*#__PURE__*/jsx("div", {
|
|
27097
|
+
className: "flex-1 min-h-0 flex flex-col",
|
|
27098
|
+
children: /*#__PURE__*/jsxs(Stepper, {
|
|
27099
|
+
activeStep: wizardStep,
|
|
27100
|
+
onStepChange: handleWizardStepChange,
|
|
27101
|
+
showNavigation: false,
|
|
27102
|
+
className: "flex-1 min-h-0 flex flex-col px-6 pt-4",
|
|
27103
|
+
children: [/*#__PURE__*/jsx(Stepper.Step, {
|
|
27104
|
+
label: "Configure",
|
|
27105
|
+
description: "Server & credentials",
|
|
27106
|
+
children: /*#__PURE__*/jsxs("div", {
|
|
27107
|
+
className: "flex-1 min-h-0 overflow-y-auto pb-4 space-y-5",
|
|
27108
|
+
children: [/*#__PURE__*/jsxs("div", {
|
|
27109
|
+
className: "flex flex-col gap-2",
|
|
27110
|
+
children: [/*#__PURE__*/jsx(FormLabel, {
|
|
27111
|
+
label: "Provider Name",
|
|
27112
|
+
required: true
|
|
27137
27113
|
}), /*#__PURE__*/jsx("p", {
|
|
27138
|
-
className: "text-
|
|
27139
|
-
children: "
|
|
27114
|
+
className: "text-sm opacity-50",
|
|
27115
|
+
children: "A name to identify this MCP server (e.g., \"My Custom Server\")"
|
|
27116
|
+
}), /*#__PURE__*/jsx(InputText, {
|
|
27117
|
+
value: providerName,
|
|
27118
|
+
onChange: function onChange(value) {
|
|
27119
|
+
setProviderName(value);
|
|
27120
|
+
if (formErrors.providerName && value !== null && value !== void 0 && value.trim()) {
|
|
27121
|
+
setFormErrors(function (prev) {
|
|
27122
|
+
var next = _objectSpread$5({}, prev);
|
|
27123
|
+
delete next.providerName;
|
|
27124
|
+
return next;
|
|
27125
|
+
});
|
|
27126
|
+
}
|
|
27127
|
+
},
|
|
27128
|
+
placeholder: "Enter provider name"
|
|
27129
|
+
}), formErrors.providerName && /*#__PURE__*/jsx("p", {
|
|
27130
|
+
className: "text-sm text-red-400",
|
|
27131
|
+
children: formErrors.providerName
|
|
27140
27132
|
})]
|
|
27141
|
-
}), /*#__PURE__*/jsxs(
|
|
27142
|
-
|
|
27143
|
-
|
|
27144
|
-
|
|
27145
|
-
|
|
27146
|
-
|
|
27147
|
-
|
|
27148
|
-
|
|
27149
|
-
|
|
27150
|
-
|
|
27151
|
-
|
|
27152
|
-
}
|
|
27153
|
-
|
|
27154
|
-
|
|
27155
|
-
})]
|
|
27156
|
-
}), /*#__PURE__*/jsx("p", {
|
|
27157
|
-
className: "text-xs opacity-50",
|
|
27158
|
-
children: "Connect to a remote MCP server via HTTP"
|
|
27133
|
+
}), /*#__PURE__*/jsxs("div", {
|
|
27134
|
+
className: "flex items-center gap-1",
|
|
27135
|
+
children: [/*#__PURE__*/jsx("button", {
|
|
27136
|
+
onClick: function onClick() {
|
|
27137
|
+
if (viewMode === "json") handleSwitchToForm();
|
|
27138
|
+
},
|
|
27139
|
+
className: "px-3 py-1 text-xs font-medium rounded-l transition-colors ".concat(viewMode === "form" ? "bg-white/10 text-white" : "text-white/50 hover:text-white/70"),
|
|
27140
|
+
children: "Form"
|
|
27141
|
+
}), /*#__PURE__*/jsx("button", {
|
|
27142
|
+
onClick: function onClick() {
|
|
27143
|
+
if (viewMode === "form") handleSwitchToJson();
|
|
27144
|
+
},
|
|
27145
|
+
className: "px-3 py-1 text-xs font-medium rounded-r transition-colors ".concat(viewMode === "json" ? "bg-white/10 text-white" : "text-white/50 hover:text-white/70"),
|
|
27146
|
+
children: "JSON"
|
|
27159
27147
|
})]
|
|
27160
|
-
})
|
|
27161
|
-
})]
|
|
27162
|
-
}), transport === "stdio" && /*#__PURE__*/jsxs("div", {
|
|
27163
|
-
className: "space-y-4",
|
|
27164
|
-
children: [/*#__PURE__*/jsx("div", {
|
|
27165
|
-
className: "border-t border-white/10 pt-4",
|
|
27166
|
-
children: /*#__PURE__*/jsx("p", {
|
|
27167
|
-
className: "text-xs font-semibold opacity-40 uppercase tracking-wider",
|
|
27168
|
-
children: "Process Configuration"
|
|
27169
|
-
})
|
|
27170
|
-
}), /*#__PURE__*/jsxs("div", {
|
|
27171
|
-
className: "flex flex-col gap-2",
|
|
27172
|
-
children: [/*#__PURE__*/jsx(FormLabel, {
|
|
27173
|
-
label: "Command",
|
|
27174
|
-
required: true
|
|
27175
|
-
}), /*#__PURE__*/jsx("p", {
|
|
27176
|
-
className: "text-sm opacity-50",
|
|
27177
|
-
children: "The executable to run (e.g., npx, node, python)"
|
|
27178
|
-
}), /*#__PURE__*/jsx(InputText, {
|
|
27179
|
-
value: command,
|
|
27180
|
-
onChange: function onChange(value) {
|
|
27181
|
-
setCommand(value);
|
|
27182
|
-
if (formErrors.command && value !== null && value !== void 0 && value.trim()) {
|
|
27183
|
-
setFormErrors(function (prev) {
|
|
27184
|
-
var next = _objectSpread$5({}, prev);
|
|
27185
|
-
delete next.command;
|
|
27186
|
-
return next;
|
|
27187
|
-
});
|
|
27188
|
-
}
|
|
27189
|
-
},
|
|
27190
|
-
placeholder: "e.g., npx"
|
|
27191
|
-
}), formErrors.command && /*#__PURE__*/jsx("p", {
|
|
27148
|
+
}), jsonError && /*#__PURE__*/jsx("p", {
|
|
27192
27149
|
className: "text-sm text-red-400",
|
|
27193
|
-
children:
|
|
27194
|
-
})
|
|
27195
|
-
|
|
27196
|
-
|
|
27197
|
-
|
|
27198
|
-
|
|
27199
|
-
|
|
27200
|
-
|
|
27201
|
-
|
|
27202
|
-
|
|
27203
|
-
|
|
27204
|
-
|
|
27205
|
-
|
|
27206
|
-
|
|
27207
|
-
|
|
27208
|
-
|
|
27209
|
-
|
|
27210
|
-
|
|
27211
|
-
|
|
27212
|
-
|
|
27213
|
-
|
|
27214
|
-
|
|
27215
|
-
className: "text-
|
|
27216
|
-
children: "
|
|
27150
|
+
children: jsonError
|
|
27151
|
+
}), viewMode === "json" && /*#__PURE__*/jsxs("div", {
|
|
27152
|
+
className: "space-y-2",
|
|
27153
|
+
children: [/*#__PURE__*/jsx("p", {
|
|
27154
|
+
className: "text-xs font-semibold opacity-40 uppercase tracking-wider",
|
|
27155
|
+
children: "MCP Server Configuration (JSON)"
|
|
27156
|
+
}), /*#__PURE__*/jsx("p", {
|
|
27157
|
+
className: "text-sm opacity-50",
|
|
27158
|
+
children: "Paste a standard MCP config JSON (compatible with Claude Desktop, Cursor, etc.)"
|
|
27159
|
+
}), /*#__PURE__*/jsx(CodeEditorInline, {
|
|
27160
|
+
code: jsonText,
|
|
27161
|
+
setCode: function setCode(val) {
|
|
27162
|
+
setJsonText(val);
|
|
27163
|
+
setJsonError(null);
|
|
27164
|
+
},
|
|
27165
|
+
language: "json",
|
|
27166
|
+
placeholder: '{\n "type": "stdio",\n "command": "npx",\n "args": ["-y", "package-name"],\n "env": {\n "API_KEY": "${API_KEY}"\n }\n}'
|
|
27167
|
+
})]
|
|
27168
|
+
}), viewMode === "form" && /*#__PURE__*/jsxs(Fragment, {
|
|
27169
|
+
children: [/*#__PURE__*/jsxs("div", {
|
|
27170
|
+
className: "space-y-2",
|
|
27171
|
+
children: [/*#__PURE__*/jsx("p", {
|
|
27172
|
+
className: "text-xs font-semibold opacity-40 uppercase tracking-wider",
|
|
27173
|
+
children: "Transport Type"
|
|
27174
|
+
}), /*#__PURE__*/jsxs("div", {
|
|
27175
|
+
className: "grid grid-cols-2 gap-3",
|
|
27176
|
+
children: [/*#__PURE__*/jsxs(Card2, {
|
|
27177
|
+
hover: true,
|
|
27178
|
+
selected: transport === "stdio",
|
|
27179
|
+
onClick: function onClick() {
|
|
27180
|
+
return setTransport("stdio");
|
|
27181
|
+
},
|
|
27182
|
+
className: "text-left",
|
|
27183
|
+
children: [/*#__PURE__*/jsxs("div", {
|
|
27184
|
+
className: "flex items-center gap-2 mb-1",
|
|
27185
|
+
children: [/*#__PURE__*/jsx(Icon2, {
|
|
27186
|
+
icon: "terminal"
|
|
27187
|
+
}), /*#__PURE__*/jsx("span", {
|
|
27188
|
+
className: "font-semibold text-sm",
|
|
27189
|
+
children: "Local Process (stdio)"
|
|
27190
|
+
})]
|
|
27191
|
+
}), /*#__PURE__*/jsx("p", {
|
|
27192
|
+
className: "text-xs opacity-50",
|
|
27193
|
+
children: "Spawn a local command as a child process"
|
|
27194
|
+
})]
|
|
27195
|
+
}), /*#__PURE__*/jsxs(Card2, {
|
|
27196
|
+
hover: true,
|
|
27197
|
+
selected: transport === "streamable_http",
|
|
27198
|
+
onClick: function onClick() {
|
|
27199
|
+
return setTransport("streamable_http");
|
|
27200
|
+
},
|
|
27201
|
+
className: "text-left",
|
|
27202
|
+
children: [/*#__PURE__*/jsxs("div", {
|
|
27203
|
+
className: "flex items-center gap-2 mb-1",
|
|
27204
|
+
children: [/*#__PURE__*/jsx(Icon2, {
|
|
27205
|
+
icon: "globe"
|
|
27206
|
+
}), /*#__PURE__*/jsx("span", {
|
|
27207
|
+
className: "font-semibold text-sm",
|
|
27208
|
+
children: "Remote Server (HTTP)"
|
|
27209
|
+
})]
|
|
27210
|
+
}), /*#__PURE__*/jsx("p", {
|
|
27211
|
+
className: "text-xs opacity-50",
|
|
27212
|
+
children: "Connect to a remote MCP server via HTTP"
|
|
27213
|
+
})]
|
|
27214
|
+
})]
|
|
27217
27215
|
})]
|
|
27218
|
-
})
|
|
27219
|
-
|
|
27220
|
-
return /*#__PURE__*/jsxs("div", {
|
|
27221
|
-
className: "flex items-center gap-2",
|
|
27216
|
+
}), transport === "stdio" && /*#__PURE__*/jsxs("div", {
|
|
27217
|
+
className: "space-y-4",
|
|
27222
27218
|
children: [/*#__PURE__*/jsx("div", {
|
|
27223
|
-
className: "
|
|
27224
|
-
children: /*#__PURE__*/jsx(
|
|
27225
|
-
|
|
27226
|
-
|
|
27227
|
-
return updateEnvRow(row.id, "envVar", value);
|
|
27228
|
-
},
|
|
27229
|
-
placeholder: "ENV_VAR_NAME"
|
|
27219
|
+
className: "border-t border-white/10 pt-4",
|
|
27220
|
+
children: /*#__PURE__*/jsx("p", {
|
|
27221
|
+
className: "text-xs font-semibold opacity-40 uppercase tracking-wider",
|
|
27222
|
+
children: "Process Configuration"
|
|
27230
27223
|
})
|
|
27231
|
-
}), /*#__PURE__*/
|
|
27232
|
-
className: "
|
|
27233
|
-
children:
|
|
27234
|
-
|
|
27235
|
-
|
|
27236
|
-
|
|
27237
|
-
|
|
27224
|
+
}), /*#__PURE__*/jsxs("div", {
|
|
27225
|
+
className: "flex flex-col gap-2",
|
|
27226
|
+
children: [/*#__PURE__*/jsx(FormLabel, {
|
|
27227
|
+
label: "Command",
|
|
27228
|
+
required: true
|
|
27229
|
+
}), /*#__PURE__*/jsx("p", {
|
|
27230
|
+
className: "text-sm opacity-50",
|
|
27231
|
+
children: "The executable to run (e.g., npx, node, python)"
|
|
27232
|
+
}), /*#__PURE__*/jsx(InputText, {
|
|
27233
|
+
value: command,
|
|
27238
27234
|
onChange: function onChange(value) {
|
|
27239
|
-
|
|
27235
|
+
setCommand(value);
|
|
27236
|
+
if (formErrors.command && value !== null && value !== void 0 && value.trim()) {
|
|
27237
|
+
setFormErrors(function (prev) {
|
|
27238
|
+
var next = _objectSpread$5({}, prev);
|
|
27239
|
+
delete next.command;
|
|
27240
|
+
return next;
|
|
27241
|
+
});
|
|
27242
|
+
}
|
|
27240
27243
|
},
|
|
27241
|
-
placeholder: "
|
|
27242
|
-
})
|
|
27243
|
-
|
|
27244
|
-
|
|
27245
|
-
|
|
27246
|
-
|
|
27247
|
-
className: "
|
|
27248
|
-
children: /*#__PURE__*/jsx(
|
|
27249
|
-
|
|
27250
|
-
|
|
27251
|
-
|
|
27252
|
-
|
|
27253
|
-
|
|
27254
|
-
|
|
27255
|
-
|
|
27256
|
-
|
|
27257
|
-
|
|
27258
|
-
|
|
27259
|
-
|
|
27260
|
-
|
|
27261
|
-
|
|
27262
|
-
|
|
27263
|
-
|
|
27264
|
-
|
|
27265
|
-
|
|
27266
|
-
|
|
27267
|
-
|
|
27268
|
-
|
|
27269
|
-
|
|
27270
|
-
|
|
27271
|
-
|
|
27272
|
-
|
|
27273
|
-
|
|
27274
|
-
|
|
27275
|
-
|
|
27276
|
-
|
|
27277
|
-
|
|
27278
|
-
|
|
27279
|
-
|
|
27280
|
-
|
|
27281
|
-
|
|
27282
|
-
|
|
27283
|
-
|
|
27284
|
-
|
|
27285
|
-
|
|
27286
|
-
|
|
27287
|
-
|
|
27288
|
-
|
|
27289
|
-
|
|
27290
|
-
|
|
27291
|
-
|
|
27292
|
-
|
|
27293
|
-
|
|
27294
|
-
|
|
27295
|
-
|
|
27296
|
-
|
|
27297
|
-
|
|
27298
|
-
|
|
27299
|
-
|
|
27300
|
-
|
|
27301
|
-
|
|
27302
|
-
|
|
27303
|
-
|
|
27304
|
-
|
|
27305
|
-
|
|
27306
|
-
|
|
27307
|
-
|
|
27308
|
-
|
|
27309
|
-
|
|
27310
|
-
|
|
27311
|
-
|
|
27312
|
-
|
|
27313
|
-
|
|
27314
|
-
|
|
27315
|
-
|
|
27244
|
+
placeholder: "e.g., npx"
|
|
27245
|
+
}), formErrors.command && /*#__PURE__*/jsx("p", {
|
|
27246
|
+
className: "text-sm text-red-400",
|
|
27247
|
+
children: formErrors.command
|
|
27248
|
+
})]
|
|
27249
|
+
}), /*#__PURE__*/jsxs("div", {
|
|
27250
|
+
className: "flex flex-col gap-2",
|
|
27251
|
+
children: [/*#__PURE__*/jsx(FormLabel, {
|
|
27252
|
+
label: "Arguments"
|
|
27253
|
+
}), /*#__PURE__*/jsx("p", {
|
|
27254
|
+
className: "text-sm opacity-50",
|
|
27255
|
+
children: "Space-separated arguments passed to the command"
|
|
27256
|
+
}), /*#__PURE__*/jsx(InputText, {
|
|
27257
|
+
value: args,
|
|
27258
|
+
onChange: setArgs,
|
|
27259
|
+
placeholder: "e.g., -y @modelcontextprotocol/server-github"
|
|
27260
|
+
})]
|
|
27261
|
+
}), /*#__PURE__*/jsxs("div", {
|
|
27262
|
+
className: "space-y-3",
|
|
27263
|
+
children: [/*#__PURE__*/jsx("div", {
|
|
27264
|
+
className: "flex items-center justify-between",
|
|
27265
|
+
children: /*#__PURE__*/jsxs("div", {
|
|
27266
|
+
children: [/*#__PURE__*/jsx(FormLabel, {
|
|
27267
|
+
label: "Environment Variable Mapping"
|
|
27268
|
+
}), /*#__PURE__*/jsx("p", {
|
|
27269
|
+
className: "text-sm opacity-50 mt-1",
|
|
27270
|
+
children: "Map environment variables to credential fields"
|
|
27271
|
+
})]
|
|
27272
|
+
})
|
|
27273
|
+
}), envMappingRows.map(function (row) {
|
|
27274
|
+
return /*#__PURE__*/jsxs("div", {
|
|
27275
|
+
className: "flex items-center gap-2",
|
|
27276
|
+
children: [/*#__PURE__*/jsx("div", {
|
|
27277
|
+
className: "flex-1",
|
|
27278
|
+
children: /*#__PURE__*/jsx(InputText, {
|
|
27279
|
+
value: row.envVar,
|
|
27280
|
+
onChange: function onChange(value) {
|
|
27281
|
+
return updateEnvRow(row.id, "envVar", value);
|
|
27282
|
+
},
|
|
27283
|
+
placeholder: "ENV_VAR_NAME"
|
|
27284
|
+
})
|
|
27285
|
+
}), /*#__PURE__*/jsx("span", {
|
|
27286
|
+
className: "opacity-30 text-sm shrink-0",
|
|
27287
|
+
children: "\u2192"
|
|
27288
|
+
}), /*#__PURE__*/jsx("div", {
|
|
27289
|
+
className: "flex-1",
|
|
27290
|
+
children: /*#__PURE__*/jsx(InputText, {
|
|
27291
|
+
value: row.credField,
|
|
27292
|
+
onChange: function onChange(value) {
|
|
27293
|
+
return updateEnvRow(row.id, "credField", value);
|
|
27294
|
+
},
|
|
27295
|
+
placeholder: "credentialField"
|
|
27296
|
+
})
|
|
27297
|
+
}), /*#__PURE__*/jsx("button", {
|
|
27298
|
+
onClick: function onClick() {
|
|
27299
|
+
return removeEnvRow(row.id);
|
|
27300
|
+
},
|
|
27301
|
+
className: "text-gray-500 hover:text-red-400 transition-colors shrink-0",
|
|
27302
|
+
children: /*#__PURE__*/jsx(FontAwesomeIcon, {
|
|
27303
|
+
icon: "times",
|
|
27304
|
+
className: "text-sm"
|
|
27305
|
+
})
|
|
27306
|
+
})]
|
|
27307
|
+
}, row.id);
|
|
27308
|
+
}), /*#__PURE__*/jsxs("button", {
|
|
27309
|
+
onClick: addEnvRow,
|
|
27310
|
+
className: "text-sm text-blue-400 hover:text-blue-300 transition-colors flex items-center gap-1",
|
|
27311
|
+
children: [/*#__PURE__*/jsx(FontAwesomeIcon, {
|
|
27312
|
+
icon: "plus",
|
|
27313
|
+
className: "text-xs"
|
|
27314
|
+
}), /*#__PURE__*/jsx("span", {
|
|
27315
|
+
children: "Add Environment Variable"
|
|
27316
|
+
})]
|
|
27317
|
+
})]
|
|
27318
|
+
})]
|
|
27319
|
+
}), transport === "streamable_http" && /*#__PURE__*/jsxs("div", {
|
|
27320
|
+
className: "space-y-4",
|
|
27316
27321
|
children: [/*#__PURE__*/jsx("div", {
|
|
27317
|
-
className: "
|
|
27318
|
-
children: /*#__PURE__*/jsx(
|
|
27319
|
-
|
|
27320
|
-
|
|
27321
|
-
return updateHeaderRow(row.id, "headerName", value);
|
|
27322
|
-
},
|
|
27323
|
-
placeholder: "Header-Name"
|
|
27322
|
+
className: "border-t border-white/10 pt-4",
|
|
27323
|
+
children: /*#__PURE__*/jsx("p", {
|
|
27324
|
+
className: "text-xs font-semibold opacity-40 uppercase tracking-wider",
|
|
27325
|
+
children: "Server Configuration"
|
|
27324
27326
|
})
|
|
27325
|
-
}), /*#__PURE__*/
|
|
27326
|
-
className: "
|
|
27327
|
-
children:
|
|
27328
|
-
|
|
27329
|
-
|
|
27330
|
-
|
|
27331
|
-
|
|
27327
|
+
}), /*#__PURE__*/jsxs("div", {
|
|
27328
|
+
className: "flex flex-col gap-2",
|
|
27329
|
+
children: [/*#__PURE__*/jsx(FormLabel, {
|
|
27330
|
+
label: "Server URL",
|
|
27331
|
+
required: true
|
|
27332
|
+
}), /*#__PURE__*/jsxs("p", {
|
|
27333
|
+
className: "text-sm opacity-50",
|
|
27334
|
+
children: ["Use", " ", /*#__PURE__*/jsx("code", {
|
|
27335
|
+
className: "text-xs bg-white/10 px-1 py-0.5 rounded",
|
|
27336
|
+
children: "{{fieldName}}"
|
|
27337
|
+
}), " ", "for values provided as credentials"]
|
|
27338
|
+
}), /*#__PURE__*/jsx(InputText, {
|
|
27339
|
+
value: url,
|
|
27332
27340
|
onChange: function onChange(value) {
|
|
27333
|
-
|
|
27341
|
+
setUrl(value);
|
|
27342
|
+
if (formErrors.url && value !== null && value !== void 0 && value.trim()) {
|
|
27343
|
+
setFormErrors(function (prev) {
|
|
27344
|
+
var next = _objectSpread$5({}, prev);
|
|
27345
|
+
delete next.url;
|
|
27346
|
+
return next;
|
|
27347
|
+
});
|
|
27348
|
+
}
|
|
27334
27349
|
},
|
|
27335
|
-
placeholder: "
|
|
27336
|
-
})
|
|
27337
|
-
|
|
27338
|
-
|
|
27339
|
-
|
|
27340
|
-
|
|
27341
|
-
className: "
|
|
27342
|
-
children: /*#__PURE__*/
|
|
27343
|
-
|
|
27344
|
-
|
|
27345
|
-
|
|
27350
|
+
placeholder: "e.g., https://mcp.example.com/sse"
|
|
27351
|
+
}), formErrors.url && /*#__PURE__*/jsx("p", {
|
|
27352
|
+
className: "text-sm text-red-400",
|
|
27353
|
+
children: formErrors.url
|
|
27354
|
+
})]
|
|
27355
|
+
}), /*#__PURE__*/jsxs("div", {
|
|
27356
|
+
className: "space-y-3",
|
|
27357
|
+
children: [/*#__PURE__*/jsxs("div", {
|
|
27358
|
+
children: [/*#__PURE__*/jsx(FormLabel, {
|
|
27359
|
+
label: "Request Headers"
|
|
27360
|
+
}), /*#__PURE__*/jsxs("p", {
|
|
27361
|
+
className: "text-sm opacity-50 mt-1",
|
|
27362
|
+
children: ["Use", " ", /*#__PURE__*/jsx("code", {
|
|
27363
|
+
className: "text-xs bg-white/10 px-1 py-0.5 rounded",
|
|
27364
|
+
children: "{{fieldName}}"
|
|
27365
|
+
}), " ", "in values for credential placeholders"]
|
|
27366
|
+
})]
|
|
27367
|
+
}), headerRows.map(function (row) {
|
|
27368
|
+
return /*#__PURE__*/jsxs("div", {
|
|
27369
|
+
className: "flex items-center gap-2",
|
|
27370
|
+
children: [/*#__PURE__*/jsx("div", {
|
|
27371
|
+
className: "flex-1",
|
|
27372
|
+
children: /*#__PURE__*/jsx(InputText, {
|
|
27373
|
+
value: row.headerName,
|
|
27374
|
+
onChange: function onChange(value) {
|
|
27375
|
+
return updateHeaderRow(row.id, "headerName", value);
|
|
27376
|
+
},
|
|
27377
|
+
placeholder: "Header-Name"
|
|
27378
|
+
})
|
|
27379
|
+
}), /*#__PURE__*/jsx("span", {
|
|
27380
|
+
className: "opacity-30 text-sm shrink-0",
|
|
27381
|
+
children: ":"
|
|
27382
|
+
}), /*#__PURE__*/jsx("div", {
|
|
27383
|
+
className: "flex-1",
|
|
27384
|
+
children: /*#__PURE__*/jsx(InputText, {
|
|
27385
|
+
value: row.headerValue,
|
|
27386
|
+
onChange: function onChange(value) {
|
|
27387
|
+
return updateHeaderRow(row.id, "headerValue", value);
|
|
27388
|
+
},
|
|
27389
|
+
placeholder: "Bearer {{apiKey}}"
|
|
27390
|
+
})
|
|
27391
|
+
}), /*#__PURE__*/jsx("button", {
|
|
27392
|
+
onClick: function onClick() {
|
|
27393
|
+
return removeHeaderRow(row.id);
|
|
27394
|
+
},
|
|
27395
|
+
className: "text-gray-500 hover:text-red-400 transition-colors shrink-0",
|
|
27396
|
+
children: /*#__PURE__*/jsx(FontAwesomeIcon, {
|
|
27397
|
+
icon: "times",
|
|
27398
|
+
className: "text-sm"
|
|
27399
|
+
})
|
|
27400
|
+
})]
|
|
27401
|
+
}, row.id);
|
|
27402
|
+
}), /*#__PURE__*/jsxs("button", {
|
|
27403
|
+
onClick: addHeaderRow,
|
|
27404
|
+
className: "text-sm text-blue-400 hover:text-blue-300 transition-colors flex items-center gap-1",
|
|
27405
|
+
children: [/*#__PURE__*/jsx(FontAwesomeIcon, {
|
|
27406
|
+
icon: "plus",
|
|
27407
|
+
className: "text-xs"
|
|
27408
|
+
}), /*#__PURE__*/jsx("span", {
|
|
27409
|
+
children: "Add Header"
|
|
27410
|
+
})]
|
|
27411
|
+
})]
|
|
27412
|
+
})]
|
|
27413
|
+
}), formFields.length > 0 && /*#__PURE__*/jsxs(Fragment, {
|
|
27414
|
+
children: [/*#__PURE__*/jsxs("div", {
|
|
27415
|
+
className: "border-t border-white/10 pt-4",
|
|
27416
|
+
children: [/*#__PURE__*/jsx("p", {
|
|
27417
|
+
className: "text-xs font-semibold opacity-40 uppercase tracking-wider",
|
|
27418
|
+
children: "Credentials"
|
|
27419
|
+
}), /*#__PURE__*/jsx("p", {
|
|
27420
|
+
className: "text-sm opacity-50 mt-1",
|
|
27421
|
+
children: "Values for the fields referenced in your configuration above"
|
|
27422
|
+
})]
|
|
27423
|
+
}), formFields.map(function (field) {
|
|
27424
|
+
return /*#__PURE__*/jsxs("div", {
|
|
27425
|
+
className: "flex flex-col gap-2",
|
|
27426
|
+
children: [/*#__PURE__*/jsx(FormLabel, {
|
|
27427
|
+
label: field.displayName,
|
|
27428
|
+
required: field.required
|
|
27429
|
+
}), /*#__PURE__*/jsxs("div", {
|
|
27430
|
+
className: "flex gap-2",
|
|
27431
|
+
children: [/*#__PURE__*/jsx("div", {
|
|
27432
|
+
className: "flex-1",
|
|
27433
|
+
children: /*#__PURE__*/jsx(InputText, {
|
|
27434
|
+
type: field.secret ? "password" : "text",
|
|
27435
|
+
value: credentialData[field.key] || "",
|
|
27436
|
+
onChange: function onChange(value) {
|
|
27437
|
+
return handleCredentialChange(field.key, value);
|
|
27438
|
+
},
|
|
27439
|
+
placeholder: field.type === "file" ? "Select a file..." : "Enter ".concat(field.displayName.toLowerCase())
|
|
27440
|
+
})
|
|
27441
|
+
}), field.type === "file" && /*#__PURE__*/jsx("button", {
|
|
27442
|
+
onClick: /*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee() {
|
|
27443
|
+
var filepath;
|
|
27444
|
+
return _regeneratorRuntime.wrap(function (_context) {
|
|
27445
|
+
while (1) switch (_context.prev = _context.next) {
|
|
27446
|
+
case 0:
|
|
27447
|
+
_context.next = 1;
|
|
27448
|
+
return window.mainApi.dialog.chooseFile(true, ["json"]);
|
|
27449
|
+
case 1:
|
|
27450
|
+
filepath = _context.sent;
|
|
27451
|
+
if (filepath) handleCredentialChange(field.key, filepath);
|
|
27452
|
+
case 2:
|
|
27453
|
+
case "end":
|
|
27454
|
+
return _context.stop();
|
|
27455
|
+
}
|
|
27456
|
+
}, _callee);
|
|
27457
|
+
})),
|
|
27458
|
+
className: "px-3 py-1.5 text-sm rounded bg-white/10 hover:bg-white/20 transition-colors",
|
|
27459
|
+
children: "Browse"
|
|
27460
|
+
})]
|
|
27461
|
+
}), formErrors[field.key] && /*#__PURE__*/jsx("p", {
|
|
27462
|
+
className: "text-sm text-red-400",
|
|
27463
|
+
children: formErrors[field.key]
|
|
27464
|
+
})]
|
|
27465
|
+
}, field.key);
|
|
27346
27466
|
})]
|
|
27347
|
-
}, row.id);
|
|
27348
|
-
}), /*#__PURE__*/jsxs("button", {
|
|
27349
|
-
onClick: addHeaderRow,
|
|
27350
|
-
className: "text-sm text-blue-400 hover:text-blue-300 transition-colors flex items-center gap-1",
|
|
27351
|
-
children: [/*#__PURE__*/jsx(FontAwesomeIcon, {
|
|
27352
|
-
icon: "plus",
|
|
27353
|
-
className: "text-xs"
|
|
27354
|
-
}), /*#__PURE__*/jsx("span", {
|
|
27355
|
-
children: "Add Header"
|
|
27356
27467
|
})]
|
|
27357
27468
|
})]
|
|
27358
|
-
})
|
|
27359
|
-
}),
|
|
27360
|
-
|
|
27361
|
-
|
|
27362
|
-
|
|
27363
|
-
|
|
27364
|
-
|
|
27365
|
-
|
|
27366
|
-
|
|
27367
|
-
|
|
27368
|
-
|
|
27369
|
-
|
|
27370
|
-
|
|
27371
|
-
|
|
27372
|
-
|
|
27373
|
-
label: field.displayName,
|
|
27374
|
-
required: field.required
|
|
27375
|
-
}), /*#__PURE__*/jsxs("div", {
|
|
27376
|
-
className: "flex gap-2",
|
|
27377
|
-
children: [/*#__PURE__*/jsx("div", {
|
|
27378
|
-
className: "flex-1",
|
|
27379
|
-
children: /*#__PURE__*/jsx(InputText, {
|
|
27380
|
-
type: field.secret ? "password" : "text",
|
|
27381
|
-
value: credentialData[field.key] || "",
|
|
27382
|
-
onChange: function onChange(value) {
|
|
27383
|
-
return handleCredentialChange(field.key, value);
|
|
27384
|
-
},
|
|
27385
|
-
placeholder: field.type === "file" ? "Select a file..." : "Enter ".concat(field.displayName.toLowerCase())
|
|
27386
|
-
})
|
|
27387
|
-
}), field.type === "file" && /*#__PURE__*/jsx("button", {
|
|
27388
|
-
onClick: /*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee() {
|
|
27389
|
-
var filepath;
|
|
27390
|
-
return _regeneratorRuntime.wrap(function (_context) {
|
|
27391
|
-
while (1) switch (_context.prev = _context.next) {
|
|
27392
|
-
case 0:
|
|
27393
|
-
_context.next = 1;
|
|
27394
|
-
return window.mainApi.dialog.chooseFile(true, ["json"]);
|
|
27395
|
-
case 1:
|
|
27396
|
-
filepath = _context.sent;
|
|
27397
|
-
if (filepath) handleCredentialChange(field.key, filepath);
|
|
27398
|
-
case 2:
|
|
27399
|
-
case "end":
|
|
27400
|
-
return _context.stop();
|
|
27401
|
-
}
|
|
27402
|
-
}, _callee);
|
|
27403
|
-
})),
|
|
27404
|
-
className: "px-3 py-1.5 text-sm rounded bg-white/10 hover:bg-white/20 transition-colors",
|
|
27405
|
-
children: "Browse"
|
|
27406
|
-
})]
|
|
27407
|
-
}), formErrors[field.key] && /*#__PURE__*/jsx("p", {
|
|
27408
|
-
className: "text-sm text-red-400",
|
|
27409
|
-
children: formErrors[field.key]
|
|
27469
|
+
})
|
|
27470
|
+
}), /*#__PURE__*/jsx(Stepper.Step, {
|
|
27471
|
+
label: "Test",
|
|
27472
|
+
description: "Verify connection",
|
|
27473
|
+
children: /*#__PURE__*/jsxs("div", {
|
|
27474
|
+
className: "flex-1 min-h-0 overflow-y-auto pb-4 space-y-5",
|
|
27475
|
+
children: [/*#__PURE__*/jsxs("div", {
|
|
27476
|
+
className: "flex flex-col items-center justify-center py-8 space-y-4",
|
|
27477
|
+
children: [/*#__PURE__*/jsx("p", {
|
|
27478
|
+
className: "text-sm opacity-60 text-center",
|
|
27479
|
+
children: "Test the connection to verify your configuration is correct."
|
|
27480
|
+
}), /*#__PURE__*/jsx(Button, {
|
|
27481
|
+
title: isTesting ? "Testing..." : "Test Connection",
|
|
27482
|
+
onClick: handleTestConnection,
|
|
27483
|
+
size: "md"
|
|
27410
27484
|
})]
|
|
27411
|
-
},
|
|
27412
|
-
|
|
27485
|
+
}), testResult && /*#__PURE__*/jsx("div", {
|
|
27486
|
+
className: "p-3 rounded-lg text-sm ".concat(testResult.success ? "bg-green-900/30 border border-green-700 text-green-300" : "bg-red-900/30 border border-red-700 text-red-300"),
|
|
27487
|
+
children: /*#__PURE__*/jsxs("div", {
|
|
27488
|
+
className: "flex items-center gap-2",
|
|
27489
|
+
children: [/*#__PURE__*/jsx(FontAwesomeIcon, {
|
|
27490
|
+
icon: testResult.success ? "circle-check" : "circle-exclamation"
|
|
27491
|
+
}), /*#__PURE__*/jsx("span", {
|
|
27492
|
+
children: testResult.message
|
|
27493
|
+
})]
|
|
27494
|
+
})
|
|
27495
|
+
})]
|
|
27496
|
+
})
|
|
27497
|
+
}), /*#__PURE__*/jsx(Stepper.Step, {
|
|
27498
|
+
label: "Tools",
|
|
27499
|
+
description: "Select allowed tools",
|
|
27500
|
+
children: /*#__PURE__*/jsx("div", {
|
|
27501
|
+
className: "flex-1 min-h-0 overflow-y-auto pb-4 space-y-5",
|
|
27502
|
+
children: testResult !== null && testResult !== void 0 && testResult.success && ((_testResult$tools = testResult.tools) === null || _testResult$tools === void 0 ? void 0 : _testResult$tools.length) > 0 && selectedTools ? /*#__PURE__*/jsx(ToolSelector, {
|
|
27503
|
+
tools: testResult.tools,
|
|
27504
|
+
selectedTools: selectedTools,
|
|
27505
|
+
onSelectionChange: setSelectedTools
|
|
27506
|
+
}) : /*#__PURE__*/jsx("div", {
|
|
27507
|
+
className: "text-center py-8 opacity-50",
|
|
27508
|
+
children: "No tools available. Go back and test the connection first."
|
|
27509
|
+
})
|
|
27510
|
+
})
|
|
27413
27511
|
})]
|
|
27414
|
-
})
|
|
27415
|
-
className: "p-3 rounded-lg text-sm ".concat(testResult.success ? "bg-green-900/30 border border-green-700 text-green-300" : "bg-red-900/30 border border-red-700 text-red-300"),
|
|
27416
|
-
children: /*#__PURE__*/jsxs("div", {
|
|
27417
|
-
className: "flex items-center gap-2",
|
|
27418
|
-
children: [/*#__PURE__*/jsx(FontAwesomeIcon, {
|
|
27419
|
-
icon: testResult.success ? "circle-check" : "circle-exclamation"
|
|
27420
|
-
}), /*#__PURE__*/jsx("span", {
|
|
27421
|
-
children: testResult.message
|
|
27422
|
-
})]
|
|
27423
|
-
})
|
|
27424
|
-
}), (testResult === null || testResult === void 0 ? void 0 : testResult.success) && ((_testResult$tools = testResult.tools) === null || _testResult$tools === void 0 ? void 0 : _testResult$tools.length) > 0 && selectedTools && /*#__PURE__*/jsx(ToolSelector, {
|
|
27425
|
-
tools: testResult.tools,
|
|
27426
|
-
selectedTools: selectedTools,
|
|
27427
|
-
onSelectionChange: setSelectedTools
|
|
27428
|
-
})]
|
|
27512
|
+
})
|
|
27429
27513
|
}), /*#__PURE__*/jsxs("div", {
|
|
27430
|
-
className: "flex-shrink-0 flex flex-row
|
|
27431
|
-
children: [/*#__PURE__*/
|
|
27432
|
-
|
|
27433
|
-
|
|
27434
|
-
|
|
27435
|
-
|
|
27436
|
-
|
|
27437
|
-
|
|
27438
|
-
|
|
27439
|
-
|
|
27440
|
-
|
|
27441
|
-
|
|
27442
|
-
|
|
27514
|
+
className: "flex-shrink-0 flex flex-row items-center px-6 py-4 border-t border-white/10",
|
|
27515
|
+
children: [/*#__PURE__*/jsxs("div", {
|
|
27516
|
+
className: "flex flex-row gap-2",
|
|
27517
|
+
children: [wizardStep === 0 && /*#__PURE__*/jsx(Button, {
|
|
27518
|
+
title: "Cancel",
|
|
27519
|
+
onClick: onBack,
|
|
27520
|
+
size: "sm"
|
|
27521
|
+
}), wizardStep > 0 && /*#__PURE__*/jsx(Button, {
|
|
27522
|
+
title: "Back",
|
|
27523
|
+
onClick: function onClick() {
|
|
27524
|
+
return setWizardStep(wizardStep - 1);
|
|
27525
|
+
},
|
|
27526
|
+
size: "sm"
|
|
27527
|
+
})]
|
|
27528
|
+
}), /*#__PURE__*/jsx("div", {
|
|
27529
|
+
className: "flex-1 text-center",
|
|
27530
|
+
children: /*#__PURE__*/jsxs("span", {
|
|
27531
|
+
className: "text-xs opacity-40",
|
|
27532
|
+
children: ["Step ", wizardStep + 1, " of 3"]
|
|
27533
|
+
})
|
|
27534
|
+
}), /*#__PURE__*/jsxs("div", {
|
|
27535
|
+
className: "flex flex-row gap-2",
|
|
27536
|
+
children: [wizardStep === 0 && /*#__PURE__*/jsx(Button, {
|
|
27537
|
+
title: "Next",
|
|
27538
|
+
onClick: function onClick() {
|
|
27539
|
+
return handleWizardStepChange(1);
|
|
27540
|
+
},
|
|
27541
|
+
size: "sm"
|
|
27542
|
+
}), wizardStep === 1 && /*#__PURE__*/jsxs(Fragment, {
|
|
27543
|
+
children: [/*#__PURE__*/jsx(Button, {
|
|
27544
|
+
title: isTesting ? "Testing..." : "Test Connection",
|
|
27545
|
+
onClick: handleTestConnection,
|
|
27546
|
+
size: "sm"
|
|
27547
|
+
}), /*#__PURE__*/jsx(Button, {
|
|
27548
|
+
title: "Next",
|
|
27549
|
+
onClick: function onClick() {
|
|
27550
|
+
return handleWizardStepChange(2);
|
|
27551
|
+
},
|
|
27552
|
+
disabled: !(testResult !== null && testResult !== void 0 && testResult.success) && !(isEditMode && initialAllowedTools),
|
|
27553
|
+
size: "sm"
|
|
27554
|
+
})]
|
|
27555
|
+
}), wizardStep === 2 && /*#__PURE__*/jsx(Button, {
|
|
27556
|
+
title: isEditMode ? "Save Changes" : "Save MCP Server",
|
|
27557
|
+
onClick: handleSave,
|
|
27558
|
+
size: "sm"
|
|
27559
|
+
})]
|
|
27443
27560
|
})]
|
|
27444
27561
|
})]
|
|
27445
27562
|
});
|
|
@@ -27526,30 +27643,34 @@ var McpCatalogDetail = function McpCatalogDetail(_ref) {
|
|
|
27526
27643
|
_useState20 = _slicedToArray(_useState19, 2),
|
|
27527
27644
|
selectedTools = _useState20[0],
|
|
27528
27645
|
setSelectedTools = _useState20[1];
|
|
27646
|
+
var _useState21 = useState(0),
|
|
27647
|
+
_useState22 = _slicedToArray(_useState21, 2),
|
|
27648
|
+
wizardStep = _useState22[0],
|
|
27649
|
+
setWizardStep = _useState22[1];
|
|
27529
27650
|
|
|
27530
27651
|
// Configuration form state
|
|
27531
|
-
var
|
|
27532
|
-
_useState22 = _slicedToArray(_useState21, 2),
|
|
27533
|
-
providerName = _useState22[0],
|
|
27534
|
-
setProviderName = _useState22[1];
|
|
27535
|
-
var _useState23 = useState({}),
|
|
27652
|
+
var _useState23 = useState(""),
|
|
27536
27653
|
_useState24 = _slicedToArray(_useState23, 2),
|
|
27537
|
-
|
|
27538
|
-
|
|
27654
|
+
providerName = _useState24[0],
|
|
27655
|
+
setProviderName = _useState24[1];
|
|
27539
27656
|
var _useState25 = useState({}),
|
|
27540
27657
|
_useState26 = _slicedToArray(_useState25, 2),
|
|
27541
|
-
|
|
27542
|
-
|
|
27658
|
+
credentialData = _useState26[0],
|
|
27659
|
+
setCredentialData = _useState26[1];
|
|
27660
|
+
var _useState27 = useState({}),
|
|
27661
|
+
_useState28 = _slicedToArray(_useState27, 2),
|
|
27662
|
+
formErrors = _useState28[0],
|
|
27663
|
+
setFormErrors = _useState28[1];
|
|
27543
27664
|
|
|
27544
27665
|
// Advanced config row state
|
|
27545
|
-
var _useState27 = useState([]),
|
|
27546
|
-
_useState28 = _slicedToArray(_useState27, 2),
|
|
27547
|
-
envMappingRows = _useState28[0],
|
|
27548
|
-
setEnvMappingRows = _useState28[1];
|
|
27549
27666
|
var _useState29 = useState([]),
|
|
27550
27667
|
_useState30 = _slicedToArray(_useState29, 2),
|
|
27551
|
-
|
|
27552
|
-
|
|
27668
|
+
envMappingRows = _useState30[0],
|
|
27669
|
+
setEnvMappingRows = _useState30[1];
|
|
27670
|
+
var _useState31 = useState([]),
|
|
27671
|
+
_useState32 = _slicedToArray(_useState31, 2),
|
|
27672
|
+
headerRows = _useState32[0],
|
|
27673
|
+
setHeaderRows = _useState32[1];
|
|
27553
27674
|
var rowIdRef = useRef(0);
|
|
27554
27675
|
var nextRowId = function nextRowId() {
|
|
27555
27676
|
return "cat_".concat(++rowIdRef.current);
|
|
@@ -27590,6 +27711,25 @@ var McpCatalogDetail = function McpCatalogDetail(_ref) {
|
|
|
27590
27711
|
});
|
|
27591
27712
|
});
|
|
27592
27713
|
|
|
27714
|
+
// Wizard step navigation with validation gates
|
|
27715
|
+
var handleWizardStepChange = function handleWizardStepChange(newStep) {
|
|
27716
|
+
// Allow backward navigation freely
|
|
27717
|
+
if (newStep < wizardStep) {
|
|
27718
|
+
setWizardStep(newStep);
|
|
27719
|
+
return;
|
|
27720
|
+
}
|
|
27721
|
+
// Step 0→1: validate the configure form + auth gate
|
|
27722
|
+
if (wizardStep === 0 && newStep >= 1) {
|
|
27723
|
+
if (!validateForm()) return;
|
|
27724
|
+
if (selectedServer !== null && selectedServer !== void 0 && selectedServer.authCommand && !(authResult !== null && authResult !== void 0 && authResult.success)) return;
|
|
27725
|
+
}
|
|
27726
|
+
// Step 1→2: require successful test
|
|
27727
|
+
if (wizardStep === 1 && newStep >= 2) {
|
|
27728
|
+
if (!(testResult !== null && testResult !== void 0 && testResult.success)) return;
|
|
27729
|
+
}
|
|
27730
|
+
setWizardStep(newStep);
|
|
27731
|
+
};
|
|
27732
|
+
|
|
27593
27733
|
// Handle server selection -> show configuration form
|
|
27594
27734
|
var handleSelectServer = function handleSelectServer(server) {
|
|
27595
27735
|
var _server$mcpConfig, _server$mcpConfig2;
|
|
@@ -27600,6 +27740,7 @@ var McpCatalogDetail = function McpCatalogDetail(_ref) {
|
|
|
27600
27740
|
setProviderName(server.name);
|
|
27601
27741
|
setCredentialData({});
|
|
27602
27742
|
setFormErrors({});
|
|
27743
|
+
setWizardStep(0);
|
|
27603
27744
|
setEnvMappingRows(envMappingToRows((_server$mcpConfig = server.mcpConfig) === null || _server$mcpConfig === void 0 ? void 0 : _server$mcpConfig.envMapping, nextRowId));
|
|
27604
27745
|
setHeaderRows(headerTemplateToRows((_server$mcpConfig2 = server.mcpConfig) === null || _server$mcpConfig2 === void 0 ? void 0 : _server$mcpConfig2.headerTemplate, nextRowId));
|
|
27605
27746
|
};
|
|
@@ -27730,6 +27871,7 @@ var McpCatalogDetail = function McpCatalogDetail(_ref) {
|
|
|
27730
27871
|
setFormErrors({});
|
|
27731
27872
|
setEnvMappingRows([]);
|
|
27732
27873
|
setHeaderRows([]);
|
|
27874
|
+
setWizardStep(0);
|
|
27733
27875
|
};
|
|
27734
27876
|
|
|
27735
27877
|
// Prune credential data when form fields change (advanced config removed a field)
|
|
@@ -27757,205 +27899,281 @@ var McpCatalogDetail = function McpCatalogDetail(_ref) {
|
|
|
27757
27899
|
});
|
|
27758
27900
|
}
|
|
27759
27901
|
|
|
27760
|
-
// ── Stage 2: Configuration Form ──
|
|
27902
|
+
// ── Stage 2: Configuration Form (3-step Stepper) ──
|
|
27761
27903
|
if (isConfiguring && selectedServer) {
|
|
27762
27904
|
var _testResult$tools;
|
|
27763
27905
|
return /*#__PURE__*/jsxs("div", {
|
|
27764
27906
|
className: "flex flex-col flex-1 min-h-0",
|
|
27765
27907
|
children: [/*#__PURE__*/jsxs("div", {
|
|
27766
|
-
className: "flex-
|
|
27767
|
-
children: [/*#__PURE__*/
|
|
27768
|
-
|
|
27769
|
-
|
|
27770
|
-
|
|
27771
|
-
|
|
27772
|
-
|
|
27773
|
-
|
|
27774
|
-
className: "text-lg"
|
|
27775
|
-
})
|
|
27776
|
-
}), /*#__PURE__*/jsxs("div", {
|
|
27777
|
-
children: [/*#__PURE__*/jsx(SubHeading3, {
|
|
27778
|
-
title: "Configure ".concat(selectedServer.name),
|
|
27779
|
-
padding: false
|
|
27780
|
-
}), /*#__PURE__*/jsx("p", {
|
|
27781
|
-
className: "text-sm opacity-50 mt-1",
|
|
27782
|
-
children: selectedServer.description || "Configure the MCP server connection"
|
|
27783
|
-
})]
|
|
27784
|
-
})]
|
|
27785
|
-
}), /*#__PURE__*/jsxs("div", {
|
|
27786
|
-
className: "bg-white/5 border border-white/10 rounded-lg p-4 space-y-3",
|
|
27787
|
-
children: [/*#__PURE__*/jsx("p", {
|
|
27788
|
-
className: "text-xs font-semibold opacity-40 uppercase tracking-wider",
|
|
27789
|
-
children: "MCP Server Connection"
|
|
27790
|
-
}), /*#__PURE__*/jsxs("div", {
|
|
27791
|
-
className: "space-y-2 text-sm",
|
|
27792
|
-
children: [/*#__PURE__*/jsxs("div", {
|
|
27793
|
-
className: "flex gap-2",
|
|
27794
|
-
children: [/*#__PURE__*/jsx("span", {
|
|
27795
|
-
className: "opacity-50 w-24 shrink-0",
|
|
27796
|
-
children: "Transport:"
|
|
27797
|
-
}), /*#__PURE__*/jsx(Tag, {
|
|
27798
|
-
text: effectiveMcpConfig.transport === "streamable_http" ? "Streamable HTTP" : "stdio"
|
|
27799
|
-
})]
|
|
27800
|
-
}), effectiveMcpConfig.transport === "streamable_http" ? /*#__PURE__*/jsxs("div", {
|
|
27801
|
-
className: "flex gap-2",
|
|
27802
|
-
children: [/*#__PURE__*/jsx("span", {
|
|
27803
|
-
className: "opacity-50 w-24 shrink-0",
|
|
27804
|
-
children: "Endpoint:"
|
|
27805
|
-
}), /*#__PURE__*/jsx("span", {
|
|
27806
|
-
className: "text-xs opacity-70",
|
|
27807
|
-
children: "Remote hosted server (URL provided below)"
|
|
27808
|
-
})]
|
|
27809
|
-
}) : /*#__PURE__*/jsxs(Fragment, {
|
|
27810
|
-
children: [/*#__PURE__*/jsxs("div", {
|
|
27811
|
-
className: "flex gap-2",
|
|
27812
|
-
children: [/*#__PURE__*/jsx("span", {
|
|
27813
|
-
className: "opacity-50 w-24 shrink-0",
|
|
27814
|
-
children: "Command:"
|
|
27815
|
-
}), /*#__PURE__*/jsxs("code", {
|
|
27816
|
-
className: "text-xs bg-white/5 px-2 py-0.5 rounded",
|
|
27817
|
-
children: [effectiveMcpConfig.command, " ", (effectiveMcpConfig.args || []).join(" ")]
|
|
27818
|
-
})]
|
|
27819
|
-
}), effectiveMcpConfig.envMapping && Object.keys(effectiveMcpConfig.envMapping).length > 0 && /*#__PURE__*/jsxs("div", {
|
|
27820
|
-
className: "flex gap-2",
|
|
27821
|
-
children: [/*#__PURE__*/jsx("span", {
|
|
27822
|
-
className: "opacity-50 w-24 shrink-0",
|
|
27823
|
-
children: "Env Vars:"
|
|
27824
|
-
}), /*#__PURE__*/jsx("span", {
|
|
27825
|
-
className: "text-xs opacity-70",
|
|
27826
|
-
children: Object.keys(effectiveMcpConfig.envMapping).join(", ")
|
|
27827
|
-
})]
|
|
27828
|
-
})]
|
|
27829
|
-
})]
|
|
27830
|
-
})]
|
|
27831
|
-
}), /*#__PURE__*/jsx(AdvancedMcpConfig, {
|
|
27832
|
-
transport: effectiveMcpConfig.transport || "stdio",
|
|
27833
|
-
envMappingRows: envMappingRows,
|
|
27834
|
-
onEnvMappingRowsChange: setEnvMappingRows,
|
|
27835
|
-
headerRows: headerRows,
|
|
27836
|
-
onHeaderRowsChange: setHeaderRows
|
|
27908
|
+
className: "flex items-center gap-3 px-6 pt-6 pb-2",
|
|
27909
|
+
children: [/*#__PURE__*/jsx("button", {
|
|
27910
|
+
onClick: handleBack,
|
|
27911
|
+
className: "text-gray-400 hover:text-gray-200 transition-colors",
|
|
27912
|
+
children: /*#__PURE__*/jsx(FontAwesomeIcon, {
|
|
27913
|
+
icon: "arrow-left",
|
|
27914
|
+
className: "text-lg"
|
|
27915
|
+
})
|
|
27837
27916
|
}), /*#__PURE__*/jsxs("div", {
|
|
27838
|
-
|
|
27839
|
-
|
|
27840
|
-
|
|
27841
|
-
required: true
|
|
27917
|
+
children: [/*#__PURE__*/jsx(SubHeading3, {
|
|
27918
|
+
title: "Configure ".concat(selectedServer.name),
|
|
27919
|
+
padding: false
|
|
27842
27920
|
}), /*#__PURE__*/jsx("p", {
|
|
27843
|
-
className: "text-sm opacity-50",
|
|
27844
|
-
children:
|
|
27845
|
-
}), /*#__PURE__*/jsx(InputText, {
|
|
27846
|
-
value: providerName,
|
|
27847
|
-
onChange: function onChange(value) {
|
|
27848
|
-
setProviderName(value);
|
|
27849
|
-
if (formErrors.providerName && value !== null && value !== void 0 && value.trim()) {
|
|
27850
|
-
setFormErrors(function (prev) {
|
|
27851
|
-
var next = _objectSpread$4({}, prev);
|
|
27852
|
-
delete next.providerName;
|
|
27853
|
-
return next;
|
|
27854
|
-
});
|
|
27855
|
-
}
|
|
27856
|
-
},
|
|
27857
|
-
placeholder: "Enter provider name"
|
|
27858
|
-
}), formErrors.providerName && /*#__PURE__*/jsx("p", {
|
|
27859
|
-
className: "text-sm text-red-400",
|
|
27860
|
-
children: formErrors.providerName
|
|
27921
|
+
className: "text-sm opacity-50 mt-1",
|
|
27922
|
+
children: selectedServer.description || "Configure the MCP server connection"
|
|
27861
27923
|
})]
|
|
27862
|
-
})
|
|
27863
|
-
|
|
27864
|
-
|
|
27865
|
-
|
|
27866
|
-
|
|
27867
|
-
|
|
27868
|
-
|
|
27869
|
-
|
|
27870
|
-
|
|
27871
|
-
|
|
27872
|
-
|
|
27873
|
-
|
|
27874
|
-
|
|
27875
|
-
|
|
27876
|
-
className: "
|
|
27877
|
-
children:
|
|
27924
|
+
})]
|
|
27925
|
+
}), /*#__PURE__*/jsx("div", {
|
|
27926
|
+
className: "flex-1 min-h-0 flex flex-col",
|
|
27927
|
+
children: /*#__PURE__*/jsxs(Stepper, {
|
|
27928
|
+
activeStep: wizardStep,
|
|
27929
|
+
onStepChange: handleWizardStepChange,
|
|
27930
|
+
showNavigation: false,
|
|
27931
|
+
className: "flex-1 min-h-0 flex flex-col px-6 pt-4",
|
|
27932
|
+
children: [/*#__PURE__*/jsx(Stepper.Step, {
|
|
27933
|
+
label: "Configure",
|
|
27934
|
+
description: "Name & credentials",
|
|
27935
|
+
children: /*#__PURE__*/jsxs("div", {
|
|
27936
|
+
className: "flex-1 min-h-0 overflow-y-auto pb-4 space-y-5",
|
|
27937
|
+
children: [/*#__PURE__*/jsxs("div", {
|
|
27938
|
+
className: "bg-white/5 border border-white/10 rounded-lg p-4 space-y-3",
|
|
27939
|
+
children: [/*#__PURE__*/jsx("p", {
|
|
27940
|
+
className: "text-xs font-semibold opacity-40 uppercase tracking-wider",
|
|
27941
|
+
children: "MCP Server Connection"
|
|
27942
|
+
}), /*#__PURE__*/jsxs("div", {
|
|
27943
|
+
className: "space-y-2 text-sm",
|
|
27944
|
+
children: [/*#__PURE__*/jsxs("div", {
|
|
27945
|
+
className: "flex gap-2",
|
|
27946
|
+
children: [/*#__PURE__*/jsx("span", {
|
|
27947
|
+
className: "opacity-50 w-24 shrink-0",
|
|
27948
|
+
children: "Transport:"
|
|
27949
|
+
}), /*#__PURE__*/jsx(Tag, {
|
|
27950
|
+
text: effectiveMcpConfig.transport === "streamable_http" ? "Streamable HTTP" : "stdio"
|
|
27951
|
+
})]
|
|
27952
|
+
}), effectiveMcpConfig.transport === "streamable_http" ? /*#__PURE__*/jsxs("div", {
|
|
27953
|
+
className: "flex gap-2",
|
|
27954
|
+
children: [/*#__PURE__*/jsx("span", {
|
|
27955
|
+
className: "opacity-50 w-24 shrink-0",
|
|
27956
|
+
children: "Endpoint:"
|
|
27957
|
+
}), /*#__PURE__*/jsx("span", {
|
|
27958
|
+
className: "text-xs opacity-70",
|
|
27959
|
+
children: "Remote hosted server (URL provided below)"
|
|
27960
|
+
})]
|
|
27961
|
+
}) : /*#__PURE__*/jsxs(Fragment, {
|
|
27962
|
+
children: [/*#__PURE__*/jsxs("div", {
|
|
27963
|
+
className: "flex gap-2",
|
|
27964
|
+
children: [/*#__PURE__*/jsx("span", {
|
|
27965
|
+
className: "opacity-50 w-24 shrink-0",
|
|
27966
|
+
children: "Command:"
|
|
27967
|
+
}), /*#__PURE__*/jsxs("code", {
|
|
27968
|
+
className: "text-xs bg-white/5 px-2 py-0.5 rounded",
|
|
27969
|
+
children: [effectiveMcpConfig.command, " ", (effectiveMcpConfig.args || []).join(" ")]
|
|
27970
|
+
})]
|
|
27971
|
+
}), effectiveMcpConfig.envMapping && Object.keys(effectiveMcpConfig.envMapping).length > 0 && /*#__PURE__*/jsxs("div", {
|
|
27972
|
+
className: "flex gap-2",
|
|
27973
|
+
children: [/*#__PURE__*/jsx("span", {
|
|
27974
|
+
className: "opacity-50 w-24 shrink-0",
|
|
27975
|
+
children: "Env Vars:"
|
|
27976
|
+
}), /*#__PURE__*/jsx("span", {
|
|
27977
|
+
className: "text-xs opacity-70",
|
|
27978
|
+
children: Object.keys(effectiveMcpConfig.envMapping).join(", ")
|
|
27979
|
+
})]
|
|
27980
|
+
})]
|
|
27981
|
+
})]
|
|
27982
|
+
})]
|
|
27983
|
+
}), /*#__PURE__*/jsx(AdvancedMcpConfig, {
|
|
27984
|
+
transport: effectiveMcpConfig.transport || "stdio",
|
|
27985
|
+
envMappingRows: envMappingRows,
|
|
27986
|
+
onEnvMappingRowsChange: setEnvMappingRows,
|
|
27987
|
+
headerRows: headerRows,
|
|
27988
|
+
onHeaderRowsChange: setHeaderRows
|
|
27878
27989
|
}), /*#__PURE__*/jsxs("div", {
|
|
27879
|
-
className: "flex gap-2",
|
|
27990
|
+
className: "flex flex-col gap-2",
|
|
27991
|
+
children: [/*#__PURE__*/jsx(FormLabel, {
|
|
27992
|
+
label: "Provider Name",
|
|
27993
|
+
required: true
|
|
27994
|
+
}), /*#__PURE__*/jsx("p", {
|
|
27995
|
+
className: "text-sm opacity-50",
|
|
27996
|
+
children: "A name to identify this MCP server instance (e.g., \"Algolia Production\")"
|
|
27997
|
+
}), /*#__PURE__*/jsx(InputText, {
|
|
27998
|
+
value: providerName,
|
|
27999
|
+
onChange: function onChange(value) {
|
|
28000
|
+
setProviderName(value);
|
|
28001
|
+
if (formErrors.providerName && value !== null && value !== void 0 && value.trim()) {
|
|
28002
|
+
setFormErrors(function (prev) {
|
|
28003
|
+
var next = _objectSpread$4({}, prev);
|
|
28004
|
+
delete next.providerName;
|
|
28005
|
+
return next;
|
|
28006
|
+
});
|
|
28007
|
+
}
|
|
28008
|
+
},
|
|
28009
|
+
placeholder: "Enter provider name"
|
|
28010
|
+
}), formErrors.providerName && /*#__PURE__*/jsx("p", {
|
|
28011
|
+
className: "text-sm text-red-400",
|
|
28012
|
+
children: formErrors.providerName
|
|
28013
|
+
})]
|
|
28014
|
+
}), formFields.length > 0 && /*#__PURE__*/jsxs(Fragment, {
|
|
27880
28015
|
children: [/*#__PURE__*/jsx("div", {
|
|
27881
|
-
className: "
|
|
27882
|
-
children: /*#__PURE__*/jsx(
|
|
27883
|
-
|
|
27884
|
-
|
|
27885
|
-
onChange: function onChange(value) {
|
|
27886
|
-
return handleCredentialChange(field.key, value);
|
|
27887
|
-
},
|
|
27888
|
-
placeholder: field.type === "file" ? "Select a file..." : "Enter ".concat(field.displayName.toLowerCase())
|
|
28016
|
+
className: "border-t border-white/10 pt-4",
|
|
28017
|
+
children: /*#__PURE__*/jsx("p", {
|
|
28018
|
+
className: "text-xs font-semibold opacity-40 uppercase tracking-wider",
|
|
28019
|
+
children: effectiveMcpConfig.transport === "streamable_http" ? "Server Configuration" : "Authentication"
|
|
27889
28020
|
})
|
|
27890
|
-
}),
|
|
27891
|
-
|
|
27892
|
-
|
|
27893
|
-
|
|
27894
|
-
|
|
27895
|
-
|
|
27896
|
-
|
|
27897
|
-
|
|
27898
|
-
|
|
27899
|
-
|
|
27900
|
-
|
|
27901
|
-
|
|
27902
|
-
|
|
27903
|
-
|
|
27904
|
-
|
|
27905
|
-
|
|
27906
|
-
|
|
27907
|
-
|
|
27908
|
-
|
|
28021
|
+
}), formFields.map(function (field) {
|
|
28022
|
+
return /*#__PURE__*/jsxs("div", {
|
|
28023
|
+
className: "flex flex-col gap-2",
|
|
28024
|
+
children: [/*#__PURE__*/jsx(FormLabel, {
|
|
28025
|
+
label: field.displayName,
|
|
28026
|
+
required: field.required
|
|
28027
|
+
}), field.instructions && /*#__PURE__*/jsx("p", {
|
|
28028
|
+
className: "text-sm opacity-50",
|
|
28029
|
+
children: field.instructions
|
|
28030
|
+
}), /*#__PURE__*/jsxs("div", {
|
|
28031
|
+
className: "flex gap-2",
|
|
28032
|
+
children: [/*#__PURE__*/jsx("div", {
|
|
28033
|
+
className: "flex-1",
|
|
28034
|
+
children: /*#__PURE__*/jsx(InputText, {
|
|
28035
|
+
type: field.secret ? "password" : "text",
|
|
28036
|
+
value: credentialData[field.key] || "",
|
|
28037
|
+
onChange: function onChange(value) {
|
|
28038
|
+
return handleCredentialChange(field.key, value);
|
|
28039
|
+
},
|
|
28040
|
+
placeholder: field.type === "file" ? "Select a file..." : "Enter ".concat(field.displayName.toLowerCase())
|
|
28041
|
+
})
|
|
28042
|
+
}), field.type === "file" && /*#__PURE__*/jsx("button", {
|
|
28043
|
+
onClick: /*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee() {
|
|
28044
|
+
var filepath;
|
|
28045
|
+
return _regeneratorRuntime.wrap(function (_context) {
|
|
28046
|
+
while (1) switch (_context.prev = _context.next) {
|
|
28047
|
+
case 0:
|
|
28048
|
+
_context.next = 1;
|
|
28049
|
+
return window.mainApi.dialog.chooseFile(true, ["json"]);
|
|
28050
|
+
case 1:
|
|
28051
|
+
filepath = _context.sent;
|
|
28052
|
+
if (filepath) handleCredentialChange(field.key, filepath);
|
|
28053
|
+
case 2:
|
|
28054
|
+
case "end":
|
|
28055
|
+
return _context.stop();
|
|
28056
|
+
}
|
|
28057
|
+
}, _callee);
|
|
28058
|
+
})),
|
|
28059
|
+
className: "px-3 py-1.5 text-sm rounded bg-white/10 hover:bg-white/20 transition-colors",
|
|
28060
|
+
children: "Browse"
|
|
28061
|
+
})]
|
|
28062
|
+
}), formErrors[field.key] && /*#__PURE__*/jsx("p", {
|
|
28063
|
+
className: "text-sm text-red-400",
|
|
28064
|
+
children: formErrors[field.key]
|
|
28065
|
+
})]
|
|
28066
|
+
}, field.key);
|
|
27909
28067
|
})]
|
|
27910
|
-
}),
|
|
27911
|
-
className: "text-sm text-red-
|
|
27912
|
-
children:
|
|
28068
|
+
}), authResult && /*#__PURE__*/jsx("div", {
|
|
28069
|
+
className: "p-3 rounded-lg text-sm ".concat(authResult.success ? "bg-green-900/30 border border-green-700 text-green-300" : "bg-red-900/30 border border-red-700 text-red-300"),
|
|
28070
|
+
children: /*#__PURE__*/jsxs("div", {
|
|
28071
|
+
className: "flex items-center gap-2",
|
|
28072
|
+
children: [/*#__PURE__*/jsx(FontAwesomeIcon, {
|
|
28073
|
+
icon: authResult.success ? "circle-check" : "circle-exclamation"
|
|
28074
|
+
}), /*#__PURE__*/jsx("span", {
|
|
28075
|
+
children: authResult.message
|
|
28076
|
+
})]
|
|
28077
|
+
})
|
|
27913
28078
|
})]
|
|
27914
|
-
}
|
|
28079
|
+
})
|
|
28080
|
+
}), /*#__PURE__*/jsx(Stepper.Step, {
|
|
28081
|
+
label: "Test",
|
|
28082
|
+
description: "Verify connection",
|
|
28083
|
+
children: /*#__PURE__*/jsxs("div", {
|
|
28084
|
+
className: "flex-1 min-h-0 overflow-y-auto pb-4 space-y-5",
|
|
28085
|
+
children: [/*#__PURE__*/jsxs("div", {
|
|
28086
|
+
className: "flex flex-col items-center justify-center py-8 space-y-4",
|
|
28087
|
+
children: [/*#__PURE__*/jsx("p", {
|
|
28088
|
+
className: "text-sm opacity-60 text-center",
|
|
28089
|
+
children: "Test the connection to verify your configuration is correct."
|
|
28090
|
+
}), /*#__PURE__*/jsx(Button, {
|
|
28091
|
+
title: isTesting ? "Testing..." : "Test Connection",
|
|
28092
|
+
onClick: handleTestConnection,
|
|
28093
|
+
size: "md"
|
|
28094
|
+
})]
|
|
28095
|
+
}), testResult && /*#__PURE__*/jsx("div", {
|
|
28096
|
+
className: "p-3 rounded-lg text-sm ".concat(testResult.success ? "bg-green-900/30 border border-green-700 text-green-300" : "bg-red-900/30 border border-red-700 text-red-300"),
|
|
28097
|
+
children: /*#__PURE__*/jsxs("div", {
|
|
28098
|
+
className: "flex items-center gap-2",
|
|
28099
|
+
children: [/*#__PURE__*/jsx(FontAwesomeIcon, {
|
|
28100
|
+
icon: testResult.success ? "circle-check" : "circle-exclamation"
|
|
28101
|
+
}), /*#__PURE__*/jsx("span", {
|
|
28102
|
+
children: testResult.message
|
|
28103
|
+
})]
|
|
28104
|
+
})
|
|
28105
|
+
})]
|
|
28106
|
+
})
|
|
28107
|
+
}), /*#__PURE__*/jsx(Stepper.Step, {
|
|
28108
|
+
label: "Tools",
|
|
28109
|
+
description: "Select allowed tools",
|
|
28110
|
+
children: /*#__PURE__*/jsx("div", {
|
|
28111
|
+
className: "flex-1 min-h-0 overflow-y-auto pb-4 space-y-5",
|
|
28112
|
+
children: testResult !== null && testResult !== void 0 && testResult.success && ((_testResult$tools = testResult.tools) === null || _testResult$tools === void 0 ? void 0 : _testResult$tools.length) > 0 && selectedTools ? /*#__PURE__*/jsx(ToolSelector, {
|
|
28113
|
+
tools: testResult.tools,
|
|
28114
|
+
selectedTools: selectedTools,
|
|
28115
|
+
onSelectionChange: setSelectedTools
|
|
28116
|
+
}) : /*#__PURE__*/jsx("div", {
|
|
28117
|
+
className: "text-center py-8 opacity-50",
|
|
28118
|
+
children: "No tools available. Go back and test the connection first."
|
|
28119
|
+
})
|
|
28120
|
+
})
|
|
27915
28121
|
})]
|
|
27916
|
-
})
|
|
27917
|
-
|
|
27918
|
-
|
|
27919
|
-
|
|
27920
|
-
|
|
27921
|
-
|
|
27922
|
-
|
|
27923
|
-
|
|
27924
|
-
|
|
28122
|
+
})
|
|
28123
|
+
}), /*#__PURE__*/jsxs("div", {
|
|
28124
|
+
className: "flex-shrink-0 flex flex-row items-center px-6 py-4 border-t border-white/10",
|
|
28125
|
+
children: [/*#__PURE__*/jsxs("div", {
|
|
28126
|
+
className: "flex flex-row gap-2",
|
|
28127
|
+
children: [wizardStep === 0 && /*#__PURE__*/jsx(Button, {
|
|
28128
|
+
title: "Cancel",
|
|
28129
|
+
onClick: onCancel,
|
|
28130
|
+
size: "sm"
|
|
28131
|
+
}), wizardStep > 0 && /*#__PURE__*/jsx(Button, {
|
|
28132
|
+
title: "Back",
|
|
28133
|
+
onClick: function onClick() {
|
|
28134
|
+
return setWizardStep(wizardStep - 1);
|
|
28135
|
+
},
|
|
28136
|
+
size: "sm"
|
|
28137
|
+
})]
|
|
28138
|
+
}), /*#__PURE__*/jsx("div", {
|
|
28139
|
+
className: "flex-1 text-center",
|
|
28140
|
+
children: /*#__PURE__*/jsxs("span", {
|
|
28141
|
+
className: "text-xs opacity-40",
|
|
28142
|
+
children: ["Step ", wizardStep + 1, " of 3"]
|
|
27925
28143
|
})
|
|
27926
|
-
}),
|
|
27927
|
-
className: "
|
|
27928
|
-
children: /*#__PURE__*/jsxs(
|
|
27929
|
-
|
|
27930
|
-
|
|
27931
|
-
|
|
27932
|
-
|
|
27933
|
-
|
|
28144
|
+
}), /*#__PURE__*/jsxs("div", {
|
|
28145
|
+
className: "flex flex-row gap-2",
|
|
28146
|
+
children: [wizardStep === 0 && /*#__PURE__*/jsxs(Fragment, {
|
|
28147
|
+
children: [(selectedServer === null || selectedServer === void 0 ? void 0 : selectedServer.authCommand) && /*#__PURE__*/jsx(Button, {
|
|
28148
|
+
title: isAuthorizing ? "Authorizing..." : "Authorize",
|
|
28149
|
+
onClick: handleAuthorize,
|
|
28150
|
+
size: "sm"
|
|
28151
|
+
}), /*#__PURE__*/jsx(Button, {
|
|
28152
|
+
title: "Next",
|
|
28153
|
+
onClick: function onClick() {
|
|
28154
|
+
return handleWizardStepChange(1);
|
|
28155
|
+
},
|
|
28156
|
+
disabled: (selectedServer === null || selectedServer === void 0 ? void 0 : selectedServer.authCommand) && !(authResult !== null && authResult !== void 0 && authResult.success),
|
|
28157
|
+
size: "sm"
|
|
27934
28158
|
})]
|
|
27935
|
-
})
|
|
27936
|
-
|
|
27937
|
-
|
|
27938
|
-
|
|
27939
|
-
|
|
27940
|
-
|
|
27941
|
-
|
|
27942
|
-
|
|
27943
|
-
|
|
27944
|
-
|
|
27945
|
-
|
|
27946
|
-
|
|
27947
|
-
|
|
27948
|
-
|
|
27949
|
-
|
|
27950
|
-
|
|
27951
|
-
|
|
27952
|
-
|
|
27953
|
-
onClick: handleTestConnection,
|
|
27954
|
-
size: "sm"
|
|
27955
|
-
}), /*#__PURE__*/jsx(Button, {
|
|
27956
|
-
title: "Save MCP Server",
|
|
27957
|
-
onClick: handleSaveProvider,
|
|
27958
|
-
size: "sm"
|
|
28159
|
+
}), wizardStep === 1 && /*#__PURE__*/jsxs(Fragment, {
|
|
28160
|
+
children: [/*#__PURE__*/jsx(Button, {
|
|
28161
|
+
title: isTesting ? "Testing..." : "Test Connection",
|
|
28162
|
+
onClick: handleTestConnection,
|
|
28163
|
+
size: "sm"
|
|
28164
|
+
}), /*#__PURE__*/jsx(Button, {
|
|
28165
|
+
title: "Next",
|
|
28166
|
+
onClick: function onClick() {
|
|
28167
|
+
return handleWizardStepChange(2);
|
|
28168
|
+
},
|
|
28169
|
+
disabled: !(testResult !== null && testResult !== void 0 && testResult.success),
|
|
28170
|
+
size: "sm"
|
|
28171
|
+
})]
|
|
28172
|
+
}), wizardStep === 2 && /*#__PURE__*/jsx(Button, {
|
|
28173
|
+
title: "Save MCP Server",
|
|
28174
|
+
onClick: handleSaveProvider,
|
|
28175
|
+
size: "sm"
|
|
28176
|
+
})]
|
|
27959
28177
|
})]
|
|
27960
28178
|
})]
|
|
27961
28179
|
});
|