imcp 0.0.19 → 0.1.2

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.
Files changed (183) hide show
  1. package/.roo/rules-code/rules.md +88 -0
  2. package/dist/cli/index.js +1 -45
  3. package/dist/core/installers/clients/BaseClientInstaller.d.ts +1 -5
  4. package/dist/core/installers/clients/BaseClientInstaller.js +40 -38
  5. package/dist/core/installers/clients/ClientInstaller.d.ts +9 -9
  6. package/dist/core/installers/clients/ClientInstaller.js +105 -99
  7. package/dist/core/installers/requirements/BaseInstaller.d.ts +9 -1
  8. package/dist/core/installers/requirements/CommandInstaller.d.ts +9 -1
  9. package/dist/core/installers/requirements/CommandInstaller.js +46 -12
  10. package/dist/core/installers/requirements/GeneralInstaller.d.ts +11 -1
  11. package/dist/core/installers/requirements/GeneralInstaller.js +46 -10
  12. package/dist/core/installers/requirements/InstallerFactory.d.ts +3 -1
  13. package/dist/core/installers/requirements/InstallerFactory.js +3 -2
  14. package/dist/core/installers/requirements/NpmInstaller.d.ts +4 -2
  15. package/dist/core/installers/requirements/NpmInstaller.js +38 -22
  16. package/dist/core/installers/requirements/PipInstaller.d.ts +3 -1
  17. package/dist/core/installers/requirements/PipInstaller.js +58 -36
  18. package/dist/core/installers/requirements/RequirementInstaller.d.ts +4 -1
  19. package/dist/core/loaders/InstallOperationManager.d.ts +115 -0
  20. package/dist/core/loaders/InstallOperationManager.js +311 -0
  21. package/dist/core/loaders/SystemSettingsManager.d.ts +54 -0
  22. package/dist/core/loaders/SystemSettingsManager.js +257 -0
  23. package/dist/core/metadatas/constants.d.ts +7 -0
  24. package/dist/core/metadatas/constants.js +7 -0
  25. package/dist/core/metadatas/recordingConstants.d.ts +44 -0
  26. package/dist/core/metadatas/recordingConstants.js +45 -0
  27. package/dist/core/metadatas/types.d.ts +21 -0
  28. package/dist/core/onboard/FeedOnboardService.d.ts +7 -3
  29. package/dist/core/onboard/FeedOnboardService.js +52 -5
  30. package/dist/core/onboard/InstallOperationManager.d.ts +23 -0
  31. package/dist/core/onboard/InstallOperationManager.js +144 -0
  32. package/dist/core/onboard/OnboardStatusManager.js +2 -1
  33. package/dist/core/validators/StdioServerValidator.js +4 -3
  34. package/dist/services/InstallationService.d.ts +2 -37
  35. package/dist/services/InstallationService.js +45 -313
  36. package/dist/services/MCPManager.d.ts +1 -1
  37. package/dist/services/MCPManager.js +53 -47
  38. package/dist/services/RequirementService.d.ts +85 -12
  39. package/dist/services/RequirementService.js +488 -49
  40. package/dist/services/ServerService.d.ts +0 -6
  41. package/dist/services/ServerService.js +0 -74
  42. package/dist/services/TelemetryService.d.ts +15 -0
  43. package/dist/services/TelemetryService.js +54 -0
  44. package/dist/utils/adoUtils.js +6 -3
  45. package/dist/utils/githubAuth.js +65 -0
  46. package/dist/utils/logger.d.ts +16 -0
  47. package/dist/utils/logger.js +78 -1
  48. package/dist/utils/macroExpressionUtils.js +3 -25
  49. package/dist/utils/osUtils.d.ts +22 -1
  50. package/dist/utils/osUtils.js +92 -1
  51. package/dist/utils/versionUtils.d.ts +20 -0
  52. package/dist/utils/versionUtils.js +76 -0
  53. package/dist/web/public/css/modal.css +292 -1
  54. package/dist/web/public/css/serverCategoryList.css +120 -0
  55. package/dist/web/public/css/serverDetails.css +14 -1
  56. package/dist/web/public/index.html +126 -21
  57. package/dist/web/public/js/flights/flights.js +1 -1
  58. package/dist/web/public/js/modal/index.js +8 -14
  59. package/dist/web/public/js/modal/installModal.js +3 -4
  60. package/dist/web/public/js/modal/installation.js +122 -137
  61. package/dist/web/public/js/modal/loadingModal.js +155 -25
  62. package/dist/web/public/js/modal/messageQueue.js +45 -101
  63. package/dist/web/public/js/modal/modalSetup.js +125 -43
  64. package/dist/web/public/js/modal/modalUtils.js +0 -12
  65. package/dist/web/public/js/modal.js +23 -10
  66. package/dist/web/public/js/onboard/formProcessor.js +18 -11
  67. package/dist/web/public/js/onboard/publishHandler.js +35 -3
  68. package/dist/web/public/js/onboard/templates.js +5 -1
  69. package/dist/web/public/js/onboard/uiHandlers.js +266 -39
  70. package/dist/web/public/js/onboard/validationHandlers.js +71 -39
  71. package/dist/web/public/js/serverCategoryDetails.js +60 -11
  72. package/dist/web/public/js/serverCategoryList.js +93 -9
  73. package/dist/web/public/js/settings.js +314 -0
  74. package/dist/web/public/onboard.html +2 -2
  75. package/dist/web/public/settings.html +135 -0
  76. package/dist/web/public/styles.css +32 -0
  77. package/dist/web/server.js +93 -1
  78. package/{src/web/public/js/onboard → docs}/ONBOARDING_PAGE_DESIGN.md +15 -125
  79. package/docs/Telemetry.md +136 -0
  80. package/memory-bank/activeContext.md +26 -0
  81. package/memory-bank/decisionLog.md +91 -0
  82. package/memory-bank/productContext.md +41 -0
  83. package/memory-bank/progress.md +35 -0
  84. package/memory-bank/systemPatterns.md +10 -0
  85. package/package.json +2 -1
  86. package/src/cli/index.ts +1 -48
  87. package/src/core/installers/clients/BaseClientInstaller.ts +64 -50
  88. package/src/core/installers/clients/ClientInstaller.ts +130 -130
  89. package/src/core/installers/requirements/BaseInstaller.ts +9 -1
  90. package/src/core/installers/requirements/CommandInstaller.ts +47 -13
  91. package/src/core/installers/requirements/GeneralInstaller.ts +48 -10
  92. package/src/core/installers/requirements/InstallerFactory.ts +4 -3
  93. package/src/core/installers/requirements/NpmInstaller.ts +90 -68
  94. package/src/core/installers/requirements/PipInstaller.ts +81 -55
  95. package/src/core/installers/requirements/RequirementInstaller.ts +4 -3
  96. package/src/core/loaders/InstallOperationManager.ts +367 -0
  97. package/src/core/loaders/SystemSettingsManager.ts +278 -0
  98. package/src/core/metadatas/constants.ts +9 -0
  99. package/src/core/metadatas/recordingConstants.ts +62 -0
  100. package/src/core/metadatas/types.ts +23 -0
  101. package/src/core/onboard/FeedOnboardService.ts +59 -5
  102. package/src/core/onboard/OnboardStatusManager.ts +2 -1
  103. package/src/core/validators/StdioServerValidator.ts +4 -3
  104. package/src/services/InstallationService.ts +54 -399
  105. package/src/services/MCPManager.ts +61 -64
  106. package/src/services/RequirementService.ts +564 -67
  107. package/src/services/ServerService.ts +0 -90
  108. package/src/services/TelemetryService.ts +59 -0
  109. package/src/utils/adoUtils.ts +6 -4
  110. package/src/utils/githubAuth.ts +84 -1
  111. package/src/utils/logger.ts +83 -1
  112. package/src/utils/macroExpressionUtils.ts +4 -21
  113. package/src/utils/osUtils.ts +92 -1
  114. package/src/utils/versionUtils.ts +98 -13
  115. package/src/web/public/css/modal.css +292 -1
  116. package/src/web/public/css/serverCategoryList.css +120 -0
  117. package/src/web/public/css/serverDetails.css +14 -1
  118. package/src/web/public/index.html +126 -21
  119. package/src/web/public/js/flights/flights.js +1 -1
  120. package/src/web/public/js/modal/index.js +8 -14
  121. package/src/web/public/js/modal/installModal.js +3 -4
  122. package/src/web/public/js/modal/installation.js +122 -137
  123. package/src/web/public/js/modal/loadingModal.js +155 -25
  124. package/src/web/public/js/modal/modalSetup.js +125 -43
  125. package/src/web/public/js/modal/modalUtils.js +0 -12
  126. package/src/web/public/js/modal.js +23 -10
  127. package/src/web/public/js/onboard/formProcessor.js +18 -11
  128. package/src/web/public/js/onboard/publishHandler.js +35 -3
  129. package/src/web/public/js/onboard/templates.js +5 -1
  130. package/src/web/public/js/onboard/uiHandlers.js +266 -39
  131. package/src/web/public/js/onboard/validationHandlers.js +71 -39
  132. package/src/web/public/js/serverCategoryDetails.js +60 -11
  133. package/src/web/public/js/serverCategoryList.js +93 -9
  134. package/src/web/public/js/settings.js +314 -0
  135. package/src/web/public/onboard.html +2 -2
  136. package/src/web/public/settings.html +135 -0
  137. package/src/web/public/styles.css +32 -0
  138. package/src/web/server.ts +96 -1
  139. package/dist/cli/commands/start.d.ts +0 -2
  140. package/dist/cli/commands/start.js +0 -32
  141. package/dist/cli/commands/sync.d.ts +0 -2
  142. package/dist/cli/commands/sync.js +0 -17
  143. package/dist/core/ConfigurationLoader.d.ts +0 -32
  144. package/dist/core/ConfigurationLoader.js +0 -236
  145. package/dist/core/ConfigurationProvider.d.ts +0 -35
  146. package/dist/core/ConfigurationProvider.js +0 -375
  147. package/dist/core/InstallationService.d.ts +0 -50
  148. package/dist/core/InstallationService.js +0 -350
  149. package/dist/core/MCPManager.d.ts +0 -28
  150. package/dist/core/MCPManager.js +0 -188
  151. package/dist/core/RequirementService.d.ts +0 -40
  152. package/dist/core/RequirementService.js +0 -110
  153. package/dist/core/ServerSchemaLoader.d.ts +0 -11
  154. package/dist/core/ServerSchemaLoader.js +0 -43
  155. package/dist/core/ServerSchemaProvider.d.ts +0 -17
  156. package/dist/core/ServerSchemaProvider.js +0 -120
  157. package/dist/core/constants.d.ts +0 -47
  158. package/dist/core/constants.js +0 -94
  159. package/dist/core/installers/BaseInstaller.d.ts +0 -74
  160. package/dist/core/installers/BaseInstaller.js +0 -253
  161. package/dist/core/installers/ClientInstaller.d.ts +0 -23
  162. package/dist/core/installers/ClientInstaller.js +0 -564
  163. package/dist/core/installers/CommandInstaller.d.ts +0 -37
  164. package/dist/core/installers/CommandInstaller.js +0 -173
  165. package/dist/core/installers/GeneralInstaller.d.ts +0 -33
  166. package/dist/core/installers/GeneralInstaller.js +0 -85
  167. package/dist/core/installers/InstallerFactory.d.ts +0 -54
  168. package/dist/core/installers/InstallerFactory.js +0 -97
  169. package/dist/core/installers/NpmInstaller.d.ts +0 -26
  170. package/dist/core/installers/NpmInstaller.js +0 -127
  171. package/dist/core/installers/PipInstaller.d.ts +0 -28
  172. package/dist/core/installers/PipInstaller.js +0 -127
  173. package/dist/core/installers/RequirementInstaller.d.ts +0 -33
  174. package/dist/core/installers/RequirementInstaller.js +0 -3
  175. package/dist/core/types.d.ts +0 -166
  176. package/dist/core/types.js +0 -16
  177. package/dist/services/InstallRequestValidator.d.ts +0 -21
  178. package/dist/services/InstallRequestValidator.js +0 -99
  179. package/dist/web/public/js/modal/installHandler.js +0 -227
  180. package/dist/web/public/js/modal/loadingUI.js +0 -74
  181. package/dist/web/public/js/modal/modalUI.js +0 -214
  182. package/dist/web/public/js/modal/version.js +0 -20
  183. package/src/web/public/js/modal/messageQueue.js +0 -112
