@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.js CHANGED
@@ -1644,9 +1644,11 @@ var ElectronDashboardApi = /*#__PURE__*/function () {
1644
1644
  key: "mcpStartServer",
1645
1645
  value: function mcpStartServer(serverName, mcpConfig, credentials, onSuccess, onError) {
1646
1646
  var _this20 = this;
1647
+ var workspaceId = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : null;
1648
+ var pathScope = arguments.length > 6 && arguments[6] !== undefined ? arguments[6] : null;
1647
1649
  if (this.api !== null) {
1648
1650
  try {
1649
- this.api.mcp.startServer(serverName, mcpConfig, credentials).then(function (result) {
1651
+ this.api.mcp.startServer(serverName, mcpConfig, credentials, workspaceId, pathScope).then(function (result) {
1650
1652
  onSuccess(_this20.events.MCP_START_SERVER_COMPLETE, result);
1651
1653
  })["catch"](function (error) {
1652
1654
  onError(_this20.events.MCP_START_SERVER_ERROR, error);
@@ -1665,9 +1667,10 @@ var ElectronDashboardApi = /*#__PURE__*/function () {
1665
1667
  key: "mcpStopServer",
1666
1668
  value: function mcpStopServer(serverName, onSuccess, onError) {
1667
1669
  var _this21 = this;
1670
+ var workspaceId = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : null;
1668
1671
  if (this.api !== null) {
1669
1672
  try {
1670
- this.api.mcp.stopServer(serverName).then(function (result) {
1673
+ this.api.mcp.stopServer(serverName, workspaceId).then(function (result) {
1671
1674
  onSuccess(_this21.events.MCP_STOP_SERVER_COMPLETE, result);
1672
1675
  })["catch"](function (error) {
1673
1676
  onError(_this21.events.MCP_STOP_SERVER_ERROR, error);
@@ -1686,9 +1689,13 @@ var ElectronDashboardApi = /*#__PURE__*/function () {
1686
1689
  key: "mcpCallTool",
1687
1690
  value: function mcpCallTool(serverName, toolName, args, allowedTools, onSuccess, onError) {
1688
1691
  var _this22 = this;
1692
+ var workspaceId = arguments.length > 6 && arguments[6] !== undefined ? arguments[6] : null;
1689
1693
  if (this.api !== null) {
1690
1694
  try {
1691
- this.api.mcp.callTool(serverName, toolName, args, allowedTools).then(function (result) {
1695
+ // widgetId is not threaded here; mcpApi.callTool defaults it to
1696
+ // null. Slice 3a: workspaceId scopes the MCP server process per
1697
+ // workspace.
1698
+ this.api.mcp.callTool(serverName, toolName, args, allowedTools, null, workspaceId).then(function (result) {
1692
1699
  onSuccess(_this22.events.MCP_CALL_TOOL_COMPLETE, result);
1693
1700
  })["catch"](function (error) {
1694
1701
  onError(_this22.events.MCP_CALL_TOOL_ERROR, error);
@@ -1707,9 +1714,10 @@ var ElectronDashboardApi = /*#__PURE__*/function () {
1707
1714
  key: "mcpListTools",
1708
1715
  value: function mcpListTools(serverName, onSuccess, onError) {
1709
1716
  var _this23 = this;
1717
+ var workspaceId = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : null;
1710
1718
  if (this.api !== null) {
1711
1719
  try {
1712
- this.api.mcp.listTools(serverName).then(function (result) {
1720
+ this.api.mcp.listTools(serverName, workspaceId).then(function (result) {
1713
1721
  onSuccess(_this23.events.MCP_LIST_TOOLS_COMPLETE, result);
1714
1722
  })["catch"](function (error) {
1715
1723
  onError(_this23.events.MCP_LIST_TOOLS_ERROR, error);
@@ -1728,9 +1736,10 @@ var ElectronDashboardApi = /*#__PURE__*/function () {
1728
1736
  key: "mcpListResources",
1729
1737
  value: function mcpListResources(serverName, onSuccess, onError) {
1730
1738
  var _this24 = this;
1739
+ var workspaceId = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : null;
1731
1740
  if (this.api !== null) {
1732
1741
  try {
1733
- this.api.mcp.listResources(serverName).then(function (result) {
1742
+ this.api.mcp.listResources(serverName, workspaceId).then(function (result) {
1734
1743
  onSuccess(_this24.events.MCP_LIST_RESOURCES_COMPLETE, result);
1735
1744
  })["catch"](function (error) {
1736
1745
  onError(_this24.events.MCP_LIST_RESOURCES_ERROR, error);
@@ -1749,9 +1758,10 @@ var ElectronDashboardApi = /*#__PURE__*/function () {
1749
1758
  key: "mcpReadResource",
1750
1759
  value: function mcpReadResource(serverName, uri, onSuccess, onError) {
1751
1760
  var _this25 = this;
1761
+ var workspaceId = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : null;
1752
1762
  if (this.api !== null) {
1753
1763
  try {
1754
- this.api.mcp.readResource(serverName, uri).then(function (result) {
1764
+ this.api.mcp.readResource(serverName, uri, workspaceId).then(function (result) {
1755
1765
  onSuccess(_this25.events.MCP_READ_RESOURCE_COMPLETE, result);
1756
1766
  })["catch"](function (error) {
1757
1767
  onError(_this25.events.MCP_READ_RESOURCE_ERROR, error);
@@ -1770,9 +1780,10 @@ var ElectronDashboardApi = /*#__PURE__*/function () {
1770
1780
  key: "mcpGetServerStatus",
1771
1781
  value: function mcpGetServerStatus(serverName, onSuccess, onError) {
1772
1782
  var _this26 = this;
1783
+ var workspaceId = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : null;
1773
1784
  if (this.api !== null) {
1774
1785
  try {
1775
- this.api.mcp.getServerStatus(serverName).then(function (result) {
1786
+ this.api.mcp.getServerStatus(serverName, workspaceId).then(function (result) {
1776
1787
  onSuccess(_this26.events.MCP_SERVER_STATUS_COMPLETE, result);
1777
1788
  })["catch"](function (error) {
1778
1789
  onError(_this26.events.MCP_SERVER_STATUS_ERROR, error);
@@ -3108,9 +3119,9 @@ var LayoutContainer = function LayoutContainer(_ref) {
3108
3119
 
3109
3120
  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; }
3110
3121
  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; }
3111
- 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; } } }; }
3112
- 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; } }
3113
- 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; }
3122
+ 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; } } }; }
3123
+ 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; } }
3124
+ 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; }
3114
3125
  /**
3115
3126
  * Layout template definitions for the dashboard template picker.
3116
3127
  *
@@ -3384,7 +3395,7 @@ function createLayoutFromTemplate(template) {
3384
3395
  cols: template.cols,
3385
3396
  gap: "gap-2"
3386
3397
  };
3387
- var _iterator = _createForOfIteratorHelper$z(template.cells),
3398
+ var _iterator = _createForOfIteratorHelper$A(template.cells),
3388
3399
  _step;
3389
3400
  try {
3390
3401
  for (_iterator.s(); !(_step = _iterator.n()).done;) {
@@ -4565,9 +4576,9 @@ var DashboardInstallOptionsModal = function DashboardInstallOptionsModal(_ref) {
4565
4576
  });
4566
4577
  };
4567
4578
 
4568
- 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; } } }; }
4569
- 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; } }
4570
- 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; }
4579
+ 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; } } }; }
4580
+ 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; } }
4581
+ 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; }
4571
4582
  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; }
4572
4583
  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; }
4573
4584
  var RegistryDashboardDetail = function RegistryDashboardDetail(_ref) {
@@ -4925,7 +4936,7 @@ var RegistryDashboardDetail = function RegistryDashboardDetail(_ref) {
4925
4936
  toInstall = 0,
4926
4937
  unavailable = 0,
4927
4938
  hasUnavailableRequired = false;
4928
- var _iterator = _createForOfIteratorHelper$y(widgetDeps),
4939
+ var _iterator = _createForOfIteratorHelper$z(widgetDeps),
4929
4940
  _step;
4930
4941
  try {
4931
4942
  for (_iterator.s(); !(_step = _iterator.n()).done;) {
@@ -6570,9 +6581,9 @@ function cleanIpcError(message) {
6570
6581
  return match ? match[1] : message;
6571
6582
  }
6572
6583
 
6573
- 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; } } }; }
6574
- 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; } }
6575
- 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; }
6584
+ 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; } } }; }
6585
+ 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; } }
6586
+ 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; }
6576
6587
 
6577
6588
  /**
6578
6589
  * useRegistrySearch — shared hook for browsing and installing registry packages.
@@ -6686,13 +6697,13 @@ var useRegistrySearch = function useRegistrySearch() {
6686
6697
  return c.toLowerCase();
6687
6698
  }));
6688
6699
  widgets = [];
6689
- _iterator = _createForOfIteratorHelper$x(pkgs);
6700
+ _iterator = _createForOfIteratorHelper$y(pkgs);
6690
6701
  try {
6691
6702
  for (_iterator.s(); !(_step = _iterator.n()).done;) {
6692
6703
  pkg = _step.value;
6693
6704
  // Compute missing APIs for the entire package
6694
6705
  allApiProviders = [];
6695
- _iterator2 = _createForOfIteratorHelper$x(pkg.providers || []);
6706
+ _iterator2 = _createForOfIteratorHelper$y(pkg.providers || []);
6696
6707
  try {
6697
6708
  for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
6698
6709
  p = _step2.value;
@@ -6705,11 +6716,11 @@ var useRegistrySearch = function useRegistrySearch() {
6705
6716
  } finally {
6706
6717
  _iterator2.f();
6707
6718
  }
6708
- _iterator3 = _createForOfIteratorHelper$x(pkg.widgets || []);
6719
+ _iterator3 = _createForOfIteratorHelper$y(pkg.widgets || []);
6709
6720
  try {
6710
6721
  for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {
6711
6722
  w = _step3.value;
6712
- _iterator5 = _createForOfIteratorHelper$x(w.providers || []);
6723
+ _iterator5 = _createForOfIteratorHelper$y(w.providers || []);
6713
6724
  try {
6714
6725
  for (_iterator5.s(); !(_step5 = _iterator5.n()).done;) {
6715
6726
  _p = _step5.value;
@@ -6731,7 +6742,7 @@ var useRegistrySearch = function useRegistrySearch() {
6731
6742
  missingApis = _toConsumableArray(new Set(allApiProviders)).filter(function (api) {
6732
6743
  return !capSet.has(api.toLowerCase());
6733
6744
  });
6734
- _iterator4 = _createForOfIteratorHelper$x(pkg.widgets || []);
6745
+ _iterator4 = _createForOfIteratorHelper$y(pkg.widgets || []);
6735
6746
  try {
6736
6747
  for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {
6737
6748
  widget = _step4.value;
@@ -7438,9 +7449,9 @@ function applyFilters(items, filters, mode) {
7438
7449
  });
7439
7450
  }
7440
7451
 
7441
- 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; } } }; }
7442
- 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; } }
7443
- 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; }
7452
+ 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; } } }; }
7453
+ 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; } }
7454
+ 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; }
7444
7455
  var WizardCustomizeStep = function WizardCustomizeStep(_ref) {
7445
7456
  var _state$selectedDashbo, _state$selectedDashbo2;
7446
7457
  var state = _ref.state,
@@ -7659,7 +7670,7 @@ var WizardCustomizeStep = function WizardCustomizeStep(_ref) {
7659
7670
  installedNames = new Set(installedList.map(function (w) {
7660
7671
  return w.name;
7661
7672
  }));
7662
- _iterator = _createForOfIteratorHelper$w(state.selectedWidgets);
7673
+ _iterator = _createForOfIteratorHelper$x(state.selectedWidgets);
7663
7674
  _context2.prev = 12;
7664
7675
  _iterator.s();
7665
7676
  case 13:
@@ -9229,9 +9240,9 @@ var PanelEditItem = function PanelEditItem(_ref) {
9229
9240
  };
9230
9241
 
9231
9242
  var _excluded$6 = ["rows", "cols"];
9232
- 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; } } }; }
9233
- 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; } }
9234
- 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; }
9243
+ 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; } } }; }
9244
+ 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; } }
9245
+ 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; }
9235
9246
  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; }
9236
9247
  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; }
9237
9248
  var defaultGrid = {
@@ -9384,7 +9395,7 @@ function GridEditor(_ref) {
9384
9395
  function sortObjectByKeys(obj) {
9385
9396
  var sortedKeys = Object.keys(obj).sort();
9386
9397
  var sortedObj = {};
9387
- var _iterator = _createForOfIteratorHelper$v(sortedKeys),
9398
+ var _iterator = _createForOfIteratorHelper$w(sortedKeys),
9388
9399
  _step;
9389
9400
  try {
9390
9401
  for (_iterator.s(); !(_step = _iterator.n()).done;) {
@@ -9857,9 +9868,9 @@ var PanelEditItemNotifications = function PanelEditItemNotifications(_ref) {
9857
9868
  });
9858
9869
  };
9859
9870
 
9860
- 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; } } }; }
9861
- 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; } }
9862
- 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; }
9871
+ 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; } } }; }
9872
+ 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; } }
9873
+ 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; }
9863
9874
  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; }
9864
9875
  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; }
9865
9876
  var DAYS = [{
@@ -10188,7 +10199,7 @@ var PanelEditItemSchedule = function PanelEditItemSchedule(_ref2) {
10188
10199
  setIsLoading(true);
10189
10200
  window.mainApi.scheduler.getTasks(widgetUuid).then(function (tasks) {
10190
10201
  var stateMap = {};
10191
- var _iterator = _createForOfIteratorHelper$u(tasks || []),
10202
+ var _iterator = _createForOfIteratorHelper$v(tasks || []),
10192
10203
  _step;
10193
10204
  try {
10194
10205
  for (_iterator.s(); !(_step = _iterator.n()).done;) {
@@ -10447,9 +10458,9 @@ function isUserWidget(item) {
10447
10458
  return true;
10448
10459
  }
10449
10460
 
10450
- 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; } } }; }
10451
- 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; } }
10452
- 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; }
10461
+ 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; } } }; }
10462
+ 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; } }
10463
+ 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; }
10453
10464
 
10454
10465
  /**
10455
10466
  * Resolve which provider name a given widget instance would bind to for
@@ -10481,7 +10492,7 @@ function resolveProviderName(_ref) {
10481
10492
  // array. Support both because different callers shape it either way.
10482
10493
  if (appProviders) {
10483
10494
  if (Array.isArray(appProviders)) {
10484
- var _iterator = _createForOfIteratorHelper$t(appProviders),
10495
+ var _iterator = _createForOfIteratorHelper$u(appProviders),
10485
10496
  _step;
10486
10497
  try {
10487
10498
  for (_iterator.s(); !(_step = _iterator.n()).done;) {
@@ -10541,7 +10552,7 @@ function forEachWidget(workspace, visit) {
10541
10552
  };
10542
10553
  var _walk = function walk(items) {
10543
10554
  if (!Array.isArray(items)) return;
10544
- var _iterator2 = _createForOfIteratorHelper$t(items),
10555
+ var _iterator2 = _createForOfIteratorHelper$u(items),
10545
10556
  _step2;
10546
10557
  try {
10547
10558
  for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
@@ -10582,7 +10593,7 @@ function forEachWidget(workspace, visit) {
10582
10593
  // widgets that only live there (e.g. AI-place writes that bypass
10583
10594
  // the page handler).
10584
10595
  if (Array.isArray(workspace.pages)) {
10585
- var _iterator3 = _createForOfIteratorHelper$t(workspace.pages),
10596
+ var _iterator3 = _createForOfIteratorHelper$u(workspace.pages),
10586
10597
  _step3;
10587
10598
  try {
10588
10599
  for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {
@@ -10633,7 +10644,7 @@ function getUnresolvedProviders(_ref2) {
10633
10644
  // the same `type` listed twice (a Claude code-gen quirk), which
10634
10645
  // would otherwise produce duplicate rows in the Providers tab.
10635
10646
  var seenTypes = new Set();
10636
- var _iterator4 = _createForOfIteratorHelper$t(requirements),
10647
+ var _iterator4 = _createForOfIteratorHelper$u(requirements),
10637
10648
  _step4;
10638
10649
  try {
10639
10650
  for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {
@@ -10676,7 +10687,7 @@ function getUnresolvedProviders(_ref2) {
10676
10687
  */
10677
10688
  function groupByProviderType(unresolved) {
10678
10689
  var byType = new Map();
10679
- var _iterator5 = _createForOfIteratorHelper$t(unresolved || []),
10690
+ var _iterator5 = _createForOfIteratorHelper$u(unresolved || []),
10680
10691
  _step5;
10681
10692
  try {
10682
10693
  for (_iterator5.s(); !(_step5 = _iterator5.n()).done;) {
@@ -10718,7 +10729,7 @@ function getAllProviderBindings(_ref3) {
10718
10729
  // quirk) which would otherwise duplicate the per-widget row in
10719
10730
  // the Providers tab.
10720
10731
  var seenTypes = new Set();
10721
- var _iterator6 = _createForOfIteratorHelper$t(requirements),
10732
+ var _iterator6 = _createForOfIteratorHelper$u(requirements),
10722
10733
  _step6;
10723
10734
  try {
10724
10735
  for (_iterator6.s(); !(_step6 = _iterator6.n()).done;) {
@@ -10760,9 +10771,9 @@ function getAllProviderBindings(_ref3) {
10760
10771
 
10761
10772
  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; }
10762
10773
  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; }
10763
- 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; } } }; }
10764
- 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; } }
10765
- 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; }
10774
+ 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; } } }; }
10775
+ 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; } }
10776
+ 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; }
10766
10777
  var EVENT_STRING_RE = /^([^[]+)\[([^\]]+)\]\.(.+)$/;
10767
10778
 
10768
10779
  /** Parse "Component[itemId].event" → { component, itemId, event }. */
@@ -10932,7 +10943,7 @@ function getCurrentWiring(workspace) {
10932
10943
  // Live format is array; defensive guard for legacy object
10933
10944
  // form (a single source widget keyed under the handler).
10934
10945
  var events = Array.isArray(eventList) ? eventList : typeof eventList === "string" ? [eventList] : [];
10935
- var _iterator = _createForOfIteratorHelper$s(events),
10946
+ var _iterator = _createForOfIteratorHelper$t(events),
10936
10947
  _step;
10937
10948
  try {
10938
10949
  for (_iterator.s(); !(_step = _iterator.n()).done;) {
@@ -10995,7 +11006,7 @@ function getOrphanedListeners(workspace, getWidgetConfig) {
10995
11006
  if (!byItemId.has(id)) byItemId.set(id, meta);
10996
11007
  });
10997
11008
  var orphans = [];
10998
- var _iterator2 = _createForOfIteratorHelper$s(wiring),
11009
+ var _iterator2 = _createForOfIteratorHelper$t(wiring),
10999
11010
  _step2;
11000
11011
  try {
11001
11012
  for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
@@ -11061,7 +11072,7 @@ function pruneDeadListenerReferences(workspace) {
11061
11072
  var liveKeys = new Set();
11062
11073
  var _walkForLive = function walkForLive(items) {
11063
11074
  if (!Array.isArray(items)) return;
11064
- var _iterator3 = _createForOfIteratorHelper$s(items),
11075
+ var _iterator3 = _createForOfIteratorHelper$t(items),
11065
11076
  _step3;
11066
11077
  try {
11067
11078
  for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {
@@ -11082,7 +11093,7 @@ function pruneDeadListenerReferences(workspace) {
11082
11093
  };
11083
11094
  _walkForLive(workspace.layout);
11084
11095
  if (Array.isArray(workspace.pages)) {
11085
- var _iterator4 = _createForOfIteratorHelper$s(workspace.pages),
11096
+ var _iterator4 = _createForOfIteratorHelper$t(workspace.pages),
11086
11097
  _step4;
11087
11098
  try {
11088
11099
  for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {
@@ -11099,7 +11110,7 @@ function pruneDeadListenerReferences(workspace) {
11099
11110
  var removed = 0;
11100
11111
  var _pruneListeners = function pruneListeners(items) {
11101
11112
  if (!Array.isArray(items)) return;
11102
- var _iterator5 = _createForOfIteratorHelper$s(items),
11113
+ var _iterator5 = _createForOfIteratorHelper$t(items),
11103
11114
  _step5;
11104
11115
  try {
11105
11116
  for (_iterator5.s(); !(_step5 = _iterator5.n()).done;) {
@@ -11111,7 +11122,7 @@ function pruneDeadListenerReferences(workspace) {
11111
11122
  var events = item.listeners[handler];
11112
11123
  if (!Array.isArray(events)) continue;
11113
11124
  var kept = [];
11114
- var _iterator6 = _createForOfIteratorHelper$s(events),
11125
+ var _iterator6 = _createForOfIteratorHelper$t(events),
11115
11126
  _step6;
11116
11127
  try {
11117
11128
  for (_iterator6.s(); !(_step6 = _iterator6.n()).done;) {
@@ -11146,7 +11157,7 @@ function pruneDeadListenerReferences(workspace) {
11146
11157
  };
11147
11158
  _pruneListeners(workspace.layout);
11148
11159
  if (Array.isArray(workspace.pages)) {
11149
- var _iterator7 = _createForOfIteratorHelper$s(workspace.pages),
11160
+ var _iterator7 = _createForOfIteratorHelper$t(workspace.pages),
11150
11161
  _step7;
11151
11162
  try {
11152
11163
  for (_iterator7.s(); !(_step7 = _iterator7.n()).done;) {
@@ -11190,7 +11201,7 @@ function applyWiringChanges(workspace, _ref) {
11190
11201
  });
11191
11202
  return byReceiver.get(id);
11192
11203
  };
11193
- var _iterator8 = _createForOfIteratorHelper$s(adds),
11204
+ var _iterator8 = _createForOfIteratorHelper$t(adds),
11194
11205
  _step8;
11195
11206
  try {
11196
11207
  for (_iterator8.s(); !(_step8 = _iterator8.n()).done;) {
@@ -11203,7 +11214,7 @@ function applyWiringChanges(workspace, _ref) {
11203
11214
  } finally {
11204
11215
  _iterator8.f();
11205
11216
  }
11206
- var _iterator9 = _createForOfIteratorHelper$s(removes),
11217
+ var _iterator9 = _createForOfIteratorHelper$t(removes),
11207
11218
  _step9;
11208
11219
  try {
11209
11220
  for (_iterator9.s(); !(_step9 = _iterator9.n()).done;) {
@@ -11277,7 +11288,7 @@ function applyToItem(listeners, _ref2) {
11277
11288
  }
11278
11289
 
11279
11290
  // Removes first so a re-add (rare) lands.
11280
- var _iterator0 = _createForOfIteratorHelper$s(removes),
11291
+ var _iterator0 = _createForOfIteratorHelper$t(removes),
11281
11292
  _step0;
11282
11293
  try {
11283
11294
  var _loop = function _loop() {
@@ -11306,7 +11317,7 @@ function applyToItem(listeners, _ref2) {
11306
11317
  } finally {
11307
11318
  _iterator0.f();
11308
11319
  }
11309
- var _iterator1 = _createForOfIteratorHelper$s(adds),
11320
+ var _iterator1 = _createForOfIteratorHelper$t(adds),
11310
11321
  _step1;
11311
11322
  try {
11312
11323
  for (_iterator1.s(); !(_step1 = _iterator1.n()).done;) {
@@ -14279,9 +14290,9 @@ function mcpJsonToFormState(jsonString, nextRowId) {
14279
14290
  return result;
14280
14291
  }
14281
14292
 
14282
- 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; } } }; }
14283
- 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; } }
14284
- 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; }
14293
+ 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; } } }; }
14294
+ 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; } }
14295
+ 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; }
14285
14296
  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; }
14286
14297
  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; }
14287
14298
  var EnhancedWidgetDropdown = function EnhancedWidgetDropdown(_ref) {
@@ -14566,11 +14577,11 @@ var EnhancedWidgetDropdown = function EnhancedWidgetDropdown(_ref) {
14566
14577
 
14567
14578
  // Flatten all widgets from all packages for the widget list
14568
14579
  flatWidgets = [];
14569
- _iterator = _createForOfIteratorHelper$r(result.packages || []);
14580
+ _iterator = _createForOfIteratorHelper$s(result.packages || []);
14570
14581
  try {
14571
14582
  for (_iterator.s(); !(_step = _iterator.n()).done;) {
14572
14583
  pkg = _step.value;
14573
- _iterator2 = _createForOfIteratorHelper$r(pkg.widgets || []);
14584
+ _iterator2 = _createForOfIteratorHelper$s(pkg.widgets || []);
14574
14585
  try {
14575
14586
  for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
14576
14587
  widget = _step2.value;
@@ -16464,9 +16475,9 @@ var useWidgetSchedulerStatus = function useWidgetSchedulerStatus(widgetId) {
16464
16475
  };
16465
16476
  };
16466
16477
 
16467
- 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; } } }; }
16468
- 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; } }
16469
- 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; }
16478
+ 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; } } }; }
16479
+ 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; } }
16480
+ 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; }
16470
16481
  function formatCountdown(ms) {
16471
16482
  if (ms == null || ms < 0) return "--";
16472
16483
  if (ms < 1000) return "< 1s";
@@ -16583,7 +16594,7 @@ var WidgetCardStatusBar = function WidgetCardStatusBar(_ref) {
16583
16594
 
16584
16595
  // Find soonest countdown among enabled tasks
16585
16596
  var soonestMs = null;
16586
- var _iterator = _createForOfIteratorHelper$q(enabledTasks),
16597
+ var _iterator = _createForOfIteratorHelper$r(enabledTasks),
16587
16598
  _step;
16588
16599
  try {
16589
16600
  for (_iterator.s(); !(_step = _iterator.n()).done;) {
@@ -21902,9 +21913,9 @@ var ExternalWidget = function ExternalWidget(_ref) {
21902
21913
  var GRID_CELL_WIDGET_TYPE = "grid-cell-widget";
21903
21914
  var SIDEBAR_WIDGET_TYPE = "sidebar-widget";
21904
21915
 
21905
- 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; } } }; }
21906
- 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; } }
21907
- 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; }
21916
+ 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; } } }; }
21917
+ 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; } }
21918
+ 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; }
21908
21919
  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; }
21909
21920
  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; }
21910
21921
 
@@ -22527,7 +22538,7 @@ var LayoutGridContainer = /*#__PURE__*/React.memo(function (_ref3) {
22527
22538
  return selectable["delete"](cn);
22528
22539
  });
22529
22540
  var resolved = new Set();
22530
- var _iterator = _createForOfIteratorHelper$p(selectable),
22541
+ var _iterator = _createForOfIteratorHelper$q(selectable),
22531
22542
  _step;
22532
22543
  try {
22533
22544
  for (_iterator.s(); !(_step = _iterator.n()).done;) {
@@ -24936,9 +24947,9 @@ function migrateBareComponentName(componentMap, component) {
24936
24947
 
24937
24948
  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; }
24938
24949
  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; }
24939
- 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; } } }; }
24940
- 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; } }
24941
- 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; }
24950
+ 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; } } }; }
24951
+ 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; } }
24952
+ 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; }
24942
24953
  /**
24943
24954
  * The model for all layout components used primarily in the renderLayout method
24944
24955
  * @param {Object} layoutItem an object containing various attributes of the layout item
@@ -24950,7 +24961,7 @@ function _arrayLikeToArray$o(r, a) { (null == a || a > r.length) && (a = r.lengt
24950
24961
  function sortObjectByKeys(obj) {
24951
24962
  var sortedKeys = Object.keys(obj).sort();
24952
24963
  var sortedObj = {};
24953
- var _iterator = _createForOfIteratorHelper$o(sortedKeys),
24964
+ var _iterator = _createForOfIteratorHelper$p(sortedKeys),
24954
24965
  _step;
24955
24966
  try {
24956
24967
  for (_iterator.s(); !(_step = _iterator.n()).done;) {
@@ -25262,9 +25273,9 @@ var SettingsModel = function SettingsModel() {
25262
25273
  return obj;
25263
25274
  };
25264
25275
 
25265
- 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; } } }; }
25266
- 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; } }
25267
- 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; }
25276
+ 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; } } }; }
25277
+ 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; } }
25278
+ 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; }
25268
25279
 
25269
25280
  /**
25270
25281
  * Workspace-level pre-pass that migrates legacy bare component
@@ -25339,7 +25350,7 @@ function migrateScopedIdsInWorkspace(workspace, componentMap) {
25339
25350
  };
25340
25351
  var _walk = function walk(items) {
25341
25352
  if (!Array.isArray(items)) return;
25342
- var _iterator = _createForOfIteratorHelper$n(items),
25353
+ var _iterator = _createForOfIteratorHelper$o(items),
25343
25354
  _step;
25344
25355
  try {
25345
25356
  for (_iterator.s(); !(_step = _iterator.n()).done;) {
@@ -25361,7 +25372,7 @@ function migrateScopedIdsInWorkspace(workspace, componentMap) {
25361
25372
  };
25362
25373
  _walk(workspace.layout);
25363
25374
  if (Array.isArray(workspace.pages)) {
25364
- var _iterator2 = _createForOfIteratorHelper$n(workspace.pages),
25375
+ var _iterator2 = _createForOfIteratorHelper$o(workspace.pages),
25365
25376
  _step2;
25366
25377
  try {
25367
25378
  for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
@@ -25378,9 +25389,9 @@ function migrateScopedIdsInWorkspace(workspace, componentMap) {
25378
25389
  return counts;
25379
25390
  }
25380
25391
 
25381
- 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; } } }; }
25382
- 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; } }
25383
- 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; }
25392
+ 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; } } }; }
25393
+ 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; } }
25394
+ 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; }
25384
25395
  /**
25385
25396
  * cleanForeignWidgetsFromWorkspace.js
25386
25397
  *
@@ -25421,7 +25432,7 @@ function cleanForeignWidgetsFromWorkspace(workspace) {
25421
25432
  var _cleanList = function cleanList(items) {
25422
25433
  if (!Array.isArray(items)) return items;
25423
25434
  var kept = [];
25424
- var _iterator = _createForOfIteratorHelper$m(items),
25435
+ var _iterator = _createForOfIteratorHelper$n(items),
25425
25436
  _step;
25426
25437
  try {
25427
25438
  for (_iterator.s(); !(_step = _iterator.n()).done;) {
@@ -25458,7 +25469,7 @@ function cleanForeignWidgetsFromWorkspace(workspace) {
25458
25469
  workspace.sidebarLayout = _cleanList(workspace.sidebarLayout);
25459
25470
  }
25460
25471
  if (Array.isArray(workspace.pages)) {
25461
- var _iterator2 = _createForOfIteratorHelper$m(workspace.pages),
25472
+ var _iterator2 = _createForOfIteratorHelper$n(workspace.pages),
25462
25473
  _step2;
25463
25474
  try {
25464
25475
  for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
@@ -25476,9 +25487,9 @@ function cleanForeignWidgetsFromWorkspace(workspace) {
25476
25487
  return summary;
25477
25488
  }
25478
25489
 
25479
- 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; } } }; }
25480
- 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; } }
25481
- 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; }
25490
+ 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; } } }; }
25491
+ 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; } }
25492
+ 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; }
25482
25493
  /**
25483
25494
  * migrateLayoutItemTypes.js
25484
25495
  *
@@ -25540,7 +25551,7 @@ function migrateLayoutItemTypes(workspace) {
25540
25551
  };
25541
25552
  var _walk = function walk(items) {
25542
25553
  if (!Array.isArray(items)) return;
25543
- var _iterator = _createForOfIteratorHelper$l(items),
25554
+ var _iterator = _createForOfIteratorHelper$m(items),
25544
25555
  _step;
25545
25556
  try {
25546
25557
  for (_iterator.s(); !(_step = _iterator.n()).done;) {
@@ -25558,7 +25569,7 @@ function migrateLayoutItemTypes(workspace) {
25558
25569
  };
25559
25570
  _walk(workspace.layout);
25560
25571
  if (Array.isArray(workspace.pages)) {
25561
- var _iterator2 = _createForOfIteratorHelper$l(workspace.pages),
25572
+ var _iterator2 = _createForOfIteratorHelper$m(workspace.pages),
25562
25573
  _step2;
25563
25574
  try {
25564
25575
  for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
@@ -25939,9 +25950,9 @@ var ThemeModel = function ThemeModel() {
25939
25950
  }
25940
25951
  };
25941
25952
 
25942
- 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; } } }; }
25943
- 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; } }
25944
- 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; }
25953
+ 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; } } }; }
25954
+ 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; } }
25955
+ 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; }
25945
25956
  /*
25946
25957
  "component": AnalyticsReportsWidget,
25947
25958
  "type":"widget",
@@ -26059,7 +26070,7 @@ var ComponentConfigModel = function ComponentConfigModel() {
26059
26070
  if ("providers" in obj && Array.isArray(obj.providers)) {
26060
26071
  var seen = new Set();
26061
26072
  var cleaned = [];
26062
- var _iterator = _createForOfIteratorHelper$k(obj.providers),
26073
+ var _iterator = _createForOfIteratorHelper$l(obj.providers),
26063
26074
  _step;
26064
26075
  try {
26065
26076
  for (_iterator.s(); !(_step = _iterator.n()).done;) {
@@ -26107,9 +26118,9 @@ var MenuItemModel = function MenuItemModel() {
26107
26118
 
26108
26119
  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; }
26109
26120
  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; }
26110
- 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; } } }; }
26111
- 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; } }
26112
- 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; }
26121
+ 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; } } }; }
26122
+ 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; } }
26123
+ 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; }
26113
26124
  /**
26114
26125
  * A Model for a Workspace (Dashboard)
26115
26126
  * The Dashboard in this instance is the entire Layout inclusive of the workspaces and widgets
@@ -26181,7 +26192,7 @@ var DashboardModel = /*#__PURE__*/function () {
26181
26192
 
26182
26193
  // Also normalize grids within pages
26183
26194
  if (this.pages.length > 0) {
26184
- var _iterator = _createForOfIteratorHelper$j(this.pages),
26195
+ var _iterator = _createForOfIteratorHelper$k(this.pages),
26185
26196
  _step;
26186
26197
  try {
26187
26198
  for (_iterator.s(); !(_step = _iterator.n()).done;) {
@@ -28157,7 +28168,7 @@ var DashboardModel = /*#__PURE__*/function () {
28157
28168
  try {
28158
28169
  // Collect all item IDs actively referenced by grid cells
28159
28170
  var activeItemIds = new Set();
28160
- var _iterator2 = _createForOfIteratorHelper$j(this.layout),
28171
+ var _iterator2 = _createForOfIteratorHelper$k(this.layout),
28161
28172
  _step2;
28162
28173
  try {
28163
28174
  for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
@@ -28197,7 +28208,7 @@ var DashboardModel = /*#__PURE__*/function () {
28197
28208
  });
28198
28209
 
28199
28210
  // Clean listener references on remaining items for each removed orphan
28200
- var _iterator3 = _createForOfIteratorHelper$j(orphanedIds),
28211
+ var _iterator3 = _createForOfIteratorHelper$k(orphanedIds),
28201
28212
  _step3;
28202
28213
  try {
28203
28214
  for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {
@@ -29018,9 +29029,9 @@ var useDashboard = function useDashboard() {
29018
29029
  });
29019
29030
  };
29020
29031
 
29021
- 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; } } }; }
29022
- 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; } }
29023
- 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; }
29032
+ 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; } } }; }
29033
+ 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; } }
29034
+ 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; }
29024
29035
 
