@trops/dash-core 0.1.56 → 0.1.57

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.esm.js CHANGED
@@ -19507,7 +19507,7 @@ var useMcpProvider = function useMcpProvider(providerType) {
19507
19507
  * even when multiple hook instances call connect() simultaneously.
19508
19508
  */
19509
19509
  var connect = useCallback(/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee() {
19510
- var cached, result, state, connectPromise, _result, _t, _t2;
19510
+ var cached, statusResult, result, state, connectPromise, _result, _t2, _t3;
19511
19511
  return _regeneratorRuntime.wrap(function (_context) {
19512
19512
  while (1) switch (_context.prev = _context.next) {
19513
19513
  case 0:
@@ -19538,65 +19538,90 @@ var useMcpProvider = function useMcpProvider(providerType) {
19538
19538
  setError("Provider \"".concat(selectedProviderName, "\" has no MCP configuration"));
19539
19539
  return _context.abrupt("return");
19540
19540
  case 4:
19541
- // 1. Already connected at module level? Apply cached result, skip IPC
19541
+ // 1. Already connected at module level? Verify with main process before trusting cache.
19542
+ // The server may have been stopped externally (e.g., Test Connection in settings).
19542
19543
  cached = serverStates.get(selectedProviderName);
19543
19544
  if (!(cached && cached.status === "connected")) {
19544
- _context.next = 5;
19545
+ _context.next = 9;
19546
+ break;
19547
+ }
19548
+ _context.prev = 5;
19549
+ _context.next = 6;
19550
+ return new Promise(function (resolve, reject) {
19551
+ dashApi.mcpGetServerStatus(selectedProviderName, function (event, result) {
19552
+ return resolve(result);
19553
+ }, function (event, err) {
19554
+ return reject(err);
19555
+ });
19556
+ });
19557
+ case 6:
19558
+ statusResult = _context.sent;
19559
+ if (!((statusResult === null || statusResult === void 0 ? void 0 : statusResult.status) === "connected")) {
19560
+ _context.next = 7;
19545
19561
  break;
19546
19562
  }
19547
19563
  cached.consumerCount++;
19548
19564
  applyResult(cached);
19549
19565
  return _context.abrupt("return");
19550
- case 5:
19566
+ case 7:
19567
+ // Server was stopped externally — clear stale cache and reconnect
19568
+ serverStates["delete"](selectedProviderName);
19569
+ _context.next = 9;
19570
+ break;
19571
+ case 8:
19572
+ _context.prev = 8;
19573
+ _context["catch"](5);
19574
+ serverStates["delete"](selectedProviderName);
19575
+ case 9:
19551
19576
  setIsConnecting(true);
19552
19577
  setError(null);
19553
19578
 
19554
19579
  // 2. Another hook instance already connecting? Piggyback on its promise
19555
19580
  if (!pendingConnects.has(selectedProviderName)) {
19556
- _context.next = 13;
19581
+ _context.next = 17;
19557
19582
  break;
19558
19583
  }
19559
- _context.prev = 6;
19560
- _context.next = 7;
19584
+ _context.prev = 10;
19585
+ _context.next = 11;
19561
19586
  return pendingConnects.get(selectedProviderName);
19562
- case 7:
19587
+ case 11:
19563
19588
  result = _context.sent;
19564
19589
  if (mountedRef.current) {
19565
- _context.next = 8;
19590
+ _context.next = 12;
19566
19591
  break;
19567
19592
  }
19568
19593
  return _context.abrupt("return");
19569
- case 8:
19594
+ case 12:
19570
19595
  if (!result.error) {
19571
- _context.next = 9;
19596
+ _context.next = 13;
19572
19597
  break;
19573
19598
  }
19574
19599
  setError(result.message);
19575
19600
  setIsConnecting(false);
19576
19601
  setStatus("error");
19577
19602
  return _context.abrupt("return");
19578
- case 9:
19603
+ case 13:
19579
19604
  // Increment consumer count and apply
19580
19605
  state = serverStates.get(selectedProviderName);
19581
19606
  if (state) state.consumerCount++;
19582
19607
  applyResult(result);
19583
- _context.next = 12;
19608
+ _context.next = 16;
19584
19609
  break;
19585
- case 10:
19586
- _context.prev = 10;
19587
- _t = _context["catch"](6);
19610
+ case 14:
19611
+ _context.prev = 14;
19612
+ _t2 = _context["catch"](10);
19588
19613
  if (mountedRef.current) {
19589
- _context.next = 11;
19614
+ _context.next = 15;
19590
19615
  break;
19591
19616
  }
19592
19617
  return _context.abrupt("return");
19593
- case 11:
19594
- setError((_t === null || _t === void 0 ? void 0 : _t.message) || "Failed to connect to MCP server");
19618
+ case 15:
19619
+ setError((_t2 === null || _t2 === void 0 ? void 0 : _t2.message) || "Failed to connect to MCP server");
19595
19620
  setIsConnecting(false);
19596
19621
  setStatus("error");
19597
- case 12:
19622
+ case 16:
19598
19623
  return _context.abrupt("return");
19599
- case 13:
19624
+ case 17:
19600
19625
  // 3. First caller — fire the IPC call and share the promise
19601
19626
  connectPromise = new Promise(function (resolve, reject) {
19602
19627
  dashApi.mcpStartServer(selectedProviderName, provider.mcpConfig, provider.credentials, function (event, result) {
@@ -19632,46 +19657,46 @@ var useMcpProvider = function useMcpProvider(providerType) {
19632
19657
  });
19633
19658
  });
19634
19659
  pendingConnects.set(selectedProviderName, connectPromise);
19635
- _context.prev = 14;
19636
- _context.next = 15;
19660
+ _context.prev = 18;
19661
+ _context.next = 19;
19637
19662
  return connectPromise;
19638
- case 15:
19663
+ case 19:
19639
19664
  _result = _context.sent;
19640
19665
  if (mountedRef.current) {
19641
- _context.next = 16;
19666
+ _context.next = 20;
19642
19667
  break;
19643
19668
  }
19644
19669
  return _context.abrupt("return");
19645
- case 16:
19670
+ case 20:
19646
19671
  if (!_result.error) {
19647
- _context.next = 17;
19672
+ _context.next = 21;
19648
19673
  break;
19649
19674
  }
19650
19675
  setError(_result.message);
19651
19676
  setIsConnecting(false);
19652
19677
  setStatus("error");
19653
19678
  return _context.abrupt("return");
19654
- case 17:
19679
+ case 21:
19655
19680
  applyResult(_result);
19656
- _context.next = 20;
19681
+ _context.next = 24;
19657
19682
  break;
19658
- case 18:
19659
- _context.prev = 18;
19660
- _t2 = _context["catch"](14);
19683
+ case 22:
19684
+ _context.prev = 22;
19685
+ _t3 = _context["catch"](18);
19661
19686
  if (mountedRef.current) {
19662
- _context.next = 19;
19687
+ _context.next = 23;
19663
19688
  break;
19664
19689
  }
19665
19690
  return _context.abrupt("return");
19666
- case 19:
19667
- setError((_t2 === null || _t2 === void 0 ? void 0 : _t2.message) || "Failed to connect to MCP server");
19691
+ case 23:
19692
+ setError((_t3 === null || _t3 === void 0 ? void 0 : _t3.message) || "Failed to connect to MCP server");
19668
19693
  setIsConnecting(false);
19669
19694
  setStatus("error");
19670
- case 20:
19695
+ case 24:
19671
19696
  case "end":
19672
19697
  return _context.stop();
19673
19698
  }
19674
- }, _callee, null, [[6, 10], [14, 18]]);
19699
+ }, _callee, null, [[5, 8], [10, 14], [18, 22]]);
19675
19700
  })), [dashApi, provider, providerType, selectedProviderName, applyResult]);
19676
19701
 
19677
19702
  /**