imcp 0.1.4 → 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 (228) 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 -114
  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.map +1 -0
  75. package/dist/core/installers/requirements/NpmInstaller.js.map +1 -0
  76. package/dist/core/installers/requirements/NugetInstaller.js.map +1 -0
  77. package/dist/core/installers/requirements/PipInstaller.js.map +1 -0
  78. package/dist/core/installers/requirements/RequirementInstaller.js.map +1 -0
  79. package/dist/core/loaders/ConfigurationLoader.js.map +1 -0
  80. package/dist/core/loaders/ConfigurationProvider.js.map +1 -0
  81. package/dist/core/loaders/InstallOperationManager.js.map +1 -0
  82. package/dist/core/loaders/ServerSchemaLoader.js.map +1 -0
  83. package/dist/core/loaders/ServerSchemaProvider.js.map +1 -0
  84. package/dist/core/loaders/SystemSettingsManager.js.map +1 -0
  85. package/dist/core/metadatas/constants.js.map +1 -0
  86. package/dist/core/metadatas/recordingConstants.js.map +1 -0
  87. package/dist/core/metadatas/types.js.map +1 -0
  88. package/dist/core/onboard/FeedOnboardService.js.map +1 -0
  89. package/dist/core/onboard/OnboardProcessor.js.map +1 -0
  90. package/dist/core/onboard/OnboardStatus.js.map +1 -0
  91. package/dist/core/onboard/OnboardStatusManager.js.map +1 -0
  92. package/dist/core/types.d.ts +166 -0
  93. package/dist/core/types.js +16 -0
  94. package/dist/core/types.js.map +1 -0
  95. package/dist/core/validators/FeedValidator.js.map +1 -0
  96. package/dist/core/validators/IServerValidator.js.map +1 -0
  97. package/dist/core/validators/SSEServerValidator.js.map +1 -0
  98. package/dist/core/validators/ServerValidatorFactory.js.map +1 -0
  99. package/dist/core/validators/StdioServerValidator.js.map +1 -0
  100. package/dist/index.js.map +1 -0
  101. package/dist/services/InstallRequestValidator.d.ts +21 -0
  102. package/dist/services/InstallRequestValidator.js +99 -0
  103. package/dist/services/InstallRequestValidator.js.map +1 -0
  104. package/dist/services/InstallationService.js.map +1 -0
  105. package/dist/services/MCPManager.js.map +1 -0
  106. package/dist/services/RequirementService.js.map +1 -0
  107. package/dist/services/ServerService.js.map +1 -0
  108. package/dist/services/TelemetryService.js.map +1 -0
  109. package/dist/utils/UpdateCheckTracker.js.map +1 -0
  110. package/dist/utils/adoUtils.js.map +1 -0
  111. package/dist/utils/clientUtils.js.map +1 -0
  112. package/dist/utils/feedUtils.js.map +1 -0
  113. package/dist/utils/githubAuth.js.map +1 -0
  114. package/dist/utils/githubUtils.js.map +1 -0
  115. package/dist/utils/logger.js.map +1 -0
  116. package/dist/utils/macroExpressionUtils.js.map +1 -0
  117. package/dist/utils/osUtils.js.map +1 -0
  118. package/dist/utils/versionUtils.js.map +1 -0
  119. package/dist/web/contract/serverContract.js.map +1 -0
  120. package/dist/web/public/index.html +1 -1
  121. package/dist/web/public/js/modal/installHandler.js +227 -0
  122. package/dist/web/public/js/modal/loadingUI.js +74 -0
  123. package/dist/web/public/js/modal/messageQueue.js +101 -45
  124. package/dist/web/public/js/modal/modalUI.js +214 -0
  125. package/{src/web/public/js/modal/versionUtils.js → dist/web/public/js/modal/version.js} +1 -1
  126. package/dist/web/public/onboard.html +4 -4
  127. package/dist/web/server.js.map +1 -0
  128. package/package.json +5 -1
  129. package/.github/ISSUE_TEMPLATE/JitAccess.yml +0 -28
  130. package/.github/acl/access.yml +0 -20
  131. package/.github/compliance/inventory.yml +0 -5
  132. package/.github/policies/jit.yml +0 -19
  133. package/.roo/rules-code/rules.md +0 -88
  134. package/dist/core/onboard/InstallOperationManager.d.ts +0 -23
  135. package/dist/core/onboard/InstallOperationManager.js +0 -144
  136. package/docs/ONBOARDING_PAGE_DESIGN.md +0 -260
  137. package/docs/Telemetry.md +0 -136
  138. package/memory-bank/activeContext.md +0 -26
  139. package/memory-bank/decisionLog.md +0 -91
  140. package/memory-bank/productContext.md +0 -41
  141. package/memory-bank/progress.md +0 -35
  142. package/memory-bank/systemPatterns.md +0 -10
  143. package/src/cli/commands/install.ts +0 -139
  144. package/src/cli/commands/list.ts +0 -113
  145. package/src/cli/commands/pull.ts +0 -16
  146. package/src/cli/commands/serve.ts +0 -39
  147. package/src/cli/commands/uninstall.ts +0 -64
  148. package/src/cli/index.ts +0 -82
  149. package/src/core/installers/clients/BaseClientInstaller.ts +0 -341
  150. package/src/core/installers/clients/ClientInstaller.ts +0 -222
  151. package/src/core/installers/clients/ClientInstallerFactory.ts +0 -43
  152. package/src/core/installers/clients/ClineInstaller.ts +0 -35
  153. package/src/core/installers/clients/ExtensionInstaller.ts +0 -165
  154. package/src/core/installers/clients/GithubCopilotInstaller.ts +0 -79
  155. package/src/core/installers/clients/MSRooCodeInstaller.ts +0 -32
  156. package/src/core/installers/index.ts +0 -11
  157. package/src/core/installers/requirements/BaseInstaller.ts +0 -85
  158. package/src/core/installers/requirements/GeneralInstaller.ts +0 -133
  159. package/src/core/installers/requirements/NpmInstaller.ts +0 -271
  160. package/src/core/installers/requirements/NugetInstaller.ts +0 -203
  161. package/src/core/installers/requirements/PipInstaller.ts +0 -207
  162. package/src/core/loaders/InstallOperationManager.ts +0 -367
  163. package/src/core/loaders/ServerSchemaLoader.ts +0 -117
  164. package/src/core/loaders/ServerSchemaProvider.ts +0 -99
  165. package/src/core/loaders/SystemSettingsManager.ts +0 -278
  166. package/src/core/metadatas/constants.ts +0 -122
  167. package/src/core/metadatas/recordingConstants.ts +0 -65
  168. package/src/core/metadatas/types.ts +0 -202
  169. package/src/core/onboard/FeedOnboardService.ts +0 -501
  170. package/src/core/onboard/OnboardProcessor.ts +0 -356
  171. package/src/core/onboard/OnboardStatus.ts +0 -60
  172. package/src/core/onboard/OnboardStatusManager.ts +0 -416
  173. package/src/core/validators/FeedValidator.ts +0 -135
  174. package/src/core/validators/IServerValidator.ts +0 -21
  175. package/src/core/validators/SSEServerValidator.ts +0 -43
  176. package/src/core/validators/ServerValidatorFactory.ts +0 -51
  177. package/src/core/validators/StdioServerValidator.ts +0 -313
  178. package/src/index.ts +0 -44
  179. package/src/services/InstallationService.ts +0 -102
  180. package/src/services/MCPManager.ts +0 -249
  181. package/src/services/RequirementService.ts +0 -627
  182. package/src/services/ServerService.ts +0 -161
  183. package/src/services/TelemetryService.ts +0 -59
  184. package/src/utils/UpdateCheckTracker.ts +0 -86
  185. package/src/utils/adoUtils.ts +0 -293
  186. package/src/utils/clientUtils.ts +0 -72
  187. package/src/utils/feedUtils.ts +0 -31
  188. package/src/utils/githubAuth.ts +0 -212
  189. package/src/utils/githubUtils.ts +0 -164
  190. package/src/utils/logger.ts +0 -195
  191. package/src/utils/macroExpressionUtils.ts +0 -104
  192. package/src/utils/osUtils.ts +0 -700
  193. package/src/utils/versionUtils.ts +0 -114
  194. package/src/web/contract/serverContract.ts +0 -74
  195. package/src/web/public/css/detailsWidget.css +0 -235
  196. package/src/web/public/css/modal.css +0 -757
  197. package/src/web/public/css/notifications.css +0 -101
  198. package/src/web/public/css/onboard.css +0 -107
  199. package/src/web/public/css/serverCategoryList.css +0 -120
  200. package/src/web/public/css/serverDetails.css +0 -139
  201. package/src/web/public/index.html +0 -359
  202. package/src/web/public/js/api.js +0 -132
  203. package/src/web/public/js/detailsWidget.js +0 -264
  204. package/src/web/public/js/flights/flights.js +0 -127
  205. package/src/web/public/js/modal/index.js +0 -52
  206. package/src/web/public/js/modal/installModal.js +0 -162
  207. package/src/web/public/js/modal/installation.js +0 -266
  208. package/src/web/public/js/modal/loadingModal.js +0 -182
  209. package/src/web/public/js/modal/modalSetup.js +0 -595
  210. package/src/web/public/js/modal/modalUtils.js +0 -37
  211. package/src/web/public/js/modal.js +0 -42
  212. package/src/web/public/js/notifications.js +0 -137
  213. package/src/web/public/js/onboard/formProcessor.js +0 -1037
  214. package/src/web/public/js/onboard/index.js +0 -374
  215. package/src/web/public/js/onboard/publishHandler.js +0 -172
  216. package/src/web/public/js/onboard/state.js +0 -76
  217. package/src/web/public/js/onboard/templates.js +0 -342
  218. package/src/web/public/js/onboard/uiHandlers.js +0 -1076
  219. package/src/web/public/js/onboard/validationHandlers.js +0 -493
  220. package/src/web/public/js/serverCategoryDetails.js +0 -364
  221. package/src/web/public/js/serverCategoryList.js +0 -241
  222. package/src/web/public/js/settings.js +0 -314
  223. package/src/web/public/modal.html +0 -84
  224. package/src/web/public/onboard.html +0 -296
  225. package/src/web/public/settings.html +0 -135
  226. package/src/web/public/styles.css +0 -277
  227. package/src/web/server.ts +0 -478
  228. package/tsconfig.json +0 -18
