imcp 0.1.3 → 0.1.5

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 (239) hide show
  1. package/README.md +21 -4
  2. package/dist/cli/commands/install.js.map +1 -0
  3. package/dist/cli/commands/list.js.map +1 -0
  4. package/dist/cli/commands/pull.js.map +1 -0
  5. package/dist/cli/commands/serve.js.map +1 -0
  6. package/dist/cli/commands/start.d.ts +2 -0
  7. package/dist/cli/commands/start.js +32 -0
  8. package/dist/cli/commands/start.js.map +1 -0
  9. package/dist/cli/commands/sync.d.ts +2 -0
  10. package/dist/cli/commands/sync.js +17 -0
  11. package/dist/cli/commands/sync.js.map +1 -0
  12. package/dist/cli/commands/uninstall.js.map +1 -0
  13. package/dist/cli/index.js +0 -0
  14. package/dist/cli/index.js.map +1 -0
  15. package/dist/core/ConfigurationLoader.d.ts +32 -0
  16. package/{src/core/loaders/ConfigurationLoader.ts → dist/core/ConfigurationLoader.js} +236 -298
  17. package/dist/core/ConfigurationLoader.js.map +1 -0
  18. package/dist/core/ConfigurationProvider.d.ts +35 -0
  19. package/{src/core/loaders/ConfigurationProvider.ts → dist/core/ConfigurationProvider.js} +375 -462
  20. package/dist/core/ConfigurationProvider.js.map +1 -0
  21. package/dist/core/InstallationService.d.ts +50 -0
  22. package/dist/core/InstallationService.js +350 -0
  23. package/dist/core/InstallationService.js.map +1 -0
  24. package/dist/core/MCPManager.d.ts +28 -0
  25. package/dist/core/MCPManager.js +188 -0
  26. package/dist/core/MCPManager.js.map +1 -0
  27. package/dist/core/RequirementService.d.ts +40 -0
  28. package/dist/core/RequirementService.js +110 -0
  29. package/dist/core/RequirementService.js.map +1 -0
  30. package/dist/core/ServerSchemaLoader.d.ts +11 -0
  31. package/dist/core/ServerSchemaLoader.js +43 -0
  32. package/dist/core/ServerSchemaLoader.js.map +1 -0
  33. package/dist/core/ServerSchemaProvider.d.ts +17 -0
  34. package/dist/core/ServerSchemaProvider.js +120 -0
  35. package/dist/core/ServerSchemaProvider.js.map +1 -0
  36. package/dist/core/constants.d.ts +47 -0
  37. package/dist/core/constants.js +94 -0
  38. package/dist/core/constants.js.map +1 -0
  39. package/dist/core/installers/BaseInstaller.d.ts +74 -0
  40. package/dist/core/installers/BaseInstaller.js +253 -0
  41. package/dist/core/installers/BaseInstaller.js.map +1 -0
  42. package/dist/core/installers/ClientInstaller.d.ts +23 -0
  43. package/dist/core/installers/ClientInstaller.js +564 -0
  44. package/dist/core/installers/ClientInstaller.js.map +1 -0
  45. package/dist/core/installers/CommandInstaller.d.ts +37 -0
  46. package/{src/core/installers/requirements/CommandInstaller.ts → dist/core/installers/CommandInstaller.js} +173 -231
  47. package/dist/core/installers/CommandInstaller.js.map +1 -0
  48. package/dist/core/installers/GeneralInstaller.d.ts +33 -0
  49. package/dist/core/installers/GeneralInstaller.js +85 -0
  50. package/dist/core/installers/GeneralInstaller.js.map +1 -0
  51. package/dist/core/installers/InstallerFactory.d.ts +54 -0
  52. package/{src/core/installers/requirements/InstallerFactory.ts → dist/core/installers/InstallerFactory.js} +97 -112
  53. package/dist/core/installers/InstallerFactory.js.map +1 -0
  54. package/dist/core/installers/NpmInstaller.d.ts +26 -0
  55. package/dist/core/installers/NpmInstaller.js +127 -0
  56. package/dist/core/installers/NpmInstaller.js.map +1 -0
  57. package/dist/core/installers/PipInstaller.d.ts +28 -0
  58. package/dist/core/installers/PipInstaller.js +127 -0
  59. package/dist/core/installers/PipInstaller.js.map +1 -0
  60. package/{src/core/installers/requirements/RequirementInstaller.ts → dist/core/installers/RequirementInstaller.d.ts} +33 -42
  61. package/dist/core/installers/RequirementInstaller.js +3 -0
  62. package/dist/core/installers/RequirementInstaller.js.map +1 -0
  63. package/dist/core/installers/clients/BaseClientInstaller.js.map +1 -0
  64. package/dist/core/installers/clients/ClientInstaller.js.map +1 -0
  65. package/dist/core/installers/clients/ClientInstallerFactory.js.map +1 -0
  66. package/dist/core/installers/clients/ClineInstaller.js.map +1 -0
  67. package/dist/core/installers/clients/ExtensionInstaller.js.map +1 -0
  68. package/dist/core/installers/clients/GithubCopilotInstaller.js.map +1 -0
  69. package/dist/core/installers/clients/MSRooCodeInstaller.js.map +1 -0
  70. package/dist/core/installers/index.js.map +1 -0
  71. package/dist/core/installers/requirements/BaseInstaller.js.map +1 -0
  72. package/dist/core/installers/requirements/CommandInstaller.js.map +1 -0
  73. package/dist/core/installers/requirements/GeneralInstaller.js.map +1 -0
  74. package/dist/core/installers/requirements/InstallerFactory.js +2 -0
  75. package/dist/core/installers/requirements/InstallerFactory.js.map +1 -0
  76. package/dist/core/installers/requirements/NpmInstaller.js.map +1 -0
  77. package/dist/core/installers/requirements/NugetInstaller.d.ts +37 -0
  78. package/dist/core/installers/requirements/NugetInstaller.js +189 -0
  79. package/dist/core/installers/requirements/NugetInstaller.js.map +1 -0
  80. package/dist/core/installers/requirements/PipInstaller.js.map +1 -0
  81. package/dist/core/installers/requirements/RequirementInstaller.js.map +1 -0
  82. package/dist/core/loaders/ConfigurationLoader.js.map +1 -0
  83. package/dist/core/loaders/ConfigurationProvider.js.map +1 -0
  84. package/dist/core/loaders/InstallOperationManager.js.map +1 -0
  85. package/dist/core/loaders/ServerSchemaLoader.js.map +1 -0
  86. package/dist/core/loaders/ServerSchemaProvider.js.map +1 -0
  87. package/dist/core/loaders/SystemSettingsManager.js.map +1 -0
  88. package/dist/core/metadatas/constants.js.map +1 -0
  89. package/dist/core/metadatas/recordingConstants.d.ts +2 -0
  90. package/dist/core/metadatas/recordingConstants.js +2 -0
  91. package/dist/core/metadatas/recordingConstants.js.map +1 -0
  92. package/dist/core/metadatas/types.d.ts +1 -1
  93. package/dist/core/metadatas/types.js.map +1 -0
  94. package/dist/core/onboard/FeedOnboardService.js +1 -22
  95. package/dist/core/onboard/FeedOnboardService.js.map +1 -0
  96. package/dist/core/onboard/OnboardProcessor.js.map +1 -0
  97. package/dist/core/onboard/OnboardStatus.js.map +1 -0
  98. package/dist/core/onboard/OnboardStatusManager.js.map +1 -0
  99. package/dist/core/types.d.ts +166 -0
  100. package/dist/core/types.js +16 -0
  101. package/dist/core/types.js.map +1 -0
  102. package/dist/core/validators/FeedValidator.js.map +1 -0
  103. package/dist/core/validators/IServerValidator.js.map +1 -0
  104. package/dist/core/validators/SSEServerValidator.js.map +1 -0
  105. package/dist/core/validators/ServerValidatorFactory.js.map +1 -0
  106. package/dist/core/validators/StdioServerValidator.js +5 -5
  107. package/dist/core/validators/StdioServerValidator.js.map +1 -0
  108. package/dist/index.js.map +1 -0
  109. package/dist/services/InstallRequestValidator.d.ts +21 -0
  110. package/dist/services/InstallRequestValidator.js +99 -0
  111. package/dist/services/InstallRequestValidator.js.map +1 -0
  112. package/dist/services/InstallationService.js.map +1 -0
  113. package/dist/services/MCPManager.js.map +1 -0
  114. package/dist/services/RequirementService.js.map +1 -0
  115. package/dist/services/ServerService.js.map +1 -0
  116. package/dist/services/TelemetryService.js.map +1 -0
  117. package/dist/utils/UpdateCheckTracker.js.map +1 -0
  118. package/dist/utils/adoUtils.js.map +1 -0
  119. package/dist/utils/clientUtils.js.map +1 -0
  120. package/dist/utils/feedUtils.js.map +1 -0
  121. package/dist/utils/githubAuth.js.map +1 -0
  122. package/dist/utils/githubUtils.js.map +1 -0
  123. package/dist/utils/logger.js.map +1 -0
  124. package/dist/utils/macroExpressionUtils.js.map +1 -0
  125. package/dist/utils/osUtils.d.ts +11 -0
  126. package/dist/utils/osUtils.js +100 -0
  127. package/dist/utils/osUtils.js.map +1 -0
  128. package/dist/utils/versionUtils.js.map +1 -0
  129. package/dist/web/contract/serverContract.js.map +1 -0
  130. package/dist/web/public/index.html +1 -1
  131. package/dist/web/public/js/modal/installHandler.js +227 -0
  132. package/dist/web/public/js/modal/loadingUI.js +74 -0
  133. package/dist/web/public/js/modal/messageQueue.js +101 -45
  134. package/dist/web/public/js/modal/modalUI.js +214 -0
  135. package/{src/web/public/js/modal/versionUtils.js → dist/web/public/js/modal/version.js} +1 -1
  136. package/dist/web/public/js/onboard/templates.js +1 -0
  137. package/dist/web/public/js/serverCategoryList.js +3 -3
  138. package/dist/web/public/onboard.html +4 -4
  139. package/dist/web/server.js.map +1 -0
  140. package/package.json +5 -1
  141. package/.github/ISSUE_TEMPLATE/JitAccess.yml +0 -28
  142. package/.github/acl/access.yml +0 -20
  143. package/.github/compliance/inventory.yml +0 -5
  144. package/.github/policies/jit.yml +0 -19
  145. package/.roo/rules-code/rules.md +0 -88
  146. package/dist/core/onboard/InstallOperationManager.d.ts +0 -23
  147. package/dist/core/onboard/InstallOperationManager.js +0 -144
  148. package/docs/ONBOARDING_PAGE_DESIGN.md +0 -260
  149. package/docs/Telemetry.md +0 -136
  150. package/memory-bank/activeContext.md +0 -26
  151. package/memory-bank/decisionLog.md +0 -91
  152. package/memory-bank/productContext.md +0 -41
  153. package/memory-bank/progress.md +0 -35
  154. package/memory-bank/systemPatterns.md +0 -10
  155. package/src/cli/commands/install.ts +0 -139
  156. package/src/cli/commands/list.ts +0 -113
  157. package/src/cli/commands/pull.ts +0 -16
  158. package/src/cli/commands/serve.ts +0 -39
  159. package/src/cli/commands/uninstall.ts +0 -64
  160. package/src/cli/index.ts +0 -82
  161. package/src/core/installers/clients/BaseClientInstaller.ts +0 -341
  162. package/src/core/installers/clients/ClientInstaller.ts +0 -222
  163. package/src/core/installers/clients/ClientInstallerFactory.ts +0 -43
  164. package/src/core/installers/clients/ClineInstaller.ts +0 -35
  165. package/src/core/installers/clients/ExtensionInstaller.ts +0 -165
  166. package/src/core/installers/clients/GithubCopilotInstaller.ts +0 -79
  167. package/src/core/installers/clients/MSRooCodeInstaller.ts +0 -32
  168. package/src/core/installers/index.ts +0 -11
  169. package/src/core/installers/requirements/BaseInstaller.ts +0 -85
  170. package/src/core/installers/requirements/GeneralInstaller.ts +0 -133
  171. package/src/core/installers/requirements/NpmInstaller.ts +0 -271
  172. package/src/core/installers/requirements/PipInstaller.ts +0 -207
  173. package/src/core/loaders/InstallOperationManager.ts +0 -367
  174. package/src/core/loaders/ServerSchemaLoader.ts +0 -117
  175. package/src/core/loaders/ServerSchemaProvider.ts +0 -99
  176. package/src/core/loaders/SystemSettingsManager.ts +0 -278
  177. package/src/core/metadatas/constants.ts +0 -122
  178. package/src/core/metadatas/recordingConstants.ts +0 -62
  179. package/src/core/metadatas/types.ts +0 -202
  180. package/src/core/onboard/FeedOnboardService.ts +0 -524
  181. package/src/core/onboard/OnboardProcessor.ts +0 -356
  182. package/src/core/onboard/OnboardStatus.ts +0 -60
  183. package/src/core/onboard/OnboardStatusManager.ts +0 -416
  184. package/src/core/validators/FeedValidator.ts +0 -135
  185. package/src/core/validators/IServerValidator.ts +0 -21
  186. package/src/core/validators/SSEServerValidator.ts +0 -43
  187. package/src/core/validators/ServerValidatorFactory.ts +0 -51
  188. package/src/core/validators/StdioServerValidator.ts +0 -312
  189. package/src/index.ts +0 -44
  190. package/src/services/InstallationService.ts +0 -102
  191. package/src/services/MCPManager.ts +0 -249
  192. package/src/services/RequirementService.ts +0 -627
  193. package/src/services/ServerService.ts +0 -161
  194. package/src/services/TelemetryService.ts +0 -59
  195. package/src/utils/UpdateCheckTracker.ts +0 -86
  196. package/src/utils/adoUtils.ts +0 -293
  197. package/src/utils/clientUtils.ts +0 -72
  198. package/src/utils/feedUtils.ts +0 -31
  199. package/src/utils/githubAuth.ts +0 -212
  200. package/src/utils/githubUtils.ts +0 -164
  201. package/src/utils/logger.ts +0 -195
  202. package/src/utils/macroExpressionUtils.ts +0 -104
  203. package/src/utils/osUtils.ts +0 -597
  204. package/src/utils/versionUtils.ts +0 -114
  205. package/src/web/contract/serverContract.ts +0 -74
  206. package/src/web/public/css/detailsWidget.css +0 -235
  207. package/src/web/public/css/modal.css +0 -757
  208. package/src/web/public/css/notifications.css +0 -101
  209. package/src/web/public/css/onboard.css +0 -107
  210. package/src/web/public/css/serverCategoryList.css +0 -120
  211. package/src/web/public/css/serverDetails.css +0 -139
  212. package/src/web/public/index.html +0 -359
  213. package/src/web/public/js/api.js +0 -132
  214. package/src/web/public/js/detailsWidget.js +0 -264
  215. package/src/web/public/js/flights/flights.js +0 -127
  216. package/src/web/public/js/modal/index.js +0 -52
  217. package/src/web/public/js/modal/installModal.js +0 -162
  218. package/src/web/public/js/modal/installation.js +0 -266
  219. package/src/web/public/js/modal/loadingModal.js +0 -182
  220. package/src/web/public/js/modal/modalSetup.js +0 -595
  221. package/src/web/public/js/modal/modalUtils.js +0 -37
  222. package/src/web/public/js/modal.js +0 -42
  223. package/src/web/public/js/notifications.js +0 -137
  224. package/src/web/public/js/onboard/formProcessor.js +0 -1037
  225. package/src/web/public/js/onboard/index.js +0 -374
  226. package/src/web/public/js/onboard/publishHandler.js +0 -172
  227. package/src/web/public/js/onboard/state.js +0 -76
  228. package/src/web/public/js/onboard/templates.js +0 -341
  229. package/src/web/public/js/onboard/uiHandlers.js +0 -1076
  230. package/src/web/public/js/onboard/validationHandlers.js +0 -493
  231. package/src/web/public/js/serverCategoryDetails.js +0 -364
  232. package/src/web/public/js/serverCategoryList.js +0 -241
  233. package/src/web/public/js/settings.js +0 -314
  234. package/src/web/public/modal.html +0 -84
  235. package/src/web/public/onboard.html +0 -296
  236. package/src/web/public/settings.html +0 -135
  237. package/src/web/public/styles.css +0 -277
  238. package/src/web/server.ts +0 -478
  239. package/tsconfig.json +0 -18