@@ -14,6 +14,7 @@
14
14
  <link rel="stylesheet" href="css/notifications.css">
15
15
  <link rel="stylesheet" href="css/serverDetails.css">
16
16
  <link rel="stylesheet" href="css/detailsWidget.css">
17
+ <link rel="stylesheet" href="css/serverCategoryList.css">
17
18
  <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/js/bootstrap.bundle.min.js"></script>
18
19
 
19
20
  <!-- Alert container for notifications -->
@@ -25,22 +26,26 @@
25
26
  <div class="container mx-auto px-4 py-6">
26
27
  <div class="flex items-center justify-between mb-8">
27
28
  <h1 class="text-3xl font-bold text-gray-900 flex items-center">
28
- <i class='bx bx-server mr-3 text-blue-600'></i>
29
- IMCP Server Manager
29
+ <a href="index.html" class="flex items-center text-gray-900 hover:text-blue-600 transition-colors">
30
+ <i class='bx bx-server mr-3 text-blue-600'></i>
31
+ IMCP Server Manager
32
+ </a>
33
+ <button id="settingsButton"
34
+ class="text-gray-700 hover:text-blue-600 transition-colors flex items-center ml-3 mt-1">
35
+ <i class='bx bx-cog text-3xl'></i>
36
+ </button>
30
37
  </h1>