29025
29036
  /**
29026
29037
  * useWidgetProviders Hook
@@ -29076,7 +29087,7 @@ var useWidgetProviders = function useWidgetProviders() {
29076
29087
  // 1. Widget-level: stored directly on the layout item by handleSelectProvider
29077
29088
  // 2. Workspace-level: stored as workspace.selectedProviders[widgetId][providerType]
29078
29089
  var providers = {};
29079
- var _iterator = _createForOfIteratorHelper$i(providerDeclarations),
29090
+ var _iterator = _createForOfIteratorHelper$j(providerDeclarations),
29080
29091
  _step;
29081
29092
  try {
29082
29093
  for (_iterator.s(); !(_step = _iterator.n()).done;) {
@@ -29118,19 +29129,104 @@ var useWidgetProviders = function useWidgetProviders() {
29118
29129
  };
29119
29130
  };
29120
29131
 
29132
+ 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; } } }; }
29133
+ 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; } }
29134
+ 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; }
29135
+
29121
29136
  /**
29122
29137
  * Module-level shared state for MCP server connections.
29123
- * Prevents multiple hook instances (e.g., 4 widgets using "slack") from
29124
- * each firing their own IPC startServer call.
29138
+ * Prevents multiple hook instances (e.g., 4 widgets on the same dashboard
29139
+ * using "slack") from each firing their own IPC startServer call.
29140
+ *
29141
+ * Slice 3a: keys are scoped per `(workspaceId, serverName)` so two
29142
+ * dashboards using the same provider name don't share renderer state
29143
+ * (the main process spawns separate server instances for each).
29125
29144
  *
29126
- * serverStates: tracks connection result + consumer reference count per server
29127
- * pendingConnects: deduplicates in-flight IPC calls so only 1 fires per server
29145
+ * serverStates: tracks connection result + consumer reference count
29146
+ * pendingConnects: deduplicates in-flight IPC calls
29128
29147
  */
