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
@@ -13,17 +13,19 @@ import {
13
13
  InstallationStatus,
14
14
  FeedConfiguration,
15
15
  } from '../core/metadatas/types.js';
16
- import { OperationStatus } from '../core/onboard/OnboardStatus.js';
17
- import { Logger } from '../utils/logger.js';
16
+ import { OnboardingProcessStatus, OperationStatus } from '../core/onboard/OnboardStatus.js';
17
+ import { Logger, EventType, EventStatus } from '../utils/logger.js';
18
18
  import { FeedOnboardService } from '../core/onboard/FeedOnboardService.js';
19
19
  import path from 'path';
20
20
  import { Server } from 'http';
21
+ import { RequirementService } from './RequirementService.js';
21
22
 
22
23
  export class MCPManager extends EventEmitter {
23
24
  private installationService: InstallationService;
24
25
  private configProvider: ConfigurationProvider;
25
26
  private feedOnboardService: FeedOnboardService;
26
27
  private schemaProvider: ServerSchemaProvider;
28
+ private requirementsService: RequirementService;
27
29
 
28
30
  constructor() {
29
31
  super();
@@ -31,6 +33,7 @@ export class MCPManager extends EventEmitter {
31
33
  this.schemaProvider = ServerSchemaProvider.getInstance();
32
34
  this.installationService = new InstallationService();
33
35
  this.feedOnboardService = new FeedOnboardService();
36
+ this.requirementsService = RequirementService.getInstance();
34
37
  }
35
38
 
36
39
  async syncFeeds(): Promise<void> {
@@ -41,6 +44,7 @@ export class MCPManager extends EventEmitter {
41
44
  try {
42
45
  await this.configProvider.initialize(feedFile);
43
46
  await this.schemaProvider.initialize(schemasDirectory);
47
+ await this.requirementsService.checkRequirementForUpdateAsync();
44
48
  } catch (error) {
45
49
  console.error("Error during MCPManager initialization:", error);
46
50
  throw error;
@@ -78,6 +82,15 @@ export class MCPManager extends EventEmitter {
78
82
  }
79
83
  const installResult = await this.installationService.install(categoryName, serverName, requestOptions);
80
84
 
85
+ // Log the event with appropriate status
86
+ Logger.trackEvent(EventType.SERVER_INSTALL, {
87
+ status: installResult.success ? EventStatus.SUCCESS : EventStatus.FAILED,
88
+ errorMessage: !installResult.success ? installResult.message : undefined,
89
+ categoryName,
90
+ serverName,
91
+ ...requestOptions
92
+ });
93
+
81
94
  if (!installResult.success) {
82
95
  return installResult;
83
96
  }
@@ -86,10 +99,19 @@ export class MCPManager extends EventEmitter {
86
99
  return installResult;
87
100
 
88
101
  } catch (error) {
89
- console.error(`Unexpected error during installServer for ${serverName}:`, error);
102
+ const errorMessage = `Failed to install ${serverName}: ${error instanceof Error ? error.message : String(error)}`;
103
+ Logger.error(errorMessage, error);
104
+ Logger.trackEvent(EventType.SERVER_INSTALL, {
105
+ status: EventStatus.FAILED,
106
+ errorMessage,
107
+ categoryName,
108
+ serverName,
109
+ ...requestOptions
110
+ });
111
+
90
112
  return {
91
113
  success: false,
92
- message: `Failed to install ${serverName}: ${error instanceof Error ? error.message : String(error)}`,
114
+ message: errorMessage,
93
115
  error: error instanceof Error ? error : new Error(String(error)),
94
116
  };
95
117
  }
@@ -100,6 +122,8 @@ export class MCPManager extends EventEmitter {
100
122
  serverName: string,
101
123
  options: ServerUninstallOptions = {}
102
124
  ): Promise<ServerOperationResult> {
125
+ const { targets = [], removeData = false } = options;
126
+
103
127
  try {
104
128
  const serverCategory = await this.configProvider.getServerCategory(categoryName);
105
129
  if (!serverCategory) {
@@ -109,8 +133,6 @@ export class MCPManager extends EventEmitter {
109
133
  };
110
134
  }
111
135
 
112
- const { targets = [], removeData = false } = options;
113
-
114
136
  // Clear installation status for specified targets
115
137
  const currentStatus: InstallationStatus = serverCategory.installationStatus || {
116
138
  requirementsStatus: {},
@@ -141,6 +163,13 @@ export class MCPManager extends EventEmitter {
141
163
  currentStatus.requirementsStatus || {},
142
164
  serversStatus
143
165
  );
166
+ Logger.trackEvent(EventType.SERVER_UNINSTALL, {
167
+ status: EventStatus.SUCCESS,
168
+ categoryName,
169
+ serverName,
170
+ targets,
171
+ removeData
172
+ });
144
173
 
145
174
  this.emit(MCPEvent.SERVER_UNINSTALLED, { serverName, targets });
146
175
 
@@ -149,68 +178,21 @@ export class MCPManager extends EventEmitter {
149
178
  message: `Successfully uninstalled ${serverName} from ${targets.join(', ')}`,
150
179
  };
151
180
  } catch (error) {
152
- return {
153
- success: false,
154
- message: `Failed to uninstall ${serverName}`,
155
- error: error as Error,
156
- };
157
- }
158
- }
159
-
160
- async updateRequirement(
161
- categoryName: string,
162
- serverName: string,
163
- requirementName: string,
164
- updateVersion: string
165
- ): Promise<ServerOperationResult> {
166
- try {
167
- const { requirementService } = await import('./RequirementService.js');
168
- const serverCategory = await this.configProvider.getServerCategory(categoryName);
169
- if (!serverCategory) {
170
- return {
171
- success: false,
172
- message: `Server category ${categoryName} is not onboarded`,
173
- };
174
- }
175
-
176
- if (!serverCategory.feedConfiguration) {
177
- return {
178
- success: false,
179
- message: `Server category ${categoryName} has no feed configuration`,
180
- };
181
- }
182
-
183
- // Find the requirement
184
- const requirement = serverCategory.feedConfiguration.requirements.find(
185
- r => r.name === requirementName
186
- );
187
- if (!requirement) {
188
- return {
189
- success: false,
190
- message: `Requirement ${requirementName} not found in category ${categoryName}`,
191
- };
192
- }
193
-
194
- // Update the requirement using requirementService
195
- const updatedStatus = await requirementService.updateRequirement(requirement, updateVersion);
196
-
197
- // Update the status in configuration
198
- await this.configProvider.updateRequirementStatus(
181
+ const errorMessage = `Failed to uninstall ${serverName}: ${error instanceof Error ? error.message : String(error)}`;
182
+
183
+ Logger.trackEvent(EventType.SERVER_UNINSTALL, {
184
+ status: EventStatus.FAILED,
185
+ errorMessage,
199
186
  categoryName,
200
- requirementName,
201
- updatedStatus
202
- );
187
+ serverName,
188
+ targets: targets || [],
189
+ removeData: removeData || false
190
+ });
203
191
 
204
- return {
205
- success: true,
206
- message: `Successfully updated ${requirementName} to version ${updateVersion}`,
207
- };
208
- } catch (error) {
209
- console.error(`Error updating requirement ${requirementName}:`, error);
210
192
  return {
211
193
  success: false,
212
- message: `Failed to update ${requirementName}: ${error instanceof Error ? error.message : String(error)}`,
213
- error: error instanceof Error ? error : new Error(String(error)),
194
+ message: errorMessage,
195
+ error: error as Error,
214
196
  };
215
197
  }
216
198
  }
@@ -222,6 +204,13 @@ export class MCPManager extends EventEmitter {
222
204
  async onboardFeed(config: FeedConfiguration): Promise<OperationStatus & { feedConfiguration?: FeedConfiguration }> {
223
205
  try {
224
206
  const result = await this.feedOnboardService.onboardFeed(config);
207
+
208
+ Logger.trackEvent(EventType.FEED_ONBOARD, {
209
+ status: result.status === OnboardingProcessStatus.SUCCEEDED ? EventStatus.SUCCESS : EventStatus.FAILED,
210
+ errorMessage: result.message,
211
+ feedConfig: config
212
+ });
213
+
225
214
  // After successful onboarding initiation, sync feeds to get the latest changes
226
215
  // Syncing should ideally happen after the PR is merged, but for now,
227
216
  // syncing here makes the new (pending) category available locally if needed.
@@ -229,7 +218,15 @@ export class MCPManager extends EventEmitter {
229
218
  await this.syncFeeds();
230
219
  return result;
231
220
  } catch (error) {
221
+ const errorMessage = error instanceof Error ? error.message : String(error);
232
222
  Logger.error('Failed to onboard feed in MCPManager:', error);
223
+
224
+ Logger.trackEvent(EventType.FEED_ONBOARD, {
225
+ status: EventStatus.FAILED,
226
+ errorMessage,
227
+ feedName: config.name
228
+ });
229
+
233
230
  throw error; // Rethrow or handle by returning a failed OperationStatus
234
231
  }
235
232
  }