@@ -0,0 +1,94 @@
1
+ import os from 'os';
2
+ import path from 'path';
3
+ /**
4
+ * Defines constants used across the application.
5
+ */
6
+ /**
7
+ * GitHub repository configuration for feeds
8
+ */
9
+ export const GITHUB_REPO = {
10
+ url: 'https://github.com/ai-microsoft/imcp-feed.git',
11
+ repoName: 'ai-microsoft/imcp-feed',
12
+ feedsPath: 'feeds',
13
+ feedAssetsName: 'imcp-feeds-${latest}.zip',
14
+ };
15
+ /**
16
+ * Local settings directory path based on OS
17
+ */
18
+ export const SETTINGS_DIR = (() => {
19
+ switch (process.platform) {
20
+ case 'win32':
21
+ return path.join(os.homedir(), '.imcp');
22
+ default: // linux, darwin (macOS), etc.
23
+ return path.join(os.homedir(), '.imcp');
24
+ }
25
+ })();
26
+ /**
27
+ * Local feeds directory path
28
+ */
29
+ export const LOCAL_FEEDS_DIR = path.join(SETTINGS_DIR, 'feeds');
30
+ export const LOCAL_FEEDS_SCHEMA_DIR = path.join(LOCAL_FEEDS_DIR, 'schemas');
31
+ const CODE_STRORAGE_DIR = (() => {
32
+ switch (process.platform) {
33
+ case 'win32':
34
+ return path.join(os.homedir(), 'AppData', 'Roaming', 'Code', 'User');
35
+ case 'darwin': // macOS
36
+ return path.join(os.homedir(), 'Library', 'Application Support', 'Code', 'User');
37
+ default: // linux
38
+ return path.join(os.homedir(), '.config', 'Code', 'User');
39
+ }
40
+ })();
41
+ const CODE_INSIDER_STRORAGE_DIR = (() => {
42
+ switch (process.platform) {
43
+ case 'win32':
44
+ return path.join(os.homedir(), 'AppData', 'Roaming', 'Code - Insiders', 'User');
45
+ case 'darwin': // macOS
46
+ return path.join(os.homedir(), 'Library', 'Application Support', 'Code - Insiders', 'User');
47
+ default: // linux
48
+ return path.join(os.homedir(), '.config', 'Code - Insiders', 'User');
49
+ }
50
+ })();
51
+ /**
52
+ * Supported client configurations.
53
+ * Key: Client name (e.g., 'vscode')
54
+ * Value: Client-specific settings or configuration details.
55
+ * TODO: Define actual client settings structure.
56
+ */
57
+ export const SUPPORTED_CLIENTS = {
58
+ 'MSRooCode': {
59
+ extension: {
60
+ extensionId: 'microsoftai.ms-roo-cline',
61
+ leastVersion: '0.0.8',
62
+ repository: 'ai-microsoft/roo-cline',
63
+ assetName: 'ms-roo-cline-${version}.vsix',
64
+ private: true
65
+ },
66
+ codeSettingPath: path.join(CODE_STRORAGE_DIR, 'globalStorage', 'microsoftai.ms-roo-cline', 'settings', 'cline_mcp_settings.json'),
67
+ codeInsiderSettingPath: path.join(CODE_INSIDER_STRORAGE_DIR, 'globalStorage', 'microsoftai.ms-roo-cline', 'settings', 'cline_mcp_settings.json'),
68
+ },
69
+ 'Cline': {
70
+ extension: {
71
+ extensionId: 'saoudrizwan.claude-dev',
72
+ },
73
+ codeSettingPath: path.join(CODE_STRORAGE_DIR, 'globalStorage', 'saoudrizwan.claude-dev', 'settings', 'cline_mcp_settings.json'),
74
+ codeInsiderSettingPath: path.join(CODE_INSIDER_STRORAGE_DIR, 'globalStorage', 'saoudrizwan.claude-dev', 'settings', 'cline_mcp_settings.json'),
75
+ },
76
+ 'GithubCopilot': {
77
+ extension: {
78
+ extensionId: 'github.copilot',
79
+ },
80
+ codeSettingPath: path.join(CODE_STRORAGE_DIR, 'settings.json'),
81
+ codeInsiderSettingPath: path.join(CODE_INSIDER_STRORAGE_DIR, 'settings.json'),
82
+ },
83
+ // Add other supported clients here
84
+ };
85
+ /**
86
+ * List of supported client names.
87
+ */
88
+ export const SUPPORTED_CLIENT_NAMES = Object.keys(SUPPORTED_CLIENTS);
89
+ /**
90
+ * Minimum time between requirement update checks (in milliseconds)
91
+ * 10 minutes = 10 * 60 * 1000 = 600000 ms
92
+ */
93
+ export const UPDATE_CHECK_INTERVAL_MS = 10 * 60 * 1000; // 10 minutes
94
+ //# sourceMappingURL=constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/core/constants.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,74 @@
1
+ import { RequirementConfig, RequirementStatus, RegistryConfig, ServerInstallOptions } from '../types.js';
2
+ import { RequirementInstaller } from './RequirementInstaller.js';
3
+ /**
4
+ * Abstract base class with common functionality for all requirement installers
5
+ */
6
+ export declare abstract class BaseInstaller implements RequirementInstaller {
7
+ protected execPromise: (command: string) => Promise<{
8
+ stdout: string;
9
+ stderr: string;
10
+ }>;
11
+ protected downloadsDir: string;
12
+ constructor(execPromise: (command: string) => Promise<{
13
+ stdout: string;
14
+ stderr: string;
15
+ }>);
16
+ abstract canHandle(requirement: RequirementConfig): boolean;
17
+ abstract supportCheckUpdates(): boolean;
18
+ abstract install(requirement: RequirementConfig, options?: ServerInstallOptions): Promise<RequirementStatus>;
19
+ abstract checkInstallation(requirement: RequirementConfig, options?: ServerInstallOptions): Promise<RequirementStatus>;
20
+ /**
21
+ * Check if updates are available for the requirement
22
+ * @param requirement The requirement to check
23
+ * @param currentStatus The current status of the requirement
24
+ * @returns The status of the requirement with update information
25
+ */
26
+ checkForUpdates(requirement: RequirementConfig, currentStatus: RequirementStatus): Promise<RequirementStatus>;
27
+ /**
28
+ * Helper method to ensure downloads directory exists
29
+ */
30
+ protected ensureDownloadsDir(): Promise<void>;
31
+ /**
32
+ * Helper to handle GitHub release downloads
33
+ * @param requirement The requirement configuration
34
+ * @param registry The GitHub release registry configuration
35
+ * @returns The path to the downloaded file
36
+ */
37
+ protected handleGitHubRelease(requirement: RequirementConfig, registry: RegistryConfig['githubRelease']): Promise<{
38
+ resolvedVersion: string;
39
+ resolvedPath: string;
40
+ }>;
41
+ /**
42
+ * Helper to handle artifact registry downloads
43
+ * @param requirement The requirement configuration
44
+ * @param registry The artifacts registry configuration
45
+ * @returns The registry URL
46
+ */
47
+ protected handleArtifactsRegistry(requirement: RequirementConfig, registry: RegistryConfig['artifacts']): Promise<string>;
48
+ /**
49
+ * Helper to handle local path registry
50
+ * @param requirement The requirement configuration
51
+ * @param registry The local registry configuration
52
+ * @returns The local path or extracted asset path
53
+ */
54
+ protected handleLocalRegistry(requirement: RequirementConfig, registry: RegistryConfig['local']): Promise<string>;
55
+ private fileExists;
56
+ /**
57
+ * Get the latest version available for a GitHub repository
58
+ * @param repository The GitHub repository in format 'owner/repo'
59
+ * @returns The latest version or tag
60
+ */
61
+ protected getGitHubLatestVersion(repository: string): Promise<string>;
62
+ /**
63
+ * Get the latest version available for an NPM package
64
+ * @param packageName The name of the NPM package
65
+ * @returns The latest version
66
+ */
67
+ protected getNpmLatestVersion(packageName: string): Promise<string>;
68
+ /**
69
+ * Get the latest version available for a pip package
70
+ * @param packageName The name of the pip package
71
+ * @returns The latest version
72
+ */
73
+ protected getPipLatestVersion(packageName: string, options?: ServerInstallOptions): Promise<string>;
74
+ }
@@ -0,0 +1,253 @@
1
+ import path from 'path';
2
+ import fs from 'fs/promises';
3
+ import { SETTINGS_DIR } from '../constants.js';
4
+ import { extractZipFile } from '../../utils/clientUtils.js';
5
+ import { Logger } from '../../utils/logger.js';
6
+ /**
7
+ * Abstract base class with common functionality for all requirement installers
8
+ */
9
+ export class BaseInstaller {
10
+ execPromise;
11
+ downloadsDir;
12
+ constructor(execPromise) {
13
+ this.execPromise = execPromise;
14
+ this.downloadsDir = path.join(SETTINGS_DIR, 'downloads');
15
+ }
16
+ /**
17
+ * Check if updates are available for the requirement
18
+ * @param requirement The requirement to check
19
+ * @param currentStatus The current status of the requirement
20
+ * @returns The status of the requirement with update information
21
+ */
22
+ async checkForUpdates(requirement, currentStatus) {
23
+ try {
24
+ // If requirement is not installed, no need to check for updates
25
+ if (!currentStatus.installed) {
26
+ return currentStatus;
27
+ }
28
+ // If the version doesn't contain "latest", no update check needed
29
+ if (!requirement.version.includes('latest')) {
30
+ return currentStatus;
31
+ }
32
+ let latestVersion;
33
+ // Check based on registry type
34
+ if (requirement.registry?.githubRelease) {
35
+ latestVersion = await this.getGitHubLatestVersion(requirement.registry.githubRelease.repository);
36
+ }
37
+ else {
38
+ // Use common practice based on requirement type
39
+ switch (requirement.type) {
40
+ case 'npm':
41
+ latestVersion = await this.getNpmLatestVersion(requirement.name);
42
+ break;
43
+ case 'pip':
44
+ latestVersion = await this.getPipLatestVersion(requirement.name);
45
+ break;
46
+ // Add other types as needed
47
+ }
48
+ }
49
+ // If we found a latest version and it's different from current
50
+ if (latestVersion && latestVersion !== currentStatus.version) {
51
+ return {
52
+ ...currentStatus,
53
+ availableUpdate: {
54
+ version: latestVersion,
55
+ message: `Update available: ${currentStatus.version} → ${latestVersion}`
56
+ },
57
+ lastCheckTime: new Date().toISOString()
58
+ };
59
+ }
60
+ else {
61
+ return {
62
+ ...currentStatus,
63
+ lastCheckTime: new Date().toISOString()
64
+ };
65
+ }
66
+ }
67
+ catch (error) {
68
+ // Don't update status on error, just log it
69
+ console.warn(`Error checking for updates for ${requirement.name}: ${error instanceof Error ? error.message : String(error)}`);
70
+ return currentStatus;
71
+ }
72
+ }
73
+ /**
74
+ * Helper method to ensure downloads directory exists
75
+ */
76
+ async ensureDownloadsDir() {
77
+ await fs.mkdir(this.downloadsDir, { recursive: true });
78
+ }
79
+ /**
80
+ * Helper to handle GitHub release downloads
81
+ * @param requirement The requirement configuration
82
+ * @param registry The GitHub release registry configuration
83
+ * @returns The path to the downloaded file
84
+ */
85
+ async handleGitHubRelease(requirement, registry) {
86
+ if (!registry) {
87
+ throw new Error('GitHub release registry configuration is required');
88
+ }
89
+ await this.ensureDownloadsDir();
90
+ const { repository, assetsName, assetName } = registry;
91
+ if (!repository) {
92
+ throw new Error('GitHub repository is required for GitHub release downloads');
93
+ }
94
+ let version = requirement.version;
95
+ let resolvedAssetName = assetName || '';
96
+ let resolvedAssetsName = assetsName || '';
97
+ const { stdout } = await this.execPromise(`gh release view --repo ${repository} --json tagName --jq .tagName`);
98
+ const latestTag = stdout.trim();
99
+ let latestVersion = latestTag;
100
+ const tagWithVPrefix = latestVersion.startsWith('v');
101
+ if (tagWithVPrefix)
102
+ latestVersion = latestVersion.substring(1); // Remove 'v' prefix if present
103
+ version = version.includes("latest") ? latestVersion : version;
104
+ if (assetsName) {
105
+ resolvedAssetsName = assetsName.replace('${latest}', version).replace('${version}', version);
106
+ }
107
+ if (assetName) {
108
+ resolvedAssetName = assetName.replace('${latest}', version).replace('${version}', version);
109
+ }
110
+ Logger.debug(`Downloading ${requirement.name} from GitHub release ${repository} version ${version}`);
111
+ Logger.debug(`ResolvedAssetsName} ${resolvedAssetName}; ResolvedAsetName} ${resolvedAssetName}`);
112
+ const pattern = resolvedAssetsName ? resolvedAssetsName : resolvedAssetName;
113
+ Logger.debug(`Resolved pattern: ${pattern}`);
114
+ if (!pattern) {
115
+ throw new Error('Either assetsName or assetName must be specified for GitHub release downloads');
116
+ }
117
+ // Download the release asset
118
+ const downloadPath = path.join(this.downloadsDir, path.basename(pattern));
119
+ if (!await this.fileExists(downloadPath)) {
120
+ await this.execPromise(`gh release download ${tagWithVPrefix ? `v${version}` : version} --repo ${repository} --pattern "${pattern}" -O "${downloadPath}"`);
121
+ }
122
+ // Handle zip file extraction if the downloaded file is a zip
123
+ if (downloadPath.endsWith('.zip')) {
124
+ const extractDir = path.join(this.downloadsDir, path.basename(pattern, '.zip'));
125
+ await fs.mkdir(extractDir, { recursive: true });
126
+ // Extract the zip file
127
+ await extractZipFile(downloadPath, { dir: extractDir });
128
+ let assetPath = '';
129
+ // If resolvedAssetName is specified, look for it in the extracted directory
130
+ if (resolvedAssetName) {
131
+ assetPath = path.join(extractDir, resolvedAssetName);
132
+ try {
133
+ await fs.access(assetPath);
134
+ return { resolvedVersion: version, resolvedPath: assetPath };
135
+ }
136
+ catch (error) {
137
+ throw new Error(`Asset ${resolvedAssetName} not found in extracted directory ${extractDir}`);
138
+ }
139
+ }
140
+ else {
141
+ assetPath = path.join(extractDir, path.basename(pattern, '.zip') + '.tgz');
142
+ }
143
+ // If no specific asset is required, return the extraction directory
144
+ return { resolvedVersion: version, resolvedPath: extractDir };
145
+ }
146
+ return { resolvedVersion: version, resolvedPath: downloadPath };
147
+ }
148
+ /**
149
+ * Helper to handle artifact registry downloads
150
+ * @param requirement The requirement configuration
151
+ * @param registry The artifacts registry configuration
152
+ * @returns The registry URL
153
+ */
154
+ async handleArtifactsRegistry(requirement, registry) {
155
+ if (!registry) {
156
+ throw new Error('Artifacts registry configuration is required');
157
+ }
158
+ const { registryUrl, assetName } = registry;
159
+ if (!registryUrl) {
160
+ throw new Error('Registry URL is required for artifacts downloads');
161
+ }
162
+ return registryUrl;
163
+ }
164
+ /**
165
+ * Helper to handle local path registry
166
+ * @param requirement The requirement configuration
167
+ * @param registry The local registry configuration
168
+ * @returns The local path or extracted asset path
169
+ */
170
+ async handleLocalRegistry(requirement, registry) {
171
+ if (!registry) {
172
+ throw new Error('Local registry configuration is required');
173
+ }
174
+ const { localPath, assetName } = registry;
175
+ if (!localPath) {
176
+ throw new Error('Local path is required for local registry');
177
+ }
178
+ // Verify the local path exists
179
+ try {
180
+ await fs.access(localPath);
181
+ }
182
+ catch (error) {
183
+ throw new Error(`Local path ${localPath} does not exist or is not accessible`);
184
+ }
185
+ // If the path is a zip file and assetName is specified, extract it
186
+ if (localPath.endsWith('.zip') && assetName) {
187
+ const extractDir = path.join(this.downloadsDir, path.basename(localPath, '.zip'));
188
+ await fs.mkdir(extractDir, { recursive: true });
189
+ // Extract the zip file
190
+ await extractZipFile(localPath, { dir: extractDir });
191
+ // Find the asset in the extracted directory
192
+ const assetPath = path.join(extractDir, assetName);
193
+ try {
194
+ await fs.access(assetPath);
195
+ return assetPath;
196
+ }
197
+ catch (error) {
198
+ throw new Error(`Asset ${assetName} not found in extracted directory ${extractDir}`);
199
+ }
200
+ }
201
+ return localPath;
202
+ }
203
+ async fileExists(filePath) {
204
+ try {
205
+ await fs.access(filePath);
206
+ return true;
207
+ }
208
+ catch {
209
+ return false;
210
+ }
211
+ }
212
+ /**
213
+ * Get the latest version available for a GitHub repository
214
+ * @param repository The GitHub repository in format 'owner/repo'
215
+ * @returns The latest version or tag
216
+ */
217
+ async getGitHubLatestVersion(repository) {
218
+ try {
219
+ // Use GitHub CLI to get the latest release
220
+ const { stdout } = await this.execPromise(`gh release view --repo ${repository} --json tagName --jq .tagName`);
221
+ const latestTag = stdout.trim();
222
+ // Remove 'v' prefix if present
223
+ return latestTag.startsWith('v') ? latestTag.substring(1) : latestTag;
224
+ }
225
+ catch (error) {
226
+ // If gh command fails, try to get the latest tag
227
+ const { stdout } = await this.execPromise(`git ls-remote --tags --refs https://github.com/${repository}.git | sort -t '/' -k 3 -V | tail -n 1 | awk -F/ '{print $3}'`);
228
+ let latestTag = stdout.trim();
229
+ // Remove 'v' prefix if present
230
+ return latestTag.startsWith('v') ? latestTag.substring(1) : latestTag;
231
+ }
232
+ }
233
+ /**
234
+ * Get the latest version available for an NPM package
235
+ * @param packageName The name of the NPM package
236
+ * @returns The latest version
237
+ */
238
+ async getNpmLatestVersion(packageName) {
239
+ const { stdout } = await this.execPromise(`npm view ${packageName} version`);
240
+ return stdout.trim();
241
+ }
242
+ /**
243
+ * Get the latest version available for a pip package
244
+ * @param packageName The name of the pip package
245
+ * @returns The latest version
246
+ */
247
+ async getPipLatestVersion(packageName, options) {
248
+ const pythonCmd = options?.settings?.pythonEnv || 'python';
249
+ const { stdout } = await this.execPromise(`${pythonCmd} -m pip index versions ${packageName} --pre=0 | grep -oP "(?<=Latest:\\s)[^\\s]+" | head -1`);
250
+ return stdout.trim();
251
+ }
252
+ }
253
+ //# sourceMappingURL=BaseInstaller.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BaseInstaller.js","sourceRoot":"","sources":["../../../src/core/installers/BaseInstaller.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,23 @@
1
+ import { ServerOperationResult, ServerInstallOptions } from '../types.js';
2
+ export declare class ClientInstaller {
3
+ private categoryName;
4
+ private serverName;
5
+ private clients;
6
+ private configProvider;
7
+ private operationStatuses;
8
+ constructor(categoryName: string, serverName: string, clients: string[]);
9
+ private generateOperationId;
10
+ private getNpmPath;
11
+ /**
12
+ * Check if a command is available on the system
13
+ * @param command The command to check
14
+ * @returns True if the command is available, false otherwise
15
+ */
16
+ private isCommandAvailable;
17
+ private installClient;
18
+ private processInstallation;
19
+ private installClientConfig;
20
+ private updateClineOrMSRooSettings;
21
+ private updateGithubCopilotSettings;
22
+ install(options: ServerInstallOptions): Promise<ServerOperationResult>;
23
+ }