@@ -1,114 +1,97 @@
1
- import { RequirementConfig, RequirementStatus, ServerInstallOptions } from '../../metadatas/types.js';
2
- import { RequirementInstaller } from './RequirementInstaller.js';
3
- import { NpmInstaller } from './NpmInstaller.js';
4
- import { PipInstaller } from './PipInstaller.js';
5
- import { NugetInstaller } from './NugetInstaller.js';
6
- import { CommandInstaller } from './CommandInstaller.js';
7
- import { GeneralInstaller } from './GeneralInstaller.js';
8
- import { exec } from 'child_process';
9
- import util from 'util';
10
- import { InstallOperationManager } from '../../loaders/InstallOperationManager.js';
11
- /**
12
- * Factory for creating the appropriate installer for a requirement
13
- */
14
- export class InstallerFactory {
15
- private installers: RequirementInstaller[] = [];
16
- private readonly execPromise: (command: string) => Promise<{ stdout: string; stderr: string }>;
17
-
18
- /**
19
- * Create a new InstallerFactory
20
- * @param execPromise Function to execute commands
21
- */
22
- constructor(execPromise: (command: string) => Promise<{ stdout: string; stderr: string }>) {
23
- this.execPromise = execPromise;
24
- this.registerDefaultInstallers();
25
- }
26
-
27
- /**
28
- * Register default installers for npm, pip, and general requirements
29
- * @private
30
- */
31
- private registerDefaultInstallers(): void {
32
- this.registerInstaller(new NpmInstaller(this.execPromise));
33
- this.registerInstaller(new PipInstaller(this.execPromise));
34
- this.registerInstaller(new NugetInstaller(this.execPromise));
35
- this.registerInstaller(new CommandInstaller(this.execPromise));
36
- this.registerInstaller(new GeneralInstaller(this.execPromise));
37
- }
38
-
39
- /**
40
- * Register a custom installer
41
- * @param installer The installer to register
42
- */
43
- public registerInstaller(installer: RequirementInstaller): void {
44
- this.installers.push(installer);
45
- }
46
-
47
- /**
48
- * Get the appropriate installer for a requirement
49
- * @param requirement The requirement to get an installer for
50
- * @returns The appropriate installer, or undefined if none found
51
- */
52
- public getInstaller(requirement: RequirementConfig): RequirementInstaller | undefined {
53
- // Validate that if registry is empty, type must not be 'other'
54
- if (!requirement.registry && requirement.type === 'other') {
55
- throw new Error('Registry must be specified for requirement type "other"');
56
- }
57
-
58
- return this.installers.find(installer => installer.canHandle(requirement));
59
- }
60
-
61
- /**
62
- * Install a requirement using the appropriate installer
63
- * @param requirement The requirement to install
64
- * @param recorder Optional InstallOperationManager for recording steps
65
- * @param options Installation options including python environment
66
- * @returns The installation status
67
- */
68
- public async install(requirement: RequirementConfig, recorder: InstallOperationManager, options?: ServerInstallOptions): Promise<RequirementStatus> {
69
- const installer = this.getInstaller(requirement);
70
- if (!installer) {
71
- return {
72
- name: requirement.name,
73
- type: requirement.type,
74
- installed: false,
75
- error: `No installer found for requirement type '${requirement.type}'`,
76
- inProgress: false
77
- };
78
- }
79
-
80
- return await installer.install(requirement, recorder, options);
81
- }
82
-
83
- /**
84
- * Check the installation status of a requirement
85
- * @param requirement The requirement to check
86
- * @param options Installation options including python environment
87
- * @returns The installation status
88
- */
89
- public async checkInstallation(requirement: RequirementConfig, options?: ServerInstallOptions): Promise<RequirementStatus> {
90
- const installer = this.getInstaller(requirement);
91
- if (!installer) {
92
- return {
93
- name: requirement.name,
94
- type: requirement.type,
95
- installed: false,
96
- error: `No installer found for requirement type '${requirement.type}'`,
97
- inProgress: false
98
- };
99
- }
100
-
101
- return await installer.checkInstallation(requirement, options);
102
- }
103
- }
104
-
105
- /**
106
- * Create a new InstallerFactory with default settings
107
- * @param execPromise Optional function to execute commands
108
- * @returns A new InstallerFactory
109
- */
110
- export const createInstallerFactory = (
111
- execPromise = util.promisify(exec)
112
- ): InstallerFactory => {
113
- return new InstallerFactory(execPromise);
114
- };
1
+ import { NpmInstaller } from './NpmInstaller.js';
2
+ import { PipInstaller } from './PipInstaller.js';
3
+ import { CommandInstaller } from './CommandInstaller.js';
4
+ import { GeneralInstaller } from './GeneralInstaller.js';
5
+ import { exec } from 'child_process';
6
+ import util from 'util';
7
+ /**
8
+ * Factory for creating the appropriate installer for a requirement
9
+ */
10
+ export class InstallerFactory {
11
+ installers = [];
12
+ execPromise;
13
+ /**
14
+ * Create a new InstallerFactory
15
+ * @param execPromise Function to execute commands
16
+ */
17
+ constructor(execPromise) {
18
+ this.execPromise = execPromise;
19
+ this.registerDefaultInstallers();
20
+ }
21
+ /**
22
+ * Register default installers for npm, pip, and general requirements
23
+ * @private
24
+ */
25
+ registerDefaultInstallers() {
26
+ this.registerInstaller(new NpmInstaller(this.execPromise));
27
+ this.registerInstaller(new PipInstaller(this.execPromise));
28
+ this.registerInstaller(new CommandInstaller(this.execPromise));
29
+ this.registerInstaller(new GeneralInstaller(this.execPromise));
30
+ }
31
+ /**
32
+ * Register a custom installer
33
+ * @param installer The installer to register
34
+ */
35
+ registerInstaller(installer) {
36
+ this.installers.push(installer);
37
+ }
38
+ /**
39
+ * Get the appropriate installer for a requirement
40
+ * @param requirement The requirement to get an installer for
41
+ * @returns The appropriate installer, or undefined if none found
42
+ */
43
+ getInstaller(requirement) {
44
+ // Validate that if registry is empty, type must not be 'other'
45
+ if (!requirement.registry && requirement.type === 'other') {
46
+ throw new Error('Registry must be specified for requirement type "other"');
47
+ }
48
+ return this.installers.find(installer => installer.canHandle(requirement));
49
+ }
50
+ /**
51
+ * Install a requirement using the appropriate installer
52
+ * @param requirement The requirement to install
53
+ * @param options Installation options including python environment
54
+ * @returns The installation status
55
+ */
56
+ async install(requirement, options) {
57
+ const installer = this.getInstaller(requirement);
58
+ if (!installer) {
59
+ return {
60
+ name: requirement.name,
61
+ type: requirement.type,
62
+ installed: false,
63
+ error: `No installer found for requirement type '${requirement.type}'`,
64
+ inProgress: false
65
+ };
66
+ }
67
+ return await installer.install(requirement, options);
68
+ }
69
+ /**
70
+ * Check the installation status of a requirement
71
+ * @param requirement The requirement to check
72
+ * @param options Installation options including python environment
73
+ * @returns The installation status
74
+ */
75
+ async checkInstallation(requirement, options) {
76
+ const installer = this.getInstaller(requirement);
77
+ if (!installer) {
78
+ return {
79
+ name: requirement.name,
80
+ type: requirement.type,
81
+ installed: false,
82
+ error: `No installer found for requirement type '${requirement.type}'`,
83
+ inProgress: false
84
+ };
85
+ }
86
+ return await installer.checkInstallation(requirement, options);
87
+ }
88
+ }
89
+ /**
90
+ * Create a new InstallerFactory with default settings
91
+ * @param execPromise Optional function to execute commands
92
+ * @returns A new InstallerFactory
93
+ */
94
+ export const createInstallerFactory = (execPromise = util.promisify(exec)) => {
95
+ return new InstallerFactory(execPromise);
96
+ };
97
+ //# sourceMappingURL=InstallerFactory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"InstallerFactory.js","sourceRoot":"","sources":["../../../src/core/installers/InstallerFactory.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,26 @@
1
+ import { RequirementConfig, RequirementStatus } from '../types.js';
2
+ import { BaseInstaller } from './BaseInstaller.js';
3
+ /**
4
+ * Installer implementation for NPM packages
5
+ */
6
+ export declare class NpmInstaller extends BaseInstaller {
7
+ /**
8
+ * Check if this installer can handle the given requirement type
9
+ * @param requirement The requirement to check
10
+ * @returns True if this installer can handle the requirement
11
+ */
12
+ canHandle(requirement: RequirementConfig): boolean;
13
+ supportCheckUpdates(): boolean;
14
+ /**
15
+ * Check if the NPM package is already installed
16
+ * @param requirement The requirement to check
17
+ * @returns The status of the requirement
18
+ */
19
+ checkInstallation(requirement: RequirementConfig): Promise<RequirementStatus>;
20
+ /**
21
+ * Install the NPM package
22
+ * @param requirement The requirement to install
23
+ * @returns The status of the installation
24
+ */
25
+ install(requirement: RequirementConfig): Promise<RequirementStatus>;
26
+ }
@@ -0,0 +1,127 @@
1
+ import { BaseInstaller } from './BaseInstaller.js';
2
+ import { compareVersions } from '../../utils/versionUtils.js';
3
+ /**
4
+ * Installer implementation for NPM packages
5
+ */
6
+ export class NpmInstaller extends BaseInstaller {
7
+ /**
8
+ * Check if this installer can handle the given requirement type
9
+ * @param requirement The requirement to check
10
+ * @returns True if this installer can handle the requirement
11
+ */
12
+ canHandle(requirement) {
13
+ return requirement.type === 'npm';
14
+ }
15
+ supportCheckUpdates() {
16
+ return true;
17
+ }
18
+ /**
19
+ * Check if the NPM package is already installed
20
+ * @param requirement The requirement to check
21
+ * @returns The status of the requirement
22
+ */
23
+ async checkInstallation(requirement) {
24
+ try {
25
+ const { stdout } = await this.execPromise(`npm list -g ${requirement.name} --json`);
26
+ const pkgInfo = JSON.parse(stdout);
27
+ const installedVersion = pkgInfo?.dependencies?.[requirement.name]?.version;
28
+ return {
29
+ name: requirement.name,
30
+ type: 'npm',
31
+ installed: !!installedVersion,
32
+ version: installedVersion,
33
+ inProgress: false
34
+ };
35
+ }
36
+ catch (error) {
37
+ return {
38
+ name: requirement.name,
39
+ type: 'npm',
40
+ installed: false,
41
+ error: error instanceof Error ? error.message : String(error),
42
+ inProgress: false
43
+ };
44
+ }
45
+ }
46
+ /**
47
+ * Install the NPM package
48
+ * @param requirement The requirement to install
49
+ * @returns The status of the installation
50
+ */
51
+ async install(requirement) {
52
+ try {
53
+ const status = await this.checkInstallation(requirement);
54
+ if (status.installed && status.version && compareVersions(status.version, requirement.version) === 0) {
55
+ return status;
56
+ }
57
+ let resolvedVersion = requirement.version;
58
+ // If no registry is specified, use standard npm installation
59
+ if (!requirement.registry) {
60
+ const { stderr } = await this.execPromise(`npm install -g ${requirement.name}@${requirement.version}`);
61
+ if (stderr && !stderr.includes('added')) {
62
+ throw new Error(stderr);
63
+ }
64
+ }
65
+ else {
66
+ // Handle different registry types
67
+ let packageSource;
68
+ if (requirement.registry.githubRelease) {
69
+ const result = await this.handleGitHubRelease(requirement, requirement.registry.githubRelease);
70
+ packageSource = result.resolvedPath;
71
+ resolvedVersion = result.resolvedVersion;
72
+ }
73
+ else if (requirement.registry.artifacts) {
74
+ // For npm with artifacts, configure npm to use the specified registry URL
75
+ const registryUrl = requirement.registry.artifacts.registryUrl;
76
+ await this.execPromise(`npm config set registry ${registryUrl}`);
77
+ // Now install the package with the configured registry
78
+ const { stderr } = await this.execPromise(`npm install -g ${requirement.name}@${requirement.version}`);
79
+ if (stderr && !stderr.includes('added')) {
80
+ // Reset the registry to the default npm registry
81
+ await this.execPromise('npm config set registry https://registry.npmjs.org/');
82
+ throw new Error(stderr);
83
+ }
84
+ // Reset the registry to the default npm registry
85
+ await this.execPromise('npm config set registry https://registry.npmjs.org/');
86
+ return {
87
+ name: requirement.name,
88
+ type: 'npm',
89
+ installed: true,
90
+ version: requirement.version,
91
+ inProgress: false
92
+ };
93
+ }
94
+ else if (requirement.registry.local) {
95
+ packageSource = await this.handleLocalRegistry(requirement, requirement.registry.local);
96
+ }
97
+ else {
98
+ throw new Error('Invalid registry configuration');
99
+ }
100
+ // Install from the package source
101
+ const { stderr } = await this.execPromise(`npm install -g "${packageSource}"`);
102
+ if (stderr && !stderr.includes('added')) {
103
+ const status = await this.checkInstallation(requirement);
104
+ if (!status.installed)
105
+ throw new Error(stderr);
106
+ }
107
+ }
108
+ return {
109
+ name: requirement.name,
110
+ type: 'npm',
111
+ installed: true,
112
+ version: resolvedVersion,
113
+ inProgress: false
114
+ };
115
+ }
116
+ catch (error) {
117
+ return {
118
+ name: requirement.name,
119
+ type: 'npm',
120
+ installed: false,
121
+ error: error instanceof Error ? error.message : String(error),
122
+ inProgress: false
123
+ };
124
+ }
125
+ }
126
+ }
127
+ //# sourceMappingURL=NpmInstaller.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NpmInstaller.js","sourceRoot":"","sources":["../../../src/core/installers/NpmInstaller.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,28 @@
1
+ import { RequirementConfig, RequirementStatus, ServerInstallOptions } from '../types.js';
2
+ import { BaseInstaller } from './BaseInstaller.js';
3
+ /**
4
+ * Installer implementation for Python packages using pip
5
+ */
6
+ export declare class PipInstaller extends BaseInstaller {
7
+ private getPythonCommand;
8
+ private getPipCommand;
9
+ /**
10
+ * Check if this installer can handle the given requirement type
11
+ * @param requirement The requirement to check
12
+ * @returns True if this installer can handle the requirement
13
+ */
14
+ canHandle(requirement: RequirementConfig): boolean;
15
+ supportCheckUpdates(): boolean;
16
+ /**
17
+ * Check if the Python package is already installed
18
+ * @param requirement The requirement to check
19
+ * @returns The status of the requirement
20
+ */
21
+ checkInstallation(requirement: RequirementConfig, options?: ServerInstallOptions): Promise<RequirementStatus>;
22
+ /**
23
+ * Install the Python package
24
+ * @param requirement The requirement to install
25
+ * @returns The status of the installation
26
+ */
27
+ install(requirement: RequirementConfig, options?: ServerInstallOptions): Promise<RequirementStatus>;
28
+ }
@@ -0,0 +1,127 @@
1
+ import { BaseInstaller } from './BaseInstaller.js';
2
+ /**
3
+ * Installer implementation for Python packages using pip
4
+ */
5
+ export class PipInstaller extends BaseInstaller {
6
+ getPythonCommand(options) {
7
+ return options?.settings?.pythonEnv || 'python';
8
+ }
9
+ getPipCommand(options) {
10
+ const pythonCmd = this.getPythonCommand(options);
11
+ return `${pythonCmd} -m pip`;
12
+ }
13
+ /**
14
+ * Check if this installer can handle the given requirement type
15
+ * @param requirement The requirement to check
16
+ * @returns True if this installer can handle the requirement
17
+ */
18
+ canHandle(requirement) {
19
+ return requirement.type === 'pip';
20
+ }
21
+ supportCheckUpdates() {
22
+ /// temporarily disabling update check for pip as not able to get which pip of python is being used
23
+ return false;
24
+ }
25
+ /**
26
+ * Check if the Python package is already installed
27
+ * @param requirement The requirement to check
28
+ * @returns The status of the requirement
29
+ */
30
+ async checkInstallation(requirement, options) {
31
+ try {
32
+ const pipCmd = this.getPipCommand(options);
33
+ const { stdout, stderr } = await this.execPromise(`${pipCmd} show ${requirement.name}`);
34
+ // If we get an output and no error, the package is installed
35
+ const installed = stdout.includes(requirement.name);
36
+ const versionMatch = stdout.match(/Version: (.+)/);
37
+ const installedVersion = versionMatch ? versionMatch[1] : undefined;
38
+ return {
39
+ name: requirement.name,
40
+ type: 'pip',
41
+ installed,
42
+ version: installedVersion,
43
+ inProgress: false
44
+ };
45
+ }
46
+ catch (error) {
47
+ return {
48
+ name: requirement.name,
49
+ type: 'pip',
50
+ installed: false,
51
+ error: error instanceof Error ? error.message : String(error),
52
+ inProgress: false
53
+ };
54
+ }
55
+ }
56
+ /**
57
+ * Install the Python package
58
+ * @param requirement The requirement to install
59
+ * @returns The status of the installation
60
+ */
61
+ async install(requirement, options) {
62
+ try {
63
+ const status = await this.checkInstallation(requirement, options);
64
+ if (status.installed) {
65
+ return status;
66
+ }
67
+ const pipCmd = this.getPipCommand(options);
68
+ // If no registry is specified, use standard pip installation
69
+ if (!requirement.registry) {
70
+ // Standard pip installation
71
+ const { stderr } = await this.execPromise(`${pipCmd} install ${requirement.name}==${requirement.version}`);
72
+ if (stderr && stderr.toLowerCase().includes('error')) {
73
+ throw new Error(stderr);
74
+ }
75
+ }
76
+ else {
77
+ // Handle different registry types
78
+ let packageSource;
79
+ if (requirement.registry.githubRelease) {
80
+ const result = await this.handleGitHubRelease(requirement, requirement.registry.githubRelease);
81
+ packageSource = result.resolvedPath;
82
+ // Install from the downloaded wheel or tar.gz file
83
+ const { stderr } = await this.execPromise(`${pipCmd} install "${packageSource}"`);
84
+ if (stderr && stderr.toLowerCase().includes('error')) {
85
+ throw new Error(stderr);
86
+ }
87
+ }
88
+ else if (requirement.registry.artifacts) {
89
+ const registryUrl = requirement.registry.artifacts.registryUrl;
90
+ // Install using the custom index URL
91
+ const { stderr } = await this.execPromise(`${pipCmd} install ${requirement.name}==${requirement.version} --index-url ${registryUrl}`);
92
+ if (stderr && stderr.toLowerCase().includes('error')) {
93
+ throw new Error(stderr);
94
+ }
95
+ }
96
+ else if (requirement.registry.local) {
97
+ packageSource = await this.handleLocalRegistry(requirement, requirement.registry.local);
98
+ // Install from the local path
99
+ const { stderr } = await this.execPromise(`${pipCmd} install "${packageSource}"`);
100
+ if (stderr && stderr.toLowerCase().includes('error')) {
101
+ throw new Error(stderr);
102
+ }
103
+ }
104
+ else {
105
+ throw new Error('Invalid registry configuration');
106
+ }
107
+ }
108
+ return {
109
+ name: requirement.name,
110
+ type: 'pip',
111
+ installed: true,
112
+ version: requirement.version,
113
+ inProgress: false
114
+ };
115
+ }
116
+ catch (error) {
117
+ return {
118
+ name: requirement.name,
119
+ type: 'pip',
120
+ installed: false,
121
+ error: error instanceof Error ? error.message : String(error),
122
+ inProgress: false
123
+ };
124
+ }
125
+ }
126
+ }
127
+ //# sourceMappingURL=PipInstaller.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PipInstaller.js","sourceRoot":"","sources":["../../../src/core/installers/PipInstaller.ts"],"names":[],"mappings":"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"}
@@ -1,42 +1,33 @@
1
- import { RequirementConfig, RequirementStatus, ServerInstallOptions } from '../../metadatas/types.js';
2
- import { InstallOperationManager } from '../../loaders/InstallOperationManager.js';
3
-
4
- /**
5
- * Interface for requirement installers.
6
- * Implementations should handle specific requirement types.
7
- */
8
- export interface RequirementInstaller {
9
- /**
10
- * Check if this installer can handle the given requirement type
11
- * @param requirement The requirement to check
12
- * @returns True if this installer can handle the requirement
13
- */
14
- canHandle(requirement: RequirementConfig): boolean;
15
-
16
- supportCheckUpdates(): boolean;
17
- /**
18
- * Install the requirement
19
- * @param requirement The requirement to install
20
- * @param options Optional install options
21
- * @param recorder Optional InstallOperationManager for recording steps
22
- * @returns The status of the installation
23
- */
24
- install(requirement: RequirementConfig, recorder: InstallOperationManager, options?: ServerInstallOptions): Promise<RequirementStatus>;
25
-
26
- /**
27
- * Check if the requirement is already installed
28
- * @param requirement The requirement to check
29
- * @returns The status of the requirement
30
- */
31
- checkInstallation(requirement: RequirementConfig, options?: ServerInstallOptions): Promise<RequirementStatus>;
32
-
33
- /**
34
- * Check if updates are available for the requirement
35
- * @param requirement The requirement to check
36
- * @param currentStatus The current status of the requirement
37
- * @returns The status of the requirement with update information
38
- */
39
- checkForUpdates(requirement: RequirementConfig, currentStatus: RequirementStatus): Promise<RequirementStatus>;
40
- }
41
-
42
- // Note: Do not re-export implementations from here to avoid circular dependencies
1
+ import { RequirementConfig, RequirementStatus, ServerInstallOptions } from '../types.js';
2
+ /**
3
+ * Interface for requirement installers.
4
+ * Implementations should handle specific requirement types.
5
+ */
6
+ export interface RequirementInstaller {
7
+ /**
8
+ * Check if this installer can handle the given requirement type
9
+ * @param requirement The requirement to check
10
+ * @returns True if this installer can handle the requirement
11
+ */
12
+ canHandle(requirement: RequirementConfig): boolean;
13
+ supportCheckUpdates(): boolean;
14
+ /**
15
+ * Install the requirement
16
+ * @param requirement The requirement to install
17
+ * @returns The status of the installation
18
+ */
19
+ install(requirement: RequirementConfig, options?: ServerInstallOptions): Promise<RequirementStatus>;
20
+ /**
21
+ * Check if the requirement is already installed
22
+ * @param requirement The requirement to check
23
+ * @returns The status of the requirement
24
+ */
25
+ checkInstallation(requirement: RequirementConfig, options?: ServerInstallOptions): Promise<RequirementStatus>;
26
+ /**
27
+ * Check if updates are available for the requirement
28
+ * @param requirement The requirement to check
29
+ * @param currentStatus The current status of the requirement
30
+ * @returns The status of the requirement with update information
31
+ */
32
+ checkForUpdates(requirement: RequirementConfig, currentStatus: RequirementStatus): Promise<RequirementStatus>;
33
+ }
@@ -0,0 +1,3 @@
1
+ export {};
2
+ // Note: Do not re-export implementations from here to avoid circular dependencies
3
+ //# sourceMappingURL=RequirementInstaller.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RequirementInstaller.js","sourceRoot":"","sources":["../../../src/core/installers/RequirementInstaller.ts"],"names":[],"mappings":";AAwCA,kFAAkF"}