29129
29148
  var serverStates = new Map();
29130
- // Map<serverName, { status, tools, resources, consumerCount }>
29149
+ // Map<`${workspaceId}::${serverName}`, { status, tools, resources, consumerCount }>
29131
29150
 
29132
29151
  var pendingConnects$1 = new Map();
29133
- // Map<serverName, Promise<result>>
29152
+ // Map<`${workspaceId}::${serverName}`, Promise<result>>
29153
+
29154
+ var NO_WORKSPACE = "__no_workspace__";
29155
+ function rendererStateKey(workspaceId, serverName) {
29156
+ var wid = workspaceId && typeof workspaceId === "string" ? workspaceId : NO_WORKSPACE;
29157
+ return wid + "::" + serverName;
29158
+ }
29159
+
29160
+ /**
29161
+ * Slice 3b: compute the union of granted paths for a server across a
29162
+ * set of widgets. Mirrors electron/utils/mcpScopeResolver.unionPathScope
29163
+ * but inline here because the electron/ helper isn't reachable from the
29164
+ * renderer build. The mainline path-scope test runs against the
29165
+ * electron-side helper; this one is exercised at runtime when widgets
29166
+ * connect.
29167
+ */
29168
+ function unionPathScope(grants, serverName) {
29169
+ var reads = new Set();
29170
+ var writes = new Set();
29171
+ if (!Array.isArray(grants)) {
29172
+ return {
29173
+ readPaths: [],
29174
+ writePaths: [],
29175
+ allowedPaths: []
29176
+ };
29177
+ }
29178
+ var _iterator = _createForOfIteratorHelper$i(grants),
29179
+ _step;
29180
+ try {
29181
+ for (_iterator.s(); !(_step = _iterator.n()).done;) {
29182
+ var entry = _step.value;
29183
+ if (!entry || _typeof(entry) !== "object") continue;
29184
+ var granted = entry.granted;
29185
+ if (!granted || _typeof(granted) !== "object") continue;
29186
+ var servers = granted.servers;
29187
+ if (!servers || _typeof(servers) !== "object") continue;
29188
+ var serverPerms = servers[serverName];
29189
+ if (!serverPerms || _typeof(serverPerms) !== "object") continue;
29190
+ if (Array.isArray(serverPerms.readPaths)) {
29191
+ var _iterator2 = _createForOfIteratorHelper$i(serverPerms.readPaths),
29192
+ _step2;
29193
+ try {
29194
+ for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
29195
+ var p = _step2.value;
29196
+ if (typeof p === "string" && p) reads.add(p);
29197
+ }
29198
+ } catch (err) {
29199
+ _iterator2.e(err);
29200
+ } finally {
29201
+ _iterator2.f();
29202
+ }
29203
+ }
29204
+ if (Array.isArray(serverPerms.writePaths)) {
29205
+ var _iterator3 = _createForOfIteratorHelper$i(serverPerms.writePaths),
29206
+ _step3;
29207
+ try {
29208
+ for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {
29209
+ var _p = _step3.value;
29210
+ if (typeof _p === "string" && _p) writes.add(_p);
29211
+ }
29212
+ } catch (err) {
29213
+ _iterator3.e(err);
29214
+ } finally {
29215
+ _iterator3.f();
29216
+ }
29217
+ }
29218
+ }
29219
+ } catch (err) {
29220
+ _iterator.e(err);
29221
+ } finally {
29222
+ _iterator.f();
29223
+ }
29224
+ return {
29225
+ readPaths: _toConsumableArray(reads),
29226
+ writePaths: _toConsumableArray(writes),
29227
+ allowedPaths: _toConsumableArray(new Set([].concat(_toConsumableArray(reads), _toConsumableArray(writes))))
29228
+ };
29229
+ }
29134
29230
 
