@trops/dash-core 0.1.55 → 0.1.56

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 CHANGED
@@ -672,6 +672,8 @@ var MCP_SERVER_STATUS_COMPLETE = "mcp:server-status:complete";
672
672
  var MCP_SERVER_STATUS_ERROR = "mcp:server-status:error";
673
673
  var MCP_GET_CATALOG_COMPLETE = "mcp:get-catalog:complete";
674
674
  var MCP_GET_CATALOG_ERROR = "mcp:get-catalog:error";
675
+ var MCP_RUN_AUTH_COMPLETE = "mcp:run-auth:complete";
676
+ var MCP_RUN_AUTH_ERROR = "mcp:run-auth:error";
675
677
 
676
678
  var DATA_JSON_TO_CSV_FILE = "data-json-to-csv-file";
677
679
  var DATA_JSON_TO_CSV_FILE_COMPLETE = "data-json-to-csv-file-complete";
@@ -780,6 +782,8 @@ var apiEvents = /*#__PURE__*/Object.freeze({
780
782
  MCP_LIST_TOOLS_ERROR: MCP_LIST_TOOLS_ERROR,
781
783
  MCP_READ_RESOURCE_COMPLETE: MCP_READ_RESOURCE_COMPLETE,
782
784
  MCP_READ_RESOURCE_ERROR: MCP_READ_RESOURCE_ERROR,
785
+ MCP_RUN_AUTH_COMPLETE: MCP_RUN_AUTH_COMPLETE,
786
+ MCP_RUN_AUTH_ERROR: MCP_RUN_AUTH_ERROR,
783
787
  MCP_SERVER_STATUS_COMPLETE: MCP_SERVER_STATUS_COMPLETE,
784
788
  MCP_SERVER_STATUS_ERROR: MCP_SERVER_STATUS_ERROR,
785
789
  MCP_START_SERVER_COMPLETE: MCP_START_SERVER_COMPLETE,
@@ -1478,6 +1482,27 @@ var ElectronDashboardApi = /*#__PURE__*/function () {
1478
1482
  return false;
1479
1483
  }
1480
1484
  }
1485
+ }, {
1486
+ key: "mcpRunAuth",
1487
+ value: function mcpRunAuth(mcpConfig, credentials, authCommand, onSuccess, onError) {
1488
+ var _this26 = this;
1489
+ if (this.api !== null) {
1490
+ try {
1491
+ this.api.mcp.runAuth(mcpConfig, credentials, authCommand).then(function (result) {
1492
+ onSuccess(_this26.events.MCP_RUN_AUTH_COMPLETE, result);
1493
+ })["catch"](function (error) {
1494
+ onError(_this26.events.MCP_RUN_AUTH_ERROR, error);
1495
+ });
1496
+ return true;
1497
+ } catch (e) {
1498
+ onError(this.events.MCP_RUN_AUTH_ERROR, e);
1499
+ return false;
1500
+ }
1501
+ } else {
1502
+ onError(this.events.MCP_RUN_AUTH_ERROR, new Error("No Api found"));
1503
+ return false;
1504
+ }
1505
+ }
1481
1506
  }]);
1482
1507
  }();
1483
1508
 