31
38
  <div class="lg:w-2/3 flex justify-end items-center gap-4">
32
39
  <div class="relative w-48 focus-within:w-96 transition-all duration-300 ease-in-out">
33
- <input type="text" id="searchBox"
34
- placeholder="Search..."
35
- data-expanded-placeholder="Search servers or tools..."
36
- class="w-full px-10 py-2.5 bg-gray-50 border border-gray-200 rounded-lg
40
+ <input type="text" id="searchBox" placeholder="Search..."
41
+ data-expanded-placeholder="Search servers or tools..." class="w-full px-10 py-2.5 bg-gray-50 border border-gray-200 rounded-lg
37
42
  text-gray-700 placeholder-gray-400
38
43
  focus:border-blue-400 focus:ring-2 focus:ring-blue-100
39
44
  transition-all duration-300 ease-in-out">
40
45
  <i class='bx bx-search absolute left-3.5 top-1/2 transform -translate-y-1/2 text-gray-400'></i>
41
46
  </div>
42
47
  <button id="onboardButton" style="display: none;"
43
- class="px-4 py-2 bg-blue-600 text-white rounded-lg hover:bg-blue-700 transition-colors flex items-center">
48
+ class="px-4 py-2 bg-blue-600 text-white rounded-lg hover:bg-blue-700 transition-colors flex items-center">
44
49
  <i class='bx bx-plus-circle mr-2'></i>
