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.
- package/.roo/rules-code/rules.md +88 -0
- package/dist/cli/index.js +1 -45
- package/dist/core/installers/clients/BaseClientInstaller.d.ts +1 -5
- package/dist/core/installers/clients/BaseClientInstaller.js +40 -38
- package/dist/core/installers/clients/ClientInstaller.d.ts +9 -9
- package/dist/core/installers/clients/ClientInstaller.js +105 -99
- package/dist/core/installers/requirements/BaseInstaller.d.ts +9 -1
- package/dist/core/installers/requirements/CommandInstaller.d.ts +9 -1
- package/dist/core/installers/requirements/CommandInstaller.js +46 -12
- package/dist/core/installers/requirements/GeneralInstaller.d.ts +11 -1
- package/dist/core/installers/requirements/GeneralInstaller.js +46 -10
- package/dist/core/installers/requirements/InstallerFactory.d.ts +3 -1
- package/dist/core/installers/requirements/InstallerFactory.js +3 -2
- package/dist/core/installers/requirements/NpmInstaller.d.ts +4 -2
- package/dist/core/installers/requirements/NpmInstaller.js +38 -22
- package/dist/core/installers/requirements/PipInstaller.d.ts +3 -1
- package/dist/core/installers/requirements/PipInstaller.js +58 -36
- package/dist/core/installers/requirements/RequirementInstaller.d.ts +4 -1
- package/dist/core/loaders/InstallOperationManager.d.ts +115 -0
- package/dist/core/loaders/InstallOperationManager.js +311 -0
- package/dist/core/loaders/SystemSettingsManager.d.ts +54 -0
- package/dist/core/loaders/SystemSettingsManager.js +257 -0
- package/dist/core/metadatas/constants.d.ts +7 -0
- package/dist/core/metadatas/constants.js +7 -0
- package/dist/core/metadatas/recordingConstants.d.ts +44 -0
- package/dist/core/metadatas/recordingConstants.js +45 -0
- package/dist/core/metadatas/types.d.ts +21 -0
- package/dist/core/onboard/FeedOnboardService.d.ts +7 -3
- package/dist/core/onboard/FeedOnboardService.js +52 -5
- package/dist/core/onboard/InstallOperationManager.d.ts +23 -0
- package/dist/core/onboard/InstallOperationManager.js +144 -0
- package/dist/core/onboard/OnboardStatusManager.js +2 -1
- package/dist/core/validators/StdioServerValidator.js +4 -3
- package/dist/services/InstallationService.d.ts +2 -37
- package/dist/services/InstallationService.js +45 -313
- package/dist/services/MCPManager.d.ts +1 -1
- package/dist/services/MCPManager.js +53 -47
- package/dist/services/RequirementService.d.ts +85 -12
- package/dist/services/RequirementService.js +488 -49
- package/dist/services/ServerService.d.ts +0 -6
- package/dist/services/ServerService.js +0 -74
- package/dist/services/TelemetryService.d.ts +15 -0
- package/dist/services/TelemetryService.js +54 -0
- package/dist/utils/adoUtils.js +6 -3
- package/dist/utils/githubAuth.js +65 -0
- package/dist/utils/logger.d.ts +16 -0
- package/dist/utils/logger.js +78 -1
- package/dist/utils/macroExpressionUtils.js +3 -25
- package/dist/utils/osUtils.d.ts +22 -1
- package/dist/utils/osUtils.js +92 -1
- package/dist/utils/versionUtils.d.ts +20 -0
- package/dist/utils/versionUtils.js +76 -0
- package/dist/web/public/css/modal.css +292 -1
- package/dist/web/public/css/serverCategoryList.css +120 -0
- package/dist/web/public/css/serverDetails.css +14 -1
- package/dist/web/public/index.html +126 -21
- package/dist/web/public/js/flights/flights.js +1 -1
- package/dist/web/public/js/modal/index.js +8 -14
- package/dist/web/public/js/modal/installModal.js +3 -4
- package/dist/web/public/js/modal/installation.js +122 -137
- package/dist/web/public/js/modal/loadingModal.js +155 -25
- package/dist/web/public/js/modal/messageQueue.js +45 -101
- package/dist/web/public/js/modal/modalSetup.js +125 -43
- package/dist/web/public/js/modal/modalUtils.js +0 -12
- package/dist/web/public/js/modal.js +23 -10
- package/dist/web/public/js/onboard/formProcessor.js +18 -11
- package/dist/web/public/js/onboard/publishHandler.js +35 -3
- package/dist/web/public/js/onboard/templates.js +5 -1
- package/dist/web/public/js/onboard/uiHandlers.js +266 -39
- package/dist/web/public/js/onboard/validationHandlers.js +71 -39
- package/dist/web/public/js/serverCategoryDetails.js +60 -11
- package/dist/web/public/js/serverCategoryList.js +93 -9
- package/dist/web/public/js/settings.js +314 -0
- package/dist/web/public/onboard.html +2 -2
- package/dist/web/public/settings.html +135 -0
- package/dist/web/public/styles.css +32 -0
- package/dist/web/server.js +93 -1
- package/{src/web/public/js/onboard → docs}/ONBOARDING_PAGE_DESIGN.md +15 -125
- package/docs/Telemetry.md +136 -0
- package/memory-bank/activeContext.md +26 -0
- package/memory-bank/decisionLog.md +91 -0
- package/memory-bank/productContext.md +41 -0
- package/memory-bank/progress.md +35 -0
- package/memory-bank/systemPatterns.md +10 -0
- package/package.json +2 -1
- package/src/cli/index.ts +1 -48
- package/src/core/installers/clients/BaseClientInstaller.ts +64 -50
- package/src/core/installers/clients/ClientInstaller.ts +130 -130
- package/src/core/installers/requirements/BaseInstaller.ts +9 -1
- package/src/core/installers/requirements/CommandInstaller.ts +47 -13
- package/src/core/installers/requirements/GeneralInstaller.ts +48 -10
- package/src/core/installers/requirements/InstallerFactory.ts +4 -3
- package/src/core/installers/requirements/NpmInstaller.ts +90 -68
- package/src/core/installers/requirements/PipInstaller.ts +81 -55
- package/src/core/installers/requirements/RequirementInstaller.ts +4 -3
- package/src/core/loaders/InstallOperationManager.ts +367 -0
- package/src/core/loaders/SystemSettingsManager.ts +278 -0
- package/src/core/metadatas/constants.ts +9 -0
- package/src/core/metadatas/recordingConstants.ts +62 -0
- package/src/core/metadatas/types.ts +23 -0
- package/src/core/onboard/FeedOnboardService.ts +59 -5
- package/src/core/onboard/OnboardStatusManager.ts +2 -1
- package/src/core/validators/StdioServerValidator.ts +4 -3
- package/src/services/InstallationService.ts +54 -399
- package/src/services/MCPManager.ts +61 -64
- package/src/services/RequirementService.ts +564 -67
- package/src/services/ServerService.ts +0 -90
- package/src/services/TelemetryService.ts +59 -0
- package/src/utils/adoUtils.ts +6 -4
- package/src/utils/githubAuth.ts +84 -1
- package/src/utils/logger.ts +83 -1
- package/src/utils/macroExpressionUtils.ts +4 -21
- package/src/utils/osUtils.ts +92 -1
- package/src/utils/versionUtils.ts +98 -13
- package/src/web/public/css/modal.css +292 -1
- package/src/web/public/css/serverCategoryList.css +120 -0
- package/src/web/public/css/serverDetails.css +14 -1
- package/src/web/public/index.html +126 -21
- package/src/web/public/js/flights/flights.js +1 -1
- package/src/web/public/js/modal/index.js +8 -14
- package/src/web/public/js/modal/installModal.js +3 -4
- package/src/web/public/js/modal/installation.js +122 -137
- package/src/web/public/js/modal/loadingModal.js +155 -25
- package/src/web/public/js/modal/modalSetup.js +125 -43
- package/src/web/public/js/modal/modalUtils.js +0 -12
- package/src/web/public/js/modal.js +23 -10
- package/src/web/public/js/onboard/formProcessor.js +18 -11
- package/src/web/public/js/onboard/publishHandler.js +35 -3
- package/src/web/public/js/onboard/templates.js +5 -1
- package/src/web/public/js/onboard/uiHandlers.js +266 -39
- package/src/web/public/js/onboard/validationHandlers.js +71 -39
- package/src/web/public/js/serverCategoryDetails.js +60 -11
- package/src/web/public/js/serverCategoryList.js +93 -9
- package/src/web/public/js/settings.js +314 -0
- package/src/web/public/onboard.html +2 -2
- package/src/web/public/settings.html +135 -0
- package/src/web/public/styles.css +32 -0
- package/src/web/server.ts +96 -1
- package/dist/cli/commands/start.d.ts +0 -2
- package/dist/cli/commands/start.js +0 -32
- package/dist/cli/commands/sync.d.ts +0 -2
- package/dist/cli/commands/sync.js +0 -17
- package/dist/core/ConfigurationLoader.d.ts +0 -32
- package/dist/core/ConfigurationLoader.js +0 -236
- package/dist/core/ConfigurationProvider.d.ts +0 -35
- package/dist/core/ConfigurationProvider.js +0 -375
- package/dist/core/InstallationService.d.ts +0 -50
- package/dist/core/InstallationService.js +0 -350
- package/dist/core/MCPManager.d.ts +0 -28
- package/dist/core/MCPManager.js +0 -188
- package/dist/core/RequirementService.d.ts +0 -40
- package/dist/core/RequirementService.js +0 -110
- package/dist/core/ServerSchemaLoader.d.ts +0 -11
- package/dist/core/ServerSchemaLoader.js +0 -43
- package/dist/core/ServerSchemaProvider.d.ts +0 -17
- package/dist/core/ServerSchemaProvider.js +0 -120
- package/dist/core/constants.d.ts +0 -47
- package/dist/core/constants.js +0 -94
- package/dist/core/installers/BaseInstaller.d.ts +0 -74
- package/dist/core/installers/BaseInstaller.js +0 -253
- package/dist/core/installers/ClientInstaller.d.ts +0 -23
- package/dist/core/installers/ClientInstaller.js +0 -564
- package/dist/core/installers/CommandInstaller.d.ts +0 -37
- package/dist/core/installers/CommandInstaller.js +0 -173
- package/dist/core/installers/GeneralInstaller.d.ts +0 -33
- package/dist/core/installers/GeneralInstaller.js +0 -85
- package/dist/core/installers/InstallerFactory.d.ts +0 -54
- package/dist/core/installers/InstallerFactory.js +0 -97
- package/dist/core/installers/NpmInstaller.d.ts +0 -26
- package/dist/core/installers/NpmInstaller.js +0 -127
- package/dist/core/installers/PipInstaller.d.ts +0 -28
- package/dist/core/installers/PipInstaller.js +0 -127
- package/dist/core/installers/RequirementInstaller.d.ts +0 -33
- package/dist/core/installers/RequirementInstaller.js +0 -3
- package/dist/core/types.d.ts +0 -166
- package/dist/core/types.js +0 -16
- package/dist/services/InstallRequestValidator.d.ts +0 -21
- package/dist/services/InstallRequestValidator.js +0 -99
- package/dist/web/public/js/modal/installHandler.js +0 -227
- package/dist/web/public/js/modal/loadingUI.js +0 -74
- package/dist/web/public/js/modal/modalUI.js +0 -214
- package/dist/web/public/js/modal/version.js +0 -20
- 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
|
-
|
|
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:
|
|
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
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
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
|
-
|
|
201
|
-
|
|
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:
|
|
213
|
-
error: 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
|
}
|