@trops/dash-core 0.1.52 → 0.1.53
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 +617 -272
- package/dist/index.esm.js.map +1 -1
- package/dist/index.js +618 -271
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/index.esm.js
CHANGED
|
@@ -9526,6 +9526,157 @@ function headerTemplateToRows(headerTemplate, nextRowId) {
|
|
|
9526
9526
|
});
|
|
9527
9527
|
}
|
|
9528
9528
|
|
|
9529
|
+
/**
|
|
9530
|
+
* Serialize the current form state into a standard MCP JSON config string.
|
|
9531
|
+
*
|
|
9532
|
+
* Output format:
|
|
9533
|
+
* {
|
|
9534
|
+
* "mcpServers": {
|
|
9535
|
+
* "<name>": { "command": ..., "args": [...], "env": {...} }
|
|
9536
|
+
* }
|
|
9537
|
+
* }
|
|
9538
|
+
*
|
|
9539
|
+
* @param {string} name - The provider name
|
|
9540
|
+
* @param {string} transport - "stdio" or "streamable_http"
|
|
9541
|
+
* @param {object} fields - { command, args, envMappingRows, url, headerRows, credentialData }
|
|
9542
|
+
* @returns {string} Formatted JSON string
|
|
9543
|
+
*/
|
|
9544
|
+
function formStateToMcpJson(name, transport, fields) {
|
|
9545
|
+
var _fields$command = fields.command,
|
|
9546
|
+
command = _fields$command === void 0 ? "" : _fields$command,
|
|
9547
|
+
_fields$args = fields.args,
|
|
9548
|
+
args = _fields$args === void 0 ? "" : _fields$args,
|
|
9549
|
+
_fields$envMappingRow = fields.envMappingRows,
|
|
9550
|
+
envMappingRows = _fields$envMappingRow === void 0 ? [] : _fields$envMappingRow,
|
|
9551
|
+
_fields$url = fields.url,
|
|
9552
|
+
url = _fields$url === void 0 ? "" : _fields$url,
|
|
9553
|
+
_fields$headerRows = fields.headerRows,
|
|
9554
|
+
headerRows = _fields$headerRows === void 0 ? [] : _fields$headerRows,
|
|
9555
|
+
_fields$credentialDat = fields.credentialData,
|
|
9556
|
+
credentialData = _fields$credentialDat === void 0 ? {} : _fields$credentialDat;
|
|
9557
|
+
var serverConfig;
|
|
9558
|
+
if (transport === "stdio") {
|
|
9559
|
+
var argsArray = args.trim().split(/\s+/).filter(Boolean);
|
|
9560
|
+
var env = {};
|
|
9561
|
+
envMappingRows.forEach(function (row) {
|
|
9562
|
+
var envVar = row.envVar.trim();
|
|
9563
|
+
var credField = row.credField.trim();
|
|
9564
|
+
if (envVar) {
|
|
9565
|
+
env[envVar] = credentialData[credField] || "";
|
|
9566
|
+
}
|
|
9567
|
+
});
|
|
9568
|
+
serverConfig = {
|
|
9569
|
+
command: command.trim()
|
|
9570
|
+
};
|
|
9571
|
+
if (argsArray.length > 0) serverConfig.args = argsArray;
|
|
9572
|
+
if (Object.keys(env).length > 0) serverConfig.env = env;
|
|
9573
|
+
} else {
|
|
9574
|
+
// streamable_http
|
|
9575
|
+
serverConfig = {
|
|
9576
|
+
url: url.trim()
|
|
9577
|
+
};
|
|
9578
|
+
var headers = {};
|
|
9579
|
+
headerRows.forEach(function (row) {
|
|
9580
|
+
var hName = row.headerName.trim();
|
|
9581
|
+
var hValue = row.headerValue.trim();
|
|
9582
|
+
if (hName && hValue) {
|
|
9583
|
+
headers[hName] = hValue;
|
|
9584
|
+
}
|
|
9585
|
+
});
|
|
9586
|
+
if (Object.keys(headers).length > 0) serverConfig.headers = headers;
|
|
9587
|
+
}
|
|
9588
|
+
return JSON.stringify({
|
|
9589
|
+
mcpServers: _defineProperty({}, name || "server-name", serverConfig)
|
|
9590
|
+
}, null, 2);
|
|
9591
|
+
}
|
|
9592
|
+
|
|
9593
|
+
/**
|
|
9594
|
+
* Parse a standard MCP JSON config string back into form state.
|
|
9595
|
+
*
|
|
9596
|
+
* Accepts:
|
|
9597
|
+
* - { "mcpServers": { "name": { ... } } }
|
|
9598
|
+
* - Bare server config: { "command": ..., "args": [...] }
|
|
9599
|
+
*
|
|
9600
|
+
* @param {string} jsonString - The JSON to parse
|
|
9601
|
+
* @param {Function} nextRowId - Function that returns a unique row ID
|
|
9602
|
+
* @returns {{ providerName, transport, command, args, envMappingRows, url, headerRows, credentialData, error }}
|
|
9603
|
+
*/
|
|
9604
|
+
function mcpJsonToFormState(jsonString, nextRowId) {
|
|
9605
|
+
var parsed;
|
|
9606
|
+
try {
|
|
9607
|
+
parsed = JSON.parse(jsonString);
|
|
9608
|
+
} catch (e) {
|
|
9609
|
+
return {
|
|
9610
|
+
error: "Invalid JSON: ".concat(e.message)
|
|
9611
|
+
};
|
|
9612
|
+
}
|
|
9613
|
+
var providerName = "";
|
|
9614
|
+
var serverConfig;
|
|
9615
|
+
if (parsed.mcpServers && _typeof(parsed.mcpServers) === "object") {
|
|
9616
|
+
var entries = Object.entries(parsed.mcpServers);
|
|
9617
|
+
if (entries.length === 0) {
|
|
9618
|
+
return {
|
|
9619
|
+
error: "No server found in mcpServers"
|
|
9620
|
+
};
|
|
9621
|
+
}
|
|
9622
|
+
var _entries$ = _slicedToArray(entries[0], 2);
|
|
9623
|
+
providerName = _entries$[0];
|
|
9624
|
+
serverConfig = _entries$[1];
|
|
9625
|
+
} else if (parsed.command || parsed.url) {
|
|
9626
|
+
serverConfig = parsed;
|
|
9627
|
+
} else {
|
|
9628
|
+
return {
|
|
9629
|
+
error: "Unrecognized format: expected mcpServers object or bare server config"
|
|
9630
|
+
};
|
|
9631
|
+
}
|
|
9632
|
+
var isHttp = !!serverConfig.url;
|
|
9633
|
+
var transport = isHttp ? "streamable_http" : "stdio";
|
|
9634
|
+
var result = {
|
|
9635
|
+
providerName: providerName,
|
|
9636
|
+
transport: transport,
|
|
9637
|
+
command: "",
|
|
9638
|
+
args: "",
|
|
9639
|
+
envMappingRows: [],
|
|
9640
|
+
url: "",
|
|
9641
|
+
headerRows: [],
|
|
9642
|
+
credentialData: {},
|
|
9643
|
+
error: null
|
|
9644
|
+
};
|
|
9645
|
+
if (transport === "stdio") {
|
|
9646
|
+
result.command = serverConfig.command || "";
|
|
9647
|
+
result.args = (serverConfig.args || []).join(" ");
|
|
9648
|
+
if (serverConfig.env && _typeof(serverConfig.env) === "object") {
|
|
9649
|
+
Object.entries(serverConfig.env).forEach(function (_ref5) {
|
|
9650
|
+
var _ref6 = _slicedToArray(_ref5, 2),
|
|
9651
|
+
envVar = _ref6[0],
|
|
9652
|
+
value = _ref6[1];
|
|
9653
|
+
result.envMappingRows.push({
|
|
9654
|
+
id: nextRowId(),
|
|
9655
|
+
envVar: envVar,
|
|
9656
|
+
credField: envVar
|
|
9657
|
+
});
|
|
9658
|
+
result.credentialData[envVar] = value || "";
|
|
9659
|
+
});
|
|
9660
|
+
}
|
|
9661
|
+
} else {
|
|
9662
|
+
result.url = serverConfig.url || "";
|
|
9663
|
+
var headers = serverConfig.headers || serverConfig.headerTemplate || {};
|
|
9664
|
+
if (_typeof(headers) === "object") {
|
|
9665
|
+
Object.entries(headers).forEach(function (_ref7) {
|
|
9666
|
+
var _ref8 = _slicedToArray(_ref7, 2),
|
|
9667
|
+
headerName = _ref8[0],
|
|
9668
|
+
headerValue = _ref8[1];
|
|
9669
|
+
result.headerRows.push({
|
|
9670
|
+
id: nextRowId(),
|
|
9671
|
+
headerName: headerName,
|
|
9672
|
+
headerValue: headerValue
|
|
9673
|
+
});
|
|
9674
|
+
});
|
|
9675
|
+
}
|
|
9676
|
+
}
|
|
9677
|
+
return result;
|
|
9678
|
+
}
|
|
9679
|
+
|
|
9529
9680
|
function ownKeys$p(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
9530
9681
|
function _objectSpread$p(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$p(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$p(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
9531
9682
|
var AdvancedMcpConfig = function AdvancedMcpConfig(_ref) {
|
|
@@ -26215,29 +26366,57 @@ function buildMcpConfig(transport, _ref) {
|
|
|
26215
26366
|
*
|
|
26216
26367
|
* Form for configuring a custom MCP server (not from the catalog).
|
|
26217
26368
|
* Supports stdio and streamable_http transports with dynamic field derivation.
|
|
26369
|
+
* Used for both creating new and editing existing MCP providers.
|
|
26218
26370
|
*
|
|
26219
26371
|
* @param {Function} onSave - (providerName, providerType, credentials, mcpConfig) => void
|
|
26220
|
-
* @param {Function} onBack - Called when the user wants to return
|
|
26372
|
+
* @param {Function} onBack - Called when the user wants to return
|
|
26373
|
+
* @param {boolean} isEditMode - Whether we're editing an existing provider
|
|
26374
|
+
* @param {string} initialName - Pre-populated provider name (edit mode)
|
|
26375
|
+
* @param {string} initialTransport - Pre-populated transport type (edit mode)
|
|
26376
|
+
* @param {string} initialCommand - Pre-populated command (edit mode)
|
|
26377
|
+
* @param {string} initialArgs - Pre-populated args string (edit mode)
|
|
26378
|
+
* @param {Array} initialEnvMappingRows - Pre-populated env mapping rows (edit mode)
|
|
26379
|
+
* @param {string} initialUrl - Pre-populated URL (edit mode)
|
|
26380
|
+
* @param {Array} initialHeaderRows - Pre-populated header rows (edit mode)
|
|
26381
|
+
* @param {object} initialCredentials - Pre-populated credential values (edit mode)
|
|
26221
26382
|
*/
|
|
26222
26383
|
var CustomMcpServerForm = function CustomMcpServerForm(_ref2) {
|
|
26223
26384
|
var _testResult$tools;
|
|
26224
26385
|
var onSave = _ref2.onSave,
|
|
26225
|
-
onBack = _ref2.onBack
|
|
26386
|
+
onBack = _ref2.onBack,
|
|
26387
|
+
_ref2$isEditMode = _ref2.isEditMode,
|
|
26388
|
+
isEditMode = _ref2$isEditMode === void 0 ? false : _ref2$isEditMode,
|
|
26389
|
+
_ref2$initialName = _ref2.initialName,
|
|
26390
|
+
initialName = _ref2$initialName === void 0 ? "" : _ref2$initialName,
|
|
26391
|
+
_ref2$initialTranspor = _ref2.initialTransport,
|
|
26392
|
+
initialTransport = _ref2$initialTranspor === void 0 ? "stdio" : _ref2$initialTranspor,
|
|
26393
|
+
_ref2$initialCommand = _ref2.initialCommand,
|
|
26394
|
+
initialCommand = _ref2$initialCommand === void 0 ? "" : _ref2$initialCommand,
|
|
26395
|
+
_ref2$initialArgs = _ref2.initialArgs,
|
|
26396
|
+
initialArgs = _ref2$initialArgs === void 0 ? "" : _ref2$initialArgs,
|
|
26397
|
+
_ref2$initialEnvMappi = _ref2.initialEnvMappingRows,
|
|
26398
|
+
initialEnvMappingRows = _ref2$initialEnvMappi === void 0 ? [] : _ref2$initialEnvMappi,
|
|
26399
|
+
_ref2$initialUrl = _ref2.initialUrl,
|
|
26400
|
+
initialUrl = _ref2$initialUrl === void 0 ? "" : _ref2$initialUrl,
|
|
26401
|
+
_ref2$initialHeaderRo = _ref2.initialHeaderRows,
|
|
26402
|
+
initialHeaderRows = _ref2$initialHeaderRo === void 0 ? [] : _ref2$initialHeaderRo,
|
|
26403
|
+
_ref2$initialCredenti = _ref2.initialCredentials,
|
|
26404
|
+
initialCredentials = _ref2$initialCredenti === void 0 ? {} : _ref2$initialCredenti;
|
|
26226
26405
|
var appContext = useContext(AppContext);
|
|
26227
26406
|
var dashApi = appContext === null || appContext === void 0 ? void 0 : appContext.dashApi;
|
|
26228
26407
|
|
|
26229
26408
|
// Transport selection
|
|
26230
|
-
var _useState = useState(
|
|
26409
|
+
var _useState = useState(initialTransport),
|
|
26231
26410
|
_useState2 = _slicedToArray(_useState, 2),
|
|
26232
26411
|
transport = _useState2[0],
|
|
26233
26412
|
setTransport = _useState2[1];
|
|
26234
26413
|
|
|
26235
26414
|
// Common
|
|
26236
|
-
var _useState3 = useState(
|
|
26415
|
+
var _useState3 = useState(initialName),
|
|
26237
26416
|
_useState4 = _slicedToArray(_useState3, 2),
|
|
26238
26417
|
providerName = _useState4[0],
|
|
26239
26418
|
setProviderName = _useState4[1];
|
|
26240
|
-
var _useState5 = useState(
|
|
26419
|
+
var _useState5 = useState(initialCredentials),
|
|
26241
26420
|
_useState6 = _slicedToArray(_useState5, 2),
|
|
26242
26421
|
credentialData = _useState6[0],
|
|
26243
26422
|
setCredentialData = _useState6[1];
|
|
@@ -26255,34 +26434,51 @@ var CustomMcpServerForm = function CustomMcpServerForm(_ref2) {
|
|
|
26255
26434
|
setTestResult = _useState10[1];
|
|
26256
26435
|
|
|
26257
26436
|
// stdio fields
|
|
26258
|
-
var _useState11 = useState(
|
|
26437
|
+
var _useState11 = useState(initialCommand),
|
|
26259
26438
|
_useState12 = _slicedToArray(_useState11, 2),
|
|
26260
26439
|
command = _useState12[0],
|
|
26261
26440
|
setCommand = _useState12[1];
|
|
26262
|
-
var _useState13 = useState(
|
|
26441
|
+
var _useState13 = useState(initialArgs),
|
|
26263
26442
|
_useState14 = _slicedToArray(_useState13, 2),
|
|
26264
26443
|
args = _useState14[0],
|
|
26265
26444
|
setArgs = _useState14[1];
|
|
26266
|
-
var _useState15 = useState(
|
|
26445
|
+
var _useState15 = useState(initialEnvMappingRows),
|
|
26267
26446
|
_useState16 = _slicedToArray(_useState15, 2),
|
|
26268
26447
|
envMappingRows = _useState16[0],
|
|
26269
26448
|
setEnvMappingRows = _useState16[1];
|
|
26270
26449
|
|
|
26271
26450
|
// HTTP fields
|
|
26272
|
-
var _useState17 = useState(
|
|
26451
|
+
var _useState17 = useState(initialUrl),
|
|
26273
26452
|
_useState18 = _slicedToArray(_useState17, 2),
|
|
26274
26453
|
url = _useState18[0],
|
|
26275
26454
|
setUrl = _useState18[1];
|
|
26276
|
-
var _useState19 = useState(
|
|
26455
|
+
var _useState19 = useState(initialHeaderRows),
|
|
26277
26456
|
_useState20 = _slicedToArray(_useState19, 2),
|
|
26278
26457
|
headerRows = _useState20[0],
|
|
26279
26458
|
setHeaderRows = _useState20[1];
|
|
26280
26459
|
|
|
26460
|
+
// JSON editor state
|
|
26461
|
+
var _useState21 = useState("form"),
|
|
26462
|
+
_useState22 = _slicedToArray(_useState21, 2),
|
|
26463
|
+
viewMode = _useState22[0],
|
|
26464
|
+
setViewMode = _useState22[1]; // "form" | "json"
|
|
26465
|
+
var _useState23 = useState(""),
|
|
26466
|
+
_useState24 = _slicedToArray(_useState23, 2),
|
|
26467
|
+
jsonText = _useState24[0],
|
|
26468
|
+
setJsonText = _useState24[1];
|
|
26469
|
+
var _useState25 = useState(null),
|
|
26470
|
+
_useState26 = _slicedToArray(_useState25, 2),
|
|
26471
|
+
jsonError = _useState26[0],
|
|
26472
|
+
setJsonError = _useState26[1];
|
|
26473
|
+
|
|
26281
26474
|
// Clear credential data when transport changes (derived fields change entirely)
|
|
26475
|
+
// Only in create mode — in edit mode the initial transport is set correctly
|
|
26282
26476
|
useEffect(function () {
|
|
26283
|
-
|
|
26284
|
-
|
|
26285
|
-
|
|
26477
|
+
if (!isEditMode) {
|
|
26478
|
+
setCredentialData({});
|
|
26479
|
+
setTestResult(null);
|
|
26480
|
+
}
|
|
26481
|
+
}, [transport, isEditMode]);
|
|
26286
26482
|
|
|
26287
26483
|
// Build mcpConfig from current state
|
|
26288
26484
|
var mcpConfig = useMemo(function () {
|
|
@@ -26364,6 +26560,38 @@ var CustomMcpServerForm = function CustomMcpServerForm(_ref2) {
|
|
|
26364
26560
|
}
|
|
26365
26561
|
};
|
|
26366
26562
|
|
|
26563
|
+
// --- JSON toggle handlers ---
|
|
26564
|
+
var handleSwitchToJson = function handleSwitchToJson() {
|
|
26565
|
+
var json = formStateToMcpJson(providerName, transport, {
|
|
26566
|
+
command: command,
|
|
26567
|
+
args: args,
|
|
26568
|
+
envMappingRows: envMappingRows,
|
|
26569
|
+
url: url,
|
|
26570
|
+
headerRows: headerRows,
|
|
26571
|
+
credentialData: credentialData
|
|
26572
|
+
});
|
|
26573
|
+
setJsonText(json);
|
|
26574
|
+
setJsonError(null);
|
|
26575
|
+
setViewMode("json");
|
|
26576
|
+
};
|
|
26577
|
+
var handleSwitchToForm = function handleSwitchToForm() {
|
|
26578
|
+
var result = mcpJsonToFormState(jsonText, nextRowId);
|
|
26579
|
+
if (result.error) {
|
|
26580
|
+
setJsonError(result.error);
|
|
26581
|
+
return;
|
|
26582
|
+
}
|
|
26583
|
+
setProviderName(result.providerName || providerName);
|
|
26584
|
+
setTransport(result.transport);
|
|
26585
|
+
setCommand(result.command);
|
|
26586
|
+
setArgs(result.args);
|
|
26587
|
+
setEnvMappingRows(result.envMappingRows);
|
|
26588
|
+
setUrl(result.url);
|
|
26589
|
+
setHeaderRows(result.headerRows);
|
|
26590
|
+
setCredentialData(result.credentialData);
|
|
26591
|
+
setJsonError(null);
|
|
26592
|
+
setViewMode("form");
|
|
26593
|
+
};
|
|
26594
|
+
|
|
26367
26595
|
// --- validation ---
|
|
26368
26596
|
var validateForm = function validateForm() {
|
|
26369
26597
|
var errors = {};
|
|
@@ -26423,6 +26651,28 @@ var CustomMcpServerForm = function CustomMcpServerForm(_ref2) {
|
|
|
26423
26651
|
|
|
26424
26652
|
// --- save ---
|
|
26425
26653
|
var handleSave = function handleSave() {
|
|
26654
|
+
// If in JSON mode, parse JSON first to update form state
|
|
26655
|
+
if (viewMode === "json") {
|
|
26656
|
+
var result = mcpJsonToFormState(jsonText, nextRowId);
|
|
26657
|
+
if (result.error) {
|
|
26658
|
+
setJsonError(result.error);
|
|
26659
|
+
return;
|
|
26660
|
+
}
|
|
26661
|
+
var name = (result.providerName || providerName || "").trim();
|
|
26662
|
+
if (!name) {
|
|
26663
|
+
setJsonError("Provider name is required");
|
|
26664
|
+
return;
|
|
26665
|
+
}
|
|
26666
|
+
var config = buildMcpConfig(result.transport, {
|
|
26667
|
+
command: result.command,
|
|
26668
|
+
args: result.args,
|
|
26669
|
+
envMappingRows: result.envMappingRows,
|
|
26670
|
+
url: result.url,
|
|
26671
|
+
headerRows: result.headerRows
|
|
26672
|
+
});
|
|
26673
|
+
onSave(name, "custom", result.credentialData, config);
|
|
26674
|
+
return;
|
|
26675
|
+
}
|
|
26426
26676
|
if (!validateForm()) return;
|
|
26427
26677
|
onSave(providerName.trim(), "custom", credentialData, mcpConfig);
|
|
26428
26678
|
};
|
|
@@ -26441,58 +26691,11 @@ var CustomMcpServerForm = function CustomMcpServerForm(_ref2) {
|
|
|
26441
26691
|
})
|
|
26442
26692
|
}), /*#__PURE__*/jsxs("div", {
|
|
26443
26693
|
children: [/*#__PURE__*/jsx(SubHeading3, {
|
|
26444
|
-
title: "Configure Custom MCP Server",
|
|
26694
|
+
title: isEditMode ? "Edit MCP Server" : "Configure Custom MCP Server",
|
|
26445
26695
|
padding: false
|
|
26446
26696
|
}), /*#__PURE__*/jsx("p", {
|
|
26447
26697
|
className: "text-sm opacity-50 mt-1",
|
|
26448
|
-
children: "Define a custom MCP server connection"
|
|
26449
|
-
})]
|
|
26450
|
-
})]
|
|
26451
|
-
}), /*#__PURE__*/jsxs("div", {
|
|
26452
|
-
className: "space-y-2",
|
|
26453
|
-
children: [/*#__PURE__*/jsx("p", {
|
|
26454
|
-
className: "text-xs font-semibold opacity-40 uppercase tracking-wider",
|
|
26455
|
-
children: "Transport Type"
|
|
26456
|
-
}), /*#__PURE__*/jsxs("div", {
|
|
26457
|
-
className: "grid grid-cols-2 gap-3",
|
|
26458
|
-
children: [/*#__PURE__*/jsxs(Card2, {
|
|
26459
|
-
hover: true,
|
|
26460
|
-
selected: transport === "stdio",
|
|
26461
|
-
onClick: function onClick() {
|
|
26462
|
-
return setTransport("stdio");
|
|
26463
|
-
},
|
|
26464
|
-
className: "text-left",
|
|
26465
|
-
children: [/*#__PURE__*/jsxs("div", {
|
|
26466
|
-
className: "flex items-center gap-2 mb-1",
|
|
26467
|
-
children: [/*#__PURE__*/jsx(Icon2, {
|
|
26468
|
-
icon: "terminal"
|
|
26469
|
-
}), /*#__PURE__*/jsx("span", {
|
|
26470
|
-
className: "font-semibold text-sm",
|
|
26471
|
-
children: "Local Process (stdio)"
|
|
26472
|
-
})]
|
|
26473
|
-
}), /*#__PURE__*/jsx("p", {
|
|
26474
|
-
className: "text-xs opacity-50",
|
|
26475
|
-
children: "Spawn a local command as a child process"
|
|
26476
|
-
})]
|
|
26477
|
-
}), /*#__PURE__*/jsxs(Card2, {
|
|
26478
|
-
hover: true,
|
|
26479
|
-
selected: transport === "streamable_http",
|
|
26480
|
-
onClick: function onClick() {
|
|
26481
|
-
return setTransport("streamable_http");
|
|
26482
|
-
},
|
|
26483
|
-
className: "text-left",
|
|
26484
|
-
children: [/*#__PURE__*/jsxs("div", {
|
|
26485
|
-
className: "flex items-center gap-2 mb-1",
|
|
26486
|
-
children: [/*#__PURE__*/jsx(Icon2, {
|
|
26487
|
-
icon: "globe"
|
|
26488
|
-
}), /*#__PURE__*/jsx("span", {
|
|
26489
|
-
className: "font-semibold text-sm",
|
|
26490
|
-
children: "Remote Server (HTTP)"
|
|
26491
|
-
})]
|
|
26492
|
-
}), /*#__PURE__*/jsx("p", {
|
|
26493
|
-
className: "text-xs opacity-50",
|
|
26494
|
-
children: "Connect to a remote MCP server via HTTP"
|
|
26495
|
-
})]
|
|
26698
|
+
children: isEditMode ? "Modify this MCP server configuration" : "Define a custom MCP server connection"
|
|
26496
26699
|
})]
|
|
26497
26700
|
})]
|
|
26498
26701
|
}), /*#__PURE__*/jsxs("div", {
|
|
@@ -26520,231 +26723,315 @@ var CustomMcpServerForm = function CustomMcpServerForm(_ref2) {
|
|
|
26520
26723
|
className: "text-sm text-red-400",
|
|
26521
26724
|
children: formErrors.providerName
|
|
26522
26725
|
})]
|
|
26523
|
-
}),
|
|
26524
|
-
className: "
|
|
26525
|
-
children: [/*#__PURE__*/jsx("
|
|
26526
|
-
|
|
26527
|
-
|
|
26726
|
+
}), /*#__PURE__*/jsxs("div", {
|
|
26727
|
+
className: "flex items-center gap-1",
|
|
26728
|
+
children: [/*#__PURE__*/jsx("button", {
|
|
26729
|
+
onClick: function onClick() {
|
|
26730
|
+
if (viewMode === "json") handleSwitchToForm();
|
|
26731
|
+
},
|
|
26732
|
+
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"),
|
|
26733
|
+
children: "Form"
|
|
26734
|
+
}), /*#__PURE__*/jsx("button", {
|
|
26735
|
+
onClick: function onClick() {
|
|
26736
|
+
if (viewMode === "form") handleSwitchToJson();
|
|
26737
|
+
},
|
|
26738
|
+
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"),
|
|
26739
|
+
children: "JSON"
|
|
26740
|
+
})]
|
|
26741
|
+
}), jsonError && /*#__PURE__*/jsx("p", {
|
|
26742
|
+
className: "text-sm text-red-400",
|
|
26743
|
+
children: jsonError
|
|
26744
|
+
}), viewMode === "json" && /*#__PURE__*/jsxs("div", {
|
|
26745
|
+
className: "space-y-2",
|
|
26746
|
+
children: [/*#__PURE__*/jsx("p", {
|
|
26747
|
+
className: "text-xs font-semibold opacity-40 uppercase tracking-wider",
|
|
26748
|
+
children: "MCP Server Configuration (JSON)"
|
|
26749
|
+
}), /*#__PURE__*/jsx("p", {
|
|
26750
|
+
className: "text-sm opacity-50",
|
|
26751
|
+
children: "Paste a standard MCP config JSON (compatible with Claude Desktop, Cursor, etc.)"
|
|
26752
|
+
}), /*#__PURE__*/jsx(CodeEditorInline, {
|
|
26753
|
+
code: jsonText,
|
|
26754
|
+
setCode: function setCode(val) {
|
|
26755
|
+
setJsonText(val);
|
|
26756
|
+
setJsonError(null);
|
|
26757
|
+
},
|
|
26758
|
+
language: "json",
|
|
26759
|
+
placeholder: '{\n "mcpServers": {\n "server-name": {\n "command": "npx",\n "args": ["-y", "package-name"],\n "env": {\n "API_KEY": "your-key"\n }\n }\n }\n}'
|
|
26760
|
+
})]
|
|
26761
|
+
}), viewMode === "form" && /*#__PURE__*/jsxs(Fragment, {
|
|
26762
|
+
children: [/*#__PURE__*/jsxs("div", {
|
|
26763
|
+
className: "space-y-2",
|
|
26764
|
+
children: [/*#__PURE__*/jsx("p", {
|
|
26528
26765
|
className: "text-xs font-semibold opacity-40 uppercase tracking-wider",
|
|
26529
|
-
children: "
|
|
26530
|
-
})
|
|
26531
|
-
|
|
26532
|
-
|
|
26533
|
-
|
|
26534
|
-
|
|
26535
|
-
|
|
26536
|
-
|
|
26537
|
-
|
|
26538
|
-
|
|
26539
|
-
|
|
26540
|
-
|
|
26541
|
-
|
|
26542
|
-
|
|
26543
|
-
|
|
26544
|
-
|
|
26545
|
-
|
|
26546
|
-
|
|
26547
|
-
return next;
|
|
26548
|
-
});
|
|
26549
|
-
}
|
|
26550
|
-
},
|
|
26551
|
-
placeholder: "e.g., npx"
|
|
26552
|
-
}), formErrors.command && /*#__PURE__*/jsx("p", {
|
|
26553
|
-
className: "text-sm text-red-400",
|
|
26554
|
-
children: formErrors.command
|
|
26555
|
-
})]
|
|
26556
|
-
}), /*#__PURE__*/jsxs("div", {
|
|
26557
|
-
className: "flex flex-col gap-2",
|
|
26558
|
-
children: [/*#__PURE__*/jsx(FormLabel, {
|
|
26559
|
-
label: "Arguments"
|
|
26560
|
-
}), /*#__PURE__*/jsx("p", {
|
|
26561
|
-
className: "text-sm opacity-50",
|
|
26562
|
-
children: "Space-separated arguments passed to the command"
|
|
26563
|
-
}), /*#__PURE__*/jsx(InputText, {
|
|
26564
|
-
value: args,
|
|
26565
|
-
onChange: setArgs,
|
|
26566
|
-
placeholder: "e.g., -y @modelcontextprotocol/server-github"
|
|
26567
|
-
})]
|
|
26568
|
-
}), /*#__PURE__*/jsxs("div", {
|
|
26569
|
-
className: "space-y-3",
|
|
26570
|
-
children: [/*#__PURE__*/jsx("div", {
|
|
26571
|
-
className: "flex items-center justify-between",
|
|
26572
|
-
children: /*#__PURE__*/jsxs("div", {
|
|
26573
|
-
children: [/*#__PURE__*/jsx(FormLabel, {
|
|
26574
|
-
label: "Environment Variable Mapping"
|
|
26766
|
+
children: "Transport Type"
|
|
26767
|
+
}), /*#__PURE__*/jsxs("div", {
|
|
26768
|
+
className: "grid grid-cols-2 gap-3",
|
|
26769
|
+
children: [/*#__PURE__*/jsxs(Card2, {
|
|
26770
|
+
hover: true,
|
|
26771
|
+
selected: transport === "stdio",
|
|
26772
|
+
onClick: function onClick() {
|
|
26773
|
+
return setTransport("stdio");
|
|
26774
|
+
},
|
|
26775
|
+
className: "text-left",
|
|
26776
|
+
children: [/*#__PURE__*/jsxs("div", {
|
|
26777
|
+
className: "flex items-center gap-2 mb-1",
|
|
26778
|
+
children: [/*#__PURE__*/jsx(Icon2, {
|
|
26779
|
+
icon: "terminal"
|
|
26780
|
+
}), /*#__PURE__*/jsx("span", {
|
|
26781
|
+
className: "font-semibold text-sm",
|
|
26782
|
+
children: "Local Process (stdio)"
|
|
26783
|
+
})]
|
|
26575
26784
|
}), /*#__PURE__*/jsx("p", {
|
|
26576
|
-
className: "text-
|
|
26577
|
-
children: "
|
|
26785
|
+
className: "text-xs opacity-50",
|
|
26786
|
+
children: "Spawn a local command as a child process"
|
|
26578
26787
|
})]
|
|
26788
|
+
}), /*#__PURE__*/jsxs(Card2, {
|
|
26789
|
+
hover: true,
|
|
26790
|
+
selected: transport === "streamable_http",
|
|
26791
|
+
onClick: function onClick() {
|
|
26792
|
+
return setTransport("streamable_http");
|
|
26793
|
+
},
|
|
26794
|
+
className: "text-left",
|
|
26795
|
+
children: [/*#__PURE__*/jsxs("div", {
|
|
26796
|
+
className: "flex items-center gap-2 mb-1",
|
|
26797
|
+
children: [/*#__PURE__*/jsx(Icon2, {
|
|
26798
|
+
icon: "globe"
|
|
26799
|
+
}), /*#__PURE__*/jsx("span", {
|
|
26800
|
+
className: "font-semibold text-sm",
|
|
26801
|
+
children: "Remote Server (HTTP)"
|
|
26802
|
+
})]
|
|
26803
|
+
}), /*#__PURE__*/jsx("p", {
|
|
26804
|
+
className: "text-xs opacity-50",
|
|
26805
|
+
children: "Connect to a remote MCP server via HTTP"
|
|
26806
|
+
})]
|
|
26807
|
+
})]
|
|
26808
|
+
})]
|
|
26809
|
+
}), transport === "stdio" && /*#__PURE__*/jsxs("div", {
|
|
26810
|
+
className: "space-y-4",
|
|
26811
|
+
children: [/*#__PURE__*/jsx("div", {
|
|
26812
|
+
className: "border-t border-white/10 pt-4",
|
|
26813
|
+
children: /*#__PURE__*/jsx("p", {
|
|
26814
|
+
className: "text-xs font-semibold opacity-40 uppercase tracking-wider",
|
|
26815
|
+
children: "Process Configuration"
|
|
26579
26816
|
})
|
|
26580
|
-
}),
|
|
26581
|
-
|
|
26582
|
-
|
|
26583
|
-
|
|
26584
|
-
|
|
26585
|
-
|
|
26586
|
-
|
|
26587
|
-
|
|
26588
|
-
|
|
26817
|
+
}), /*#__PURE__*/jsxs("div", {
|
|
26818
|
+
className: "flex flex-col gap-2",
|
|
26819
|
+
children: [/*#__PURE__*/jsx(FormLabel, {
|
|
26820
|
+
label: "Command",
|
|
26821
|
+
required: true
|
|
26822
|
+
}), /*#__PURE__*/jsx("p", {
|
|
26823
|
+
className: "text-sm opacity-50",
|
|
26824
|
+
children: "The executable to run (e.g., npx, node, python)"
|
|
26825
|
+
}), /*#__PURE__*/jsx(InputText, {
|
|
26826
|
+
value: command,
|
|
26827
|
+
onChange: function onChange(value) {
|
|
26828
|
+
setCommand(value);
|
|
26829
|
+
if (formErrors.command && value !== null && value !== void 0 && value.trim()) {
|
|
26830
|
+
setFormErrors(function (prev) {
|
|
26831
|
+
var next = _objectSpread$5({}, prev);
|
|
26832
|
+
delete next.command;
|
|
26833
|
+
return next;
|
|
26834
|
+
});
|
|
26835
|
+
}
|
|
26836
|
+
},
|
|
26837
|
+
placeholder: "e.g., npx"
|
|
26838
|
+
}), formErrors.command && /*#__PURE__*/jsx("p", {
|
|
26839
|
+
className: "text-sm text-red-400",
|
|
26840
|
+
children: formErrors.command
|
|
26841
|
+
})]
|
|
26842
|
+
}), /*#__PURE__*/jsxs("div", {
|
|
26843
|
+
className: "flex flex-col gap-2",
|
|
26844
|
+
children: [/*#__PURE__*/jsx(FormLabel, {
|
|
26845
|
+
label: "Arguments"
|
|
26846
|
+
}), /*#__PURE__*/jsx("p", {
|
|
26847
|
+
className: "text-sm opacity-50",
|
|
26848
|
+
children: "Space-separated arguments passed to the command"
|
|
26849
|
+
}), /*#__PURE__*/jsx(InputText, {
|
|
26850
|
+
value: args,
|
|
26851
|
+
onChange: setArgs,
|
|
26852
|
+
placeholder: "e.g., -y @modelcontextprotocol/server-github"
|
|
26853
|
+
})]
|
|
26854
|
+
}), /*#__PURE__*/jsxs("div", {
|
|
26855
|
+
className: "space-y-3",
|
|
26856
|
+
children: [/*#__PURE__*/jsx("div", {
|
|
26857
|
+
className: "flex items-center justify-between",
|
|
26858
|
+
children: /*#__PURE__*/jsxs("div", {
|
|
26859
|
+
children: [/*#__PURE__*/jsx(FormLabel, {
|
|
26860
|
+
label: "Environment Variable Mapping"
|
|
26861
|
+
}), /*#__PURE__*/jsx("p", {
|
|
26862
|
+
className: "text-sm opacity-50 mt-1",
|
|
26863
|
+
children: "Map environment variables to credential fields"
|
|
26864
|
+
})]
|
|
26865
|
+
})
|
|
26866
|
+
}), envMappingRows.map(function (row) {
|
|
26867
|
+
return /*#__PURE__*/jsxs("div", {
|
|
26868
|
+
className: "flex items-center gap-2",
|
|
26869
|
+
children: [/*#__PURE__*/jsx("div", {
|
|
26870
|
+
className: "flex-1",
|
|
26871
|
+
children: /*#__PURE__*/jsx(InputText, {
|
|
26872
|
+
value: row.envVar,
|
|
26873
|
+
onChange: function onChange(value) {
|
|
26874
|
+
return updateEnvRow(row.id, "envVar", value);
|
|
26875
|
+
},
|
|
26876
|
+
placeholder: "ENV_VAR_NAME"
|
|
26877
|
+
})
|
|
26878
|
+
}), /*#__PURE__*/jsx("span", {
|
|
26879
|
+
className: "opacity-30 text-sm shrink-0",
|
|
26880
|
+
children: "\u2192"
|
|
26881
|
+
}), /*#__PURE__*/jsx("div", {
|
|
26882
|
+
className: "flex-1",
|
|
26883
|
+
children: /*#__PURE__*/jsx(InputText, {
|
|
26884
|
+
value: row.credField,
|
|
26885
|
+
onChange: function onChange(value) {
|
|
26886
|
+
return updateEnvRow(row.id, "credField", value);
|
|
26887
|
+
},
|
|
26888
|
+
placeholder: "credentialField"
|
|
26889
|
+
})
|
|
26890
|
+
}), /*#__PURE__*/jsx("button", {
|
|
26891
|
+
onClick: function onClick() {
|
|
26892
|
+
return removeEnvRow(row.id);
|
|
26589
26893
|
},
|
|
26590
|
-
|
|
26591
|
-
|
|
26894
|
+
className: "text-gray-500 hover:text-red-400 transition-colors shrink-0",
|
|
26895
|
+
children: /*#__PURE__*/jsx(FontAwesomeIcon, {
|
|
26896
|
+
icon: "times",
|
|
26897
|
+
className: "text-sm"
|
|
26898
|
+
})
|
|
26899
|
+
})]
|
|
26900
|
+
}, row.id);
|
|
26901
|
+
}), /*#__PURE__*/jsxs("button", {
|
|
26902
|
+
onClick: addEnvRow,
|
|
26903
|
+
className: "text-sm text-blue-400 hover:text-blue-300 transition-colors flex items-center gap-1",
|
|
26904
|
+
children: [/*#__PURE__*/jsx(FontAwesomeIcon, {
|
|
26905
|
+
icon: "plus",
|
|
26906
|
+
className: "text-xs"
|
|
26592
26907
|
}), /*#__PURE__*/jsx("span", {
|
|
26593
|
-
|
|
26594
|
-
children: "\u2192"
|
|
26595
|
-
}), /*#__PURE__*/jsx("div", {
|
|
26596
|
-
className: "flex-1",
|
|
26597
|
-
children: /*#__PURE__*/jsx(InputText, {
|
|
26598
|
-
value: row.credField,
|
|
26599
|
-
onChange: function onChange(value) {
|
|
26600
|
-
return updateEnvRow(row.id, "credField", value);
|
|
26601
|
-
},
|
|
26602
|
-
placeholder: "credentialField"
|
|
26603
|
-
})
|
|
26604
|
-
}), /*#__PURE__*/jsx("button", {
|
|
26605
|
-
onClick: function onClick() {
|
|
26606
|
-
return removeEnvRow(row.id);
|
|
26607
|
-
},
|
|
26608
|
-
className: "text-gray-500 hover:text-red-400 transition-colors shrink-0",
|
|
26609
|
-
children: /*#__PURE__*/jsx(FontAwesomeIcon, {
|
|
26610
|
-
icon: "times",
|
|
26611
|
-
className: "text-sm"
|
|
26612
|
-
})
|
|
26908
|
+
children: "Add Environment Variable"
|
|
26613
26909
|
})]
|
|
26614
|
-
}, row.id);
|
|
26615
|
-
}), /*#__PURE__*/jsxs("button", {
|
|
26616
|
-
onClick: addEnvRow,
|
|
26617
|
-
className: "text-sm text-blue-400 hover:text-blue-300 transition-colors flex items-center gap-1",
|
|
26618
|
-
children: [/*#__PURE__*/jsx(FontAwesomeIcon, {
|
|
26619
|
-
icon: "plus",
|
|
26620
|
-
className: "text-xs"
|
|
26621
|
-
}), /*#__PURE__*/jsx("span", {
|
|
26622
|
-
children: "Add Environment Variable"
|
|
26623
26910
|
})]
|
|
26624
26911
|
})]
|
|
26625
|
-
})
|
|
26626
|
-
|
|
26627
|
-
|
|
26628
|
-
|
|
26629
|
-
|
|
26630
|
-
|
|
26631
|
-
|
|
26632
|
-
|
|
26633
|
-
})
|
|
26634
|
-
|
|
26635
|
-
className: "flex flex-col gap-2",
|
|
26636
|
-
children: [/*#__PURE__*/jsx(FormLabel, {
|
|
26637
|
-
label: "Server URL",
|
|
26638
|
-
required: true
|
|
26639
|
-
}), /*#__PURE__*/jsxs("p", {
|
|
26640
|
-
className: "text-sm opacity-50",
|
|
26641
|
-
children: ["Use", " ", /*#__PURE__*/jsx("code", {
|
|
26642
|
-
className: "text-xs bg-white/10 px-1 py-0.5 rounded",
|
|
26643
|
-
children: "{{fieldName}}"
|
|
26644
|
-
}), " ", "for values provided as credentials"]
|
|
26645
|
-
}), /*#__PURE__*/jsx(InputText, {
|
|
26646
|
-
value: url,
|
|
26647
|
-
onChange: function onChange(value) {
|
|
26648
|
-
setUrl(value);
|
|
26649
|
-
if (formErrors.url && value !== null && value !== void 0 && value.trim()) {
|
|
26650
|
-
setFormErrors(function (prev) {
|
|
26651
|
-
var next = _objectSpread$5({}, prev);
|
|
26652
|
-
delete next.url;
|
|
26653
|
-
return next;
|
|
26654
|
-
});
|
|
26655
|
-
}
|
|
26656
|
-
},
|
|
26657
|
-
placeholder: "e.g., https://mcp.example.com/sse"
|
|
26658
|
-
}), formErrors.url && /*#__PURE__*/jsx("p", {
|
|
26659
|
-
className: "text-sm text-red-400",
|
|
26660
|
-
children: formErrors.url
|
|
26661
|
-
})]
|
|
26662
|
-
}), /*#__PURE__*/jsxs("div", {
|
|
26663
|
-
className: "space-y-3",
|
|
26664
|
-
children: [/*#__PURE__*/jsxs("div", {
|
|
26912
|
+
}), transport === "streamable_http" && /*#__PURE__*/jsxs("div", {
|
|
26913
|
+
className: "space-y-4",
|
|
26914
|
+
children: [/*#__PURE__*/jsx("div", {
|
|
26915
|
+
className: "border-t border-white/10 pt-4",
|
|
26916
|
+
children: /*#__PURE__*/jsx("p", {
|
|
26917
|
+
className: "text-xs font-semibold opacity-40 uppercase tracking-wider",
|
|
26918
|
+
children: "Server Configuration"
|
|
26919
|
+
})
|
|
26920
|
+
}), /*#__PURE__*/jsxs("div", {
|
|
26921
|
+
className: "flex flex-col gap-2",
|
|
26665
26922
|
children: [/*#__PURE__*/jsx(FormLabel, {
|
|
26666
|
-
label: "
|
|
26923
|
+
label: "Server URL",
|
|
26924
|
+
required: true
|
|
26667
26925
|
}), /*#__PURE__*/jsxs("p", {
|
|
26668
|
-
className: "text-sm opacity-50
|
|
26926
|
+
className: "text-sm opacity-50",
|
|
26669
26927
|
children: ["Use", " ", /*#__PURE__*/jsx("code", {
|
|
26670
26928
|
className: "text-xs bg-white/10 px-1 py-0.5 rounded",
|
|
26671
26929
|
children: "{{fieldName}}"
|
|
26672
|
-
}), " ", "
|
|
26930
|
+
}), " ", "for values provided as credentials"]
|
|
26931
|
+
}), /*#__PURE__*/jsx(InputText, {
|
|
26932
|
+
value: url,
|
|
26933
|
+
onChange: function onChange(value) {
|
|
26934
|
+
setUrl(value);
|
|
26935
|
+
if (formErrors.url && value !== null && value !== void 0 && value.trim()) {
|
|
26936
|
+
setFormErrors(function (prev) {
|
|
26937
|
+
var next = _objectSpread$5({}, prev);
|
|
26938
|
+
delete next.url;
|
|
26939
|
+
return next;
|
|
26940
|
+
});
|
|
26941
|
+
}
|
|
26942
|
+
},
|
|
26943
|
+
placeholder: "e.g., https://mcp.example.com/sse"
|
|
26944
|
+
}), formErrors.url && /*#__PURE__*/jsx("p", {
|
|
26945
|
+
className: "text-sm text-red-400",
|
|
26946
|
+
children: formErrors.url
|
|
26673
26947
|
})]
|
|
26674
|
-
}),
|
|
26675
|
-
|
|
26676
|
-
|
|
26677
|
-
children: [/*#__PURE__*/jsx(
|
|
26678
|
-
|
|
26679
|
-
|
|
26680
|
-
|
|
26681
|
-
|
|
26682
|
-
|
|
26948
|
+
}), /*#__PURE__*/jsxs("div", {
|
|
26949
|
+
className: "space-y-3",
|
|
26950
|
+
children: [/*#__PURE__*/jsxs("div", {
|
|
26951
|
+
children: [/*#__PURE__*/jsx(FormLabel, {
|
|
26952
|
+
label: "Request Headers"
|
|
26953
|
+
}), /*#__PURE__*/jsxs("p", {
|
|
26954
|
+
className: "text-sm opacity-50 mt-1",
|
|
26955
|
+
children: ["Use", " ", /*#__PURE__*/jsx("code", {
|
|
26956
|
+
className: "text-xs bg-white/10 px-1 py-0.5 rounded",
|
|
26957
|
+
children: "{{fieldName}}"
|
|
26958
|
+
}), " ", "in values for credential placeholders"]
|
|
26959
|
+
})]
|
|
26960
|
+
}), headerRows.map(function (row) {
|
|
26961
|
+
return /*#__PURE__*/jsxs("div", {
|
|
26962
|
+
className: "flex items-center gap-2",
|
|
26963
|
+
children: [/*#__PURE__*/jsx("div", {
|
|
26964
|
+
className: "flex-1",
|
|
26965
|
+
children: /*#__PURE__*/jsx(InputText, {
|
|
26966
|
+
value: row.headerName,
|
|
26967
|
+
onChange: function onChange(value) {
|
|
26968
|
+
return updateHeaderRow(row.id, "headerName", value);
|
|
26969
|
+
},
|
|
26970
|
+
placeholder: "Header-Name"
|
|
26971
|
+
})
|
|
26972
|
+
}), /*#__PURE__*/jsx("span", {
|
|
26973
|
+
className: "opacity-30 text-sm shrink-0",
|
|
26974
|
+
children: ":"
|
|
26975
|
+
}), /*#__PURE__*/jsx("div", {
|
|
26976
|
+
className: "flex-1",
|
|
26977
|
+
children: /*#__PURE__*/jsx(InputText, {
|
|
26978
|
+
value: row.headerValue,
|
|
26979
|
+
onChange: function onChange(value) {
|
|
26980
|
+
return updateHeaderRow(row.id, "headerValue", value);
|
|
26981
|
+
},
|
|
26982
|
+
placeholder: "Bearer {{apiKey}}"
|
|
26983
|
+
})
|
|
26984
|
+
}), /*#__PURE__*/jsx("button", {
|
|
26985
|
+
onClick: function onClick() {
|
|
26986
|
+
return removeHeaderRow(row.id);
|
|
26683
26987
|
},
|
|
26684
|
-
|
|
26685
|
-
|
|
26988
|
+
className: "text-gray-500 hover:text-red-400 transition-colors shrink-0",
|
|
26989
|
+
children: /*#__PURE__*/jsx(FontAwesomeIcon, {
|
|
26990
|
+
icon: "times",
|
|
26991
|
+
className: "text-sm"
|
|
26992
|
+
})
|
|
26993
|
+
})]
|
|
26994
|
+
}, row.id);
|
|
26995
|
+
}), /*#__PURE__*/jsxs("button", {
|
|
26996
|
+
onClick: addHeaderRow,
|
|
26997
|
+
className: "text-sm text-blue-400 hover:text-blue-300 transition-colors flex items-center gap-1",
|
|
26998
|
+
children: [/*#__PURE__*/jsx(FontAwesomeIcon, {
|
|
26999
|
+
icon: "plus",
|
|
27000
|
+
className: "text-xs"
|
|
26686
27001
|
}), /*#__PURE__*/jsx("span", {
|
|
26687
|
-
|
|
26688
|
-
children: ":"
|
|
26689
|
-
}), /*#__PURE__*/jsx("div", {
|
|
26690
|
-
className: "flex-1",
|
|
26691
|
-
children: /*#__PURE__*/jsx(InputText, {
|
|
26692
|
-
value: row.headerValue,
|
|
26693
|
-
onChange: function onChange(value) {
|
|
26694
|
-
return updateHeaderRow(row.id, "headerValue", value);
|
|
26695
|
-
},
|
|
26696
|
-
placeholder: "Bearer {{apiKey}}"
|
|
26697
|
-
})
|
|
26698
|
-
}), /*#__PURE__*/jsx("button", {
|
|
26699
|
-
onClick: function onClick() {
|
|
26700
|
-
return removeHeaderRow(row.id);
|
|
26701
|
-
},
|
|
26702
|
-
className: "text-gray-500 hover:text-red-400 transition-colors shrink-0",
|
|
26703
|
-
children: /*#__PURE__*/jsx(FontAwesomeIcon, {
|
|
26704
|
-
icon: "times",
|
|
26705
|
-
className: "text-sm"
|
|
26706
|
-
})
|
|
27002
|
+
children: "Add Header"
|
|
26707
27003
|
})]
|
|
26708
|
-
}, row.id);
|
|
26709
|
-
}), /*#__PURE__*/jsxs("button", {
|
|
26710
|
-
onClick: addHeaderRow,
|
|
26711
|
-
className: "text-sm text-blue-400 hover:text-blue-300 transition-colors flex items-center gap-1",
|
|
26712
|
-
children: [/*#__PURE__*/jsx(FontAwesomeIcon, {
|
|
26713
|
-
icon: "plus",
|
|
26714
|
-
className: "text-xs"
|
|
26715
|
-
}), /*#__PURE__*/jsx("span", {
|
|
26716
|
-
children: "Add Header"
|
|
26717
27004
|
})]
|
|
26718
27005
|
})]
|
|
26719
|
-
})
|
|
26720
|
-
|
|
26721
|
-
|
|
26722
|
-
|
|
26723
|
-
|
|
26724
|
-
|
|
26725
|
-
|
|
26726
|
-
|
|
26727
|
-
|
|
26728
|
-
children: "Values for the fields referenced in your configuration above"
|
|
26729
|
-
})]
|
|
26730
|
-
}), formFields.map(function (field) {
|
|
26731
|
-
return /*#__PURE__*/jsxs("div", {
|
|
26732
|
-
className: "flex flex-col gap-2",
|
|
26733
|
-
children: [/*#__PURE__*/jsx(FormLabel, {
|
|
26734
|
-
label: field.displayName,
|
|
26735
|
-
required: field.required
|
|
26736
|
-
}), /*#__PURE__*/jsx(InputText, {
|
|
26737
|
-
type: field.secret ? "password" : "text",
|
|
26738
|
-
value: credentialData[field.key] || "",
|
|
26739
|
-
onChange: function onChange(value) {
|
|
26740
|
-
return handleCredentialChange(field.key, value);
|
|
26741
|
-
},
|
|
26742
|
-
placeholder: "Enter ".concat(field.displayName.toLowerCase())
|
|
26743
|
-
}), formErrors[field.key] && /*#__PURE__*/jsx("p", {
|
|
26744
|
-
className: "text-sm text-red-400",
|
|
26745
|
-
children: formErrors[field.key]
|
|
27006
|
+
}), formFields.length > 0 && /*#__PURE__*/jsxs(Fragment, {
|
|
27007
|
+
children: [/*#__PURE__*/jsxs("div", {
|
|
27008
|
+
className: "border-t border-white/10 pt-4",
|
|
27009
|
+
children: [/*#__PURE__*/jsx("p", {
|
|
27010
|
+
className: "text-xs font-semibold opacity-40 uppercase tracking-wider",
|
|
27011
|
+
children: "Credentials"
|
|
27012
|
+
}), /*#__PURE__*/jsx("p", {
|
|
27013
|
+
className: "text-sm opacity-50 mt-1",
|
|
27014
|
+
children: "Values for the fields referenced in your configuration above"
|
|
26746
27015
|
})]
|
|
26747
|
-
}, field
|
|
27016
|
+
}), formFields.map(function (field) {
|
|
27017
|
+
return /*#__PURE__*/jsxs("div", {
|
|
27018
|
+
className: "flex flex-col gap-2",
|
|
27019
|
+
children: [/*#__PURE__*/jsx(FormLabel, {
|
|
27020
|
+
label: field.displayName,
|
|
27021
|
+
required: field.required
|
|
27022
|
+
}), /*#__PURE__*/jsx(InputText, {
|
|
27023
|
+
type: field.secret ? "password" : "text",
|
|
27024
|
+
value: credentialData[field.key] || "",
|
|
27025
|
+
onChange: function onChange(value) {
|
|
27026
|
+
return handleCredentialChange(field.key, value);
|
|
27027
|
+
},
|
|
27028
|
+
placeholder: "Enter ".concat(field.displayName.toLowerCase())
|
|
27029
|
+
}), formErrors[field.key] && /*#__PURE__*/jsx("p", {
|
|
27030
|
+
className: "text-sm text-red-400",
|
|
27031
|
+
children: formErrors[field.key]
|
|
27032
|
+
})]
|
|
27033
|
+
}, field.key);
|
|
27034
|
+
})]
|
|
26748
27035
|
})]
|
|
26749
27036
|
}), testResult && /*#__PURE__*/jsxs("div", {
|
|
26750
27037
|
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"),
|
|
@@ -26782,7 +27069,7 @@ var CustomMcpServerForm = function CustomMcpServerForm(_ref2) {
|
|
|
26782
27069
|
onClick: handleTestConnection,
|
|
26783
27070
|
size: "sm"
|
|
26784
27071
|
}), /*#__PURE__*/jsx(Button, {
|
|
26785
|
-
title: "Save MCP Server",
|
|
27072
|
+
title: isEditMode ? "Save Changes" : "Save MCP Server",
|
|
26786
27073
|
onClick: handleSave,
|
|
26787
27074
|
size: "sm"
|
|
26788
27075
|
})]
|
|
@@ -27350,6 +27637,16 @@ var ProvidersSection = function ProvidersSection(_ref) {
|
|
|
27350
27637
|
_useState14 = _slicedToArray(_useState13, 2),
|
|
27351
27638
|
isAddingMcp = _useState14[0],
|
|
27352
27639
|
setIsAddingMcp = _useState14[1];
|
|
27640
|
+
var _useState15 = useState(false),
|
|
27641
|
+
_useState16 = _slicedToArray(_useState15, 2),
|
|
27642
|
+
isEditingMcp = _useState16[0],
|
|
27643
|
+
setIsEditingMcp = _useState16[1];
|
|
27644
|
+
|
|
27645
|
+
// Row ID counter for env/header rows in MCP edit mode
|
|
27646
|
+
var nextRowIdRef = useRef(0);
|
|
27647
|
+
var nextRowId = function nextRowId() {
|
|
27648
|
+
return "prov_row_".concat(++nextRowIdRef.current);
|
|
27649
|
+
};
|
|
27353
27650
|
var providerEntries = Object.entries(providers);
|
|
27354
27651
|
var appId = credentials === null || credentials === void 0 ? void 0 : credentials.appId;
|
|
27355
27652
|
|
|
@@ -27370,6 +27667,7 @@ var ProvidersSection = function ProvidersSection(_ref) {
|
|
|
27370
27667
|
setFormCredentials({});
|
|
27371
27668
|
setIsCreating(false);
|
|
27372
27669
|
setIsEditing(false);
|
|
27670
|
+
setIsEditingMcp(false);
|
|
27373
27671
|
}
|
|
27374
27672
|
function handleSave() {
|
|
27375
27673
|
if (!formName.trim() || !dashApi || !appId) return;
|
|
@@ -27392,11 +27690,17 @@ var ProvidersSection = function ProvidersSection(_ref) {
|
|
|
27392
27690
|
}
|
|
27393
27691
|
function handleStartEdit(name, provider) {
|
|
27394
27692
|
setSelectedName(name);
|
|
27395
|
-
setFormName(name);
|
|
27396
|
-
setFormType(provider.type || "");
|
|
27397
|
-
setFormCredentials(provider.credentials || {});
|
|
27398
|
-
setIsEditing(true);
|
|
27399
27693
|
setIsCreating(false);
|
|
27694
|
+
if (provider.providerClass === "mcp") {
|
|
27695
|
+
setIsEditingMcp(true);
|
|
27696
|
+
setIsEditing(false);
|
|
27697
|
+
} else {
|
|
27698
|
+
setFormName(name);
|
|
27699
|
+
setFormType(provider.type || "");
|
|
27700
|
+
setFormCredentials(provider.credentials || {});
|
|
27701
|
+
setIsEditing(true);
|
|
27702
|
+
setIsEditingMcp(false);
|
|
27703
|
+
}
|
|
27400
27704
|
}
|
|
27401
27705
|
function handleSaveEdit() {
|
|
27402
27706
|
if (!formName.trim() || !dashApi || !appId) return;
|
|
@@ -27456,6 +27760,30 @@ var ProvidersSection = function ProvidersSection(_ref) {
|
|
|
27456
27760
|
});
|
|
27457
27761
|
}
|
|
27458
27762
|
|
|
27763
|
+
// Handle MCP provider editing via CustomMcpServerForm
|
|
27764
|
+
function handleMcpEditSave(providerName, providerType, mcpCredentials, mcpConfig) {
|
|
27765
|
+
if (!dashApi || !appId) return;
|
|
27766
|
+
var originalName = selectedName;
|
|
27767
|
+
|
|
27768
|
+
// Delete old if name changed
|
|
27769
|
+
if (originalName && originalName !== providerName) {
|
|
27770
|
+
dashApi.deleteProvider(appId, originalName, function () {}, function () {});
|
|
27771
|
+
}
|
|
27772
|
+
dashApi.saveProvider(appId, providerName, {
|
|
27773
|
+
providerType: providerType,
|
|
27774
|
+
credentials: mcpCredentials,
|
|
27775
|
+
providerClass: "mcp",
|
|
27776
|
+
mcpConfig: mcpConfig
|
|
27777
|
+
}, function () {
|
|
27778
|
+
setSelectedName(providerName);
|
|
27779
|
+
setIsEditingMcp(false);
|
|
27780
|
+
resetForm();
|
|
27781
|
+
refreshProviders && refreshProviders();
|
|
27782
|
+
}, function (e, err) {
|
|
27783
|
+
return (void 0);
|
|
27784
|
+
});
|
|
27785
|
+
}
|
|
27786
|
+
|
|
27459
27787
|
// Respond to external create trigger from header
|
|
27460
27788
|
var prevCreateRequested = useRef(false);
|
|
27461
27789
|
useEffect(function () {
|
|
@@ -27574,6 +27902,23 @@ var ProvidersSection = function ProvidersSection(_ref) {
|
|
|
27574
27902
|
setIsCreating(false);
|
|
27575
27903
|
}
|
|
27576
27904
|
});
|
|
27905
|
+
} else if (isEditingMcp && selectedName && selectedProvider) {
|
|
27906
|
+
var mc = selectedProvider.mcpConfig || {};
|
|
27907
|
+
detailContent = /*#__PURE__*/jsx(CustomMcpServerForm, {
|
|
27908
|
+
isEditMode: true,
|
|
27909
|
+
initialName: selectedName,
|
|
27910
|
+
initialTransport: mc.transport || "stdio",
|
|
27911
|
+
initialCommand: mc.command || "",
|
|
27912
|
+
initialArgs: (mc.args || []).join(" "),
|
|
27913
|
+
initialEnvMappingRows: envMappingToRows(mc.envMapping, nextRowId),
|
|
27914
|
+
initialUrl: mc.url || "",
|
|
27915
|
+
initialHeaderRows: headerTemplateToRows(mc.headerTemplate, nextRowId),
|
|
27916
|
+
initialCredentials: selectedProvider.credentials || {},
|
|
27917
|
+
onSave: handleMcpEditSave,
|
|
27918
|
+
onBack: function onBack() {
|
|
27919
|
+
return setIsEditingMcp(false);
|
|
27920
|
+
}
|
|
27921
|
+
});
|
|
27577
27922
|
} else if (selectedName && selectedProvider) {
|
|
27578
27923
|
detailContent = /*#__PURE__*/jsx(ProviderDetail, {
|
|
27579
27924
|
providerName: selectedName,
|
|
@@ -33379,5 +33724,5 @@ var WorkspaceMenu = function WorkspaceMenu(_ref) {
|
|
|
33379
33724
|
|
|
33380
33725
|
ComponentManager.registerContainerTypes(LayoutContainer, LayoutGridContainer);
|
|
33381
33726
|
|
|
33382
|
-
export { ALGOLIA_ANALYTICS_FOR_QUERY, ALGOLIA_ANALYTICS_FOR_QUERY_COMPLETE, ALGOLIA_ANALYTICS_FOR_QUERY_ERROR, ALGOLIA_LIST_INDICES, ALGOLIA_LIST_INDICES_COMPLETE, ALGOLIA_LIST_INDICES_ERROR, AVAILABLE_COLORS, AddMenuItemModal, AdvancedMcpConfig, AppContext, AppSettingsModal, AppThemeScope, AppWrapper, CHOOSE_FILE, CHOOSE_FILE_COMPLETE, CHOOSE_FILE_ERROR, ColorModel, ComponentConfigModel, ComponentManager, ContextModel, DATA_JSON_TO_CSV_FILE, DATA_JSON_TO_CSV_FILE_COMPLETE, DATA_JSON_TO_CSV_FILE_ERROR, DATA_JSON_TO_CSV_STRING, DATA_JSON_TO_CSV_STRING_COMPLETE, DATA_JSON_TO_CSV_STRING_ERROR, DATA_READ_FROM_FILE, DATA_READ_FROM_FILE_COMPLETE, DATA_READ_FROM_FILE_ERROR, DATA_SAVE_TO_FILE, DATA_SAVE_TO_FILE_COMPLETE, DATA_SAVE_TO_FILE_ERROR, DashCommandPalette, DashNavbar, DashSidebar, DashTabBar, DashboardStage as Dashboard, DashboardApi, DashboardContext, DashboardFooter, DashboardHeader, DashboardMenuItem, DashboardModel, DashboardMonitor, DashboardPublisher, DashboardStage, DashboardThemeProvider, DashboardWrapper, ElectronDashboardApi, ErrorBoundary, ExternalWidget, GRID_CELL_WIDGET_TYPE, HARMONY_STRATEGIES, LAYOUT_LIST, LAYOUT_LIST_COMPLETE, LAYOUT_LIST_ERROR, LAYOUT_SAVE, LAYOUT_SAVE_COMPLETE, LAYOUT_SAVE_ERROR, Layout, LayoutBuilder, LayoutBuilderAddItemModal, LayoutBuilderConfigContainerMenuItem, LayoutBuilderConfigMenuItem, LayoutBuilderConfigModal, LayoutBuilderEditItemModal, LayoutBuilderEventModal, LayoutBuilderGridItem, LayoutContainer, LayoutDragBuilder, LayoutDragBuilderEdit, LayoutGridContainer, LayoutManagerModal, LayoutModel, LayoutQuickAddMenu, MCP_CALL_TOOL_COMPLETE, MCP_CALL_TOOL_ERROR, MCP_GET_CATALOG_COMPLETE, MCP_GET_CATALOG_ERROR, MCP_LIST_RESOURCES_COMPLETE, MCP_LIST_RESOURCES_ERROR, MCP_LIST_TOOLS_COMPLETE, MCP_LIST_TOOLS_ERROR, MCP_READ_RESOURCE_COMPLETE, MCP_READ_RESOURCE_ERROR, MCP_SERVER_STATUS_COMPLETE, MCP_SERVER_STATUS_ERROR, MCP_START_SERVER_COMPLETE, MCP_START_SERVER_ERROR, MCP_STOP_SERVER_COMPLETE, MCP_STOP_SERVER_ERROR, MENU_ITEMS_DELETE, MENU_ITEMS_DELETE_COMPLETE, MENU_ITEMS_DELETE_ERROR, MENU_ITEMS_LIST, MENU_ITEMS_LIST_COMPLETE, MENU_ITEMS_LIST_ERROR, MENU_ITEMS_SAVE, MENU_ITEMS_SAVE_COMPLETE, MENU_ITEMS_SAVE_ERROR, MainMenu, MainMenuItem, MainMenuSection, McpServerPicker, MenuItemModel, MenuSlideOverlay, MergeCellsModal, MissingProviderPrompt, MockDashboardApi, PROVIDER_DELETE_COMPLETE, PROVIDER_DELETE_ERROR, PROVIDER_GET_COMPLETE, PROVIDER_GET_ERROR, PROVIDER_LIST_COMPLETE, PROVIDER_LIST_ERROR, PROVIDER_SAVE_COMPLETE, PROVIDER_SAVE_ERROR, PanelCode, PanelEditItem, PanelEditItemHandlers, ProviderContext, ProviderErrorBoundary, ProviderForm, ProviderSelector, SECURE_STORAGE_ENCRYPT_STRING, SECURE_STORAGE_ENCRYPT_STRING_COMPLETE, SECURE_STORAGE_ENCRYPT_STRING_ERROR, SECURE_STORE_ENCRYPTION_CHECK, SECURE_STORE_ENCRYPTION_CHECK_COMPLETE, SECURE_STORE_ENCRYPTION_CHECK_ERROR, SECURE_STORE_GET_DATA, SECURE_STORE_GET_DATA_COMPLETE, SECURE_STORE_GET_DATA_ERROR, SECURE_STORE_SET_DATA, SECURE_STORE_SET_DATA_COMPLETE, SECURE_STORE_SET_DATA_ERROR, SETTINGS_GET, SETTINGS_GET_COMPLETE, SETTINGS_GET_ERROR, SETTINGS_SAVE, SETTINGS_SAVE_COMPLETE, SETTINGS_SAVE_ERROR, SIDEBAR_WIDGET_TYPE, SettingsModel, SideMenu, SplitCellModal, THEME_DELETE, THEME_DELETE_COMPLETE, THEME_DELETE_ERROR, THEME_LIST, THEME_LIST_COMPLETE, THEME_LIST_ERROR, THEME_SAVE, THEME_SAVE_COMPLETE, THEME_SAVE_ERROR, ThemeApi, ThemeManagerModal, ThemeModel, ThemeWrapper, WORKSPACE_DELETE, WORKSPACE_DELETE_COMPLETE, WORKSPACE_DELETE_ERROR, WORKSPACE_LIST, WORKSPACE_LIST_COMPLETE, WORKSPACE_LIST_ERROR, WORKSPACE_SAVE, WORKSPACE_SAVE_COMPLETE, WORKSPACE_SAVE_ERROR, WebDashboardApi, Widget, WidgetApi, WidgetConfigPanel, WidgetContext, WidgetFactory, WidgetPopoutStage, WidgetProviderWrapper, WidgetSidebar, Workspace, WorkspaceContext, WorkspaceFooter, WorkspaceMenu, WorkspaceModel, addChildToLayoutItem, addItemToItemLayout, buildMcpConfigFromOverrides, canHaveChildren, changeDirectionForLayoutItem, createProviderRegistry, deriveFormFields, envMappingToRows, evaluateBundle, extractWidgetConfigs, formatFieldName, generateCustomTheme, generateHarmonyTheme, generateRandomTheme, generateThemeName, getBorderStyle, getChildrenForLayoutItem, getComponentInLayout, getContainerBorderColor, getContainerColor, getIndexOfLayoutChildrenForItem, getIndexOfLayoutItem, getLayoutItemById, getLayoutItemForWorkspace, getNearestParentWorkspace, getNextHighestId, getNextHighestItemInLayout, getNextHighestOrder, getNextHighestParentId, getNextLowestItemInLayout, getParentForLayoutItem, getParentWorkspaceForItem, getThemePresets, getWidgetsForWorkspace, getWorkspacesForWorkspace, headerTemplateToRows, isContainer, isLikelySecret, isMaxOrderForItem, isMinOrderForItem, isWidget, isWidgetResolvable, isWorkspace, layoutItemHasWorkspaceAsChild, loadWidgetBundle, numChildrenForLayout, removeItemFromLayout, renderComponent, renderGridLayout, renderGridLayoutFlow, _renderLayout as renderLayout, renderLayoutMenu, replaceItemInLayout, resolveIcon, setHostModules, traverseParentTree, updateLayoutItem, updateParentForItem, useDashboard, useMcpProvider, useProvider, useProviderClient, useWidgetEvents, useWidgetProviders, validateCellMerge, validateGridCell, validateGridPlacement, validateWidgetPlacement, withProviderDetection };
|
|
33727
|
+
export { ALGOLIA_ANALYTICS_FOR_QUERY, ALGOLIA_ANALYTICS_FOR_QUERY_COMPLETE, ALGOLIA_ANALYTICS_FOR_QUERY_ERROR, ALGOLIA_LIST_INDICES, ALGOLIA_LIST_INDICES_COMPLETE, ALGOLIA_LIST_INDICES_ERROR, AVAILABLE_COLORS, AddMenuItemModal, AdvancedMcpConfig, AppContext, AppSettingsModal, AppThemeScope, AppWrapper, CHOOSE_FILE, CHOOSE_FILE_COMPLETE, CHOOSE_FILE_ERROR, ColorModel, ComponentConfigModel, ComponentManager, ContextModel, DATA_JSON_TO_CSV_FILE, DATA_JSON_TO_CSV_FILE_COMPLETE, DATA_JSON_TO_CSV_FILE_ERROR, DATA_JSON_TO_CSV_STRING, DATA_JSON_TO_CSV_STRING_COMPLETE, DATA_JSON_TO_CSV_STRING_ERROR, DATA_READ_FROM_FILE, DATA_READ_FROM_FILE_COMPLETE, DATA_READ_FROM_FILE_ERROR, DATA_SAVE_TO_FILE, DATA_SAVE_TO_FILE_COMPLETE, DATA_SAVE_TO_FILE_ERROR, DashCommandPalette, DashNavbar, DashSidebar, DashTabBar, DashboardStage as Dashboard, DashboardApi, DashboardContext, DashboardFooter, DashboardHeader, DashboardMenuItem, DashboardModel, DashboardMonitor, DashboardPublisher, DashboardStage, DashboardThemeProvider, DashboardWrapper, ElectronDashboardApi, ErrorBoundary, ExternalWidget, GRID_CELL_WIDGET_TYPE, HARMONY_STRATEGIES, LAYOUT_LIST, LAYOUT_LIST_COMPLETE, LAYOUT_LIST_ERROR, LAYOUT_SAVE, LAYOUT_SAVE_COMPLETE, LAYOUT_SAVE_ERROR, Layout, LayoutBuilder, LayoutBuilderAddItemModal, LayoutBuilderConfigContainerMenuItem, LayoutBuilderConfigMenuItem, LayoutBuilderConfigModal, LayoutBuilderEditItemModal, LayoutBuilderEventModal, LayoutBuilderGridItem, LayoutContainer, LayoutDragBuilder, LayoutDragBuilderEdit, LayoutGridContainer, LayoutManagerModal, LayoutModel, LayoutQuickAddMenu, MCP_CALL_TOOL_COMPLETE, MCP_CALL_TOOL_ERROR, MCP_GET_CATALOG_COMPLETE, MCP_GET_CATALOG_ERROR, MCP_LIST_RESOURCES_COMPLETE, MCP_LIST_RESOURCES_ERROR, MCP_LIST_TOOLS_COMPLETE, MCP_LIST_TOOLS_ERROR, MCP_READ_RESOURCE_COMPLETE, MCP_READ_RESOURCE_ERROR, MCP_SERVER_STATUS_COMPLETE, MCP_SERVER_STATUS_ERROR, MCP_START_SERVER_COMPLETE, MCP_START_SERVER_ERROR, MCP_STOP_SERVER_COMPLETE, MCP_STOP_SERVER_ERROR, MENU_ITEMS_DELETE, MENU_ITEMS_DELETE_COMPLETE, MENU_ITEMS_DELETE_ERROR, MENU_ITEMS_LIST, MENU_ITEMS_LIST_COMPLETE, MENU_ITEMS_LIST_ERROR, MENU_ITEMS_SAVE, MENU_ITEMS_SAVE_COMPLETE, MENU_ITEMS_SAVE_ERROR, MainMenu, MainMenuItem, MainMenuSection, McpServerPicker, MenuItemModel, MenuSlideOverlay, MergeCellsModal, MissingProviderPrompt, MockDashboardApi, PROVIDER_DELETE_COMPLETE, PROVIDER_DELETE_ERROR, PROVIDER_GET_COMPLETE, PROVIDER_GET_ERROR, PROVIDER_LIST_COMPLETE, PROVIDER_LIST_ERROR, PROVIDER_SAVE_COMPLETE, PROVIDER_SAVE_ERROR, PanelCode, PanelEditItem, PanelEditItemHandlers, ProviderContext, ProviderErrorBoundary, ProviderForm, ProviderSelector, SECURE_STORAGE_ENCRYPT_STRING, SECURE_STORAGE_ENCRYPT_STRING_COMPLETE, SECURE_STORAGE_ENCRYPT_STRING_ERROR, SECURE_STORE_ENCRYPTION_CHECK, SECURE_STORE_ENCRYPTION_CHECK_COMPLETE, SECURE_STORE_ENCRYPTION_CHECK_ERROR, SECURE_STORE_GET_DATA, SECURE_STORE_GET_DATA_COMPLETE, SECURE_STORE_GET_DATA_ERROR, SECURE_STORE_SET_DATA, SECURE_STORE_SET_DATA_COMPLETE, SECURE_STORE_SET_DATA_ERROR, SETTINGS_GET, SETTINGS_GET_COMPLETE, SETTINGS_GET_ERROR, SETTINGS_SAVE, SETTINGS_SAVE_COMPLETE, SETTINGS_SAVE_ERROR, SIDEBAR_WIDGET_TYPE, SettingsModel, SideMenu, SplitCellModal, THEME_DELETE, THEME_DELETE_COMPLETE, THEME_DELETE_ERROR, THEME_LIST, THEME_LIST_COMPLETE, THEME_LIST_ERROR, THEME_SAVE, THEME_SAVE_COMPLETE, THEME_SAVE_ERROR, ThemeApi, ThemeManagerModal, ThemeModel, ThemeWrapper, WORKSPACE_DELETE, WORKSPACE_DELETE_COMPLETE, WORKSPACE_DELETE_ERROR, WORKSPACE_LIST, WORKSPACE_LIST_COMPLETE, WORKSPACE_LIST_ERROR, WORKSPACE_SAVE, WORKSPACE_SAVE_COMPLETE, WORKSPACE_SAVE_ERROR, WebDashboardApi, Widget, WidgetApi, WidgetConfigPanel, WidgetContext, WidgetFactory, WidgetPopoutStage, WidgetProviderWrapper, WidgetSidebar, Workspace, WorkspaceContext, WorkspaceFooter, WorkspaceMenu, WorkspaceModel, addChildToLayoutItem, addItemToItemLayout, buildMcpConfigFromOverrides, canHaveChildren, changeDirectionForLayoutItem, createProviderRegistry, deriveFormFields, envMappingToRows, evaluateBundle, extractWidgetConfigs, formStateToMcpJson, formatFieldName, generateCustomTheme, generateHarmonyTheme, generateRandomTheme, generateThemeName, getBorderStyle, getChildrenForLayoutItem, getComponentInLayout, getContainerBorderColor, getContainerColor, getIndexOfLayoutChildrenForItem, getIndexOfLayoutItem, getLayoutItemById, getLayoutItemForWorkspace, getNearestParentWorkspace, getNextHighestId, getNextHighestItemInLayout, getNextHighestOrder, getNextHighestParentId, getNextLowestItemInLayout, getParentForLayoutItem, getParentWorkspaceForItem, getThemePresets, getWidgetsForWorkspace, getWorkspacesForWorkspace, headerTemplateToRows, isContainer, isLikelySecret, isMaxOrderForItem, isMinOrderForItem, isWidget, isWidgetResolvable, isWorkspace, layoutItemHasWorkspaceAsChild, loadWidgetBundle, mcpJsonToFormState, numChildrenForLayout, removeItemFromLayout, renderComponent, renderGridLayout, renderGridLayoutFlow, _renderLayout as renderLayout, renderLayoutMenu, replaceItemInLayout, resolveIcon, setHostModules, traverseParentTree, updateLayoutItem, updateParentForItem, useDashboard, useMcpProvider, useProvider, useProviderClient, useWidgetEvents, useWidgetProviders, validateCellMerge, validateGridCell, validateGridPlacement, validateWidgetPlacement, withProviderDetection };
|
|
33383
33728
|
//# sourceMappingURL=index.esm.js.map
|