45
50
  Onboard
46
51
  </button>
@@ -170,7 +175,7 @@
170
175
  import { fetchServerCategories, handleInstallServer, uninstallTool } from './js/api.js';
171
176
  import { setupSearch } from './js/serverCategoryList.js';
172
177
  import { showServerDetails } from './js/serverCategoryDetails.js';
173
- import { showInstallModal, closeModal, setupModalOutsideClick } from './js/modal.js';
178
+ import { showInstallModal, closeModal } from './js/modal.js';
174
179
  // import { showOnboardModal as navigateToOnboard } from './js/onboard/index.js'; // We are directly navigating
175
180
  import flights, { getFlightQueryParameters, buildUrlWithFlights } from './js/flights/flights.js';
176
181
 
@@ -178,8 +183,8 @@
178
183
  window.showServerDetails = showServerDetails;
179
184
  window.showInstallModal = showInstallModal;
180
185
  // window.showOnboardModal = showOnboardModal; // This might conflict if showOnboardModal is also in onboard/index.js
181
- // We'll rely on the event listener above for the main page's onboard button.
182
- // If other parts of the app call window.showOnboardModal, they'll need updating too.
186
+ // We'll rely on the event listener above for the main page's onboard button.
187
+ // If other parts of the app call window.showOnboardModal, they'll need updating too.
183
188
  window.closeModal = closeModal;