@@ -25849,7 +25874,7 @@ var FoldersSection = function FoldersSection(_ref) {
25849
25874
  function ownKeys$6(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; }
25850
25875
  function _objectSpread$6(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$6(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$6(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
25851
25876
  var ProviderDetail = function ProviderDetail(_ref) {
25852
- var _testResult$tools;
25877
+ var _provider$mcpConfig, _testResult$tools;
25853
25878
  var _ref$providerName = _ref.providerName,
25854
25879
  providerName = _ref$providerName === void 0 ? null : _ref$providerName,
25855
25880
  _ref$provider = _ref.provider,
@@ -25871,7 +25896,9 @@ var ProviderDetail = function ProviderDetail(_ref) {
25871
25896
  onCancelEdit = _ref.onCancelEdit,
25872
25897
  onStartEdit = _ref.onStartEdit,
25873
25898
  onCreate = _ref.onCreate,
25874
- onDelete = _ref.onDelete;
25899
+ onDelete = _ref.onDelete,
25900
+ _ref$catalogAuthComma = _ref.catalogAuthCommand,
25901
+ catalogAuthCommand = _ref$catalogAuthComma === void 0 ? null : _ref$catalogAuthComma;
25875
25902
  var appContext = useContext(AppContext);
25876
25903
  var dashApi = appContext === null || appContext === void 0 ? void 0 : appContext.dashApi;
25877
25904
  var isMcp = (provider === null || provider === void 0 ? void 0 : provider.providerClass) === "mcp";
@@ -25886,6 +25913,19 @@ var ProviderDetail = function ProviderDetail(_ref) {
25886
25913
  testResult = _useState4[0],
25887
25914
  setTestResult = _useState4[1];
25888
25915
 
25916
+ // MCP auth state
25917
+ var _useState5 = useState(false),
25918
+ _useState6 = _slicedToArray(_useState5, 2),
25919
+ isAuthorizing = _useState6[0],
25920
+ setIsAuthorizing = _useState6[1];
25921
+ var _useState7 = useState(null),
25922
+ _useState8 = _slicedToArray(_useState7, 2),
25923
+ authResult = _useState8[0],
25924
+ setAuthResult = _useState8[1];
25925
+
25926
+ // Resolve authCommand: provider.mcpConfig.authCommand > catalogAuthCommand prop
25927
+ var resolvedAuthCommand = (provider === null || provider === void 0 || (_provider$mcpConfig = provider.mcpConfig) === null || _provider$mcpConfig === void 0 ? void 0 : _provider$mcpConfig.authCommand) || catalogAuthCommand || null;
25928
+
25889
25929
  // Derive credential fields for MCP providers in edit mode
25890
25930
  var mcpFormFields = useMemo(function () {
25891
25931
  if (!isMcp || !(provider !== null && provider !== void 0 && provider.mcpConfig)) return [];
@@ -25899,14 +25939,14 @@ var ProviderDetail = function ProviderDetail(_ref) {
25899
25939
  }, [isMcp, provider]);
25900
25940
 
25901
25941
  // Dynamic credential fields for create mode
25902
- var _useState5 = useState(isCreating ? [{
25942
+ var _useState9 = useState(isCreating ? [{
25903
25943
  id: "default_apiKey",
25904
25944
  key: "apiKey",
25905
25945
  secret: true
25906
25946
  }] : []),
25907
- _useState6 = _slicedToArray(_useState5, 2),
25908
- credentialFields = _useState6[0],
25909
- setCredentialFields = _useState6[1];
25947
+ _useState0 = _slicedToArray(_useState9, 2),
25948
+ credentialFields = _useState0[0],
25949
+ setCredentialFields = _useState0[1];
25910
25950
  var fieldIdRef = useRef(0);
25911
25951
  var handleFieldKeyChange = function handleFieldKeyChange(id, newKey) {
25912
25952
  setCredentialFields(function (prev) {
@@ -26009,6 +26049,31 @@ var ProviderDetail = function ProviderDetail(_ref) {
26009
26049
  setIsTesting(false);
26010
26050
  });
26011
26051
  };
26052
+ var handleAuthorize = function handleAuthorize() {
26053
+ if (!dashApi || !(provider !== null && provider !== void 0 && provider.mcpConfig) || !resolvedAuthCommand) return;
26054
+ setIsAuthorizing(true);
26055
+ setAuthResult(null);
26056
+ dashApi.mcpRunAuth(provider.mcpConfig, provider.credentials, resolvedAuthCommand, function (event, result) {
26057
+ if (result.error) {
26058
+ setAuthResult({
26059
+ success: false,
26060
+ message: result.message
26061
+ });
26062
+ } else {
26063
+ setAuthResult({
26064
+ success: true,
26065
+ message: "Authorized!"
26066
+ });
26067
+ }
26068
+ setIsAuthorizing(false);
26069
+ }, function (event, err) {
26070
+ setAuthResult({
26071
+ success: false,
26072
+ message: (err === null || err === void 0 ? void 0 : err.message) || "Authorization failed"
26073
+ });
26074
+ setIsAuthorizing(false);
26075
+ });
26076
+ };
26012
26077
  var isFormMode = isEditing || isCreating;
26013
26078
 
26014
26079
  // ── MCP config info block (shared between read-only view and edit form) ──
@@ -26062,7 +26127,7 @@ var ProviderDetail = function ProviderDetail(_ref) {
26062
26127
 
26063
26128
  // ── Edit / Create form ──
26064
26129
  if (isFormMode) {
26065
- var _provider$mcpConfig;
26130
+ var _provider$mcpConfig2;
26066
26131
  return /*#__PURE__*/jsxs("div", {
26067
26132
  className: "flex flex-col flex-1 min-h-0",
26068
26133
  children: [/*#__PURE__*/jsxs("div", {
@@ -26159,7 +26224,7 @@ var ProviderDetail = function ProviderDetail(_ref) {
26159
26224
  className: "border-t border-white/10 pt-4",
26160
26225
  children: /*#__PURE__*/jsx("p", {
26161
26226
  className: "text-xs font-semibold opacity-40 uppercase tracking-wider",
26162
- children: ((_provider$mcpConfig = provider.mcpConfig) === null || _provider$mcpConfig === void 0 ? void 0 : _provider$mcpConfig.transport) === "streamable_http" ? "Server Configuration" : "Authentication"
26227
+ children: ((_provider$mcpConfig2 = provider.mcpConfig) === null || _provider$mcpConfig2 === void 0 ? void 0 : _provider$mcpConfig2.transport) === "streamable_http" ? "Server Configuration" : "Authentication"
26163
26228
  })
26164
26229
  }), mcpFormFields.map(function (field) {
26165
26230
  return /*#__PURE__*/jsxs("div", {
@@ -26170,13 +26235,38 @@ var ProviderDetail = function ProviderDetail(_ref) {
26170
26235
  }), field.instructions && /*#__PURE__*/jsx("p", {
26171
26236
  className: "text-sm opacity-50",
26172
26237
  children: field.instructions
26173
- }), /*#__PURE__*/jsx(InputText, {
26174
- type: field.secret ? "password" : "text",
26175
- value: formCredentials[field.key] || "",
26176
- onChange: function onChange(value) {
26177
- return handleCredentialChange(field.key, value);
26178
- },
26179
- placeholder: "Enter ".concat(field.displayName.toLowerCase())
26238
+ }), /*#__PURE__*/jsxs("div", {
26239
+ className: "flex gap-2",
26240
+ children: [/*#__PURE__*/jsx("div", {
26241
+ className: "flex-1",
26242
+ children: /*#__PURE__*/jsx(InputText, {
26243
+ type: field.secret ? "password" : "text",
26244
+ value: formCredentials[field.key] || "",
26245
+ onChange: function onChange(value) {
26246
+ return handleCredentialChange(field.key, value);
26247
+ },
26248
+ placeholder: field.type === "file" ? "Select a file..." : "Enter ".concat(field.displayName.toLowerCase())
26249
+ })
26250
+ }), field.type === "file" && /*#__PURE__*/jsx("button", {
26251
+ onClick: /*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee() {
26252
+ var filepath;
26253
+ return _regeneratorRuntime.wrap(function (_context) {
26254
+ while (1) switch (_context.prev = _context.next) {
26255
+ case 0:
26256
+ _context.next = 1;
26257
+ return window.mainApi.dialog.chooseFile(true, ["json"]);
26258
+ case 1:
26259
+ filepath = _context.sent;
26260
+ if (filepath) handleCredentialChange(field.key, filepath);
26261
+ case 2:
26262
+ case "end":
26263
+ return _context.stop();
26264
+ }
26265
+ }, _callee);
26266
+ })),
26267
+ className: "px-3 py-1.5 text-sm rounded bg-white/10 hover:bg-white/20 transition-colors",
26268
+ children: "Browse"
26269
+ })]
26180
26270
  })]
26181
26271
  }, field.key);
26182
26272
  })]
@@ -26296,6 +26386,16 @@ var ProviderDetail = function ProviderDetail(_ref) {
26296
26386
  })]
26297
26387
  })]
26298
26388
  })]
26389
+ }), authResult && /*#__PURE__*/jsx("div", {
26390
+ 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"),
26391
+ children: /*#__PURE__*/jsxs("div", {
26392
+ className: "flex items-center gap-2",
26393
+ children: [/*#__PURE__*/jsx(FontAwesomeIcon, {
26394
+ icon: authResult.success ? "circle-check" : "circle-exclamation"
26395
+ }), /*#__PURE__*/jsx("span", {
26396
+ children: authResult.message
26397
+ })]
26398
+ })
26299
26399
  }), testResult && /*#__PURE__*/jsxs("div", {
26300
26400
  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"),
26301
26401
  children: [/*#__PURE__*/jsxs("div", {
@@ -26324,7 +26424,11 @@ var ProviderDetail = function ProviderDetail(_ref) {
26324
26424
  })]
26325
26425
  }), /*#__PURE__*/jsxs("div", {
26326
26426
  className: "flex-shrink-0 flex flex-row justify-end gap-2 px-6 py-4 border-t border-white/10",
26327
- children: [isMcp && /*#__PURE__*/jsx(Button, {
26427
+ children: [isMcp && resolvedAuthCommand && /*#__PURE__*/jsx(Button, {
26428
+ title: isAuthorizing ? "Authorizing..." : "Authorize",
26429
+ onClick: handleAuthorize,
26430
+ size: "sm"
26431
+ }), isMcp && /*#__PURE__*/jsx(Button, {
26328
26432
  title: isTesting ? "Testing..." : "Test Connection",
26329
26433
  onClick: handleTestConnection,
26330
26434
  size: "sm"
@@ -27055,13 +27159,38 @@ var CustomMcpServerForm = function CustomMcpServerForm(_ref2) {
27055
27159
  children: [/*#__PURE__*/jsx(FormLabel, {
27056
27160
  label: field.displayName,
27057
27161
  required: field.required
27058
- }), /*#__PURE__*/jsx(InputText, {
27059
- type: field.secret ? "password" : "text",
27060
- value: credentialData[field.key] || "",
27061
- onChange: function onChange(value) {
27062
- return handleCredentialChange(field.key, value);
27063
- },
27064
- placeholder: "Enter ".concat(field.displayName.toLowerCase())
27162
+ }), /*#__PURE__*/jsxs("div", {
27163
+ className: "flex gap-2",
27164
+ children: [/*#__PURE__*/jsx("div", {
27165
+ className: "flex-1",
27166
+ children: /*#__PURE__*/jsx(InputText, {
27167
+ type: field.secret ? "password" : "text",
27168
+ value: credentialData[field.key] || "",
27169
+ onChange: function onChange(value) {
27170
+ return handleCredentialChange(field.key, value);
27171
+ },
27172
+ placeholder: field.type === "file" ? "Select a file..." : "Enter ".concat(field.displayName.toLowerCase())
27173
+ })
27174
+ }), field.type === "file" && /*#__PURE__*/jsx("button", {
27175
+ onClick: /*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee() {
27176
+ var filepath;
27177
+ return _regeneratorRuntime.wrap(function (_context) {
27178
+ while (1) switch (_context.prev = _context.next) {
27179
+ case 0:
27180
+ _context.next = 1;
27181
+ return window.mainApi.dialog.chooseFile(true, ["json"]);
27182
+ case 1:
27183
+ filepath = _context.sent;
27184
+ if (filepath) handleCredentialChange(field.key, filepath);
27185
+ case 2:
27186
+ case "end":
27187
+ return _context.stop();
27188
+ }
27189
+ }, _callee);
27190
+ })),
27191
+ className: "px-3 py-1.5 text-sm rounded bg-white/10 hover:bg-white/20 transition-colors",
27192
+ children: "Browse"
27193
+ })]
27065
27194
  }), formErrors[field.key] && /*#__PURE__*/jsx("p", {
27066
27195
  className: "text-sm text-red-400",
27067
27196
  children: formErrors[field.key]
@@ -27496,13 +27625,38 @@ var McpCatalogDetail = function McpCatalogDetail(_ref) {
27496
27625
  }), field.instructions && /*#__PURE__*/jsx("p", {
27497
27626
  className: "text-sm opacity-50",
27498
27627
  children: field.instructions
27499
- }), /*#__PURE__*/jsx(InputText, {
27500
- type: field.secret ? "password" : "text",
27501
- value: credentialData[field.key] || "",
27502
- onChange: function onChange(value) {
27503
- return handleCredentialChange(field.key, value);
27504
- },
27505
- placeholder: "Enter ".concat(field.displayName.toLowerCase())
27628
+ }), /*#__PURE__*/jsxs("div", {
27629
+ className: "flex gap-2",
27630
+ children: [/*#__PURE__*/jsx("div", {
27631
+ className: "flex-1",
27632
+ children: /*#__PURE__*/jsx(InputText, {
27633
+ type: field.secret ? "password" : "text",
27634
+ value: credentialData[field.key] || "",
27635
+ onChange: function onChange(value) {
27636
+ return handleCredentialChange(field.key, value);
27637
+ },
27638
+ placeholder: field.type === "file" ? "Select a file..." : "Enter ".concat(field.displayName.toLowerCase())
27639
+ })
27640
+ }), field.type === "file" && /*#__PURE__*/jsx("button", {
27641
+ onClick: /*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee() {
27642
+ var filepath;
27643
+ return _regeneratorRuntime.wrap(function (_context) {
27644
+ while (1) switch (_context.prev = _context.next) {
27645
+ case 0:
27646
+ _context.next = 1;
27647
+ return window.mainApi.dialog.chooseFile(true, ["json"]);
27648
+ case 1:
27649
+ filepath = _context.sent;
27650
+ if (filepath) handleCredentialChange(field.key, filepath);
27651
+ case 2:
27652
+ case "end":
27653
+ return _context.stop();
27654
+ }
27655
+ }, _callee);
27656
+ })),
27657
+ className: "px-3 py-1.5 text-sm rounded bg-white/10 hover:bg-white/20 transition-colors",
27658
+ children: "Browse"
27659
+ })]
27506
27660
  }), formErrors[field.key] && /*#__PURE__*/jsx("p", {
27507
27661
  className: "text-sm text-red-400",
27508
27662
  children: formErrors[field.key]
@@ -27641,46 +27795,58 @@ var ProvidersSection = function ProvidersSection(_ref) {
27641
27795
  var appContext = useContext(AppContext);
27642
27796
  var providers = (appContext === null || appContext === void 0 ? void 0 : appContext.providers) || {};
27643
27797
  var refreshProviders = appContext === null || appContext === void 0 ? void 0 : appContext.refreshProviders;
27644
- var _useState = useState("credentials"),
27798
+
27799
+ // Load MCP catalog for authCommand lookups
27800
+ var _useState = useState([]),
27645
27801
  _useState2 = _slicedToArray(_useState, 2),
27646
- providerTab = _useState2[0],
27647
- setProviderTab = _useState2[1];
27648
- var _useState3 = useState(null),
27802
+ catalog = _useState2[0],
27803
+ setCatalog = _useState2[1];
27804
+ useEffect(function () {
27805
+ if (!dashApi) return;
27806
+ dashApi.mcpGetCatalog(function (event, result) {
27807
+ if (result !== null && result !== void 0 && result.catalog) setCatalog(result.catalog);
27808
+ }, function () {});
27809
+ }, [dashApi]);
27810
+ var _useState3 = useState("credentials"),
27649
27811
  _useState4 = _slicedToArray(_useState3, 2),
27650
- selectedName = _useState4[0],
27651
- setSelectedName = _useState4[1];
27652
- var _useState5 = useState(false),
27812
+ providerTab = _useState4[0],
27813
+ setProviderTab = _useState4[1];
27814
+ var _useState5 = useState(null),
27653
27815
  _useState6 = _slicedToArray(_useState5, 2),
27654
- isCreating = _useState6[0],
27655
- setIsCreating = _useState6[1];
27816
+ selectedName = _useState6[0],
27817
+ setSelectedName = _useState6[1];
27656
27818
  var _useState7 = useState(false),
27657
27819
  _useState8 = _slicedToArray(_useState7, 2),
27658
- isEditing = _useState8[0],
27659
- setIsEditing = _useState8[1];
27660
- var _useState9 = useState(""),
27820
+ isCreating = _useState8[0],
27821
+ setIsCreating = _useState8[1];
27822
+ var _useState9 = useState(false),
27661
27823
  _useState0 = _slicedToArray(_useState9, 2),
27662
- formName = _useState0[0],
27663
- setFormName = _useState0[1];
27824
+ isEditing = _useState0[0],
27825
+ setIsEditing = _useState0[1];
27664
27826
  var _useState1 = useState(""),
27665
27827
  _useState10 = _slicedToArray(_useState1, 2),
27666
- formType = _useState10[0],
27667
- setFormType = _useState10[1];
27668
- var _useState11 = useState({}),
27828
+ formName = _useState10[0],
27829
+ setFormName = _useState10[1];
27830
+ var _useState11 = useState(""),
27669
27831
  _useState12 = _slicedToArray(_useState11, 2),
27670
- formCredentials = _useState12[0],
27671
- setFormCredentials = _useState12[1];
27672
- var _useState13 = useState(null),
27832
+ formType = _useState12[0],
27833
+ setFormType = _useState12[1];
27834
+ var _useState13 = useState({}),
27673
27835
  _useState14 = _slicedToArray(_useState13, 2),
27674
- deleteTarget = _useState14[0],
27675
- setDeleteTarget = _useState14[1];
27676
- var _useState15 = useState(false),
27836
+ formCredentials = _useState14[0],
27837
+ setFormCredentials = _useState14[1];
27838
+ var _useState15 = useState(null),
27677
27839
  _useState16 = _slicedToArray(_useState15, 2),
27678
- isAddingMcp = _useState16[0],
27679
- setIsAddingMcp = _useState16[1];
27840
+ deleteTarget = _useState16[0],
27841
+ setDeleteTarget = _useState16[1];
27680
27842
  var _useState17 = useState(false),
27681
27843
  _useState18 = _slicedToArray(_useState17, 2),
27682
- isEditingMcp = _useState18[0],
27683
- setIsEditingMcp = _useState18[1];
27844
+ isAddingMcp = _useState18[0],
27845
+ setIsAddingMcp = _useState18[1];
27846
+ var _useState19 = useState(false),
27847
+ _useState20 = _slicedToArray(_useState19, 2),
27848
+ isEditingMcp = _useState20[0],
27849
+ setIsEditingMcp = _useState20[1];
27684
27850
 
27685
27851
  // Row ID counter for env/header rows in MCP edit mode
27686
27852
  var nextRowIdRef = useRef(0);
@@ -27955,6 +28121,10 @@ var ProvidersSection = function ProvidersSection(_ref) {
27955
28121
  }
27956
28122
  });
27957
28123
  } else if (selectedName && selectedProvider) {
28124
+ // Look up authCommand from the catalog for this provider type
28125
+ var catalogEntry = catalog.find(function (entry) {
28126
+ return entry.id === selectedProvider.type;
28127
+ });
27958
28128
  detailContent = /*#__PURE__*/jsx(ProviderDetail, {
27959
28129
  providerName: selectedName,
27960
28130
  provider: selectedProvider,
@@ -27970,7 +28140,8 @@ var ProvidersSection = function ProvidersSection(_ref) {
27970
28140
  onStartEdit: handleStartEdit,
27971
28141
  onDelete: function onDelete(name) {
27972
28142
  return setDeleteTarget(name);
27973
- }
28143
+ },
28144
+ catalogAuthCommand: (catalogEntry === null || catalogEntry === void 0 ? void 0 : catalogEntry.authCommand) || null
27974
28145
  });
27975
28146
  }
27976
28147
  return /*#__PURE__*/jsxs(Fragment, {
@@ -33759,5 +33930,5 @@ var WorkspaceMenu = function WorkspaceMenu(_ref) {
33759
33930
 
33760
33931
  ComponentManager.registerContainerTypes(LayoutContainer, LayoutGridContainer);
33761
33932
 
33762
- 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 };
33933
+ 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_RUN_AUTH_COMPLETE, MCP_RUN_AUTH_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 };
33763
33934
  //# sourceMappingURL=index.esm.js.map