29135
29231
  /**
29136
29232
  * useMcpProvider Hook
@@ -29299,7 +29395,8 @@ var useMcpProvider = function useMcpProvider(providerType) {
29299
29395
  * even when multiple hook instances call connect() simultaneously.
29300
29396
  */
29301
29397
  var connect = React.useCallback(/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee() {
29302
- var cached, statusResult, result, state, connectPromise, _result, _t2, _t3;
29398
+ var _workspace$workspaceD2;
29399
+ 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;
29303
29400
  return _regeneratorRuntime.wrap(function (_context) {
29304
29401
  while (1) switch (_context.prev = _context.next) {
29305
29402
  case 0:
@@ -29330,96 +29427,150 @@ var useMcpProvider = function useMcpProvider(providerType) {
29330
29427
  setError("Provider \"".concat(selectedProviderName, "\" has no MCP configuration"));
29331
29428
  return _context.abrupt("return");
29332
29429
  case 4:
29430
+ // Slice 3a: scope state per (workspace, provider). Two dashboards
29431
+ // using the same provider name get separate server instances in the
29432
+ // main process, so the renderer state must mirror that or one
29433
+ // dashboard's "connected" cache will short-circuit a second
29434
+ // dashboard's connect that needs its own backing process.
29435
+ workspaceId = (workspace === null || workspace === void 0 || (_workspace$workspaceD2 = workspace.workspaceData) === null || _workspace$workspaceD2 === void 0 ? void 0 : _workspace$workspaceD2.id) || null;
29436
+ stateKey = rendererStateKey(workspaceId, selectedProviderName); // Slice 3b: compute the workspace's path-scope union from grants.
29437
+ // Enumerate widgets on this workspace that bind to this server,
29438
+ // look up their grants, union the read+write paths. Server spawns
29439
+ // with that union as its allowed-paths. Widget-level bindings on
29440
+ // layout items that aren't reflected in workspaceData.selectedProviders
29441
+ // are not enumerated — those widgets must rely on workspace-level
29442
+ // bindings to contribute to the union (known limitation).
29443
+ pathScope = null;
29444
+ _context.prev = 5;
29445
+ wsBindings = workspace === null || workspace === void 0 || (_workspace$workspaceD3 = workspace.workspaceData) === null || _workspace$workspaceD3 === void 0 ? void 0 : _workspace$workspaceD3.selectedProviders;
29446
+ widgetIdsOnServer = new Set(); // Always include the calling widget itself.
29447
+ if (widgetId) widgetIdsOnServer.add(widgetId);
29448
+ if (wsBindings && _typeof(wsBindings) === "object") {
29449
+ for (_i2 = 0, _Object$entries2 = Object.entries(wsBindings); _i2 < _Object$entries2.length; _i2++) {
29450
+ _Object$entries2$_i = _slicedToArray(_Object$entries2[_i2], 2), wId = _Object$entries2$_i[0], bindings = _Object$entries2$_i[1];
29451
+ if (bindings && _typeof(bindings) === "object" && bindings[providerType] === selectedProviderName) {
29452
+ widgetIdsOnServer.add(wId);
29453
+ }
29454
+ }
29455
+ }
29456
+ 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)) {
29457
+ _context.next = 8;
29458
+ break;
29459
+ }
29460
+ _context.next = 6;
29461
+ return window.mainApi.widgetMcp.listAll();
29462
+ case 6:
29463
+ _t = _context.sent;
29464
+ if (_t) {
29465
+ _context.next = 7;
29466
+ break;
29467
+ }
29468
+ _t = [];
29469
+ case 7:
29470
+ allGrants = _t;
29471
+ relevant = allGrants.filter(function (g) {
29472
+ return widgetIdsOnServer.has(g.widgetId);
29473
+ });
29474
+ if (relevant.length > 0) {
29475
+ pathScope = unionPathScope(relevant, selectedProviderName);
29476
+ }
29477
+ case 8:
29478
+ _context.next = 10;
29479
+ break;
29480
+ case 9:
29481
+ _context.prev = 9;
29482
+ _context["catch"](5);
29483
+ case 10:
29333
29484
  // 1. Already connected at module level? Verify with main process before trusting cache.
29334
29485
  // The server may have been stopped externally (e.g., Test Connection in settings).
29335
- cached = serverStates.get(selectedProviderName);
29486
+ cached = serverStates.get(stateKey);
29336
29487
  if (!(cached && cached.status === "connected")) {
29337
- _context.next = 9;
29488
+ _context.next = 15;
29338
29489
  break;
29339
29490
  }
29340
- _context.prev = 5;
29341
- _context.next = 6;
29491
+ _context.prev = 11;
29492
+ _context.next = 12;
29342
29493
  return new Promise(function (resolve, reject) {
29343
29494
  dashApi.mcpGetServerStatus(selectedProviderName, function (event, result) {
29344
29495
  return resolve(result);
29345
29496
  }, function (event, err) {
29346
29497
  return reject(err);
29347
- });
29498
+ }, workspaceId);
29348
29499
  });
29349
- case 6:
29500
+ case 12:
29350
29501
  statusResult = _context.sent;
29351
29502
  if (!((statusResult === null || statusResult === void 0 ? void 0 : statusResult.status) === "connected")) {
29352
- _context.next = 7;
29503
+ _context.next = 13;
29353
29504
  break;
29354
29505
  }
29355
29506
  cached.consumerCount++;
29356
29507
  applyResult(cached);
29357
29508
  return _context.abrupt("return");
29358
- case 7:
29509
+ case 13:
29359
29510
  // Server was stopped externally — clear stale cache and reconnect
29360
- serverStates["delete"](selectedProviderName);
29361
- _context.next = 9;
29511
+ serverStates["delete"](stateKey);
29512
+ _context.next = 15;
29362
29513
  break;
29363
- case 8:
29364
- _context.prev = 8;
29365
- _context["catch"](5);
29366
- serverStates["delete"](selectedProviderName);
29367
- case 9:
29514
+ case 14:
29515
+ _context.prev = 14;
29516
+ _context["catch"](11);
29517
+ serverStates["delete"](stateKey);
29518
+ case 15:
29368
29519
  setIsConnecting(true);
29369
29520
  setError(null);
29370
29521
 
29371
29522
  // 2. Another hook instance already connecting? Piggyback on its promise
29372
- if (!pendingConnects$1.has(selectedProviderName)) {
29373
- _context.next = 17;
29523
+ if (!pendingConnects$1.has(stateKey)) {
29524
+ _context.next = 23;
29374
29525
  break;
29375
29526
  }
29376
- _context.prev = 10;
29377
- _context.next = 11;
29378
- return pendingConnects$1.get(selectedProviderName);
29379
- case 11:
29527
+ _context.prev = 16;
29528
+ _context.next = 17;
29529
+ return pendingConnects$1.get(stateKey);
29530
+ case 17:
29380
29531
  result = _context.sent;
29381
29532
  if (mountedRef.current) {
29382
- _context.next = 12;
29533
+ _context.next = 18;
29383
29534
  break;
29384
29535
  }
29385
29536
  return _context.abrupt("return");
29386
- case 12:
29537
+ case 18:
29387
29538
  if (!result.error) {
29388
- _context.next = 13;
29539
+ _context.next = 19;
29389
29540
  break;
29390
29541
  }
29391
29542
  setError(result.message);
29392
29543
  setIsConnecting(false);
29393
29544
  setStatus("error");
29394
29545
  return _context.abrupt("return");
29395
- case 13:
29546
+ case 19:
29396
29547
  // Increment consumer count and apply
29397
- state = serverStates.get(selectedProviderName);
29548
+ state = serverStates.get(stateKey);
29398
29549
  if (state) state.consumerCount++;
29399
29550
  applyResult(result);
29400
- _context.next = 16;
29551
+ _context.next = 22;
29401
29552
  break;
29402
- case 14:
29403
- _context.prev = 14;
29404
- _t2 = _context["catch"](10);
29553
+ case 20:
29554
+ _context.prev = 20;
29555
+ _t4 = _context["catch"](16);
29405
29556
  if (mountedRef.current) {
29406
- _context.next = 15;
29557
+ _context.next = 21;
29407
29558
  break;
29408
29559
  }
29409
29560
  return _context.abrupt("return");
29410
- case 15:
29411
- setError((_t2 === null || _t2 === void 0 ? void 0 : _t2.message) || "Failed to connect to MCP server");
29561
+ case 21:
29562
+ setError((_t4 === null || _t4 === void 0 ? void 0 : _t4.message) || "Failed to connect to MCP server");
29412
29563
  setIsConnecting(false);
29413
29564
  setStatus("error");
29414
- case 16:
29565
+ case 22:
29415
29566
  return _context.abrupt("return");
29416
- case 17:
29567
+ case 23:
29417
29568
  // 3. First caller — fire the IPC call and share the promise
29418
29569
  connectPromise = new Promise(function (resolve, reject) {
29419
29570
  dashApi.mcpStartServer(selectedProviderName, provider.mcpConfig, provider.credentials, function (event, result) {
29420
- pendingConnects$1["delete"](selectedProviderName);
29571
+ pendingConnects$1["delete"](stateKey);
29421
29572
  if (result.error) {
29422
- serverStates.set(selectedProviderName, {
29573
+ serverStates.set(stateKey, {
29423
29574
  status: "error",
29424
29575
  tools: [],
29425
29576
  resources: [],
@@ -29430,7 +29581,7 @@ var useMcpProvider = function useMcpProvider(providerType) {
29430
29581
  }
29431
29582
 
29432
29583
  // Store in module-level shared state
29433
- serverStates.set(selectedProviderName, {
29584
+ serverStates.set(stateKey, {
29434
29585
  status: "connected",
29435
29586
  tools: result.tools || [],
29436
29587
  resources: result.resources || [],
@@ -29438,65 +29589,66 @@ var useMcpProvider = function useMcpProvider(providerType) {
29438
29589
  });
29439
29590
  resolve(result);
29440
29591
  }, function (event, err) {
29441
- pendingConnects$1["delete"](selectedProviderName);
29442
- serverStates.set(selectedProviderName, {
29592
+ pendingConnects$1["delete"](stateKey);
29593
+ serverStates.set(stateKey, {
29443
29594
  status: "error",
29444
29595
  tools: [],
29445
29596
  resources: [],
29446
29597
  consumerCount: 0
29447
29598
  });
29448
29599
  reject(err);
29449
- });
29600
+ }, workspaceId, pathScope);
29450
29601
  });
29451
- pendingConnects$1.set(selectedProviderName, connectPromise);
29452
- _context.prev = 18;
29453
- _context.next = 19;
29602
+ pendingConnects$1.set(stateKey, connectPromise);
29603
+ _context.prev = 24;
29604
+ _context.next = 25;
29454
29605
  return connectPromise;
29455
- case 19:
29606
+ case 25:
29456
29607
  _result = _context.sent;
29457
29608
  if (mountedRef.current) {
29458
- _context.next = 20;
29609
+ _context.next = 26;
29459
29610
  break;
29460
29611
  }
29461
29612
  return _context.abrupt("return");
29462
- case 20:
29613
+ case 26:
29463
29614
  if (!_result.error) {
29464
- _context.next = 21;
29615
+ _context.next = 27;
29465
29616
  break;
29466
29617
  }
29467
29618
  setError(_result.message);
29468
29619
  setIsConnecting(false);
29469
29620
  setStatus("error");
29470
29621
  return _context.abrupt("return");
29471
- case 21:
29622
+ case 27:
29472
29623
  applyResult(_result);
29473
- _context.next = 24;
29624
+ _context.next = 30;
29474
29625
  break;
29475
- case 22:
29476
- _context.prev = 22;
29477
- _t3 = _context["catch"](18);
29626
+ case 28:
29627
+ _context.prev = 28;
29628
+ _t5 = _context["catch"](24);
29478
29629
  if (mountedRef.current) {
29479
- _context.next = 23;
29630
+ _context.next = 29;
29480
29631
  break;
29481
29632
  }
29482
29633
  return _context.abrupt("return");
29483
- case 23:
29484
- setError((_t3 === null || _t3 === void 0 ? void 0 : _t3.message) || "Failed to connect to MCP server");
29634
+ case 29:
29635
+ setError((_t5 === null || _t5 === void 0 ? void 0 : _t5.message) || "Failed to connect to MCP server");
29485
29636
  setIsConnecting(false);
29486
29637
  setStatus("error");
29487
- case 24:
29638
+ case 30:
29488
29639
  case "end":
29489
29640
  return _context.stop();
29490
29641
  }
29491
- }, _callee, null, [[5, 8], [10, 14], [18, 22]]);
29492
- })), [dashApi, provider, providerType, selectedProviderName, applyResult]);
29642
+ }, _callee, null, [[5, 9], [11, 14], [16, 20], [24, 28]]);
29643
+ })), [dashApi, provider, providerType, selectedProviderName, applyResult, workspace]);
29493
29644
 