184
189
  window.handleInstallServer = handleInstallServer;
185
190
  window.uninstallTool = uninstallTool;
@@ -187,23 +192,20 @@
187
192
  // Initialize
188
193
  document.addEventListener('DOMContentLoaded', async () => {
189
194
  setupSearch();
190
- setupModalOutsideClick();
191
-
192
195
  const onboardButton = document.getElementById('onboardButton');
193
196
  if (flights.enableOnboard) {
194
197
  onboardButton.style.display = 'flex'; // Make it visible
195
198
  onboardButton.addEventListener('click', () => {
196
- // The original showOnboardModal in onboard/index.js likely does window.location.href = 'onboard.html';
197
- // We need to preserve existing flight parameters.
198
199
  const flightQueryString = getFlightQueryParameters();
199
- // Assuming navigateToOnboard from onboard/index.js handles the actual navigation
200
- // If it directly sets window.location.href, we might need to adjust how it's called or modify it.
201
- // For now, let's assume we can adapt its usage or it's a simple navigation.
202
- // The simplest way if showOnboardModal in onboard/index.js is just `window.location.href = 'onboard.html'`
203
- // would be to directly navigate here.
204
200
  window.location.href = buildUrlWithFlights('onboard.html');
205
201
  });
206
202
  }
203
+
204
+ const settingsButton = document.getElementById('settingsButton');
205
+ settingsButton.addEventListener('click', () => {
206
+ window.location.href = buildUrlWithFlights('settings.html');
207
+ });
208
+
207
209
  // No 'else' block needed as it's hidden by default via inline style
208
210
 
209
211
  try {
@@ -230,8 +232,6 @@
230
232
  window.location.href = buildUrlWithFlights('index.html', { category: allServerCategoriesData[0].name });
231
233
  return; // Stop further execution, page will reload
232
234
  } else {
233
- // No categories at all, or data still loading. Default placeholder will be shown.
234
- // Or, if allServerCategoriesData is empty after fetch, the placeholder from HTML remains.
235
235
  }
236
236
 
237
237
  } catch (error) {
@@ -246,9 +246,114 @@
246
246
  serverCategoryListDiv.innerHTML = `<p class="text-red-500">Could not load categories.</p>`;
247
247
  }
248
248
  }
