@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.js
CHANGED
|
@@ -47816,6 +47816,93 @@ function providerUsage(name, _ref2) {
|
|
|
47816
47816
|
count: dashboards.length + usedBy.length
|
|
47817
47817
|
};
|
|
47818
47818
|
}
|
|
47819
|
+
var MAX_NAMES = 3;
|
|
47820
|
+
var plural$7 = function plural(n, word) {
|
|
47821
|
+
return "".concat(n, " ").concat(word).concat(n === 1 ? "" : "s");
|
|
47822
|
+
};
|
|
47823
|
+
var nameList = function nameList(names) {
|
|
47824
|
+
return names.length > MAX_NAMES ? "".concat(names.slice(0, MAX_NAMES).join(", "), " and ").concat(names.length - MAX_NAMES, " more") : names.join(", ");
|
|
47825
|
+
};
|
|
47826
|
+
|
|
47827
|
+
/** "1 dashboard (Sales) and 2 bots (Digest, Loose)", or "" when unused. */
|
|
47828
|
+
function providerUsedByText(usage) {
|
|
47829
|
+
var parts = [];
|
|
47830
|
+
var dashboards = usage && usage.dashboards || [];
|
|
47831
|
+
var bots = usage && usage.bots || [];
|
|
47832
|
+
if (dashboards.length) {
|
|
47833
|
+
parts.push("".concat(plural$7(dashboards.length, "dashboard"), " (").concat(nameList(dashboards.map(function (d) {
|
|
47834
|
+
return d.workspaceName;
|
|
47835
|
+
})), ")"));
|
|
47836
|
+
}
|
|
47837
|
+
if (bots.length) {
|
|
47838
|
+
parts.push("".concat(plural$7(bots.length, "bot"), " (").concat(nameList(bots.map(function (b) {
|
|
47839
|
+
return b.name;
|
|
47840
|
+
})), ")"));
|
|
47841
|
+
}
|
|
47842
|
+
return parts.join(" and ");
|
|
47843
|
+
}
|
|
47844
|
+
|
|
47845
|
+
// Who's affected, worded for one bot, one dashboard, or several.
|
|
47846
|
+
function affected(usage) {
|
|
47847
|
+
var dashboards = usage && usage.dashboards || [];
|
|
47848
|
+
var bots = usage && usage.bots || [];
|
|
47849
|
+
if (bots.length === 1 && !dashboards.length) {
|
|
47850
|
+
return {
|
|
47851
|
+
subject: "that bot",
|
|
47852
|
+
s: "s",
|
|
47853
|
+
them: "it"
|
|
47854
|
+
};
|
|
47855
|
+
}
|
|
47856
|
+
if (dashboards.length === 1 && !bots.length) {
|
|
47857
|
+
return {
|
|
47858
|
+
subject: "that dashboard's widgets",
|
|
47859
|
+
s: "",
|
|
47860
|
+
them: "them"
|
|
47861
|
+
};
|
|
47862
|
+
}
|
|
47863
|
+
return {
|
|
47864
|
+
subject: "they",
|
|
47865
|
+
s: "",
|
|
47866
|
+
them: "them"
|
|
47867
|
+
};
|
|
47868
|
+
}
|
|
47869
|
+
|
|
47870
|
+
/**
|
|
47871
|
+
* The Delete confirm (QA 2026-10-22: it never said what uses it). Null
|
|
47872
|
+
* usage = not known yet (bots still loading, or no dashboards given).
|
|
47873
|
+
*/
|
|
47874
|
+
function providerDeleteMessage(name, usage) {
|
|
47875
|
+
if (!usage) {
|
|
47876
|
+
return "Widgets and bots that use ".concat(name, " will need another provider picked before they work again. This can't be undone.");
|
|
47877
|
+
}
|
|
47878
|
+
var usedBy = providerUsedByText(usage);
|
|
47879
|
+
if (!usedBy) return "Nothing uses ".concat(name, ". This can't be undone.");
|
|
47880
|
+
var _affected = affected(usage),
|
|
47881
|
+
subject = _affected.subject,
|
|
47882
|
+
s = _affected.s;
|
|
47883
|
+
var it = s ? "it" : "they";
|
|
47884
|
+
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.");
|
|
47885
|
+
}
|
|
47886
|
+
|
|
47887
|
+
/**
|
|
47888
|
+
* The Rename confirm: widgets and bots find a provider by its name, so a
|
|
47889
|
+
* rename leaves them without it. Null when nothing uses it (no confirm);
|
|
47890
|
+
* null usage = not known yet, so it still asks.
|
|
47891
|
+
*/
|
|
47892
|
+
function providerRenameMessage(from, to, usage) {
|
|
47893
|
+
if (!usage) {
|
|
47894
|
+
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.");
|
|
47895
|
+
}
|
|
47896
|
+
var usedBy = providerUsedByText(usage);
|
|
47897
|
+
if (!usedBy) return null;
|
|
47898
|
+
var _affected2 = affected(usage),
|
|
47899
|
+
subject = _affected2.subject,
|
|
47900
|
+
s = _affected2.s,
|
|
47901
|
+
them = _affected2.them;
|
|
47902
|
+
var Subject = subject[0].toUpperCase() + subject.slice(1);
|
|
47903
|
+
var it = s ? "it" : "they";
|
|
47904
|
+
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, ".");
|
|
47905
|
+
}
|
|
47819
47906
|
var GROUPS$1 = [{
|
|
47820
47907
|
cls: "mcp",
|
|
47821
47908
|
label: "Tools (MCP)"
|
|
@@ -47929,6 +48016,12 @@ function useProviderStatus(_ref) {
|
|
|
47929
48016
|
_useState6 = _slicedToArray(_useState5, 2),
|
|
47930
48017
|
bots = _useState6[0],
|
|
47931
48018
|
setBots = _useState6[1];
|
|
48019
|
+
// False until the bots list has loaded (and if it fails): until then, who
|
|
48020
|
+
// uses a provider isn't known.
|
|
48021
|
+
var _useState7 = React.useState(false),
|
|
48022
|
+
_useState8 = _slicedToArray(_useState7, 2),
|
|
48023
|
+
botsLoaded = _useState8[0],
|
|
48024
|
+
setBotsLoaded = _useState8[1];
|
|
47932
48025
|
var mcpNames = React.useMemo(function () {
|
|
47933
48026
|
return Object.entries(providers || {}).filter(function (_ref2) {
|
|
47934
48027
|
var _ref3 = _slicedToArray(_ref2, 2),
|
|
@@ -47982,7 +48075,9 @@ function useProviderStatus(_ref) {
|
|
|
47982
48075
|
var alive = true;
|
|
47983
48076
|
var load = function load() {
|
|
47984
48077
|
return Promise.resolve(api.list()).then(function (list) {
|
|
47985
|
-
if (alive)
|
|
48078
|
+
if (!alive) return;
|
|
48079
|
+
setBots(Array.isArray(list) ? list : []);
|
|
48080
|
+
setBotsLoaded(true);
|
|
47986
48081
|
})["catch"](function () {});
|
|
47987
48082
|
};
|
|
47988
48083
|
load();
|
|
@@ -48029,9 +48124,10 @@ function useProviderStatus(_ref) {
|
|
|
48029
48124
|
},
|
|
48030
48125
|
// The bot definitions (Choose where to use… saves them).
|
|
48031
48126
|
bots: bots,
|
|
48127
|
+
botsLoaded: botsLoaded,
|
|
48032
48128
|
refresh: checkRunning
|
|
48033
48129
|
};
|
|
48034
|
-
}, [providers, running, catalog, workspaces, bots, bindingsFor, checkRunning]);
|
|
48130
|
+
}, [providers, running, catalog, workspaces, bots, botsLoaded, bindingsFor, checkRunning]);
|
|
48035
48131
|
}
|
|
48036
48132
|
|
|
48037
48133
|
/** How many providers need setup — the Providers item's left-nav dot. */
|
|
@@ -53217,7 +53313,7 @@ var ProvidersSection = function ProvidersSection(_ref) {
|
|
|
53217
53313
|
_ref$onCreateAcknowle = _ref.onCreateAcknowledged,
|
|
53218
53314
|
onCreateAcknowledged = _ref$onCreateAcknowle === void 0 ? null : _ref$onCreateAcknowle,
|
|
53219
53315
|
_ref$workspaces = _ref.workspaces,
|
|
53220
|
-
|
|
53316
|
+
workspacesProp = _ref$workspaces === void 0 ? null : _ref$workspaces,
|
|
53221
53317
|
_ref$onOpenWorkspace = _ref.onOpenWorkspace,
|
|
53222
53318
|
onOpenWorkspace = _ref$onOpenWorkspace === void 0 ? null : _ref$onOpenWorkspace,
|
|
53223
53319
|
_ref$onOpenBotInBotsV = _ref.onOpenBotInBotsView,
|
|
@@ -53242,12 +53338,17 @@ var ProvidersSection = function ProvidersSection(_ref) {
|
|
|
53242
53338
|
selectedBorder = _useConfigTokens.selectedBorder;
|
|
53243
53339
|
// MCP catalog: authCommand / credentialSchema lookups and status.
|
|
53244
53340
|
var catalog = useMcpCatalog(dashApi);
|
|
53341
|
+
var workspaces = workspacesProp || [];
|
|
53245
53342
|
var status = useProviderStatus({
|
|
53246
53343
|
providers: providers,
|
|
53247
53344
|
workspaces: workspaces,
|
|
53248
53345
|
dashApi: dashApi,
|
|
53249
53346
|
catalog: catalog
|
|
53250
53347
|
});
|
|
53348
|
+
// Who uses a provider, or null while that isn't known.
|
|
53349
|
+
var knownUsage = function knownUsage(name) {
|
|
53350
|
+
return workspacesProp && status.botsLoaded ? status.usageOf(name) : null;
|
|
53351
|
+
};
|
|
53251
53352
|
var _useState = React.useState(false),
|
|
53252
53353
|
_useState2 = _slicedToArray(_useState, 2),
|
|
53253
53354
|
needsSetupOnly = _useState2[0],
|
|
@@ -53305,32 +53406,38 @@ var ProvidersSection = function ProvidersSection(_ref) {
|
|
|
53305
53406
|
_useState22 = _slicedToArray(_useState21, 2),
|
|
53306
53407
|
deleteTarget = _useState22[0],
|
|
53307
53408
|
setDeleteTarget = _useState22[1];
|
|
53308
|
-
|
|
53409
|
+
// A rename of a provider something uses waits here for a confirm:
|
|
53410
|
+
// { from, to, message, save }.
|
|
53411
|
+
var _useState23 = React.useState(null),
|
|
53309
53412
|
_useState24 = _slicedToArray(_useState23, 2),
|
|
53310
|
-
|
|
53311
|
-
|
|
53413
|
+
renameConfirm = _useState24[0],
|
|
53414
|
+
setRenameConfirm = _useState24[1];
|
|
53312
53415
|
var _useState25 = React.useState(false),
|
|
53313
53416
|
_useState26 = _slicedToArray(_useState25, 2),
|
|
53314
|
-
|
|
53315
|
-
|
|
53417
|
+
isAddingMcp = _useState26[0],
|
|
53418
|
+
setIsAddingMcp = _useState26[1];
|
|
53316
53419
|
var _useState27 = React.useState(false),
|
|
53317
53420
|
_useState28 = _slicedToArray(_useState27, 2),
|
|
53318
|
-
|
|
53319
|
-
|
|
53421
|
+
isEditingMcp = _useState28[0],
|
|
53422
|
+
setIsEditingMcp = _useState28[1];
|
|
53320
53423
|
var _useState29 = React.useState(false),
|
|
53321
53424
|
_useState30 = _slicedToArray(_useState29, 2),
|
|
53322
|
-
|
|
53323
|
-
|
|
53425
|
+
isAddingWs = _useState30[0],
|
|
53426
|
+
setIsAddingWs = _useState30[1];
|
|
53427
|
+
var _useState31 = React.useState(false),
|
|
53428
|
+
_useState32 = _slicedToArray(_useState31, 2),
|
|
53429
|
+
isEditingWs = _useState32[0],
|
|
53430
|
+
setIsEditingWs = _useState32[1];
|
|
53324
53431
|
// NAV-015 "Choose where to use…": the provider whose dialog is open, and
|
|
53325
53432
|
// the rows worked out when it opened (kept fixed while the user ticks).
|
|
53326
|
-
var _useState31 = React.useState(null),
|
|
53327
|
-
_useState32 = _slicedToArray(_useState31, 2),
|
|
53328
|
-
useTarget = _useState32[0],
|
|
53329
|
-
setUseTarget = _useState32[1];
|
|
53330
53433
|
var _useState33 = React.useState(null),
|
|
53331
53434
|
_useState34 = _slicedToArray(_useState33, 2),
|
|
53332
|
-
|
|
53333
|
-
|
|
53435
|
+
useTarget = _useState34[0],
|
|
53436
|
+
setUseTarget = _useState34[1];
|
|
53437
|
+
var _useState35 = React.useState(null),
|
|
53438
|
+
_useState36 = _slicedToArray(_useState35, 2),
|
|
53439
|
+
useModel = _useState36[0],
|
|
53440
|
+
setUseModel = _useState36[1];
|
|
53334
53441
|
var openChooseWhereToUse = function openChooseWhereToUse(name) {
|
|
53335
53442
|
setUseModel(providerUseModel({
|
|
53336
53443
|
providerName: name,
|
|
@@ -53437,8 +53544,23 @@ var ProvidersSection = function ProvidersSection(_ref) {
|
|
|
53437
53544
|
setIsEditingWs(false);
|
|
53438
53545
|
}
|
|
53439
53546
|
}
|
|
53547
|
+
|
|
53548
|
+
// Widgets and bots find a provider by name: renaming one that's in use
|
|
53549
|
+
// asks first (QA 2026-10-22).
|
|
53550
|
+
function confirmRename(from, to, save) {
|
|
53551
|
+
var message = from && to && from !== to ? providerRenameMessage(from, to, knownUsage(from)) : null;
|
|
53552
|
+
if (message) setRenameConfirm({
|
|
53553
|
+
from: from,
|
|
53554
|
+
to: to,
|
|
53555
|
+
message: message,
|
|
53556
|
+
save: save
|
|
53557
|
+
});else save();
|
|
53558
|
+
}
|
|
53440
53559
|
function handleSaveEdit() {
|
|
53441
53560
|
if (!formName.trim() || !dashApi || !appId) return;
|
|
53561
|
+
confirmRename(selectedName, formName.trim(), saveEdit);
|
|
53562
|
+
}
|
|
53563
|
+
function saveEdit() {
|
|
53442
53564
|
var originalName = selectedName;
|
|
53443
53565
|
var originalProvider = providers[originalName];
|
|
53444
53566
|
// Delete old if name changed, then save new
|
|
@@ -53512,9 +53634,17 @@ var ProvidersSection = function ProvidersSection(_ref) {
|
|
|
53512
53634
|
}
|
|
53513
53635
|
|
|
53514
53636
|
// Handle MCP provider editing via CustomMcpServerForm
|
|
53515
|
-
function handleMcpEditSave(
|
|
53516
|
-
var
|
|
53637
|
+
function handleMcpEditSave() {
|
|
53638
|
+
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
|
|
53639
|
+
args[_key] = arguments[_key];
|
|
53640
|
+
}
|
|
53517
53641
|
if (!dashApi || !appId) return;
|
|
53642
|
+
confirmRename(selectedName, args[0], function () {
|
|
53643
|
+
return saveMcpEdit.apply(void 0, args);
|
|
53644
|
+
});
|
|
53645
|
+
}
|
|
53646
|
+
function saveMcpEdit(providerName, providerType, mcpCredentials, mcpConfig) {
|
|
53647
|
+
var allowedTools = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : null;
|
|
53518
53648
|
var originalName = selectedName;
|
|
53519
53649
|
|
|
53520
53650
|
// Delete old if name changed
|
|
@@ -53616,8 +53746,16 @@ var ProvidersSection = function ProvidersSection(_ref) {
|
|
|
53616
53746
|
}
|
|
53617
53747
|
|
|
53618
53748
|
// Handle WebSocket provider editing
|
|
53619
|
-
function handleWsEditSave(
|
|
53749
|
+
function handleWsEditSave() {
|
|
53750
|
+
for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
|
|
53751
|
+
args[_key2] = arguments[_key2];
|
|
53752
|
+
}
|
|
53620
53753
|
if (!dashApi || !appId) return;
|
|
53754
|
+
confirmRename(selectedName, args[0], function () {
|
|
53755
|
+
return saveWsEdit.apply(void 0, args);
|
|
53756
|
+
});
|
|
53757
|
+
}
|
|
53758
|
+
function saveWsEdit(providerName, wsConfig, wsCredentials) {
|
|
53621
53759
|
var originalName = selectedName;
|
|
53622
53760
|
|
|
53623
53761
|
// Delete old if name changed
|
|
@@ -53999,20 +54137,37 @@ var ProvidersSection = function ProvidersSection(_ref) {
|
|
|
53999
54137
|
}),
|
|
54000
54138
|
list: listContent,
|
|
54001
54139
|
detail: detailContent,
|
|
54002
|
-
children: [/*#__PURE__*/jsxRuntime.jsx(DashReact.ConfirmationModal, {
|
|
54003
|
-
isOpen:
|
|
54140
|
+
children: [deleteTarget ? /*#__PURE__*/jsxRuntime.jsx(DashReact.ConfirmationModal, {
|
|
54141
|
+
isOpen: true,
|
|
54004
54142
|
setIsOpen: function setIsOpen() {
|
|
54005
54143
|
return setDeleteTarget(null);
|
|
54006
54144
|
},
|
|
54007
|
-
title: "Delete
|
|
54008
|
-
message:
|
|
54145
|
+
title: "Delete ".concat(deleteTarget, "?"),
|
|
54146
|
+
message: providerDeleteMessage(deleteTarget, knownUsage(deleteTarget)),
|
|
54009
54147
|
confirmLabel: "Delete",
|
|
54010
54148
|
variant: "danger",
|
|
54011
54149
|
onConfirm: handleConfirmDelete,
|
|
54012
54150
|
onCancel: function onCancel() {
|
|
54013
54151
|
return setDeleteTarget(null);
|
|
54014
54152
|
}
|
|
54015
|
-
}), /*#__PURE__*/jsxRuntime.jsx(
|
|
54153
|
+
}) : null, renameConfirm ? /*#__PURE__*/jsxRuntime.jsx(DashReact.ConfirmationModal, {
|
|
54154
|
+
isOpen: true,
|
|
54155
|
+
setIsOpen: function setIsOpen() {
|
|
54156
|
+
return setRenameConfirm(null);
|
|
54157
|
+
},
|
|
54158
|
+
title: "Rename ".concat(renameConfirm.from, "?"),
|
|
54159
|
+
message: renameConfirm.message,
|
|
54160
|
+
confirmLabel: "Rename",
|
|
54161
|
+
variant: "danger",
|
|
54162
|
+
onConfirm: function onConfirm() {
|
|
54163
|
+
var save = renameConfirm.save;
|
|
54164
|
+
setRenameConfirm(null);
|
|
54165
|
+
save();
|
|
54166
|
+
},
|
|
54167
|
+
onCancel: function onCancel() {
|
|
54168
|
+
return setRenameConfirm(null);
|
|
54169
|
+
}
|
|
54170
|
+
}) : null, /*#__PURE__*/jsxRuntime.jsx(ProviderUseDialog, {
|
|
54016
54171
|
isOpen: !!useTarget,
|
|
54017
54172
|
model: useModel,
|
|
54018
54173
|
onSave: saveProviderUse,
|