29494
29645
  /**
29495
29646
  * Disconnect from the MCP server.
29496
29647
  * Only sends the IPC stop call when this is the last consumer.
29497
29648
  */
29498
29649
  var disconnect = React.useCallback(/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee2() {
29499
- var state;
29650
+ var _workspace$workspaceD4;
29651
+ var workspaceId, stateKey, state;
29500
29652
  return _regeneratorRuntime.wrap(function (_context2) {
29501
29653
  while (1) switch (_context2.prev = _context2.next) {
29502
29654
  case 0:
@@ -29506,7 +29658,9 @@ var useMcpProvider = function useMcpProvider(providerType) {
29506
29658
  }
29507
29659
  return _context2.abrupt("return");
29508
29660
  case 1:
29509
- state = serverStates.get(selectedProviderName);
29661
+ workspaceId = (workspace === null || workspace === void 0 || (_workspace$workspaceD4 = workspace.workspaceData) === null || _workspace$workspaceD4 === void 0 ? void 0 : _workspace$workspaceD4.id) || null;
29662
+ stateKey = rendererStateKey(workspaceId, selectedProviderName);
29663
+ state = serverStates.get(stateKey);
29510
29664
  if (!state) {
29511
29665
  _context2.next = 3;
29512
29666
  break;
@@ -29525,7 +29679,7 @@ var useMcpProvider = function useMcpProvider(providerType) {
29525
29679
  return _context2.abrupt("return");
29526
29680
  case 2:
29527
29681
  // Last consumer — actually stop the server
29528
- serverStates["delete"](selectedProviderName);
29682
+ serverStates["delete"](stateKey);
29529
29683
  case 3:
29530
29684
  // Clear state synchronously BEFORE the IPC call so that
29531
29685
  // a subsequent connect() won't short-circuit on stale connectedRef
@@ -29534,29 +29688,31 @@ var useMcpProvider = function useMcpProvider(providerType) {
29534
29688
  setResources([]);
29535
29689
  setStatus("disconnected");
29536
29690
  connectedRef.current = false;
29537
- pendingConnects$1["delete"](selectedProviderName);
29691
+ pendingConnects$1["delete"](stateKey);
29538
29692
  return _context2.abrupt("return", new Promise(function (resolve) {
29539
29693
  dashApi.mcpStopServer(selectedProviderName, function () {
29540
29694
  return resolve();
29541
29695
  }, function (event, err) {
29542
29696
  resolve();
29543
- });
29697
+ }, workspaceId);
29544
29698
  }));
29545
29699
  case 4:
29546
29700
  case "end":
29547
29701
  return _context2.stop();
29548
29702
  }
29549
29703
  }, _callee2);
29550
- })), [dashApi, selectedProviderName]);
29704
+ })), [dashApi, selectedProviderName, workspace]);
29551
29705
 