249
+
250
+ // Fetch and display application version
251
+ try {
252
+ const versionResponse = await fetch('/api/version');
253
+ const appVersionSpan = document.getElementById('appVersion');
254
+ const versionInfoContainer = document.getElementById('versionInfoContainer');
255
+ const versionIcon = versionInfoContainer.querySelector('i');
256
+
257
+ // Create tooltip element
258
+ const tooltip = document.createElement('div');
259
+ tooltip.className = 'version-tooltip';
260
+ versionInfoContainer.appendChild(tooltip);
261
+
262
+ let tooltipMessage = "Loading version information...";
263
+ let isUpdateAvailable = false;
264
+
265
+ if (versionResponse.ok) {
266
+ const versionData = await versionResponse.json();
267
+ if (versionData.success && versionData.data) {
268
+ const currentVersion = versionData.data.version || 'N/A';
269
+ appVersionSpan.textContent = currentVersion;
270
+
271
+ if (versionData.data.availableUpdate) {
272
+ isUpdateAvailable = true;
273
+ tooltipMessage = versionData.data.availableUpdate.message;
274
+ } else {
275
+ tooltipMessage = "You're already up to date!";
276
+ }
277
+ } else {
278
+ appVersionSpan.textContent = 'N/A';
279
+ tooltipMessage = "Could not retrieve version information.";
280
+ }
281
+ } else {
282
+ console.error('Failed to fetch version:', versionResponse.status);
283
+ appVersionSpan.textContent = 'N/A';
284
+ tooltipMessage = "Failed to fetch version information.";
285
+ }
286
+
287
+ tooltip.textContent = tooltipMessage;
288
+
289
+ if (isUpdateAvailable) {
290
+ versionInfoContainer.classList.add('text-orange-500');
291
+ versionIcon.classList.add('text-orange-500');
292
+ appVersionSpan.classList.add('text-orange-500');
293
+ }
294
+
295
+ versionInfoContainer.addEventListener('mouseenter', () => {
296
+ tooltip.classList.add('visible');
297
+ });
298
+
299
+ versionInfoContainer.addEventListener('mouseleave', () => {
300
+ // Only hide if the mouse isn't over the tooltip itself
301
+ setTimeout(() => { // Add a small delay to allow moving to the tooltip
302
+ if (!tooltip.matches(':hover')) {
303
+ tooltip.classList.remove('visible');
304
+ }
305
+ }, 100);
306
+ });
307
+
308
+ tooltip.addEventListener('mouseleave', () => {
309
+ tooltip.classList.remove('visible');
310
+ });
311
+
312
+ // Keep tooltip visible if clicked, and allow clicking outside to close
313
+ versionInfoContainer.addEventListener('click', (event) => {
314
+ event.stopPropagation();
315
+ tooltip.classList.add('visible'); // Ensure it's visible on click
316
+ });
317
+
318
+ document.addEventListener('click', (event) => {
319
+ if (!versionInfoContainer.contains(event.target) && !tooltip.contains(event.target)) {
320
+ tooltip.classList.remove('visible');
321
+ }
322
+ });
323
+
324
+
325
+ } catch (error) {
326
+ console.error('Error fetching version:', error);
327
+ const appVersionSpan = document.getElementById('appVersion');
328
+ if (appVersionSpan) {
329
+ appVersionSpan.textContent = 'N/A';
330
+ const versionInfoContainer = document.getElementById('versionInfoContainer');
331
+ const tooltip = versionInfoContainer.querySelector('.version-tooltip');
332
+ if (tooltip) {
333
+ tooltip.textContent = "Error fetching version information.";
334
+ }
335
+ }
336
+ }
249
337
  });
250
338
  </script>
251
339
  <script src="js/modal.js" type="module"></script>
340
+
341
+ <footer class="text-sm text-gray-600 py-6 mt-10 border-t border-gray-200">
342
+ <div class="container mx-auto px-4">
343
+ <div class="flex flex-col sm:flex-row justify-start items-start sm:items-center space-y-2 sm:space-y-0 sm:space-x-6 px-6">
344
+ <a href="https://github.com/ai-microsoft/imcp" target="_blank" rel="noopener noreferrer"
345
+ class="flex items-center text-blue-600 hover:text-blue-700 hover:underline transition-colors"
346
+ title="Welcome for any feedback.">
347
+ <i class='bx bxl-github mr-1.5'></i> GitHub
348
+ </a>
349
+ <span class="hidden sm:inline text-gray-300">|</span>
350
+ <span id="versionInfoContainer" class="version-info-container flex items-center text-gray-700">
351
+ <i class='bx bx-info-circle mr-1.5 text-gray-500'></i>
352
+ Version: <span id="appVersion" class="ml-1 font-medium">Loading...</span>
353
+ </span>
354
+ </div>
355
+ </div>
356
+ </footer>
252
357
  </body>
253
358
 
254
359
  </html>
@@ -4,7 +4,7 @@ const FLIGHT_STORAGE_KEY = 'activeFlightSettings';
4
4
 
5
5
  // Default flight settings
6
6
  const defaultFlights = {
7
- enableOnboard: false, // Default: Onboarding is enabled. Set to false to disable.
7
+ enableOnboard: true, // Default: Onboarding is enabled. Set to false to disable.
8
8
  // Add other default flights here, e.g., newFeatureX: false,
9
9
  };
10
10
 
@@ -1,8 +1,8 @@
1
1
  // Import all modal-related functionality
