@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.js CHANGED
@@ -19526,7 +19526,7 @@ var useMcpProvider = function useMcpProvider(providerType) {
19526
19526
  * even when multiple hook instances call connect() simultaneously.
19527
19527
  */
19528
19528
  var connect = React.useCallback(/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee() {
19529
- var cached, result, state, connectPromise, _result, _t, _t2;
19529
+ var cached, statusResult, result, state, connectPromise, _result, _t2, _t3;
19530
19530
  return _regeneratorRuntime.wrap(function (_context) {
19531
19531
  while (1) switch (_context.prev = _context.next) {
19532
19532
  case 0:
@@ -19557,65 +19557,90 @@ var useMcpProvider = function useMcpProvider(providerType) {
19557
19557
  setError("Provider \"".concat(selectedProviderName, "\" has no MCP configuration"));
19558
19558
  return _context.abrupt("return");
19559
19559
  case 4:
19560
- // 1. Already connected at module level? Apply cached result, skip IPC
19560
+ // 1. Already connected at module level? Verify with main process before trusting cache.
19561
+ // The server may have been stopped externally (e.g., Test Connection in settings).
19561
19562
  cached = serverStates.get(selectedProviderName);
19562
19563
  if (!(cached && cached.status === "connected")) {
19563
- _context.next = 5;
19564
+ _context.next = 9;
19565
+ break;
19566
+ }
19567
+ _context.prev = 5;
19568
+ _context.next = 6;
19569
+ return new Promise(function (resolve, reject) {
19570
+ dashApi.mcpGetServerStatus(selectedProviderName, function (event, result) {
19571
+ return resolve(result);
19572
+ }, function (event, err) {
19573
+ return reject(err);
19574
+ });
19575
+ });
19576
+ case 6:
19577
+ statusResult = _context.sent;
19578
+ if (!((statusResult === null || statusResult === void 0 ? void 0 : statusResult.status) === "connected")) {
19579
+ _context.next = 7;
19564
19580
  break;
19565
19581
  }
19566
19582
  cached.consumerCount++;
19567
19583
  applyResult(cached);
19568
19584
  return _context.abrupt("return");
19569
- case 5:
19585
+ case 7:
19586
+ // Server was stopped externally — clear stale cache and reconnect
19587
+ serverStates["delete"](selectedProviderName);
19588
+ _context.next = 9;
19589
+ break;
19590
+ case 8:
19591
+ _context.prev = 8;
19592
+ _context["catch"](5);
19593
+ serverStates["delete"](selectedProviderName);
19594
+ case 9:
19570
19595
  setIsConnecting(true);
19571
19596
  setError(null);
19572
19597
 
19573
19598
  // 2. Another hook instance already connecting? Piggyback on its promise
19574
19599
  if (!pendingConnects.has(selectedProviderName)) {
19575
- _context.next = 13;
19600
+ _context.next = 17;
19576
19601
  break;
19577
19602
  }
19578
- _context.prev = 6;
19579
- _context.next = 7;
19603
+ _context.prev = 10;
19604
+ _context.next = 11;
19580
19605
  return pendingConnects.get(selectedProviderName);
19581
- case 7:
19606
+ case 11:
19582
19607
  result = _context.sent;
19583
19608
  if (mountedRef.current) {
19584
- _context.next = 8;
19609
+ _context.next = 12;
19585
19610
  break;
19586
19611
  }
19587
19612
  return _context.abrupt("return");
19588
- case 8:
19613
+ case 12:
19589
19614
  if (!result.error) {
19590
- _context.next = 9;
19615
+ _context.next = 13;
19591
19616
  break;
19592
19617
  }
19593
19618
  setError(result.message);
19594
19619
  setIsConnecting(false);
19595
19620
  setStatus("error");
19596
19621
  return _context.abrupt("return");
19597
- case 9:
19622
+ case 13:
19598
19623
  // Increment consumer count and apply
19599
19624
  state = serverStates.get(selectedProviderName);
19600
19625
  if (state) state.consumerCount++;
19601
19626
  applyResult(result);
19602
- _context.next = 12;
19627
+ _context.next = 16;
19603
19628
  break;
19604
- case 10:
19605
- _context.prev = 10;
19606
- _t = _context["catch"](6);
19629
+ case 14:
19630
+ _context.prev = 14;
19631
+ _t2 = _context["catch"](10);
19607
19632
  if (mountedRef.current) {
19608
- _context.next = 11;
19633
+ _context.next = 15;
19609
19634
  break;
19610
19635
  }
19611
19636
  return _context.abrupt("return");
19612
- case 11:
19613
- setError((_t === null || _t === void 0 ? void 0 : _t.message) || "Failed to connect to MCP server");
19637
+ case 15:
19638
+ setError((_t2 === null || _t2 === void 0 ? void 0 : _t2.message) || "Failed to connect to MCP server");
19614
19639
  setIsConnecting(false);
19615
19640
  setStatus("error");
19616
- case 12:
19641
+ case 16:
19617
19642
  return _context.abrupt("return");
19618
- case 13:
19643
+ case 17:
19619
19644
  // 3. First caller — fire the IPC call and share the promise
19620
19645
  connectPromise = new Promise(function (resolve, reject) {
19621
19646
  dashApi.mcpStartServer(selectedProviderName, provider.mcpConfig, provider.credentials, function (event, result) {
@@ -19651,46 +19676,46 @@ var useMcpProvider = function useMcpProvider(providerType) {
19651
19676
  });
19652
19677
  });
19653
19678
  pendingConnects.set(selectedProviderName, connectPromise);
19654
- _context.prev = 14;
19655
- _context.next = 15;
19679
+ _context.prev = 18;
19680
+ _context.next = 19;
19656
19681
  return connectPromise;
19657
- case 15:
19682
+ case 19:
19658
19683
  _result = _context.sent;
19659
19684
  if (mountedRef.current) {
19660
- _context.next = 16;
19685
+ _context.next = 20;
19661
19686
  break;
19662
19687
  }
19663
19688
  return _context.abrupt("return");
19664
- case 16:
19689
+ case 20:
19665
19690
  if (!_result.error) {
19666
- _context.next = 17;
19691
+ _context.next = 21;
19667
19692
  break;
19668
19693
  }
19669
19694
  setError(_result.message);
19670
19695
  setIsConnecting(false);
19671
19696
  setStatus("error");
19672
19697
  return _context.abrupt("return");
19673
- case 17:
19698
+ case 21:
19674
19699
  applyResult(_result);
19675
- _context.next = 20;
19700
+ _context.next = 24;
19676
19701
  break;
19677
- case 18:
19678
- _context.prev = 18;
19679
- _t2 = _context["catch"](14);
19702
+ case 22:
19703
+ _context.prev = 22;
19704
+ _t3 = _context["catch"](18);
19680
19705
  if (mountedRef.current) {
19681
- _context.next = 19;
19706
+ _context.next = 23;
19682
19707
  break;
19683
19708
  }
19684
19709
  return _context.abrupt("return");
19685
- case 19:
19686
- setError((_t2 === null || _t2 === void 0 ? void 0 : _t2.message) || "Failed to connect to MCP server");
19710
+ case 23:
19711
+ setError((_t3 === null || _t3 === void 0 ? void 0 : _t3.message) || "Failed to connect to MCP server");
19687
19712
  setIsConnecting(false);
19688
19713
  setStatus("error");
19689
- case 20:
19714
+ case 24:
19690
19715
  case "end":
19691
19716
  return _context.stop();
19692
19717
  }
19693
- }, _callee, null, [[6, 10], [14, 18]]);
19718
+ }, _callee, null, [[5, 8], [10, 14], [18, 22]]);
19694
19719
  })), [dashApi, provider, providerType, selectedProviderName, applyResult]);
19695
19720
 
19696
19721
  /**