29552
29706
  /**
29553
29707
  * Call a tool on the MCP server
29554
29708
  */
29555
29709
  var callTool = React.useCallback(/*#__PURE__*/function () {
29556
29710
  var _ref3 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee3(toolName) {
29711
+ var _workspace$workspaceD5;
29557
29712
  var args,
29558
29713
  widgetRequiredTools,
29559
29714
  isRequired,
29715
+ workspaceId,
29560
29716
  _args3 = arguments;
29561
29717
  return _regeneratorRuntime.wrap(function (_context3) {
29562
29718
  while (1) switch (_context3.prev = _context3.next) {
@@ -29583,6 +29739,10 @@ var useMcpProvider = function useMcpProvider(providerType) {
29583
29739
  isRequired = widgetRequiredTools === null || widgetRequiredTools === void 0 ? void 0 : widgetRequiredTools.includes(toolName);
29584
29740
  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.") : ""));
29585
29741
  case 2:
29742
+ // Slice 3a: scope the MCP server process per workspace. The
29743
+ // workspace UUID is the canonical "current dashboard" identity
29744
+ // (see useNotifications, useScheduler for the same pattern).
29745
+ workspaceId = (workspace === null || workspace === void 0 || (_workspace$workspaceD5 = workspace.workspaceData) === null || _workspace$workspaceD5 === void 0 ? void 0 : _workspace$workspaceD5.id) || null;
29586
29746
  return _context3.abrupt("return", new Promise(function (resolve, reject) {
29587
29747
  var timeout = setTimeout(function () {
29588
29748
  reject(new Error("Tool call \"".concat(toolName, "\" timed out after 30s")));
@@ -29597,7 +29757,7 @@ var useMcpProvider = function useMcpProvider(providerType) {
29597
29757
  }, function (event, err) {
29598
29758
  clearTimeout(timeout);
29599
29759
  reject(new Error((err === null || err === void 0 ? void 0 : err.message) || "Failed to call MCP tool"));
29600
- });
29760
+ }, workspaceId);
29601
29761
  }));
29602
29762
  case 3:
29603
29763
  case "end":
@@ -29608,7 +29768,7 @@ var useMcpProvider = function useMcpProvider(providerType) {
29608
29768
  return function (_x) {
29609
29769
  return _ref3.apply(this, arguments);
29610
29770
  };
29611
- }(), [dashApi, selectedProviderName, effectiveAllowedTools, widgetData, providerType]);
29771
+ }(), [dashApi, selectedProviderName, effectiveAllowedTools, widgetData, providerType, workspace]);
29612
29772
 
29613
29773
  /**
29614
29774
  * Read a resource from the MCP server
@@ -29666,7 +29826,10 @@ var useMcpProvider = function useMcpProvider(providerType) {
29666
29826
 
29667
29827
  // Decrement consumer count; only stop server if last consumer
29668
29828
  if (connectedRef.current && dashApi && selectedProviderName) {
29669
- var state = serverStates.get(selectedProviderName);
29829
+ var _workspace$workspaceD6;
29830
+ var workspaceId = (workspace === null || workspace === void 0 || (_workspace$workspaceD6 = workspace.workspaceData) === null || _workspace$workspaceD6 === void 0 ? void 0 : _workspace$workspaceD6.id) || null;
29831
+ var stateKey = rendererStateKey(workspaceId, selectedProviderName);
29832
+ var state = serverStates.get(stateKey);
29670
29833
  if (state) {
29671
29834
  state.consumerCount = Math.max(0, state.consumerCount - 1);
29672
29835
  if (state.consumerCount > 0) {
@@ -29675,12 +29838,12 @@ var useMcpProvider = function useMcpProvider(providerType) {
29675
29838
  }
29676
29839
 
29677
29840
  // Last consumer — stop the server
29678
- serverStates["delete"](selectedProviderName);
29841
+ serverStates["delete"](stateKey);
29679
29842
  }
29680
- dashApi.mcpStopServer(selectedProviderName, function () {}, function () {});
29843
+ dashApi.mcpStopServer(selectedProviderName, function () {}, function () {}, workspaceId);
29681
29844
  }
29682
29845
  };
29683
- }, [dashApi, selectedProviderName]);
29846
+ }, [dashApi, selectedProviderName, workspace]);
29684
29847
  return {
29685
29848
  isConnected: isConnected,
29686
29849
  isConnecting: isConnecting,