2
2
  import { compareVersions } from './versionUtils.js';
3
- import { delayedAppendInstallLoadingMessage } from './messageQueue.js';
4
- import { showInstallLoadingModal, appendInstallLoadingMessage, hideInstallLoadingModal } from './loadingModal.js';
5
- import { closeModal, setupModalOutsideClick } from './modalUtils.js';
3
+ // import { delayedAppendInstallLoadingMessage } from './messageQueue.js'; // Removed
4
+ import { showInstallLoadingModal, hideInstallLoadingModal, updateOverallInstallStatus, addInstallationStep } from './loadingModal.js'; // Removed appendInstallLoadingMessage, added new fns
5
+ import { closeModal } from './modalUtils.js';
6
6
  import { handleBulkClientInstall, uninstallTools } from './installation.js';
7
7
  import { showInstallModal } from './installModal.js';
8
8
  import {
@@ -18,18 +18,17 @@ export {
18
18
  // Version utilities
19
19
  compareVersions,
20
20
 
21
- // Message queue
22
- delayedAppendInstallLoadingMessage,
21
+ // Message queue - (delayedAppendInstallLoadingMessage removed)
23
22
 
24
23
  // Loading modal
25
24
  showInstallLoadingModal,
26
- appendInstallLoadingMessage,
25
+ // appendInstallLoadingMessage, // Removed
27
26
  hideInstallLoadingModal,
27
+ updateOverallInstallStatus, // Added
28
+ addInstallationStep, // Added
28
29
 
29
30
  // Modal utilities
30
31
  closeModal,
31
- setupModalOutsideClick,
32
-
33
32
  // Installation
34
33
  handleBulkClientInstall,
35
34
  uninstallTools,
@@ -45,14 +44,9 @@ export {
45
44
  setupFormSubmitHandler
46
45
  };
47
46
 
48
- // Initialize modal functionality
49
- document.addEventListener('DOMContentLoaded', () => {
50
- setupModalOutsideClick();
51
- });
52
-
53
47
  // Make certain functions available globally
54
48
  window.showInstallModal = showInstallModal;
55
49
  window.showInstallLoadingModal = showInstallLoadingModal;
56
- window.appendInstallLoadingMessage = appendInstallLoadingMessage;
50
+ // window.appendInstallLoadingMessage = appendInstallLoadingMessage; // Removed
57
51
  window.hideInstallLoadingModal = hideInstallLoadingModal;
58
52
  window.uninstallTools = uninstallTools;
@@ -1,8 +1,8 @@
1
1
  import { showToast, showConfirm } from '../notifications.js';
2
2
  import { compareVersions } from './versionUtils.js';
3
- import { delayedAppendInstallLoadingMessage } from './messageQueue.js';
3
+ // import { delayedAppendInstallLoadingMessage } from './messageQueue.js'; // No longer needed here
4
4
  import { showInstallLoadingModal } from './loadingModal.js';
5
- import { setupModalOutsideClick, closeModal, setupToggleStyles } from './modalUtils.js';
5
+ import { closeModal, setupToggleStyles } from './modalUtils.js';
6
6
  import { handleBulkClientInstall, uninstallTools } from './installation.js';
7
7
  import {
8
8
  setupClientItems,
@@ -14,7 +14,6 @@ import {
14
14
 
15
15
  // Initialize modal functionality when DOM is loaded
16
16
  document.addEventListener('DOMContentLoaded', () => {
17
- setupModalOutsideClick();
18
17
  setupToggleStyles();
19
18
  });
20
19
 
@@ -137,7 +136,7 @@ async function setupModalContent(
137
136
  setupEnvironmentVariables(mcpServer, envInputsDiv, targetData);
138
137
 
139
138
  // Handle installation arguments section
140
- setupInstallationArguments(mcpServer.installation, modalArguments, mcpServer);
139
+ setupInstallationArguments(mcpServer.installation, modalArguments, categoryName, mcpServer);
141
140
 
142
141
  // Handle server requirements section
143
142
  setupServerRequirements(mcpServer, serverData, categoryName, serverName, modalRequirements);