@trops/dash-core 0.1.490 → 0.1.492

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
@@ -1626,9 +1626,11 @@ var ElectronDashboardApi = /*#__PURE__*/function () {
1626
1626
  key: "mcpStartServer",
1627
1627
  value: function mcpStartServer(serverName, mcpConfig, credentials, onSuccess, onError) {
1628
1628
  var _this20 = this;
1629
+ var workspaceId = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : null;
1630
+ var pathScope = arguments.length > 6 && arguments[6] !== undefined ? arguments[6] : null;
1629
1631
  if (this.api !== null) {
1630
1632
  try {
1631
- this.api.mcp.startServer(serverName, mcpConfig, credentials).then(function (result) {
1633
+ this.api.mcp.startServer(serverName, mcpConfig, credentials, workspaceId, pathScope).then(function (result) {
1632
1634
  onSuccess(_this20.events.MCP_START_SERVER_COMPLETE, result);
1633
1635
  })["catch"](function (error) {
1634
1636
  onError(_this20.events.MCP_START_SERVER_ERROR, error);
@@ -1647,9 +1649,10 @@ var ElectronDashboardApi = /*#__PURE__*/function () {
1647
1649
  key: "mcpStopServer",
1648
1650
  value: function mcpStopServer(serverName, onSuccess, onError) {
1649
1651
  var _this21 = this;
1652
+ var workspaceId = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : null;
1650
1653
  if (this.api !== null) {
1651
1654
  try {
1652
- this.api.mcp.stopServer(serverName).then(function (result) {
1655
+ this.api.mcp.stopServer(serverName, workspaceId).then(function (result) {
1653
1656
  onSuccess(_this21.events.MCP_STOP_SERVER_COMPLETE, result);
1654
1657
  })["catch"](function (error) {
1655
1658
  onError(_this21.events.MCP_STOP_SERVER_ERROR, error);
@@ -1668,9 +1671,13 @@ var ElectronDashboardApi = /*#__PURE__*/function () {
1668
1671
  key: "mcpCallTool",
1669
1672
  value: function mcpCallTool(serverName, toolName, args, allowedTools, onSuccess, onError) {
1670
1673
  var _this22 = this;
1674
+ var workspaceId = arguments.length > 6 && arguments[6] !== undefined ? arguments[6] : null;
1671
1675
  if (this.api !== null) {
1672
1676
  try {
1673
- this.api.mcp.callTool(serverName, toolName, args, allowedTools).then(function (result) {
1677
+ // widgetId is not threaded here; mcpApi.callTool defaults it to
1678
+ // null. Slice 3a: workspaceId scopes the MCP server process per
1679
+ // workspace.
1680
+ this.api.mcp.callTool(serverName, toolName, args, allowedTools, null, workspaceId).then(function (result) {
1674
1681
  onSuccess(_this22.events.MCP_CALL_TOOL_COMPLETE, result);
1675
1682
  })["catch"](function (error) {
1676
1683
  onError(_this22.events.MCP_CALL_TOOL_ERROR, error);
@@ -1689,9 +1696,10 @@ var ElectronDashboardApi = /*#__PURE__*/function () {
1689
1696
  key: "mcpListTools",
1690
1697
  value: function mcpListTools(serverName, onSuccess, onError) {
1691
1698
  var _this23 = this;
1699
+ var workspaceId = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : null;
1692
1700
  if (this.api !== null) {
1693
1701
  try {
1694
- this.api.mcp.listTools(serverName).then(function (result) {
1702
+ this.api.mcp.listTools(serverName, workspaceId).then(function (result) {
1695
1703
  onSuccess(_this23.events.MCP_LIST_TOOLS_COMPLETE, result);
1696
1704
  })["catch"](function (error) {
1697
1705
  onError(_this23.events.MCP_LIST_TOOLS_ERROR, error);
@@ -1710,9 +1718,10 @@ var ElectronDashboardApi = /*#__PURE__*/function () {
1710
1718
  key: "mcpListResources",
1711
1719
  value: function mcpListResources(serverName, onSuccess, onError) {
1712
1720
  var _this24 = this;
1721
+ var workspaceId = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : null;
1713
1722
  if (this.api !== null) {
1714
1723
  try {
1715
- this.api.mcp.listResources(serverName).then(function (result) {
1724
+ this.api.mcp.listResources(serverName, workspaceId).then(function (result) {
1716
1725
  onSuccess(_this24.events.MCP_LIST_RESOURCES_COMPLETE, result);
1717
1726
  })["catch"](function (error) {
1718
1727
  onError(_this24.events.MCP_LIST_RESOURCES_ERROR, error);
@@ -1731,9 +1740,10 @@ var ElectronDashboardApi = /*#__PURE__*/function () {
1731
1740
  key: "mcpReadResource",
1732
1741
  value: function mcpReadResource(serverName, uri, onSuccess, onError) {
1733
1742
  var _this25 = this;
1743
+ var workspaceId = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : null;
1734
1744
  if (this.api !== null) {
1735
1745
  try {
1736
- this.api.mcp.readResource(serverName, uri).then(function (result) {
1746
+ this.api.mcp.readResource(serverName, uri, workspaceId).then(function (result) {
1737
1747
  onSuccess(_this25.events.MCP_READ_RESOURCE_COMPLETE, result);
1738
1748
  })["catch"](function (error) {
1739
1749
  onError(_this25.events.MCP_READ_RESOURCE_ERROR, error);
@@ -1752,9 +1762,10 @@ var ElectronDashboardApi = /*#__PURE__*/function () {
1752
1762
  key: "mcpGetServerStatus",
1753
1763
  value: function mcpGetServerStatus(serverName, onSuccess, onError) {
1754
1764
  var _this26 = this;
1765
+ var workspaceId = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : null;
1755
1766
  if (this.api !== null) {
1756
1767
  try {
1757
- this.api.mcp.getServerStatus(serverName).then(function (result) {
1768
+ this.api.mcp.getServerStatus(serverName, workspaceId).then(function (result) {
1758
1769
  onSuccess(_this26.events.MCP_SERVER_STATUS_COMPLETE, result);
1759
1770
  })["catch"](function (error) {
1760
1771
  onError(_this26.events.MCP_SERVER_STATUS_ERROR, error);
@@ -3090,9 +3101,9 @@ var LayoutContainer = function LayoutContainer(_ref) {
3090
3101
 
3091
3102
  function ownKeys$X(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; }
3092
3103
  function _objectSpread$X(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$X(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$X(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
3093
- function _createForOfIteratorHelper$z(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray$z(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t["return"] || t["return"](); } finally { if (u) throw o; } } }; }
3094
- function _unsupportedIterableToArray$z(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray$z(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray$z(r, a) : void 0; } }
3095
- function _arrayLikeToArray$z(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
3104
+ function _createForOfIteratorHelper$A(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray$A(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t["return"] || t["return"](); } finally { if (u) throw o; } } }; }
3105
+ function _unsupportedIterableToArray$A(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray$A(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray$A(r, a) : void 0; } }
3106
+ function _arrayLikeToArray$A(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
3096
3107
  /**
3097
3108
  * Layout template definitions for the dashboard template picker.
3098
3109
  *
@@ -3366,7 +3377,7 @@ function createLayoutFromTemplate(template) {
3366
3377
  cols: template.cols,
3367
3378
  gap: "gap-2"
3368
3379
  };
3369
- var _iterator = _createForOfIteratorHelper$z(template.cells),
3380
+ var _iterator = _createForOfIteratorHelper$A(template.cells),
3370
3381
  _step;
3371
3382
  try {
3372
3383
  for (_iterator.s(); !(_step = _iterator.n()).done;) {
@@ -4547,9 +4558,9 @@ var DashboardInstallOptionsModal = function DashboardInstallOptionsModal(_ref) {
4547
4558
  });
4548
4559
  };
4549
4560
 
4550
- function _createForOfIteratorHelper$y(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray$y(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t["return"] || t["return"](); } finally { if (u) throw o; } } }; }
4551
- function _unsupportedIterableToArray$y(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray$y(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray$y(r, a) : void 0; } }
4552
- function _arrayLikeToArray$y(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
4561
+ function _createForOfIteratorHelper$z(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray$z(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t["return"] || t["return"](); } finally { if (u) throw o; } } }; }
4562
+ function _unsupportedIterableToArray$z(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray$z(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray$z(r, a) : void 0; } }
4563
+ function _arrayLikeToArray$z(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
4553
4564
  function ownKeys$W(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; }
4554
4565
  function _objectSpread$W(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$W(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$W(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
4555
4566
  var RegistryDashboardDetail = function RegistryDashboardDetail(_ref) {
@@ -4907,7 +4918,7 @@ var RegistryDashboardDetail = function RegistryDashboardDetail(_ref) {
4907
4918
  toInstall = 0,
4908
4919
  unavailable = 0,
4909
4920
  hasUnavailableRequired = false;
4910
- var _iterator = _createForOfIteratorHelper$y(widgetDeps),
4921
+ var _iterator = _createForOfIteratorHelper$z(widgetDeps),
4911
4922
  _step;
4912
4923
  try {
4913
4924
  for (_iterator.s(); !(_step = _iterator.n()).done;) {
@@ -6552,9 +6563,9 @@ function cleanIpcError(message) {
6552
6563
  return match ? match[1] : message;
6553
6564
  }
6554
6565
 
6555
- function _createForOfIteratorHelper$x(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray$x(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t["return"] || t["return"](); } finally { if (u) throw o; } } }; }
6556
- function _unsupportedIterableToArray$x(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray$x(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray$x(r, a) : void 0; } }
6557
- function _arrayLikeToArray$x(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
6566
+ function _createForOfIteratorHelper$y(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray$y(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t["return"] || t["return"](); } finally { if (u) throw o; } } }; }
6567
+ function _unsupportedIterableToArray$y(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray$y(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray$y(r, a) : void 0; } }
6568
+ function _arrayLikeToArray$y(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
6558
6569
 
6559
6570
  /**
6560
6571
  * useRegistrySearch — shared hook for browsing and installing registry packages.
@@ -6668,13 +6679,13 @@ var useRegistrySearch = function useRegistrySearch() {
6668
6679
  return c.toLowerCase();
6669
6680
  }));
6670
6681
  widgets = [];
6671
- _iterator = _createForOfIteratorHelper$x(pkgs);
6682
+ _iterator = _createForOfIteratorHelper$y(pkgs);
6672
6683
  try {
6673
6684
  for (_iterator.s(); !(_step = _iterator.n()).done;) {
6674
6685
  pkg = _step.value;
6675
6686
  // Compute missing APIs for the entire package
6676
6687
  allApiProviders = [];
6677
- _iterator2 = _createForOfIteratorHelper$x(pkg.providers || []);
6688
+ _iterator2 = _createForOfIteratorHelper$y(pkg.providers || []);
6678
6689
  try {
6679
6690
  for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
6680
6691
  p = _step2.value;
@@ -6687,11 +6698,11 @@ var useRegistrySearch = function useRegistrySearch() {
6687
6698
  } finally {
6688
6699
  _iterator2.f();
6689
6700
  }
6690
- _iterator3 = _createForOfIteratorHelper$x(pkg.widgets || []);
6701
+ _iterator3 = _createForOfIteratorHelper$y(pkg.widgets || []);
6691
6702
  try {
6692
6703
  for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {
6693
6704
  w = _step3.value;
6694
- _iterator5 = _createForOfIteratorHelper$x(w.providers || []);
6705
+ _iterator5 = _createForOfIteratorHelper$y(w.providers || []);
6695
6706
  try {
6696
6707
  for (_iterator5.s(); !(_step5 = _iterator5.n()).done;) {
6697
6708
  _p = _step5.value;
@@ -6713,7 +6724,7 @@ var useRegistrySearch = function useRegistrySearch() {
6713
6724
  missingApis = _toConsumableArray(new Set(allApiProviders)).filter(function (api) {
6714
6725
  return !capSet.has(api.toLowerCase());
6715
6726
  });
6716
- _iterator4 = _createForOfIteratorHelper$x(pkg.widgets || []);
6727
+ _iterator4 = _createForOfIteratorHelper$y(pkg.widgets || []);
6717
6728
  try {
6718
6729
  for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {
6719
6730
  widget = _step4.value;
@@ -7420,9 +7431,9 @@ function applyFilters(items, filters, mode) {
7420
7431
  });
7421
7432
  }
7422
7433
 
7423
- function _createForOfIteratorHelper$w(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray$w(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t["return"] || t["return"](); } finally { if (u) throw o; } } }; }
7424
- function _unsupportedIterableToArray$w(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray$w(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray$w(r, a) : void 0; } }
7425
- function _arrayLikeToArray$w(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
7434
+ function _createForOfIteratorHelper$x(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray$x(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t["return"] || t["return"](); } finally { if (u) throw o; } } }; }
7435
+ function _unsupportedIterableToArray$x(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray$x(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray$x(r, a) : void 0; } }
7436
+ function _arrayLikeToArray$x(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
7426
7437
  var WizardCustomizeStep = function WizardCustomizeStep(_ref) {
7427
7438
  var _state$selectedDashbo, _state$selectedDashbo2;
7428
7439
  var state = _ref.state,
@@ -7641,7 +7652,7 @@ var WizardCustomizeStep = function WizardCustomizeStep(_ref) {
7641
7652
  installedNames = new Set(installedList.map(function (w) {
7642
7653
  return w.name;
7643
7654
  }));
7644
- _iterator = _createForOfIteratorHelper$w(state.selectedWidgets);
7655
+ _iterator = _createForOfIteratorHelper$x(state.selectedWidgets);
7645
7656
  _context2.prev = 12;
7646
7657
  _iterator.s();
7647
7658
  case 13:
@@ -9211,9 +9222,9 @@ var PanelEditItem = function PanelEditItem(_ref) {
9211
9222
  };
9212
9223
 
9213
9224
  var _excluded$6 = ["rows", "cols"];
9214
- function _createForOfIteratorHelper$v(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray$v(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t["return"] || t["return"](); } finally { if (u) throw o; } } }; }
9215
- function _unsupportedIterableToArray$v(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray$v(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray$v(r, a) : void 0; } }
9216
- function _arrayLikeToArray$v(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
9225
+ function _createForOfIteratorHelper$w(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray$w(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t["return"] || t["return"](); } finally { if (u) throw o; } } }; }
9226
+ function _unsupportedIterableToArray$w(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray$w(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray$w(r, a) : void 0; } }
9227
+ function _arrayLikeToArray$w(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
9217
9228
  function ownKeys$U(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; }
9218
9229
  function _objectSpread$U(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$U(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$U(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
9219
9230
  var defaultGrid = {
@@ -9366,7 +9377,7 @@ function GridEditor(_ref) {
9366
9377
  function sortObjectByKeys(obj) {
9367
9378
  var sortedKeys = Object.keys(obj).sort();
9368
9379
  var sortedObj = {};
9369
- var _iterator = _createForOfIteratorHelper$v(sortedKeys),
9380
+ var _iterator = _createForOfIteratorHelper$w(sortedKeys),
9370
9381
  _step;
9371
9382
  try {
9372
9383
  for (_iterator.s(); !(_step = _iterator.n()).done;) {
@@ -9839,9 +9850,9 @@ var PanelEditItemNotifications = function PanelEditItemNotifications(_ref) {
9839
9850
  });
9840
9851
  };
9841
9852
 
9842
- function _createForOfIteratorHelper$u(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray$u(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t["return"] || t["return"](); } finally { if (u) throw o; } } }; }
9843
- function _unsupportedIterableToArray$u(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray$u(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray$u(r, a) : void 0; } }
9844
- function _arrayLikeToArray$u(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
9853
+ function _createForOfIteratorHelper$v(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray$v(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t["return"] || t["return"](); } finally { if (u) throw o; } } }; }
9854
+ function _unsupportedIterableToArray$v(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray$v(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray$v(r, a) : void 0; } }
9855
+ function _arrayLikeToArray$v(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
9845
9856
  function ownKeys$S(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; }
9846
9857
  function _objectSpread$S(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$S(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$S(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
9847
9858
  var DAYS = [{
@@ -10170,7 +10181,7 @@ var PanelEditItemSchedule = function PanelEditItemSchedule(_ref2) {
10170
10181
  setIsLoading(true);
10171
10182
  window.mainApi.scheduler.getTasks(widgetUuid).then(function (tasks) {
10172
10183
  var stateMap = {};
10173
- var _iterator = _createForOfIteratorHelper$u(tasks || []),
10184
+ var _iterator = _createForOfIteratorHelper$v(tasks || []),
10174
10185
  _step;
10175
10186
  try {
10176
10187
  for (_iterator.s(); !(_step = _iterator.n()).done;) {
@@ -10429,9 +10440,9 @@ function isUserWidget(item) {
10429
10440
  return true;
10430
10441
  }
10431
10442
 
10432
- function _createForOfIteratorHelper$t(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray$t(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t["return"] || t["return"](); } finally { if (u) throw o; } } }; }
10433
- function _unsupportedIterableToArray$t(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray$t(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray$t(r, a) : void 0; } }
10434
- function _arrayLikeToArray$t(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
10443
+ function _createForOfIteratorHelper$u(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray$u(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t["return"] || t["return"](); } finally { if (u) throw o; } } }; }
10444
+ function _unsupportedIterableToArray$u(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray$u(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray$u(r, a) : void 0; } }
10445
+ function _arrayLikeToArray$u(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
10435
10446
 
10436
10447
  /**
10437
10448
  * Resolve which provider name a given widget instance would bind to for
@@ -10463,7 +10474,7 @@ function resolveProviderName(_ref) {
10463
10474
  // array. Support both because different callers shape it either way.
10464
10475
  if (appProviders) {
10465
10476
  if (Array.isArray(appProviders)) {
10466
- var _iterator = _createForOfIteratorHelper$t(appProviders),
10477
+ var _iterator = _createForOfIteratorHelper$u(appProviders),
10467
10478
  _step;
10468
10479
  try {
10469
10480
  for (_iterator.s(); !(_step = _iterator.n()).done;) {
@@ -10523,7 +10534,7 @@ function forEachWidget(workspace, visit) {
10523
10534
  };
10524
10535
  var _walk = function walk(items) {
10525
10536
  if (!Array.isArray(items)) return;
10526
- var _iterator2 = _createForOfIteratorHelper$t(items),
10537
+ var _iterator2 = _createForOfIteratorHelper$u(items),
10527
10538
  _step2;
10528
10539
  try {
10529
10540
  for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
@@ -10564,7 +10575,7 @@ function forEachWidget(workspace, visit) {
10564
10575
  // widgets that only live there (e.g. AI-place writes that bypass
10565
10576
  // the page handler).
10566
10577
  if (Array.isArray(workspace.pages)) {
10567
- var _iterator3 = _createForOfIteratorHelper$t(workspace.pages),
10578
+ var _iterator3 = _createForOfIteratorHelper$u(workspace.pages),
10568
10579
  _step3;
10569
10580
  try {
10570
10581
  for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {
@@ -10615,7 +10626,7 @@ function getUnresolvedProviders(_ref2) {
10615
10626
  // the same `type` listed twice (a Claude code-gen quirk), which
10616
10627
  // would otherwise produce duplicate rows in the Providers tab.
10617
10628
  var seenTypes = new Set();
10618
- var _iterator4 = _createForOfIteratorHelper$t(requirements),
10629
+ var _iterator4 = _createForOfIteratorHelper$u(requirements),
10619
10630
  _step4;
10620
10631
  try {
10621
10632
  for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {
@@ -10658,7 +10669,7 @@ function getUnresolvedProviders(_ref2) {
10658
10669
  */
10659
10670
  function groupByProviderType(unresolved) {
10660
10671
  var byType = new Map();
10661
- var _iterator5 = _createForOfIteratorHelper$t(unresolved || []),
10672
+ var _iterator5 = _createForOfIteratorHelper$u(unresolved || []),
10662
10673
  _step5;
10663
10674
  try {
10664
10675
  for (_iterator5.s(); !(_step5 = _iterator5.n()).done;) {
@@ -10700,7 +10711,7 @@ function getAllProviderBindings(_ref3) {
10700
10711
  // quirk) which would otherwise duplicate the per-widget row in
10701
10712
  // the Providers tab.
10702
10713
  var seenTypes = new Set();
10703
- var _iterator6 = _createForOfIteratorHelper$t(requirements),
10714
+ var _iterator6 = _createForOfIteratorHelper$u(requirements),
10704
10715
  _step6;
10705
10716
  try {
10706
10717
  for (_iterator6.s(); !(_step6 = _iterator6.n()).done;) {
@@ -10742,9 +10753,9 @@ function getAllProviderBindings(_ref3) {
10742
10753
 
10743
10754
  function ownKeys$Q(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; }
10744
10755
  function _objectSpread$Q(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$Q(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$Q(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
10745
- function _createForOfIteratorHelper$s(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray$s(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t["return"] || t["return"](); } finally { if (u) throw o; } } }; }
10746
- function _unsupportedIterableToArray$s(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray$s(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray$s(r, a) : void 0; } }
10747
- function _arrayLikeToArray$s(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
10756
+ function _createForOfIteratorHelper$t(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray$t(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t["return"] || t["return"](); } finally { if (u) throw o; } } }; }
10757
+ function _unsupportedIterableToArray$t(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray$t(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray$t(r, a) : void 0; } }
10758
+ function _arrayLikeToArray$t(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
10748
10759
  var EVENT_STRING_RE = /^([^[]+)\[([^\]]+)\]\.(.+)$/;
10749
10760
 
10750
10761
  /** Parse "Component[itemId].event" → { component, itemId, event }. */
@@ -10914,7 +10925,7 @@ function getCurrentWiring(workspace) {
10914
10925
  // Live format is array; defensive guard for legacy object
10915
10926
  // form (a single source widget keyed under the handler).
10916
10927
  var events = Array.isArray(eventList) ? eventList : typeof eventList === "string" ? [eventList] : [];
10917
- var _iterator = _createForOfIteratorHelper$s(events),
10928
+ var _iterator = _createForOfIteratorHelper$t(events),
10918
10929
  _step;
10919
10930
  try {
10920
10931
  for (_iterator.s(); !(_step = _iterator.n()).done;) {
@@ -10977,7 +10988,7 @@ function getOrphanedListeners(workspace, getWidgetConfig) {
10977
10988
  if (!byItemId.has(id)) byItemId.set(id, meta);
10978
10989
  });
10979
10990
  var orphans = [];
10980
- var _iterator2 = _createForOfIteratorHelper$s(wiring),
10991
+ var _iterator2 = _createForOfIteratorHelper$t(wiring),
10981
10992
  _step2;
10982
10993
  try {
10983
10994
  for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
@@ -11043,7 +11054,7 @@ function pruneDeadListenerReferences(workspace) {
11043
11054
  var liveKeys = new Set();
11044
11055
  var _walkForLive = function walkForLive(items) {
11045
11056
  if (!Array.isArray(items)) return;
11046
- var _iterator3 = _createForOfIteratorHelper$s(items),
11057
+ var _iterator3 = _createForOfIteratorHelper$t(items),
11047
11058
  _step3;
11048
11059
  try {
11049
11060
  for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {
@@ -11064,7 +11075,7 @@ function pruneDeadListenerReferences(workspace) {
11064
11075
  };
11065
11076
  _walkForLive(workspace.layout);
11066
11077
  if (Array.isArray(workspace.pages)) {
11067
- var _iterator4 = _createForOfIteratorHelper$s(workspace.pages),
11078
+ var _iterator4 = _createForOfIteratorHelper$t(workspace.pages),
11068
11079
  _step4;
11069
11080
  try {
11070
11081
  for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {
@@ -11081,7 +11092,7 @@ function pruneDeadListenerReferences(workspace) {
11081
11092
  var removed = 0;
11082
11093
  var _pruneListeners = function pruneListeners(items) {
11083
11094
  if (!Array.isArray(items)) return;
11084
- var _iterator5 = _createForOfIteratorHelper$s(items),
11095
+ var _iterator5 = _createForOfIteratorHelper$t(items),
11085
11096
  _step5;
11086
11097
  try {
11087
11098
  for (_iterator5.s(); !(_step5 = _iterator5.n()).done;) {
@@ -11093,7 +11104,7 @@ function pruneDeadListenerReferences(workspace) {
11093
11104
  var events = item.listeners[handler];
11094
11105
  if (!Array.isArray(events)) continue;
11095
11106
  var kept = [];
11096
- var _iterator6 = _createForOfIteratorHelper$s(events),
11107
+ var _iterator6 = _createForOfIteratorHelper$t(events),
11097
11108
  _step6;
11098
11109
  try {
11099
11110
  for (_iterator6.s(); !(_step6 = _iterator6.n()).done;) {
@@ -11128,7 +11139,7 @@ function pruneDeadListenerReferences(workspace) {
11128
11139
  };
11129
11140
  _pruneListeners(workspace.layout);
11130
11141
  if (Array.isArray(workspace.pages)) {
11131
- var _iterator7 = _createForOfIteratorHelper$s(workspace.pages),
11142
+ var _iterator7 = _createForOfIteratorHelper$t(workspace.pages),
11132
11143
  _step7;
11133
11144
  try {
11134
11145
  for (_iterator7.s(); !(_step7 = _iterator7.n()).done;) {
@@ -11172,7 +11183,7 @@ function applyWiringChanges(workspace, _ref) {
11172
11183
  });
11173
11184
  return byReceiver.get(id);
11174
11185
  };
11175
- var _iterator8 = _createForOfIteratorHelper$s(adds),
11186
+ var _iterator8 = _createForOfIteratorHelper$t(adds),
11176
11187
  _step8;
11177
11188
  try {
11178
11189
  for (_iterator8.s(); !(_step8 = _iterator8.n()).done;) {
@@ -11185,7 +11196,7 @@ function applyWiringChanges(workspace, _ref) {
11185
11196
  } finally {
11186
11197
  _iterator8.f();
11187
11198
  }
11188
- var _iterator9 = _createForOfIteratorHelper$s(removes),
11199
+ var _iterator9 = _createForOfIteratorHelper$t(removes),
11189
11200
  _step9;
11190
11201
  try {
11191
11202
  for (_iterator9.s(); !(_step9 = _iterator9.n()).done;) {
@@ -11259,7 +11270,7 @@ function applyToItem(listeners, _ref2) {
11259
11270
  }
11260
11271
 
11261
11272
  // Removes first so a re-add (rare) lands.
11262
- var _iterator0 = _createForOfIteratorHelper$s(removes),
11273
+ var _iterator0 = _createForOfIteratorHelper$t(removes),
11263
11274
  _step0;
11264
11275
  try {
11265
11276
  var _loop = function _loop() {
@@ -11288,7 +11299,7 @@ function applyToItem(listeners, _ref2) {
11288
11299
  } finally {
11289
11300
  _iterator0.f();
11290
11301
  }
11291
- var _iterator1 = _createForOfIteratorHelper$s(adds),
11302
+ var _iterator1 = _createForOfIteratorHelper$t(adds),
11292
11303
  _step1;
11293
11304
  try {
11294
11305
  for (_iterator1.s(); !(_step1 = _iterator1.n()).done;) {
@@ -14261,9 +14272,9 @@ function mcpJsonToFormState(jsonString, nextRowId) {
14261
14272
  return result;
14262
14273
  }
14263
14274
 
14264
- function _createForOfIteratorHelper$r(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray$r(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t["return"] || t["return"](); } finally { if (u) throw o; } } }; }
14265
- function _unsupportedIterableToArray$r(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray$r(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray$r(r, a) : void 0; } }
14266
- function _arrayLikeToArray$r(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
14275
+ function _createForOfIteratorHelper$s(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray$s(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t["return"] || t["return"](); } finally { if (u) throw o; } } }; }
14276
+ function _unsupportedIterableToArray$s(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray$s(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray$s(r, a) : void 0; } }
14277
+ function _arrayLikeToArray$s(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
14267
14278
  function ownKeys$M(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; }
14268
14279
  function _objectSpread$M(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$M(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$M(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
14269
14280
  var EnhancedWidgetDropdown = function EnhancedWidgetDropdown(_ref) {
@@ -14548,11 +14559,11 @@ var EnhancedWidgetDropdown = function EnhancedWidgetDropdown(_ref) {
14548
14559
 
14549
14560
  // Flatten all widgets from all packages for the widget list
14550
14561
  flatWidgets = [];
14551
- _iterator = _createForOfIteratorHelper$r(result.packages || []);
14562
+ _iterator = _createForOfIteratorHelper$s(result.packages || []);
14552
14563
  try {
14553
14564
  for (_iterator.s(); !(_step = _iterator.n()).done;) {
14554
14565
  pkg = _step.value;
14555
- _iterator2 = _createForOfIteratorHelper$r(pkg.widgets || []);
14566
+ _iterator2 = _createForOfIteratorHelper$s(pkg.widgets || []);
14556
14567
  try {
14557
14568
  for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
14558
14569
  widget = _step2.value;
@@ -16446,9 +16457,9 @@ var useWidgetSchedulerStatus = function useWidgetSchedulerStatus(widgetId) {
16446
16457
  };
16447
16458
  };
16448
16459
 
16449
- function _createForOfIteratorHelper$q(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray$q(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t["return"] || t["return"](); } finally { if (u) throw o; } } }; }
16450
- function _unsupportedIterableToArray$q(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray$q(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray$q(r, a) : void 0; } }
16451
- function _arrayLikeToArray$q(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
16460
+ function _createForOfIteratorHelper$r(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray$r(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t["return"] || t["return"](); } finally { if (u) throw o; } } }; }
16461
+ function _unsupportedIterableToArray$r(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray$r(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray$r(r, a) : void 0; } }
16462
+ function _arrayLikeToArray$r(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
16452
16463
  function formatCountdown(ms) {
16453
16464
  if (ms == null || ms < 0) return "--";
16454
16465
  if (ms < 1000) return "< 1s";
@@ -16565,7 +16576,7 @@ var WidgetCardStatusBar = function WidgetCardStatusBar(_ref) {
16565
16576
 
16566
16577
  // Find soonest countdown among enabled tasks
16567
16578
  var soonestMs = null;
16568
- var _iterator = _createForOfIteratorHelper$q(enabledTasks),
16579
+ var _iterator = _createForOfIteratorHelper$r(enabledTasks),
16569
16580
  _step;
16570
16581
  try {
16571
16582
  for (_iterator.s(); !(_step = _iterator.n()).done;) {
@@ -21884,9 +21895,9 @@ var ExternalWidget = function ExternalWidget(_ref) {
21884
21895
  var GRID_CELL_WIDGET_TYPE = "grid-cell-widget";
21885
21896
  var SIDEBAR_WIDGET_TYPE = "sidebar-widget";
21886
21897
 
21887
- function _createForOfIteratorHelper$p(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray$p(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t["return"] || t["return"](); } finally { if (u) throw o; } } }; }
21888
- function _unsupportedIterableToArray$p(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray$p(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray$p(r, a) : void 0; } }
21889
- function _arrayLikeToArray$p(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
21898
+ function _createForOfIteratorHelper$q(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray$q(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t["return"] || t["return"](); } finally { if (u) throw o; } } }; }
21899
+ function _unsupportedIterableToArray$q(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray$q(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray$q(r, a) : void 0; } }
21900
+ function _arrayLikeToArray$q(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
21890
21901
  function ownKeys$F(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; }
21891
21902
  function _objectSpread$F(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$F(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$F(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
21892
21903
 
@@ -22509,7 +22520,7 @@ var LayoutGridContainer = /*#__PURE__*/memo(function (_ref3) {
22509
22520
  return selectable["delete"](cn);
22510
22521
  });
22511
22522
  var resolved = new Set();
22512
- var _iterator = _createForOfIteratorHelper$p(selectable),
22523
+ var _iterator = _createForOfIteratorHelper$q(selectable),
22513
22524
  _step;
22514
22525
  try {
22515
22526
  for (_iterator.s(); !(_step = _iterator.n()).done;) {
@@ -24918,9 +24929,9 @@ function migrateBareComponentName(componentMap, component) {
24918
24929
 
24919
24930
  function ownKeys$D(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; }
24920
24931
  function _objectSpread$D(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$D(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$D(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
24921
- function _createForOfIteratorHelper$o(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray$o(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t["return"] || t["return"](); } finally { if (u) throw o; } } }; }
24922
- function _unsupportedIterableToArray$o(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray$o(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray$o(r, a) : void 0; } }
24923
- function _arrayLikeToArray$o(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
24932
+ function _createForOfIteratorHelper$p(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray$p(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t["return"] || t["return"](); } finally { if (u) throw o; } } }; }
24933
+ function _unsupportedIterableToArray$p(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray$p(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray$p(r, a) : void 0; } }
24934
+ function _arrayLikeToArray$p(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
24924
24935
  /**
24925
24936
  * The model for all layout components used primarily in the renderLayout method
24926
24937
  * @param {Object} layoutItem an object containing various attributes of the layout item
@@ -24932,7 +24943,7 @@ function _arrayLikeToArray$o(r, a) { (null == a || a > r.length) && (a = r.lengt
24932
24943
  function sortObjectByKeys(obj) {
24933
24944
  var sortedKeys = Object.keys(obj).sort();
24934
24945
  var sortedObj = {};
24935
- var _iterator = _createForOfIteratorHelper$o(sortedKeys),
24946
+ var _iterator = _createForOfIteratorHelper$p(sortedKeys),
24936
24947
  _step;
24937
24948
  try {
24938
24949
  for (_iterator.s(); !(_step = _iterator.n()).done;) {
@@ -25244,9 +25255,9 @@ var SettingsModel = function SettingsModel() {
25244
25255
  return obj;
25245
25256
  };
25246
25257
 
25247
- function _createForOfIteratorHelper$n(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray$n(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t["return"] || t["return"](); } finally { if (u) throw o; } } }; }
25248
- function _unsupportedIterableToArray$n(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray$n(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray$n(r, a) : void 0; } }
25249
- function _arrayLikeToArray$n(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
25258
+ function _createForOfIteratorHelper$o(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray$o(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t["return"] || t["return"](); } finally { if (u) throw o; } } }; }
25259
+ function _unsupportedIterableToArray$o(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray$o(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray$o(r, a) : void 0; } }
25260
+ function _arrayLikeToArray$o(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
25250
25261
 
25251
25262
  /**
25252
25263
  * Workspace-level pre-pass that migrates legacy bare component
@@ -25321,7 +25332,7 @@ function migrateScopedIdsInWorkspace(workspace, componentMap) {
25321
25332
  };
25322
25333
  var _walk = function walk(items) {
25323
25334
  if (!Array.isArray(items)) return;
25324
- var _iterator = _createForOfIteratorHelper$n(items),
25335
+ var _iterator = _createForOfIteratorHelper$o(items),
25325
25336
  _step;
25326
25337
  try {
25327
25338
  for (_iterator.s(); !(_step = _iterator.n()).done;) {
@@ -25343,7 +25354,7 @@ function migrateScopedIdsInWorkspace(workspace, componentMap) {
25343
25354
  };
25344
25355
  _walk(workspace.layout);
25345
25356
  if (Array.isArray(workspace.pages)) {
25346
- var _iterator2 = _createForOfIteratorHelper$n(workspace.pages),
25357
+ var _iterator2 = _createForOfIteratorHelper$o(workspace.pages),
25347
25358
  _step2;
25348
25359
  try {
25349
25360
  for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
@@ -25360,9 +25371,9 @@ function migrateScopedIdsInWorkspace(workspace, componentMap) {
25360
25371
  return counts;
25361
25372
  }
25362
25373
 
25363
- function _createForOfIteratorHelper$m(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray$m(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t["return"] || t["return"](); } finally { if (u) throw o; } } }; }
25364
- function _unsupportedIterableToArray$m(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray$m(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray$m(r, a) : void 0; } }
25365
- function _arrayLikeToArray$m(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
25374
+ function _createForOfIteratorHelper$n(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray$n(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t["return"] || t["return"](); } finally { if (u) throw o; } } }; }
25375
+ function _unsupportedIterableToArray$n(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray$n(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray$n(r, a) : void 0; } }
25376
+ function _arrayLikeToArray$n(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
25366
25377
  /**
25367
25378
  * cleanForeignWidgetsFromWorkspace.js
25368
25379
  *
@@ -25403,7 +25414,7 @@ function cleanForeignWidgetsFromWorkspace(workspace) {
25403
25414
  var _cleanList = function cleanList(items) {
25404
25415
  if (!Array.isArray(items)) return items;
25405
25416
  var kept = [];
25406
- var _iterator = _createForOfIteratorHelper$m(items),
25417
+ var _iterator = _createForOfIteratorHelper$n(items),
25407
25418
  _step;
25408
25419
  try {
25409
25420
  for (_iterator.s(); !(_step = _iterator.n()).done;) {
@@ -25440,7 +25451,7 @@ function cleanForeignWidgetsFromWorkspace(workspace) {
25440
25451
  workspace.sidebarLayout = _cleanList(workspace.sidebarLayout);
25441
25452
  }
25442
25453
  if (Array.isArray(workspace.pages)) {
25443
- var _iterator2 = _createForOfIteratorHelper$m(workspace.pages),
25454
+ var _iterator2 = _createForOfIteratorHelper$n(workspace.pages),
25444
25455
  _step2;
25445
25456
  try {
25446
25457
  for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
@@ -25458,9 +25469,9 @@ function cleanForeignWidgetsFromWorkspace(workspace) {
25458
25469
  return summary;
25459
25470
  }
25460
25471
 
25461
- function _createForOfIteratorHelper$l(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray$l(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t["return"] || t["return"](); } finally { if (u) throw o; } } }; }
25462
- function _unsupportedIterableToArray$l(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray$l(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray$l(r, a) : void 0; } }
25463
- function _arrayLikeToArray$l(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
25472
+ function _createForOfIteratorHelper$m(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray$m(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t["return"] || t["return"](); } finally { if (u) throw o; } } }; }
25473
+ function _unsupportedIterableToArray$m(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray$m(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray$m(r, a) : void 0; } }
25474
+ function _arrayLikeToArray$m(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
25464
25475
  /**
25465
25476
  * migrateLayoutItemTypes.js
25466
25477
  *
@@ -25522,7 +25533,7 @@ function migrateLayoutItemTypes(workspace) {
25522
25533
  };
25523
25534
  var _walk = function walk(items) {
25524
25535
  if (!Array.isArray(items)) return;
25525
- var _iterator = _createForOfIteratorHelper$l(items),
25536
+ var _iterator = _createForOfIteratorHelper$m(items),
25526
25537
  _step;
25527
25538
  try {
25528
25539
  for (_iterator.s(); !(_step = _iterator.n()).done;) {
@@ -25540,7 +25551,7 @@ function migrateLayoutItemTypes(workspace) {
25540
25551
  };
25541
25552
  _walk(workspace.layout);
25542
25553
  if (Array.isArray(workspace.pages)) {
25543
- var _iterator2 = _createForOfIteratorHelper$l(workspace.pages),
25554
+ var _iterator2 = _createForOfIteratorHelper$m(workspace.pages),
25544
25555
  _step2;
25545
25556
  try {
25546
25557
  for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
@@ -25921,9 +25932,9 @@ var ThemeModel = function ThemeModel() {
25921
25932
  }
25922
25933
  };
25923
25934
 
25924
- function _createForOfIteratorHelper$k(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray$k(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t["return"] || t["return"](); } finally { if (u) throw o; } } }; }
25925
- function _unsupportedIterableToArray$k(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray$k(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray$k(r, a) : void 0; } }
25926
- function _arrayLikeToArray$k(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
25935
+ function _createForOfIteratorHelper$l(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray$l(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t["return"] || t["return"](); } finally { if (u) throw o; } } }; }
25936
+ function _unsupportedIterableToArray$l(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray$l(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray$l(r, a) : void 0; } }
25937
+ function _arrayLikeToArray$l(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
25927
25938
  /*
25928
25939
  "component": AnalyticsReportsWidget,
25929
25940
  "type":"widget",
@@ -26041,7 +26052,7 @@ var ComponentConfigModel = function ComponentConfigModel() {
26041
26052
  if ("providers" in obj && Array.isArray(obj.providers)) {
26042
26053
  var seen = new Set();
26043
26054
  var cleaned = [];
26044
- var _iterator = _createForOfIteratorHelper$k(obj.providers),
26055
+ var _iterator = _createForOfIteratorHelper$l(obj.providers),
26045
26056
  _step;
26046
26057
  try {
26047
26058
  for (_iterator.s(); !(_step = _iterator.n()).done;) {
@@ -26089,9 +26100,9 @@ var MenuItemModel = function MenuItemModel() {
26089
26100
 
26090
26101
  function ownKeys$C(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; }
26091
26102
  function _objectSpread$C(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$C(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$C(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
26092
- function _createForOfIteratorHelper$j(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray$j(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t["return"] || t["return"](); } finally { if (u) throw o; } } }; }
26093
- function _unsupportedIterableToArray$j(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray$j(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray$j(r, a) : void 0; } }
26094
- function _arrayLikeToArray$j(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
26103
+ function _createForOfIteratorHelper$k(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray$k(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t["return"] || t["return"](); } finally { if (u) throw o; } } }; }
26104
+ function _unsupportedIterableToArray$k(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray$k(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray$k(r, a) : void 0; } }
26105
+ function _arrayLikeToArray$k(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
26095
26106
  /**
26096
26107
  * A Model for a Workspace (Dashboard)
26097
26108
  * The Dashboard in this instance is the entire Layout inclusive of the workspaces and widgets
@@ -26163,7 +26174,7 @@ var DashboardModel = /*#__PURE__*/function () {
26163
26174
 
26164
26175
  // Also normalize grids within pages
26165
26176
  if (this.pages.length > 0) {
26166
- var _iterator = _createForOfIteratorHelper$j(this.pages),
26177
+ var _iterator = _createForOfIteratorHelper$k(this.pages),
26167
26178
  _step;
26168
26179
  try {
26169
26180
  for (_iterator.s(); !(_step = _iterator.n()).done;) {
@@ -28139,7 +28150,7 @@ var DashboardModel = /*#__PURE__*/function () {
28139
28150
  try {
28140
28151
  // Collect all item IDs actively referenced by grid cells
28141
28152
  var activeItemIds = new Set();
28142
- var _iterator2 = _createForOfIteratorHelper$j(this.layout),
28153
+ var _iterator2 = _createForOfIteratorHelper$k(this.layout),
28143
28154
  _step2;
28144
28155
  try {
28145
28156
  for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
@@ -28179,7 +28190,7 @@ var DashboardModel = /*#__PURE__*/function () {
28179
28190
  });
28180
28191
 
28181
28192
  // Clean listener references on remaining items for each removed orphan
28182
- var _iterator3 = _createForOfIteratorHelper$j(orphanedIds),
28193
+ var _iterator3 = _createForOfIteratorHelper$k(orphanedIds),
28183
28194
  _step3;
28184
28195
  try {
28185
28196
  for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {
@@ -29000,9 +29011,9 @@ var useDashboard = function useDashboard() {
29000
29011
  });
29001
29012
  };
29002
29013
 
29003
- function _createForOfIteratorHelper$i(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray$i(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t["return"] || t["return"](); } finally { if (u) throw o; } } }; }
29004
- function _unsupportedIterableToArray$i(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray$i(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray$i(r, a) : void 0; } }
29005
- function _arrayLikeToArray$i(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
29014
+ function _createForOfIteratorHelper$j(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray$j(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t["return"] || t["return"](); } finally { if (u) throw o; } } }; }
29015
+ function _unsupportedIterableToArray$j(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray$j(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray$j(r, a) : void 0; } }
29016
+ function _arrayLikeToArray$j(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
29006
29017
 
29007
29018
  /**
29008
29019
  * useWidgetProviders Hook
@@ -29058,7 +29069,7 @@ var useWidgetProviders = function useWidgetProviders() {
29058
29069
  // 1. Widget-level: stored directly on the layout item by handleSelectProvider
29059
29070
  // 2. Workspace-level: stored as workspace.selectedProviders[widgetId][providerType]
29060
29071
  var providers = {};
29061
- var _iterator = _createForOfIteratorHelper$i(providerDeclarations),
29072
+ var _iterator = _createForOfIteratorHelper$j(providerDeclarations),
29062
29073
  _step;
29063
29074
  try {
29064
29075
  for (_iterator.s(); !(_step = _iterator.n()).done;) {
@@ -29100,19 +29111,104 @@ var useWidgetProviders = function useWidgetProviders() {
29100
29111
  };
29101
29112
  };
29102
29113
 
29114
+ function _createForOfIteratorHelper$i(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray$i(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t["return"] || t["return"](); } finally { if (u) throw o; } } }; }
29115
+ function _unsupportedIterableToArray$i(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray$i(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray$i(r, a) : void 0; } }
29116
+ function _arrayLikeToArray$i(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
29117
+
29103
29118
  /**
29104
29119
  * Module-level shared state for MCP server connections.
29105
- * Prevents multiple hook instances (e.g., 4 widgets using "slack") from
29106
- * each firing their own IPC startServer call.
29120
+ * Prevents multiple hook instances (e.g., 4 widgets on the same dashboard
29121
+ * using "slack") from each firing their own IPC startServer call.
29122
+ *
29123
+ * Slice 3a: keys are scoped per `(workspaceId, serverName)` so two
29124
+ * dashboards using the same provider name don't share renderer state
29125
+ * (the main process spawns separate server instances for each).
29107
29126
  *
29108
- * serverStates: tracks connection result + consumer reference count per server
29109
- * pendingConnects: deduplicates in-flight IPC calls so only 1 fires per server
29127
+ * serverStates: tracks connection result + consumer reference count
29128
+ * pendingConnects: deduplicates in-flight IPC calls
29110
29129
  */
29111
29130
  var serverStates = new Map();
29112
- // Map<serverName, { status, tools, resources, consumerCount }>
29131
+ // Map<`${workspaceId}::${serverName}`, { status, tools, resources, consumerCount }>
29113
29132
 
29114
29133
  var pendingConnects$1 = new Map();
29115
- // Map<serverName, Promise<result>>
29134
+ // Map<`${workspaceId}::${serverName}`, Promise<result>>
29135
+
29136
+ var NO_WORKSPACE = "__no_workspace__";
29137
+ function rendererStateKey(workspaceId, serverName) {
29138
+ var wid = workspaceId && typeof workspaceId === "string" ? workspaceId : NO_WORKSPACE;
29139
+ return wid + "::" + serverName;
29140
+ }
29141
+
29142
+ /**
29143
+ * Slice 3b: compute the union of granted paths for a server across a
29144
+ * set of widgets. Mirrors electron/utils/mcpScopeResolver.unionPathScope
29145
+ * but inline here because the electron/ helper isn't reachable from the
29146
+ * renderer build. The mainline path-scope test runs against the
29147
+ * electron-side helper; this one is exercised at runtime when widgets
29148
+ * connect.
29149
+ */
29150
+ function unionPathScope(grants, serverName) {
29151
+ var reads = new Set();
29152
+ var writes = new Set();
29153
+ if (!Array.isArray(grants)) {
29154
+ return {
29155
+ readPaths: [],
29156
+ writePaths: [],
29157
+ allowedPaths: []
29158
+ };
29159
+ }
29160
+ var _iterator = _createForOfIteratorHelper$i(grants),
29161
+ _step;
29162
+ try {
29163
+ for (_iterator.s(); !(_step = _iterator.n()).done;) {
29164
+ var entry = _step.value;
29165
+ if (!entry || _typeof(entry) !== "object") continue;
29166
+ var granted = entry.granted;
29167
+ if (!granted || _typeof(granted) !== "object") continue;
29168
+ var servers = granted.servers;
29169
+ if (!servers || _typeof(servers) !== "object") continue;
29170
+ var serverPerms = servers[serverName];
29171
+ if (!serverPerms || _typeof(serverPerms) !== "object") continue;
29172
+ if (Array.isArray(serverPerms.readPaths)) {
29173
+ var _iterator2 = _createForOfIteratorHelper$i(serverPerms.readPaths),
29174
+ _step2;
29175
+ try {
29176
+ for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
29177
+ var p = _step2.value;
29178
+ if (typeof p === "string" && p) reads.add(p);
29179
+ }
29180
+ } catch (err) {
29181
+ _iterator2.e(err);
29182
+ } finally {
29183
+ _iterator2.f();
29184
+ }
29185
+ }
29186
+ if (Array.isArray(serverPerms.writePaths)) {
29187
+ var _iterator3 = _createForOfIteratorHelper$i(serverPerms.writePaths),
29188
+ _step3;
29189
+ try {
29190
+ for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {
29191
+ var _p = _step3.value;
29192
+ if (typeof _p === "string" && _p) writes.add(_p);
29193
+ }
29194
+ } catch (err) {
29195
+ _iterator3.e(err);
29196
+ } finally {
29197
+ _iterator3.f();
29198
+ }
29199
+ }
29200
+ }
29201
+ } catch (err) {
29202
+ _iterator.e(err);
29203
+ } finally {
29204
+ _iterator.f();
29205
+ }
29206
+ return {
29207
+ readPaths: _toConsumableArray(reads),
29208
+ writePaths: _toConsumableArray(writes),
29209
+ allowedPaths: _toConsumableArray(new Set([].concat(_toConsumableArray(reads), _toConsumableArray(writes))))
29210
+ };
29211
+ }
29116
29212
 
29117
29213
  /**
29118
29214
  * useMcpProvider Hook
@@ -29281,7 +29377,8 @@ var useMcpProvider = function useMcpProvider(providerType) {
29281
29377
  * even when multiple hook instances call connect() simultaneously.
29282
29378
  */
29283
29379
  var connect = useCallback(/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee() {
29284
- var cached, statusResult, result, state, connectPromise, _result, _t2, _t3;
29380
+ var _workspace$workspaceD2;
29381
+ var workspaceId, stateKey, pathScope, _workspace$workspaceD3, _window$mainApi, wsBindings, widgetIdsOnServer, _i2, _Object$entries2, _Object$entries2$_i, wId, bindings, allGrants, relevant, cached, statusResult, result, state, connectPromise, _result, _t, _t4, _t5;
29285
29382
  return _regeneratorRuntime.wrap(function (_context) {
29286
29383
  while (1) switch (_context.prev = _context.next) {
29287
29384
  case 0:
@@ -29312,96 +29409,150 @@ var useMcpProvider = function useMcpProvider(providerType) {
29312
29409
  setError("Provider \"".concat(selectedProviderName, "\" has no MCP configuration"));
29313
29410
  return _context.abrupt("return");
29314
29411
  case 4:
29412
+ // Slice 3a: scope state per (workspace, provider). Two dashboards
29413
+ // using the same provider name get separate server instances in the
29414
+ // main process, so the renderer state must mirror that or one
29415
+ // dashboard's "connected" cache will short-circuit a second
29416
+ // dashboard's connect that needs its own backing process.
29417
+ workspaceId = (workspace === null || workspace === void 0 || (_workspace$workspaceD2 = workspace.workspaceData) === null || _workspace$workspaceD2 === void 0 ? void 0 : _workspace$workspaceD2.id) || null;
29418
+ stateKey = rendererStateKey(workspaceId, selectedProviderName); // Slice 3b: compute the workspace's path-scope union from grants.
29419
+ // Enumerate widgets on this workspace that bind to this server,
29420
+ // look up their grants, union the read+write paths. Server spawns
29421
+ // with that union as its allowed-paths. Widget-level bindings on
29422
+ // layout items that aren't reflected in workspaceData.selectedProviders
29423
+ // are not enumerated — those widgets must rely on workspace-level
29424
+ // bindings to contribute to the union (known limitation).
29425
+ pathScope = null;
29426
+ _context.prev = 5;
29427
+ wsBindings = workspace === null || workspace === void 0 || (_workspace$workspaceD3 = workspace.workspaceData) === null || _workspace$workspaceD3 === void 0 ? void 0 : _workspace$workspaceD3.selectedProviders;
29428
+ widgetIdsOnServer = new Set(); // Always include the calling widget itself.
29429
+ if (widgetId) widgetIdsOnServer.add(widgetId);
29430
+ if (wsBindings && _typeof(wsBindings) === "object") {
29431
+ for (_i2 = 0, _Object$entries2 = Object.entries(wsBindings); _i2 < _Object$entries2.length; _i2++) {
29432
+ _Object$entries2$_i = _slicedToArray(_Object$entries2[_i2], 2), wId = _Object$entries2$_i[0], bindings = _Object$entries2$_i[1];
29433
+ if (bindings && _typeof(bindings) === "object" && bindings[providerType] === selectedProviderName) {
29434
+ widgetIdsOnServer.add(wId);
29435
+ }
29436
+ }
29437
+ }
29438
+ if (!(widgetIdsOnServer.size > 0 && (_window$mainApi = window.mainApi) !== null && _window$mainApi !== void 0 && (_window$mainApi = _window$mainApi.widgetMcp) !== null && _window$mainApi !== void 0 && _window$mainApi.listAll)) {
29439
+ _context.next = 8;
29440
+ break;
29441
+ }
29442
+ _context.next = 6;
29443
+ return window.mainApi.widgetMcp.listAll();
29444
+ case 6:
29445
+ _t = _context.sent;
29446
+ if (_t) {
29447
+ _context.next = 7;
29448
+ break;
29449
+ }
29450
+ _t = [];
29451
+ case 7:
29452
+ allGrants = _t;
29453
+ relevant = allGrants.filter(function (g) {
29454
+ return widgetIdsOnServer.has(g.widgetId);
29455
+ });
29456
+ if (relevant.length > 0) {
29457
+ pathScope = unionPathScope(relevant, selectedProviderName);
29458
+ }
29459
+ case 8:
29460
+ _context.next = 10;
29461
+ break;
29462
+ case 9:
29463
+ _context.prev = 9;
29464
+ _context["catch"](5);
29465
+ case 10:
29315
29466
  // 1. Already connected at module level? Verify with main process before trusting cache.
29316
29467
  // The server may have been stopped externally (e.g., Test Connection in settings).
29317
- cached = serverStates.get(selectedProviderName);
29468
+ cached = serverStates.get(stateKey);
29318
29469
  if (!(cached && cached.status === "connected")) {
29319
- _context.next = 9;
29470
+ _context.next = 15;
29320
29471
  break;
29321
29472
  }
29322
- _context.prev = 5;
29323
- _context.next = 6;
29473
+ _context.prev = 11;
29474
+ _context.next = 12;
29324
29475
  return new Promise(function (resolve, reject) {
29325
29476
  dashApi.mcpGetServerStatus(selectedProviderName, function (event, result) {
29326
29477
  return resolve(result);
29327
29478
  }, function (event, err) {
29328
29479
  return reject(err);
29329
- });
29480
+ }, workspaceId);
29330
29481
  });
29331
- case 6:
29482
+ case 12:
29332
29483
  statusResult = _context.sent;
29333
29484
  if (!((statusResult === null || statusResult === void 0 ? void 0 : statusResult.status) === "connected")) {
29334
- _context.next = 7;
29485
+ _context.next = 13;
29335
29486
  break;
29336
29487
  }
29337
29488
  cached.consumerCount++;
29338
29489
  applyResult(cached);
29339
29490
  return _context.abrupt("return");
29340
- case 7:
29491
+ case 13:
29341
29492
  // Server was stopped externally — clear stale cache and reconnect
29342
- serverStates["delete"](selectedProviderName);
29343
- _context.next = 9;
29493
+ serverStates["delete"](stateKey);
29494
+ _context.next = 15;
29344
29495
  break;
29345
- case 8:
29346
- _context.prev = 8;
29347
- _context["catch"](5);
29348
- serverStates["delete"](selectedProviderName);
29349
- case 9:
29496
+ case 14:
29497
+ _context.prev = 14;
29498
+ _context["catch"](11);
29499
+ serverStates["delete"](stateKey);
29500
+ case 15:
29350
29501
  setIsConnecting(true);
29351
29502
  setError(null);
29352
29503
 
29353
29504
  // 2. Another hook instance already connecting? Piggyback on its promise
29354
- if (!pendingConnects$1.has(selectedProviderName)) {
29355
- _context.next = 17;
29505
+ if (!pendingConnects$1.has(stateKey)) {
29506
+ _context.next = 23;
29356
29507
  break;
29357
29508
  }
29358
- _context.prev = 10;
29359
- _context.next = 11;
29360
- return pendingConnects$1.get(selectedProviderName);
29361
- case 11:
29509
+ _context.prev = 16;
29510
+ _context.next = 17;
29511
+ return pendingConnects$1.get(stateKey);
29512
+ case 17:
29362
29513
  result = _context.sent;
29363
29514
  if (mountedRef.current) {
29364
- _context.next = 12;
29515
+ _context.next = 18;
29365
29516
  break;
29366
29517
  }
29367
29518
  return _context.abrupt("return");
29368
- case 12:
29519
+ case 18:
29369
29520
  if (!result.error) {
29370
- _context.next = 13;
29521
+ _context.next = 19;
29371
29522
  break;
29372
29523
  }
29373
29524
  setError(result.message);
29374
29525
  setIsConnecting(false);
29375
29526
  setStatus("error");
29376
29527
  return _context.abrupt("return");
29377
- case 13:
29528
+ case 19:
29378
29529
  // Increment consumer count and apply
29379
- state = serverStates.get(selectedProviderName);
29530
+ state = serverStates.get(stateKey);
29380
29531
  if (state) state.consumerCount++;
29381
29532
  applyResult(result);
29382
- _context.next = 16;
29533
+ _context.next = 22;
29383
29534
  break;
29384
- case 14:
29385
- _context.prev = 14;
29386
- _t2 = _context["catch"](10);
29535
+ case 20:
29536
+ _context.prev = 20;
29537
+ _t4 = _context["catch"](16);
29387
29538
  if (mountedRef.current) {
29388
- _context.next = 15;
29539
+ _context.next = 21;
29389
29540
  break;
29390
29541
  }
29391
29542
  return _context.abrupt("return");
29392
- case 15:
29393
- setError((_t2 === null || _t2 === void 0 ? void 0 : _t2.message) || "Failed to connect to MCP server");
29543
+ case 21:
29544
+ setError((_t4 === null || _t4 === void 0 ? void 0 : _t4.message) || "Failed to connect to MCP server");
29394
29545
  setIsConnecting(false);
29395
29546
  setStatus("error");
29396
- case 16:
29547
+ case 22:
29397
29548
  return _context.abrupt("return");
29398
- case 17:
29549
+ case 23:
29399
29550
  // 3. First caller — fire the IPC call and share the promise
29400
29551
  connectPromise = new Promise(function (resolve, reject) {
29401
29552
  dashApi.mcpStartServer(selectedProviderName, provider.mcpConfig, provider.credentials, function (event, result) {
29402
- pendingConnects$1["delete"](selectedProviderName);
29553
+ pendingConnects$1["delete"](stateKey);
29403
29554
  if (result.error) {
29404
- serverStates.set(selectedProviderName, {
29555
+ serverStates.set(stateKey, {
29405
29556
  status: "error",
29406
29557
  tools: [],
29407
29558
  resources: [],
@@ -29412,7 +29563,7 @@ var useMcpProvider = function useMcpProvider(providerType) {
29412
29563
  }
29413
29564
 
29414
29565
  // Store in module-level shared state
29415
- serverStates.set(selectedProviderName, {
29566
+ serverStates.set(stateKey, {
29416
29567
  status: "connected",
29417
29568
  tools: result.tools || [],
29418
29569
  resources: result.resources || [],
@@ -29420,65 +29571,66 @@ var useMcpProvider = function useMcpProvider(providerType) {
29420
29571
  });
29421
29572
  resolve(result);
29422
29573
  }, function (event, err) {
29423
- pendingConnects$1["delete"](selectedProviderName);
29424
- serverStates.set(selectedProviderName, {
29574
+ pendingConnects$1["delete"](stateKey);
29575
+ serverStates.set(stateKey, {
29425
29576
  status: "error",
29426
29577
  tools: [],
29427
29578
  resources: [],
29428
29579
  consumerCount: 0
29429
29580
  });
29430
29581
  reject(err);
29431
- });
29582
+ }, workspaceId, pathScope);
29432
29583
  });
29433
- pendingConnects$1.set(selectedProviderName, connectPromise);
29434
- _context.prev = 18;
29435
- _context.next = 19;
29584
+ pendingConnects$1.set(stateKey, connectPromise);
29585
+ _context.prev = 24;
29586
+ _context.next = 25;
29436
29587
  return connectPromise;
29437
- case 19:
29588
+ case 25:
29438
29589
  _result = _context.sent;
29439
29590
  if (mountedRef.current) {
29440
- _context.next = 20;
29591
+ _context.next = 26;
29441
29592
  break;
29442
29593
  }
29443
29594
  return _context.abrupt("return");
29444
- case 20:
29595
+ case 26:
29445
29596
  if (!_result.error) {
29446
- _context.next = 21;
29597
+ _context.next = 27;
29447
29598
  break;
29448
29599
  }
29449
29600
  setError(_result.message);
29450
29601
  setIsConnecting(false);
29451
29602
  setStatus("error");
29452
29603
  return _context.abrupt("return");
29453
- case 21:
29604
+ case 27:
29454
29605
  applyResult(_result);
29455
- _context.next = 24;
29606
+ _context.next = 30;
29456
29607
  break;
29457
- case 22:
29458
- _context.prev = 22;
29459
- _t3 = _context["catch"](18);
29608
+ case 28:
29609
+ _context.prev = 28;
29610
+ _t5 = _context["catch"](24);
29460
29611
  if (mountedRef.current) {
29461
- _context.next = 23;
29612
+ _context.next = 29;
29462
29613
  break;
29463
29614
  }
29464
29615
  return _context.abrupt("return");
29465
- case 23:
29466
- setError((_t3 === null || _t3 === void 0 ? void 0 : _t3.message) || "Failed to connect to MCP server");
29616
+ case 29:
29617
+ setError((_t5 === null || _t5 === void 0 ? void 0 : _t5.message) || "Failed to connect to MCP server");
29467
29618
  setIsConnecting(false);
29468
29619
  setStatus("error");
29469
- case 24:
29620
+ case 30:
29470
29621
  case "end":
29471
29622
  return _context.stop();
29472
29623
  }
29473
- }, _callee, null, [[5, 8], [10, 14], [18, 22]]);
29474
- })), [dashApi, provider, providerType, selectedProviderName, applyResult]);
29624
+ }, _callee, null, [[5, 9], [11, 14], [16, 20], [24, 28]]);
29625
+ })), [dashApi, provider, providerType, selectedProviderName, applyResult, workspace]);
29475
29626
 
29476
29627
  /**
29477
29628
  * Disconnect from the MCP server.
29478
29629
  * Only sends the IPC stop call when this is the last consumer.
29479
29630
  */
29480
29631
  var disconnect = useCallback(/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee2() {
29481
- var state;
29632
+ var _workspace$workspaceD4;
29633
+ var workspaceId, stateKey, state;
29482
29634
  return _regeneratorRuntime.wrap(function (_context2) {
29483
29635
  while (1) switch (_context2.prev = _context2.next) {
29484
29636
  case 0:
@@ -29488,7 +29640,9 @@ var useMcpProvider = function useMcpProvider(providerType) {
29488
29640
  }
29489
29641
  return _context2.abrupt("return");
29490
29642
  case 1:
29491
- state = serverStates.get(selectedProviderName);
29643
+ workspaceId = (workspace === null || workspace === void 0 || (_workspace$workspaceD4 = workspace.workspaceData) === null || _workspace$workspaceD4 === void 0 ? void 0 : _workspace$workspaceD4.id) || null;
29644
+ stateKey = rendererStateKey(workspaceId, selectedProviderName);
29645
+ state = serverStates.get(stateKey);
29492
29646
  if (!state) {
29493
29647
  _context2.next = 3;
29494
29648
  break;
@@ -29507,7 +29661,7 @@ var useMcpProvider = function useMcpProvider(providerType) {
29507
29661
  return _context2.abrupt("return");
29508
29662
  case 2:
29509
29663
  // Last consumer — actually stop the server
29510
- serverStates["delete"](selectedProviderName);
29664
+ serverStates["delete"](stateKey);
29511
29665
  case 3:
29512
29666
  // Clear state synchronously BEFORE the IPC call so that
29513
29667
  // a subsequent connect() won't short-circuit on stale connectedRef
@@ -29516,29 +29670,31 @@ var useMcpProvider = function useMcpProvider(providerType) {
29516
29670
  setResources([]);
29517
29671
  setStatus("disconnected");
29518
29672
  connectedRef.current = false;
29519
- pendingConnects$1["delete"](selectedProviderName);
29673
+ pendingConnects$1["delete"](stateKey);
29520
29674
  return _context2.abrupt("return", new Promise(function (resolve) {
29521
29675
  dashApi.mcpStopServer(selectedProviderName, function () {
29522
29676
  return resolve();
29523
29677
  }, function (event, err) {
29524
29678
  resolve();
29525
- });
29679
+ }, workspaceId);
29526
29680
  }));
29527
29681
  case 4:
29528
29682
  case "end":
29529
29683
  return _context2.stop();
29530
29684
  }
29531
29685
  }, _callee2);
29532
- })), [dashApi, selectedProviderName]);
29686
+ })), [dashApi, selectedProviderName, workspace]);
29533
29687
 
29534
29688
  /**
29535
29689
  * Call a tool on the MCP server
29536
29690
  */
29537
29691
  var callTool = useCallback(/*#__PURE__*/function () {
29538
29692
  var _ref3 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee3(toolName) {
29693
+ var _workspace$workspaceD5;
29539
29694
  var args,
29540
29695
  widgetRequiredTools,
29541
29696
  isRequired,
29697
+ workspaceId,
29542
29698
  _args3 = arguments;
29543
29699
  return _regeneratorRuntime.wrap(function (_context3) {
29544
29700
  while (1) switch (_context3.prev = _context3.next) {
@@ -29565,6 +29721,10 @@ var useMcpProvider = function useMcpProvider(providerType) {
29565
29721
  isRequired = widgetRequiredTools === null || widgetRequiredTools === void 0 ? void 0 : widgetRequiredTools.includes(toolName);
29566
29722
  throw new Error("Tool \"".concat(toolName, "\" is not allowed for this widget. Allowed tools: ").concat(effectiveAllowedTools.join(", ")).concat(isRequired ? ". Note: \"".concat(toolName, "\" is declared as a required tool by this widget \u2014 update the provider's allowed tools in Settings \u2192 Providers.") : ""));
29567
29723
  case 2:
29724
+ // Slice 3a: scope the MCP server process per workspace. The
29725
+ // workspace UUID is the canonical "current dashboard" identity
29726
+ // (see useNotifications, useScheduler for the same pattern).
29727
+ workspaceId = (workspace === null || workspace === void 0 || (_workspace$workspaceD5 = workspace.workspaceData) === null || _workspace$workspaceD5 === void 0 ? void 0 : _workspace$workspaceD5.id) || null;
29568
29728
  return _context3.abrupt("return", new Promise(function (resolve, reject) {
29569
29729
  var timeout = setTimeout(function () {
29570
29730
  reject(new Error("Tool call \"".concat(toolName, "\" timed out after 30s")));
@@ -29579,7 +29739,7 @@ var useMcpProvider = function useMcpProvider(providerType) {
29579
29739
  }, function (event, err) {
29580
29740
  clearTimeout(timeout);
29581
29741
  reject(new Error((err === null || err === void 0 ? void 0 : err.message) || "Failed to call MCP tool"));
29582
- });
29742
+ }, workspaceId);
29583
29743
  }));
29584
29744
  case 3:
29585
29745
  case "end":
@@ -29590,7 +29750,7 @@ var useMcpProvider = function useMcpProvider(providerType) {
29590
29750
  return function (_x) {
29591
29751
  return _ref3.apply(this, arguments);
29592
29752
  };
29593
- }(), [dashApi, selectedProviderName, effectiveAllowedTools, widgetData, providerType]);
29753
+ }(), [dashApi, selectedProviderName, effectiveAllowedTools, widgetData, providerType, workspace]);
29594
29754
 
29595
29755
  /**
29596
29756
  * Read a resource from the MCP server
@@ -29648,7 +29808,10 @@ var useMcpProvider = function useMcpProvider(providerType) {
29648
29808
 
29649
29809
  // Decrement consumer count; only stop server if last consumer
29650
29810
  if (connectedRef.current && dashApi && selectedProviderName) {
29651
- var state = serverStates.get(selectedProviderName);
29811
+ var _workspace$workspaceD6;
29812
+ var workspaceId = (workspace === null || workspace === void 0 || (_workspace$workspaceD6 = workspace.workspaceData) === null || _workspace$workspaceD6 === void 0 ? void 0 : _workspace$workspaceD6.id) || null;
29813
+ var stateKey = rendererStateKey(workspaceId, selectedProviderName);
29814
+ var state = serverStates.get(stateKey);
29652
29815
  if (state) {
29653
29816
  state.consumerCount = Math.max(0, state.consumerCount - 1);
29654
29817
  if (state.consumerCount > 0) {
@@ -29657,12 +29820,12 @@ var useMcpProvider = function useMcpProvider(providerType) {
29657
29820
  }
29658
29821
 
29659
29822
  // Last consumer — stop the server
29660
- serverStates["delete"](selectedProviderName);
29823
+ serverStates["delete"](stateKey);
29661
29824
  }
29662
- dashApi.mcpStopServer(selectedProviderName, function () {}, function () {});
29825
+ dashApi.mcpStopServer(selectedProviderName, function () {}, function () {}, workspaceId);
29663
29826
  }
29664
29827
  };
29665
- }, [dashApi, selectedProviderName]);
29828
+ }, [dashApi, selectedProviderName, workspace]);
29666
29829
  return {
29667
29830
  isConnected: isConnected,
29668
29831
  isConnecting: isConnecting,