@trops/dash-core 0.1.815 → 0.1.816
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 +181 -26
- package/dist/index.esm.js.map +1 -1
- package/dist/index.js +181 -26
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/index.esm.js
CHANGED
|
@@ -47798,6 +47798,93 @@ function providerUsage(name, _ref2) {
|
|
|
47798
47798
|
count: dashboards.length + usedBy.length
|
|
47799
47799
|
};
|
|
47800
47800
|
}
|
|
47801
|
+
var MAX_NAMES = 3;
|
|
47802
|
+
var plural$7 = function plural(n, word) {
|
|
47803
|
+
return "".concat(n, " ").concat(word).concat(n === 1 ? "" : "s");
|
|
47804
|
+
};
|
|
47805
|
+
var nameList = function nameList(names) {
|
|
47806
|
+
return names.length > MAX_NAMES ? "".concat(names.slice(0, MAX_NAMES).join(", "), " and ").concat(names.length - MAX_NAMES, " more") : names.join(", ");
|
|
47807
|
+
};
|
|
47808
|
+
|
|
47809
|
+
/** "1 dashboard (Sales) and 2 bots (Digest, Loose)", or "" when unused. */
|
|
47810
|
+
function providerUsedByText(usage) {
|
|
47811
|
+
var parts = [];
|
|
47812
|
+
var dashboards = usage && usage.dashboards || [];
|
|
47813
|
+
var bots = usage && usage.bots || [];
|
|
47814
|
+
if (dashboards.length) {
|
|
47815
|
+
parts.push("".concat(plural$7(dashboards.length, "dashboard"), " (").concat(nameList(dashboards.map(function (d) {
|
|
47816
|
+
return d.workspaceName;
|
|
47817
|
+
})), ")"));
|
|
47818
|
+
}
|
|
47819
|
+
if (bots.length) {
|
|
47820
|
+
parts.push("".concat(plural$7(bots.length, "bot"), " (").concat(nameList(bots.map(function (b) {
|
|
47821
|
+
return b.name;
|
|
47822
|
+
})), ")"));
|
|
47823
|
+
}
|
|
47824
|
+
return parts.join(" and ");
|
|
47825
|
+
}
|
|
47826
|
+
|
|
47827
|
+
// Who's affected, worded for one bot, one dashboard, or several.
|
|
47828
|
+
function affected(usage) {
|
|
47829
|
+
var dashboards = usage && usage.dashboards || [];
|
|
47830
|
+
var bots = usage && usage.bots || [];
|
|
47831
|
+
if (bots.length === 1 && !dashboards.length) {
|
|
47832
|
+
return {
|
|
47833
|
+
subject: "that bot",
|
|
47834
|
+
s: "s",
|
|
47835
|
+
them: "it"
|
|
47836
|
+
};
|
|
47837
|
+
}
|
|
47838
|
+
if (dashboards.length === 1 && !bots.length) {
|
|
47839
|
+
return {
|
|
47840
|
+
subject: "that dashboard's widgets",
|
|
47841
|
+
s: "",
|
|
47842
|
+
them: "them"
|
|
47843
|
+
};
|
|
47844
|
+
}
|
|
47845
|
+
return {
|
|
47846
|
+
subject: "they",
|
|
47847
|
+
s: "",
|
|
47848
|
+
them: "them"
|
|
47849
|
+
};
|
|
47850
|
+
}
|
|
47851
|
+
|
|
47852
|
+
/**
|
|
47853
|
+
* The Delete confirm (QA 2026-10-22: it never said what uses it). Null
|
|
47854
|
+
* usage = not known yet (bots still loading, or no dashboards given).
|
|
47855
|
+
*/
|
|
47856
|
+
function providerDeleteMessage(name, usage) {
|
|
47857
|
+
if (!usage) {
|
|
47858
|
+
return "Widgets and bots that use ".concat(name, " will need another provider picked before they work again. This can't be undone.");
|
|
47859
|
+
}
|
|
47860
|
+
var usedBy = providerUsedByText(usage);
|
|
47861
|
+
if (!usedBy) return "Nothing uses ".concat(name, ". This can't be undone.");
|
|
47862
|
+
var _affected = affected(usage),
|
|
47863
|
+
subject = _affected.subject,
|
|
47864
|
+
s = _affected.s;
|
|
47865
|
+
var it = s ? "it" : "they";
|
|
47866
|
+
return "".concat(name, " is used by ").concat(usedBy, ". Once it's deleted, ").concat(subject, " need").concat(s, " another provider picked before ").concat(it, " work").concat(s, " again. This can't be undone.");
|
|
47867
|
+
}
|
|
47868
|
+
|
|
47869
|
+
/**
|
|
47870
|
+
* The Rename confirm: widgets and bots find a provider by its name, so a
|
|
47871
|
+
* rename leaves them without it. Null when nothing uses it (no confirm);
|
|
47872
|
+
* null usage = not known yet, so it still asks.
|
|
47873
|
+
*/
|
|
47874
|
+
function providerRenameMessage(from, to, usage) {
|
|
47875
|
+
if (!usage) {
|
|
47876
|
+
return "Widgets and bots find ".concat(from, " by name, so any that use it won't find it after it's renamed to ").concat(to, " until you pick ").concat(to, " for them.");
|
|
47877
|
+
}
|
|
47878
|
+
var usedBy = providerUsedByText(usage);
|
|
47879
|
+
if (!usedBy) return null;
|
|
47880
|
+
var _affected2 = affected(usage),
|
|
47881
|
+
subject = _affected2.subject,
|
|
47882
|
+
s = _affected2.s,
|
|
47883
|
+
them = _affected2.them;
|
|
47884
|
+
var Subject = subject[0].toUpperCase() + subject.slice(1);
|
|
47885
|
+
var it = s ? "it" : "they";
|
|
47886
|
+
return "".concat(from, " is used by ").concat(usedBy, ". ").concat(Subject, " find").concat(s, " providers by name, so after the rename to ").concat(to, " ").concat(it, " won't work until you pick ").concat(to, " for ").concat(them, ".");
|
|
47887
|
+
}
|
|
47801
47888
|
var GROUPS$1 = [{
|
|
47802
47889
|
cls: "mcp",
|
|
47803
47890
|
label: "Tools (MCP)"
|
|
@@ -47911,6 +47998,12 @@ function useProviderStatus(_ref) {
|
|
|
47911
47998
|
_useState6 = _slicedToArray(_useState5, 2),
|
|
47912
47999
|
bots = _useState6[0],
|
|
47913
48000
|
setBots = _useState6[1];
|
|
48001
|
+
// False until the bots list has loaded (and if it fails): until then, who
|
|
48002
|
+
// uses a provider isn't known.
|
|
48003
|
+
var _useState7 = useState(false),
|
|
48004
|
+
_useState8 = _slicedToArray(_useState7, 2),
|
|
48005
|
+
botsLoaded = _useState8[0],
|
|
48006
|
+
setBotsLoaded = _useState8[1];
|
|
47914
48007
|
var mcpNames = useMemo(function () {
|
|
47915
48008
|
return Object.entries(providers || {}).filter(function (_ref2) {
|
|
47916
48009
|
var _ref3 = _slicedToArray(_ref2, 2),
|
|
@@ -47964,7 +48057,9 @@ function useProviderStatus(_ref) {
|
|
|
47964
48057
|
var alive = true;
|
|
47965
48058
|
var load = function load() {
|
|
47966
48059
|
return Promise.resolve(api.list()).then(function (list) {
|
|
47967
|
-
if (alive)
|
|
48060
|
+
if (!alive) return;
|
|
48061
|
+
setBots(Array.isArray(list) ? list : []);
|
|
48062
|
+
setBotsLoaded(true);
|
|
47968
48063
|
})["catch"](function () {});
|
|
47969
48064
|
};
|
|
47970
48065
|
load();
|
|
@@ -48011,9 +48106,10 @@ function useProviderStatus(_ref) {
|
|
|
48011
48106
|
},
|
|
48012
48107
|
// The bot definitions (Choose where to use… saves them).
|
|
48013
48108
|
bots: bots,
|
|
48109
|
+
botsLoaded: botsLoaded,
|
|
48014
48110
|
refresh: checkRunning
|
|
48015
48111
|
};
|
|
48016
|
-
}, [providers, running, catalog, workspaces, bots, bindingsFor, checkRunning]);
|
|
48112
|
+
}, [providers, running, catalog, workspaces, bots, botsLoaded, bindingsFor, checkRunning]);
|
|
48017
48113
|
}
|
|
48018
48114
|
|
|
48019
48115
|
/** How many providers need setup — the Providers item's left-nav dot. */
|
|
@@ -53199,7 +53295,7 @@ var ProvidersSection = function ProvidersSection(_ref) {
|
|
|
53199
53295
|
_ref$onCreateAcknowle = _ref.onCreateAcknowledged,
|
|
53200
53296
|
onCreateAcknowledged = _ref$onCreateAcknowle === void 0 ? null : _ref$onCreateAcknowle,
|
|
53201
53297
|
_ref$workspaces = _ref.workspaces,
|
|
53202
|
-
|
|
53298
|
+
workspacesProp = _ref$workspaces === void 0 ? null : _ref$workspaces,
|
|
53203
53299
|
_ref$onOpenWorkspace = _ref.onOpenWorkspace,
|
|
53204
53300
|
onOpenWorkspace = _ref$onOpenWorkspace === void 0 ? null : _ref$onOpenWorkspace,
|
|
53205
53301
|
_ref$onOpenBotInBotsV = _ref.onOpenBotInBotsView,
|
|
@@ -53224,12 +53320,17 @@ var ProvidersSection = function ProvidersSection(_ref) {
|
|
|
53224
53320
|
selectedBorder = _useConfigTokens.selectedBorder;
|
|
53225
53321
|
// MCP catalog: authCommand / credentialSchema lookups and status.
|
|
53226
53322
|
var catalog = useMcpCatalog(dashApi);
|
|
53323
|
+
var workspaces = workspacesProp || [];
|
|
53227
53324
|
var status = useProviderStatus({
|
|
53228
53325
|
providers: providers,
|
|
53229
53326
|
workspaces: workspaces,
|
|
53230
53327
|
dashApi: dashApi,
|
|
53231
53328
|
catalog: catalog
|
|
53232
53329
|
});
|
|
53330
|
+
// Who uses a provider, or null while that isn't known.
|
|
53331
|
+
var knownUsage = function knownUsage(name) {
|
|
53332
|
+
return workspacesProp && status.botsLoaded ? status.usageOf(name) : null;
|
|
53333
|
+
};
|
|
53233
53334
|
var _useState = useState(false),
|
|
53234
53335
|
_useState2 = _slicedToArray(_useState, 2),
|
|
53235
53336
|
needsSetupOnly = _useState2[0],
|
|
@@ -53287,32 +53388,38 @@ var ProvidersSection = function ProvidersSection(_ref) {
|
|
|
53287
53388
|
_useState22 = _slicedToArray(_useState21, 2),
|
|
53288
53389
|
deleteTarget = _useState22[0],
|
|
53289
53390
|
setDeleteTarget = _useState22[1];
|
|
53290
|
-
|
|
53391
|
+
// A rename of a provider something uses waits here for a confirm:
|
|
53392
|
+
// { from, to, message, save }.
|
|
53393
|
+
var _useState23 = useState(null),
|
|
53291
53394
|
_useState24 = _slicedToArray(_useState23, 2),
|
|
53292
|
-
|
|
53293
|
-
|
|
53395
|
+
renameConfirm = _useState24[0],
|
|
53396
|
+
setRenameConfirm = _useState24[1];
|
|
53294
53397
|
var _useState25 = useState(false),
|
|
53295
53398
|
_useState26 = _slicedToArray(_useState25, 2),
|
|
53296
|
-
|
|
53297
|
-
|
|
53399
|
+
isAddingMcp = _useState26[0],
|
|
53400
|
+
setIsAddingMcp = _useState26[1];
|
|
53298
53401
|
var _useState27 = useState(false),
|
|
53299
53402
|
_useState28 = _slicedToArray(_useState27, 2),
|
|
53300
|
-
|
|
53301
|
-
|
|
53403
|
+
isEditingMcp = _useState28[0],
|
|
53404
|
+
setIsEditingMcp = _useState28[1];
|
|
53302
53405
|
var _useState29 = useState(false),
|
|
53303
53406
|
_useState30 = _slicedToArray(_useState29, 2),
|
|
53304
|
-
|
|
53305
|
-
|
|
53407
|
+
isAddingWs = _useState30[0],
|
|
53408
|
+
setIsAddingWs = _useState30[1];
|
|
53409
|
+
var _useState31 = useState(false),
|
|
53410
|
+
_useState32 = _slicedToArray(_useState31, 2),
|
|
53411
|
+
isEditingWs = _useState32[0],
|
|
53412
|
+
setIsEditingWs = _useState32[1];
|
|
53306
53413
|
// NAV-015 "Choose where to use…": the provider whose dialog is open, and
|
|
53307
53414
|
// the rows worked out when it opened (kept fixed while the user ticks).
|
|
53308
|
-
var _useState31 = useState(null),
|
|
53309
|
-
_useState32 = _slicedToArray(_useState31, 2),
|
|
53310
|
-
useTarget = _useState32[0],
|
|
53311
|
-
setUseTarget = _useState32[1];
|
|
53312
53415
|
var _useState33 = useState(null),
|
|
53313
53416
|
_useState34 = _slicedToArray(_useState33, 2),
|
|
53314
|
-
|
|
53315
|
-
|
|
53417
|
+
useTarget = _useState34[0],
|
|
53418
|
+
setUseTarget = _useState34[1];
|
|
53419
|
+
var _useState35 = useState(null),
|
|
53420
|
+
_useState36 = _slicedToArray(_useState35, 2),
|
|
53421
|
+
useModel = _useState36[0],
|
|
53422
|
+
setUseModel = _useState36[1];
|
|
53316
53423
|
var openChooseWhereToUse = function openChooseWhereToUse(name) {
|
|
53317
53424
|
setUseModel(providerUseModel({
|
|
53318
53425
|
providerName: name,
|
|
@@ -53419,8 +53526,23 @@ var ProvidersSection = function ProvidersSection(_ref) {
|
|
|
53419
53526
|
setIsEditingWs(false);
|
|
53420
53527
|
}
|
|
53421
53528
|
}
|
|
53529
|
+
|
|
53530
|
+
// Widgets and bots find a provider by name: renaming one that's in use
|
|
53531
|
+
// asks first (QA 2026-10-22).
|
|
53532
|
+
function confirmRename(from, to, save) {
|
|
53533
|
+
var message = from && to && from !== to ? providerRenameMessage(from, to, knownUsage(from)) : null;
|
|
53534
|
+
if (message) setRenameConfirm({
|
|
53535
|
+
from: from,
|
|
53536
|
+
to: to,
|
|
53537
|
+
message: message,
|
|
53538
|
+
save: save
|
|
53539
|
+
});else save();
|
|
53540
|
+
}
|
|
53422
53541
|
function handleSaveEdit() {
|
|
53423
53542
|
if (!formName.trim() || !dashApi || !appId) return;
|
|
53543
|
+
confirmRename(selectedName, formName.trim(), saveEdit);
|
|
53544
|
+
}
|
|
53545
|
+
function saveEdit() {
|
|
53424
53546
|
var originalName = selectedName;
|
|
53425
53547
|
var originalProvider = providers[originalName];
|
|
53426
53548
|
// Delete old if name changed, then save new
|
|
@@ -53494,9 +53616,17 @@ var ProvidersSection = function ProvidersSection(_ref) {
|
|
|
53494
53616
|
}
|
|
53495
53617
|
|
|
53496
53618
|
// Handle MCP provider editing via CustomMcpServerForm
|
|
53497
|
-
function handleMcpEditSave(
|
|
53498
|
-
var
|
|
53619
|
+
function handleMcpEditSave() {
|
|
53620
|
+
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
|
|
53621
|
+
args[_key] = arguments[_key];
|
|
53622
|
+
}
|
|
53499
53623
|
if (!dashApi || !appId) return;
|
|
53624
|
+
confirmRename(selectedName, args[0], function () {
|
|
53625
|
+
return saveMcpEdit.apply(void 0, args);
|
|
53626
|
+
});
|
|
53627
|
+
}
|
|
53628
|
+
function saveMcpEdit(providerName, providerType, mcpCredentials, mcpConfig) {
|
|
53629
|
+
var allowedTools = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : null;
|
|
53500
53630
|
var originalName = selectedName;
|
|
53501
53631
|
|
|
53502
53632
|
// Delete old if name changed
|
|
@@ -53598,8 +53728,16 @@ var ProvidersSection = function ProvidersSection(_ref) {
|
|
|
53598
53728
|
}
|
|
53599
53729
|
|
|
53600
53730
|
// Handle WebSocket provider editing
|
|
53601
|
-
function handleWsEditSave(
|
|
53731
|
+
function handleWsEditSave() {
|
|
53732
|
+
for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
|
|
53733
|
+
args[_key2] = arguments[_key2];
|
|
53734
|
+
}
|
|
53602
53735
|
if (!dashApi || !appId) return;
|
|
53736
|
+
confirmRename(selectedName, args[0], function () {
|
|
53737
|
+
return saveWsEdit.apply(void 0, args);
|
|
53738
|
+
});
|
|
53739
|
+
}
|
|
53740
|
+
function saveWsEdit(providerName, wsConfig, wsCredentials) {
|
|
53603
53741
|
var originalName = selectedName;
|
|
53604
53742
|
|
|
53605
53743
|
// Delete old if name changed
|
|
@@ -53981,20 +54119,37 @@ var ProvidersSection = function ProvidersSection(_ref) {
|
|
|
53981
54119
|
}),
|
|
53982
54120
|
list: listContent,
|
|
53983
54121
|
detail: detailContent,
|
|
53984
|
-
children: [/*#__PURE__*/jsx(ConfirmationModal, {
|
|
53985
|
-
isOpen:
|
|
54122
|
+
children: [deleteTarget ? /*#__PURE__*/jsx(ConfirmationModal, {
|
|
54123
|
+
isOpen: true,
|
|
53986
54124
|
setIsOpen: function setIsOpen() {
|
|
53987
54125
|
return setDeleteTarget(null);
|
|
53988
54126
|
},
|
|
53989
|
-
title: "Delete
|
|
53990
|
-
message:
|
|
54127
|
+
title: "Delete ".concat(deleteTarget, "?"),
|
|
54128
|
+
message: providerDeleteMessage(deleteTarget, knownUsage(deleteTarget)),
|
|
53991
54129
|
confirmLabel: "Delete",
|
|
53992
54130
|
variant: "danger",
|
|
53993
54131
|
onConfirm: handleConfirmDelete,
|
|
53994
54132
|
onCancel: function onCancel() {
|
|
53995
54133
|
return setDeleteTarget(null);
|
|
53996
54134
|
}
|
|
53997
|
-
}), /*#__PURE__*/jsx(
|
|
54135
|
+
}) : null, renameConfirm ? /*#__PURE__*/jsx(ConfirmationModal, {
|
|
54136
|
+
isOpen: true,
|
|
54137
|
+
setIsOpen: function setIsOpen() {
|
|
54138
|
+
return setRenameConfirm(null);
|
|
54139
|
+
},
|
|
54140
|
+
title: "Rename ".concat(renameConfirm.from, "?"),
|
|
54141
|
+
message: renameConfirm.message,
|
|
54142
|
+
confirmLabel: "Rename",
|
|
54143
|
+
variant: "danger",
|
|
54144
|
+
onConfirm: function onConfirm() {
|
|
54145
|
+
var save = renameConfirm.save;
|
|
54146
|
+
setRenameConfirm(null);
|
|
54147
|
+
save();
|
|
54148
|
+
},
|
|
54149
|
+
onCancel: function onCancel() {
|
|
54150
|
+
return setRenameConfirm(null);
|
|
54151
|
+
}
|
|
54152
|
+
}) : null, /*#__PURE__*/jsx(ProviderUseDialog, {
|
|
53998
54153
|
isOpen: !!useTarget,
|
|
53999
54154
|
model: useModel,
|
|
54000
54155
|
onSave: saveProviderUse,
|