imcp 0.1.7 → 0.1.8-dev

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 (314) hide show
  1. package/dist/cli/commands/install.js +1 -106
  2. package/dist/cli/commands/install.js.map +1 -0
  3. package/dist/cli/commands/list.js +1 -90
  4. package/dist/cli/commands/list.js.map +1 -0
  5. package/dist/cli/commands/pull.js +1 -16
  6. package/dist/cli/commands/pull.js.map +1 -0
  7. package/dist/cli/commands/serve.js +1 -33
  8. package/dist/cli/commands/serve.js.map +1 -0
  9. package/dist/cli/commands/uninstall.js +1 -46
  10. package/dist/cli/commands/uninstall.js.map +1 -0
  11. package/dist/cli/index.js +1 -65
  12. package/dist/cli/index.js.map +1 -0
  13. package/dist/core/installers/clients/BaseClientInstaller.js +1 -282
  14. package/dist/core/installers/clients/BaseClientInstaller.js.map +1 -0
  15. package/dist/core/installers/clients/ClientInstaller.js +1 -163
  16. package/dist/core/installers/clients/ClientInstaller.js.map +1 -0
  17. package/dist/core/installers/clients/ClientInstallerFactory.js +1 -36
  18. package/dist/core/installers/clients/ClientInstallerFactory.js.map +1 -0
  19. package/dist/core/installers/clients/ClineInstaller.js +1 -30
  20. package/dist/core/installers/clients/ClineInstaller.js.map +1 -0
  21. package/dist/core/installers/clients/ExtensionInstaller.js +1 -151
  22. package/dist/core/installers/clients/ExtensionInstaller.js.map +1 -0
  23. package/dist/core/installers/clients/GithubCopilotInstaller.js +1 -68
  24. package/dist/core/installers/clients/GithubCopilotInstaller.js.map +1 -0
  25. package/dist/core/installers/clients/MSRooCodeInstaller.js +1 -28
  26. package/dist/core/installers/clients/MSRooCodeInstaller.js.map +1 -0
  27. package/dist/core/installers/index.js +1 -8
  28. package/dist/core/installers/index.js.map +1 -0
  29. package/dist/core/installers/requirements/BaseInstaller.js +1 -56
  30. package/dist/core/installers/requirements/BaseInstaller.js.map +1 -0
  31. package/dist/core/installers/requirements/CommandInstaller.js +1 -213
  32. package/dist/core/installers/requirements/CommandInstaller.js.map +1 -0
  33. package/dist/core/installers/requirements/GeneralInstaller.js +1 -126
  34. package/dist/core/installers/requirements/GeneralInstaller.js.map +1 -0
  35. package/dist/core/installers/requirements/InstallerFactory.js +1 -99
  36. package/dist/core/installers/requirements/InstallerFactory.js.map +1 -0
  37. package/dist/core/installers/requirements/NpmInstaller.js +1 -235
  38. package/dist/core/installers/requirements/NpmInstaller.js.map +1 -0
  39. package/dist/core/installers/requirements/NugetInstaller.js +1 -188
  40. package/dist/core/installers/requirements/NugetInstaller.js.map +1 -0
  41. package/dist/core/installers/requirements/PipInstaller.js +1 -192
  42. package/dist/core/installers/requirements/PipInstaller.js.map +1 -0
  43. package/dist/core/installers/requirements/RequirementInstaller.js +1 -2
  44. package/dist/core/installers/requirements/RequirementInstaller.js.map +1 -0
  45. package/dist/core/loaders/ConfigurationLoader.js +1 -256
  46. package/dist/core/loaders/ConfigurationLoader.js.map +1 -0
  47. package/dist/core/loaders/ConfigurationProvider.js +1 -383
  48. package/dist/core/loaders/ConfigurationProvider.js.map +1 -0
  49. package/dist/core/loaders/InstallOperationManager.js +1 -310
  50. package/dist/core/loaders/InstallOperationManager.js.map +1 -0
  51. package/dist/core/loaders/ServerSchemaLoader.js +1 -108
  52. package/dist/core/loaders/ServerSchemaLoader.js.map +1 -0
  53. package/dist/core/loaders/ServerSchemaProvider.js +1 -89
  54. package/dist/core/loaders/ServerSchemaProvider.js.map +1 -0
  55. package/dist/core/loaders/SystemSettingsManager.js +1 -256
  56. package/dist/core/loaders/SystemSettingsManager.js.map +1 -0
  57. package/dist/core/metadatas/constants.js +1 -100
  58. package/dist/core/metadatas/constants.js.map +1 -0
  59. package/dist/core/metadatas/recordingConstants.js +1 -46
  60. package/dist/core/metadatas/recordingConstants.js.map +1 -0
  61. package/dist/core/metadatas/types.js +1 -15
  62. package/dist/core/metadatas/types.js.map +1 -0
  63. package/dist/core/onboard/FeedOnboardService.js +1 -422
  64. package/dist/core/onboard/FeedOnboardService.js.map +1 -0
  65. package/dist/core/onboard/OnboardProcessor.js +1 -333
  66. package/dist/core/onboard/OnboardProcessor.js.map +1 -0
  67. package/dist/core/onboard/OnboardStatus.js +1 -9
  68. package/dist/core/onboard/OnboardStatus.js.map +1 -0
  69. package/dist/core/onboard/OnboardStatusManager.js +1 -360
  70. package/dist/core/onboard/OnboardStatusManager.js.map +1 -0
  71. package/dist/core/validators/FeedValidator.js +1 -133
  72. package/dist/core/validators/FeedValidator.js.map +1 -0
  73. package/dist/core/validators/IServerValidator.js +1 -1
  74. package/dist/core/validators/IServerValidator.js.map +1 -0
  75. package/dist/core/validators/SSEServerValidator.js +1 -38
  76. package/dist/core/validators/SSEServerValidator.js.map +1 -0
  77. package/dist/core/validators/ServerValidatorFactory.js +1 -44
  78. package/dist/core/validators/ServerValidatorFactory.js.map +1 -0
  79. package/dist/core/validators/StdioServerValidator.js +1 -281
  80. package/dist/core/validators/StdioServerValidator.js.map +1 -0
  81. package/dist/index.js +1 -18
  82. package/dist/index.js.map +1 -0
  83. package/dist/services/InstallationService.js +1 -81
  84. package/dist/services/InstallationService.js.map +1 -0
  85. package/dist/services/MCPManager.js +1 -197
  86. package/dist/services/MCPManager.js.map +1 -0
  87. package/dist/services/RequirementService.js +1 -548
  88. package/dist/services/RequirementService.js.map +1 -0
  89. package/dist/services/ServerService.js +1 -127
  90. package/dist/services/ServerService.js.map +1 -0
  91. package/dist/services/TelemetryService.js +1 -53
  92. package/dist/services/TelemetryService.js.map +1 -0
  93. package/dist/utils/UpdateCheckTracker.js +1 -79
  94. package/dist/utils/UpdateCheckTracker.js.map +1 -0
  95. package/dist/utils/adoUtils.js +1 -254
  96. package/dist/utils/adoUtils.js.map +1 -0
  97. package/dist/utils/clientUtils.js +1 -65
  98. package/dist/utils/clientUtils.js.map +1 -0
  99. package/dist/utils/feedUtils.js +1 -28
  100. package/dist/utils/feedUtils.js.map +1 -0
  101. package/dist/utils/githubAuth.js +1 -177
  102. package/dist/utils/githubAuth.js.map +1 -0
  103. package/dist/utils/githubUtils.js +1 -125
  104. package/dist/utils/githubUtils.js.map +1 -0
  105. package/dist/utils/logger.js +1 -176
  106. package/dist/utils/logger.js.map +1 -0
  107. package/dist/utils/macroExpressionUtils.js +1 -93
  108. package/dist/utils/macroExpressionUtils.js.map +1 -0
  109. package/dist/utils/osUtils.js +1 -664
  110. package/dist/utils/osUtils.js.map +1 -0
  111. package/dist/utils/versionUtils.js +1 -101
  112. package/dist/utils/versionUtils.js.map +1 -0
  113. package/dist/web/contract/serverContract.js +1 -1
  114. package/dist/web/contract/serverContract.js.map +1 -0
  115. package/dist/web/public/js/api.js +2 -132
  116. package/dist/web/public/js/api.js.map +1 -0
  117. package/dist/web/public/js/detailsWidget.js +2 -264
  118. package/dist/web/public/js/detailsWidget.js.map +1 -0
  119. package/dist/web/public/js/flights/flights.js +2 -127
  120. package/dist/web/public/js/flights/flights.js.map +1 -0
  121. package/dist/web/public/js/modal/index.js +2 -52
  122. package/dist/web/public/js/modal/index.js.map +1 -0
  123. package/dist/web/public/js/modal/installModal.js +2 -162
  124. package/dist/web/public/js/modal/installModal.js.map +1 -0
  125. package/dist/web/public/js/modal/installation.js +2 -266
  126. package/dist/web/public/js/modal/installation.js.map +1 -0
  127. package/dist/web/public/js/modal/loadingModal.js +2 -182
  128. package/dist/web/public/js/modal/loadingModal.js.map +1 -0
  129. package/dist/web/public/js/modal/modalSetup.js +2 -595
  130. package/dist/web/public/js/modal/modalSetup.js.map +1 -0
  131. package/dist/web/public/js/modal/modalUtils.js +2 -37
  132. package/dist/web/public/js/modal/modalUtils.js.map +1 -0
  133. package/dist/web/public/js/modal/versionUtils.js +2 -20
  134. package/dist/web/public/js/modal/versionUtils.js.map +1 -0
  135. package/dist/web/public/js/modal.js +2 -42
  136. package/dist/web/public/js/modal.js.map +1 -0
  137. package/dist/web/public/js/notifications.js +2 -137
  138. package/dist/web/public/js/notifications.js.map +1 -0
  139. package/dist/web/public/js/onboard/formProcessor.js +2 -1037
  140. package/dist/web/public/js/onboard/formProcessor.js.map +1 -0
  141. package/dist/web/public/js/onboard/index.js +2 -374
  142. package/dist/web/public/js/onboard/index.js.map +1 -0
  143. package/dist/web/public/js/onboard/publishHandler.js +2 -172
  144. package/dist/web/public/js/onboard/publishHandler.js.map +1 -0
  145. package/dist/web/public/js/onboard/state.js +2 -76
  146. package/dist/web/public/js/onboard/state.js.map +1 -0
  147. package/dist/web/public/js/onboard/templates.js +2 -342
  148. package/dist/web/public/js/onboard/templates.js.map +1 -0
  149. package/dist/web/public/js/onboard/uiHandlers.js +2 -1076
  150. package/dist/web/public/js/onboard/uiHandlers.js.map +1 -0
  151. package/dist/web/public/js/onboard/validationHandlers.js +2 -493
  152. package/dist/web/public/js/onboard/validationHandlers.js.map +1 -0
  153. package/dist/web/public/js/serverCategoryDetails.js +2 -364
  154. package/dist/web/public/js/serverCategoryDetails.js.map +1 -0
  155. package/dist/web/public/js/serverCategoryList.js +2 -241
  156. package/dist/web/public/js/serverCategoryList.js.map +1 -0
  157. package/dist/web/public/js/settings.js +2 -314
  158. package/dist/web/public/js/settings.js.map +1 -0
  159. package/dist/web/server.js +1 -404
  160. package/dist/web/server.js.map +1 -0
  161. package/package.json +8 -2
  162. package/.github/ISSUE_TEMPLATE/JitAccess.yml +0 -28
  163. package/.github/acl/access.yml +0 -20
  164. package/.github/compliance/inventory.yml +0 -5
  165. package/.github/policies/jit.yml +0 -19
  166. package/.github/workflows/build.yml +0 -28
  167. package/.roo/rules-code/rules.md +0 -88
  168. package/dist/cli/commands/start.d.ts +0 -2
  169. package/dist/cli/commands/start.js +0 -32
  170. package/dist/cli/commands/sync.d.ts +0 -2
  171. package/dist/cli/commands/sync.js +0 -17
  172. package/dist/core/ConfigurationLoader.d.ts +0 -32
  173. package/dist/core/ConfigurationLoader.js +0 -236
  174. package/dist/core/ConfigurationProvider.d.ts +0 -35
  175. package/dist/core/ConfigurationProvider.js +0 -375
  176. package/dist/core/InstallationService.d.ts +0 -50
  177. package/dist/core/InstallationService.js +0 -350
  178. package/dist/core/MCPManager.d.ts +0 -28
  179. package/dist/core/MCPManager.js +0 -188
  180. package/dist/core/RequirementService.d.ts +0 -40
  181. package/dist/core/RequirementService.js +0 -110
  182. package/dist/core/ServerSchemaLoader.d.ts +0 -11
  183. package/dist/core/ServerSchemaLoader.js +0 -43
  184. package/dist/core/ServerSchemaProvider.d.ts +0 -17
  185. package/dist/core/ServerSchemaProvider.js +0 -120
  186. package/dist/core/constants.d.ts +0 -47
  187. package/dist/core/constants.js +0 -94
  188. package/dist/core/installers/BaseInstaller.d.ts +0 -74
  189. package/dist/core/installers/BaseInstaller.js +0 -253
  190. package/dist/core/installers/ClientInstaller.d.ts +0 -23
  191. package/dist/core/installers/ClientInstaller.js +0 -564
  192. package/dist/core/installers/CommandInstaller.d.ts +0 -37
  193. package/dist/core/installers/CommandInstaller.js +0 -173
  194. package/dist/core/installers/GeneralInstaller.d.ts +0 -33
  195. package/dist/core/installers/GeneralInstaller.js +0 -85
  196. package/dist/core/installers/InstallerFactory.d.ts +0 -54
  197. package/dist/core/installers/InstallerFactory.js +0 -97
  198. package/dist/core/installers/NpmInstaller.d.ts +0 -26
  199. package/dist/core/installers/NpmInstaller.js +0 -127
  200. package/dist/core/installers/PipInstaller.d.ts +0 -28
  201. package/dist/core/installers/PipInstaller.js +0 -127
  202. package/dist/core/installers/RequirementInstaller.d.ts +0 -33
  203. package/dist/core/installers/RequirementInstaller.js +0 -3
  204. package/dist/core/types.d.ts +0 -166
  205. package/dist/core/types.js +0 -16
  206. package/dist/services/InstallRequestValidator.d.ts +0 -21
  207. package/dist/services/InstallRequestValidator.js +0 -99
  208. package/dist/web/public/js/modal/installHandler.js +0 -227
  209. package/dist/web/public/js/modal/loadingUI.js +0 -74
  210. package/dist/web/public/js/modal/messageQueue.js +0 -112
  211. package/dist/web/public/js/modal/modalUI.js +0 -214
  212. package/dist/web/public/js/modal/version.js +0 -20
  213. package/dist/web/public/js/onboard/ONBOARDING_PAGE_DESIGN.md +0 -370
  214. package/docs/ONBOARDING_PAGE_DESIGN.md +0 -260
  215. package/docs/Telemetry.md +0 -136
  216. package/memory-bank/activeContext.md +0 -26
  217. package/memory-bank/decisionLog.md +0 -91
  218. package/memory-bank/productContext.md +0 -41
  219. package/memory-bank/progress.md +0 -35
  220. package/memory-bank/systemPatterns.md +0 -10
  221. package/src/cli/commands/install.ts +0 -139
  222. package/src/cli/commands/list.ts +0 -113
  223. package/src/cli/commands/pull.ts +0 -16
  224. package/src/cli/commands/serve.ts +0 -39
  225. package/src/cli/commands/uninstall.ts +0 -64
  226. package/src/cli/index.ts +0 -82
  227. package/src/core/installers/clients/BaseClientInstaller.ts +0 -341
  228. package/src/core/installers/clients/ClientInstaller.ts +0 -222
  229. package/src/core/installers/clients/ClientInstallerFactory.ts +0 -43
  230. package/src/core/installers/clients/ClineInstaller.ts +0 -35
  231. package/src/core/installers/clients/ExtensionInstaller.ts +0 -165
  232. package/src/core/installers/clients/GithubCopilotInstaller.ts +0 -79
  233. package/src/core/installers/clients/MSRooCodeInstaller.ts +0 -32
  234. package/src/core/installers/index.ts +0 -11
  235. package/src/core/installers/requirements/BaseInstaller.ts +0 -85
  236. package/src/core/installers/requirements/CommandInstaller.ts +0 -231
  237. package/src/core/installers/requirements/GeneralInstaller.ts +0 -133
  238. package/src/core/installers/requirements/InstallerFactory.ts +0 -114
  239. package/src/core/installers/requirements/NpmInstaller.ts +0 -271
  240. package/src/core/installers/requirements/NugetInstaller.ts +0 -203
  241. package/src/core/installers/requirements/PipInstaller.ts +0 -207
  242. package/src/core/installers/requirements/RequirementInstaller.ts +0 -42
  243. package/src/core/loaders/ConfigurationLoader.ts +0 -298
  244. package/src/core/loaders/ConfigurationProvider.ts +0 -462
  245. package/src/core/loaders/InstallOperationManager.ts +0 -367
  246. package/src/core/loaders/ServerSchemaLoader.ts +0 -117
  247. package/src/core/loaders/ServerSchemaProvider.ts +0 -99
  248. package/src/core/loaders/SystemSettingsManager.ts +0 -278
  249. package/src/core/metadatas/constants.ts +0 -122
  250. package/src/core/metadatas/recordingConstants.ts +0 -65
  251. package/src/core/metadatas/types.ts +0 -202
  252. package/src/core/onboard/FeedOnboardService.ts +0 -501
  253. package/src/core/onboard/OnboardProcessor.ts +0 -356
  254. package/src/core/onboard/OnboardStatus.ts +0 -60
  255. package/src/core/onboard/OnboardStatusManager.ts +0 -416
  256. package/src/core/validators/FeedValidator.ts +0 -135
  257. package/src/core/validators/IServerValidator.ts +0 -21
  258. package/src/core/validators/SSEServerValidator.ts +0 -43
  259. package/src/core/validators/ServerValidatorFactory.ts +0 -51
  260. package/src/core/validators/StdioServerValidator.ts +0 -313
  261. package/src/index.ts +0 -44
  262. package/src/services/InstallationService.ts +0 -102
  263. package/src/services/MCPManager.ts +0 -249
  264. package/src/services/RequirementService.ts +0 -627
  265. package/src/services/ServerService.ts +0 -161
  266. package/src/services/TelemetryService.ts +0 -59
  267. package/src/utils/UpdateCheckTracker.ts +0 -86
  268. package/src/utils/adoUtils.ts +0 -293
  269. package/src/utils/clientUtils.ts +0 -72
  270. package/src/utils/feedUtils.ts +0 -31
  271. package/src/utils/githubAuth.ts +0 -212
  272. package/src/utils/githubUtils.ts +0 -164
  273. package/src/utils/logger.ts +0 -195
  274. package/src/utils/macroExpressionUtils.ts +0 -104
  275. package/src/utils/osUtils.ts +0 -700
  276. package/src/utils/versionUtils.ts +0 -114
  277. package/src/web/contract/serverContract.ts +0 -74
  278. package/src/web/public/css/detailsWidget.css +0 -235
  279. package/src/web/public/css/modal.css +0 -757
  280. package/src/web/public/css/notifications.css +0 -101
  281. package/src/web/public/css/onboard.css +0 -107
  282. package/src/web/public/css/serverCategoryList.css +0 -120
  283. package/src/web/public/css/serverDetails.css +0 -139
  284. package/src/web/public/index.html +0 -359
  285. package/src/web/public/js/api.js +0 -132
  286. package/src/web/public/js/detailsWidget.js +0 -264
  287. package/src/web/public/js/flights/flights.js +0 -127
  288. package/src/web/public/js/modal/index.js +0 -52
  289. package/src/web/public/js/modal/installModal.js +0 -162
  290. package/src/web/public/js/modal/installation.js +0 -266
  291. package/src/web/public/js/modal/loadingModal.js +0 -182
  292. package/src/web/public/js/modal/modalSetup.js +0 -595
  293. package/src/web/public/js/modal/modalUtils.js +0 -37
  294. package/src/web/public/js/modal/versionUtils.js +0 -20
  295. package/src/web/public/js/modal.js +0 -42
  296. package/src/web/public/js/notifications.js +0 -137
  297. package/src/web/public/js/onboard/formProcessor.js +0 -1037
  298. package/src/web/public/js/onboard/index.js +0 -374
  299. package/src/web/public/js/onboard/publishHandler.js +0 -172
  300. package/src/web/public/js/onboard/state.js +0 -76
  301. package/src/web/public/js/onboard/templates.js +0 -342
  302. package/src/web/public/js/onboard/uiHandlers.js +0 -1076
  303. package/src/web/public/js/onboard/validationHandlers.js +0 -493
  304. package/src/web/public/js/serverCategoryDetails.js +0 -364
  305. package/src/web/public/js/serverCategoryList.js +0 -241
  306. package/src/web/public/js/settings.js +0 -314
  307. package/src/web/public/modal.html +0 -84
  308. package/src/web/public/onboard.html +0 -296
  309. package/src/web/public/settings.html +0 -135
  310. package/src/web/public/styles.css +0 -277
  311. package/src/web/server.ts +0 -478
  312. package/tsconfig.json +0 -18
  313. package/wiki/Installation.md +0 -3
  314. package/wiki/Publish.md +0 -3
@@ -1,257 +1,2 @@
1
- import fs from 'fs/promises';
2
- import path from 'path';
3
- import { SETTINGS_DIR } from '../metadatas/constants.js';
4
- import { Logger } from '../../utils/logger.js';
5
- import { getSystemPythonExecutablePath, getNpmExecutablePath, getBrowserPath } from '../../utils/osUtils.js';
6
- const SETTINGS_FILE_NAME = 'system_settings.json';
7
- const SETTINGS_FILE_PATH = path.join(SETTINGS_DIR, 'settings', SETTINGS_FILE_NAME);
8
- export class SystemSettingsManager {
9
- static instance;
10
- settings;
11
- settingsFilePath;
12
- settingsLock = Promise.resolve();
13
- constructor() {
14
- this.settingsFilePath = SETTINGS_FILE_PATH;
15
- this.settings = {};
16
- // No await here, initialization is best-effort. Lock will protect subsequent calls.
17
- this.loadSettings().catch(error => {
18
- Logger.error('Failed to initialize SystemSettingsManager during construction:', error);
19
- // Initialize with empty settings if load fails, defaults will be applied on first access
20
- this.settings = {};
21
- });
22
- }
23
- static getInstance() {
24
- if (!SystemSettingsManager.instance) {
25
- SystemSettingsManager.instance = new SystemSettingsManager();
26
- }
27
- return SystemSettingsManager.instance;
28
- }
29
- async withLock(operation) {
30
- const currentLock = this.settingsLock;
31
- let releaseLock;
32
- this.settingsLock = new Promise(resolve => releaseLock = resolve);
33
- try {
34
- await currentLock;
35
- return await operation();
36
- }
37
- finally {
38
- releaseLock();
39
- }
40
- }
41
- // Internal method without lock
42
- async _loadSettingsInternal() {
43
- try {
44
- await fs.mkdir(path.dirname(this.settingsFilePath), { recursive: true });
45
- const data = await fs.readFile(this.settingsFilePath, 'utf-8');
46
- this.settings = JSON.parse(data);
47
- await this._applyDefaultsIfNeededInternal(); // Call internal version
48
- }
49
- catch (error) {
50
- if (error.code === 'ENOENT') {
51
- Logger.info(`Settings file not found at ${this.settingsFilePath}. Initializing with defaults.`);
52
- this.settings = {};
53
- await this._applyDefaultsIfNeededInternal(); // Call internal version
54
- }
55
- else {
56
- Logger.error(`Error loading settings from ${this.settingsFilePath}:`, error);
57
- this.settings = {};
58
- await this._applyDefaultsIfNeededInternal(); // Call internal version
59
- }
60
- }
61
- }
62
- /**
63
- * Loads settings from the file. This operation is atomic.
64
- * If the settings file doesn't exist, it initializes with defaults and creates the file.
65
- * @returns A promise that resolves when settings are loaded.
66
- */
67
- async loadSettings() {
68
- return this.withLock(() => this._loadSettingsInternal());
69
- }
70
- // Internal method without lock
71
- async _applyDefaultsIfNeededInternal() {
72
- let updated = false;
73
- const normalizePath = (p) => p ? p.replace(/\\/g, '/') : undefined;
74
- if (!this.settings.pythonEnvs) {
75
- this.settings.pythonEnvs = {};
76
- updated = true;
77
- }
78
- if (!this.settings.pythonEnvs["system"]) {
79
- try {
80
- const pythonPath = normalizePath(await getSystemPythonExecutablePath() || undefined);
81
- if (pythonPath) {
82
- this.settings.pythonEnvs["system"] = pythonPath;
83
- updated = true;
84
- }
85
- }
86
- catch (e) {
87
- Logger.warn(`Could not get default pythonEnv: ${e}`);
88
- }
89
- }
90
- if (!this.settings.nodePath) {
91
- try {
92
- const npmExecDir = await getNpmExecutablePath();
93
- let nodeExecutable = process.platform === 'win32' ? 'node.exe' : 'node';
94
- const platformNodePath = process.platform === 'win32'
95
- ? path.join(npmExecDir || '', nodeExecutable)
96
- : path.join(npmExecDir || '', 'bin', nodeExecutable);
97
- this.settings.nodePath = npmExecDir ? normalizePath(platformNodePath) : undefined;
98
- if (this.settings.nodePath)
99
- updated = true;
100
- }
101
- catch (e) {
102
- Logger.warn(`Could not get default nodePath: ${e}`);
103
- }
104
- }
105
- else {
106
- this.settings.nodePath = normalizePath(this.settings.nodePath);
107
- }
108
- if (!this.settings.browserPath) {
109
- try {
110
- this.settings.browserPath = normalizePath(await getBrowserPath() || undefined);
111
- if (this.settings.browserPath)
112
- updated = true;
113
- }
114
- catch (e) {
115
- Logger.warn(`Could not get default browserPath: ${e}`);
116
- }
117
- }
118
- else {
119
- this.settings.browserPath = normalizePath(this.settings.browserPath);
120
- }
121
- if (!this.settings.systemEnvironments) {
122
- this.settings.systemEnvironments = { ...process.env };
123
- updated = true;
124
- }
125
- if (this.settings.userConfigurations === undefined) {
126
- this.settings.userConfigurations = {};
127
- updated = true;
128
- }
129
- if (updated) {
130
- await this._saveSettingsInternal();
131
- }
132
- }
133
- /**
134
- * Applies default values to settings if they are not already set.
135
- * This operation is atomic and saves settings if defaults are applied.
136
- * @returns A promise that resolves when defaults are applied and saved if necessary.
137
- */
138
- async applyDefaultsIfNeeded() {
139
- return this.withLock(() => this._applyDefaultsIfNeededInternal());
140
- }
141
- /**
142
- * Retrieves the current system settings.
143
- * If settings haven't been loaded or are empty, it attempts to load them.
144
- * Paths within the settings are normalized (e.g., backslashes to forward slashes).
145
- * @returns A promise that resolves to the `SystemSettings` object.
146
- */
147
- async getSystemSettings() {
148
- // Ensure settings are loaded if they are empty.
149
- if (Object.keys(this.settings).length === 0) {
150
- // Use the public, locked version of loadSettings here
151
- await this.loadSettings();
152
- }
153
- // Return a deep copy to prevent external modification of the internal state.
154
- // Ensure this.settings is used, not a potentially stale local copy.
155
- const settingsToReturn = JSON.parse(JSON.stringify(this.settings));
156
- // Ensure paths are normalized when retrieved
157
- const normalizedSettings = { ...settingsToReturn };
158
- // Normalize paths in pythonEnvs
159
- if (normalizedSettings.pythonEnvs) {
160
- const normalizedPythonEnvs = {};
161
- Object.keys(normalizedSettings.pythonEnvs).forEach(key => {
162
- normalizedPythonEnvs[key] = normalizedSettings.pythonEnvs?.[key]?.replace(/\\/g, '/') || '';
163
- });
164
- normalizedSettings.pythonEnvs = normalizedPythonEnvs;
165
- }
166
- normalizedSettings.nodePath = normalizedSettings.nodePath?.replace(/\\/g, '/');
167
- normalizedSettings.browserPath = normalizedSettings.browserPath?.replace(/\\/g, '/');
168
- return normalizedSettings;
169
- }
170
- /**
171
- * Creates or updates system settings with the provided partial settings.
172
- * This operation is atomic and protected by a lock.
173
- * It loads existing settings if not already loaded, merges the new settings,
174
- * applies any necessary defaults, and then saves the updated settings.
175
- * @param newSettings A `Partial<SystemSettings>` object containing the settings to update.
176
- * @returns A promise that resolves to the fully updated and normalized `SystemSettings`.
177
- */
178
- async createOrUpdateSystemSettings(newSettings) {
179
- return this.withLock(async () => {
180
- // Ensure current settings are loaded before modification by calling the internal, non-locking version
181
- if (Object.keys(this.settings).length === 0) {
182
- await this._loadSettingsInternal();
183
- }
184
- const normalizePath = (p) => p ? p.replace(/\\/g, '/') : undefined;
185
- // Initialize pythonEnvs if it doesn't exist on the current settings
186
- if (!this.settings.pythonEnvs) {
187
- this.settings.pythonEnvs = {};
188
- }
189
- // Create a new settings object by merging current and new settings.
190
- const updatedSettings = {
191
- ...this.settings, // Start with current settings
192
- ...newSettings, // Override with new settings
193
- // Explicitly handle potentially undefined paths from newSettings
194
- nodePath: normalizePath(newSettings.nodePath !== undefined ? newSettings.nodePath : this.settings.nodePath),
195
- browserPath: normalizePath(newSettings.browserPath !== undefined ? newSettings.browserPath : this.settings.browserPath),
196
- // Ensure systemEnvironments and userConfigurations are properly merged or taken from newSettings
197
- systemEnvironments: newSettings.systemEnvironments !== undefined
198
- ? newSettings.systemEnvironments
199
- : this.settings.systemEnvironments, // Keep existing if not in newSettings
200
- userConfigurations: newSettings.userConfigurations !== undefined
201
- ? newSettings.userConfigurations
202
- : this.settings.userConfigurations || {}, // Keep existing or default to empty
203
- };
204
- this.settings = updatedSettings;
205
- // Call the internal, non-locking version of applyDefaultsIfNeeded
206
- await this._applyDefaultsIfNeededInternal();
207
- // _applyDefaultsIfNeededInternal will call _saveSettingsInternal if it makes changes.
208
- // However, if newSettings were provided that didn't trigger a change in _applyDefaultsIfNeededInternal
209
- // (e.g., just updating an existing path), we still need to save.
210
- // So, always call _saveSettingsInternal to persist all merged changes.
211
- await this._saveSettingsInternal();
212
- Logger.info('System settings updated.');
213
- // getSystemSettings will handle its own locking if it needs to load.
214
- return this.getSystemSettings();
215
- });
216
- }
217
- /**
218
- * Internal method to save settings to the file without acquiring a lock.
219
- * Assumes the lock is already held by the calling public method.
220
- * Normalizes paths before saving.
221
- * @returns A promise that resolves when settings are written to disk.
222
- */
223
- async _saveSettingsInternal() {
224
- try {
225
- // Normalize paths before saving
226
- const settingsToSave = { ...this.settings };
227
- settingsToSave.nodePath = settingsToSave.nodePath?.replace(/\\/g, '/');
228
- settingsToSave.browserPath = settingsToSave.browserPath?.replace(/\\/g, '/');
229
- if (settingsToSave.pythonEnvs) {
230
- const normalizedPythonEnvs = {};
231
- Object.keys(settingsToSave.pythonEnvs).forEach(key => {
232
- normalizedPythonEnvs[key] = settingsToSave.pythonEnvs?.[key]?.replace(/\\/g, '/') || '';
233
- });
234
- settingsToSave.pythonEnvs = normalizedPythonEnvs;
235
- }
236
- await fs.mkdir(path.dirname(this.settingsFilePath), { recursive: true });
237
- await fs.writeFile(this.settingsFilePath, JSON.stringify(settingsToSave, null, 2));
238
- Logger.info(`System settings saved to ${this.settingsFilePath}`);
239
- }
240
- catch (error) {
241
- Logger.error(`Error saving settings to ${this.settingsFilePath}:`, error);
242
- throw error; // Re-throw to indicate failure
243
- }
244
- }
245
- /**
246
- * Saves the current settings to the file. This operation is atomic and protected by a lock.
247
- * Paths are normalized before saving.
248
- * @returns A promise that resolves when the settings are saved.
249
- */
250
- async saveSettings() {
251
- await this.withLock(async () => {
252
- await this._saveSettingsInternal();
253
- });
254
- }
255
- }
256
- export const systemSettingsManager = SystemSettingsManager.getInstance();
1
+ import fs from"fs/promises";import path from"path";import{SETTINGS_DIR}from"../metadatas/constants.js";import{Logger}from"../../utils/logger.js";import{getSystemPythonExecutablePath,getNpmExecutablePath,getBrowserPath}from"../../utils/osUtils.js";const SETTINGS_FILE_NAME="system_settings.json",SETTINGS_FILE_PATH=path.join(SETTINGS_DIR,"settings",SETTINGS_FILE_NAME);export class SystemSettingsManager{static instance;settings;settingsFilePath;settingsLock=Promise.resolve();constructor(){this.settingsFilePath=SETTINGS_FILE_PATH,this.settings={},this.loadSettings().catch((t=>{Logger.error("Failed to initialize SystemSettingsManager during construction:",t),this.settings={}}))}static getInstance(){return SystemSettingsManager.instance||(SystemSettingsManager.instance=new SystemSettingsManager),SystemSettingsManager.instance}async withLock(t){const s=this.settingsLock;let e;this.settingsLock=new Promise((t=>e=t));try{return await s,await t()}finally{e()}}async _loadSettingsInternal(){try{await fs.mkdir(path.dirname(this.settingsFilePath),{recursive:!0});const t=await fs.readFile(this.settingsFilePath,"utf-8");this.settings=JSON.parse(t),await this._applyDefaultsIfNeededInternal()}catch(t){"ENOENT"===t.code?(Logger.info(`Settings file not found at ${this.settingsFilePath}. Initializing with defaults.`),this.settings={},await this._applyDefaultsIfNeededInternal()):(Logger.error(`Error loading settings from ${this.settingsFilePath}:`,t),this.settings={},await this._applyDefaultsIfNeededInternal())}}async loadSettings(){return this.withLock((()=>this._loadSettingsInternal()))}async _applyDefaultsIfNeededInternal(){let t=!1;const s=t=>t?t.replace(/\\/g,"/"):void 0;if(this.settings.pythonEnvs||(this.settings.pythonEnvs={},t=!0),!this.settings.pythonEnvs.system)try{const e=s(await getSystemPythonExecutablePath()||void 0);e&&(this.settings.pythonEnvs.system=e,t=!0)}catch(t){Logger.warn(`Could not get default pythonEnv: ${t}`)}if(this.settings.nodePath)this.settings.nodePath=s(this.settings.nodePath);else try{const e=await getNpmExecutablePath();let n="win32"===process.platform?"node.exe":"node";const i="win32"===process.platform?path.join(e||"",n):path.join(e||"","bin",n);this.settings.nodePath=e?s(i):void 0,this.settings.nodePath&&(t=!0)}catch(t){Logger.warn(`Could not get default nodePath: ${t}`)}if(this.settings.browserPath)this.settings.browserPath=s(this.settings.browserPath);else try{this.settings.browserPath=s(await getBrowserPath()||void 0),this.settings.browserPath&&(t=!0)}catch(t){Logger.warn(`Could not get default browserPath: ${t}`)}this.settings.systemEnvironments||(this.settings.systemEnvironments={...process.env},t=!0),void 0===this.settings.userConfigurations&&(this.settings.userConfigurations={},t=!0),t&&await this._saveSettingsInternal()}async applyDefaultsIfNeeded(){return this.withLock((()=>this._applyDefaultsIfNeededInternal()))}async getSystemSettings(){0===Object.keys(this.settings).length&&await this.loadSettings();const t={...JSON.parse(JSON.stringify(this.settings))};if(t.pythonEnvs){const s={};Object.keys(t.pythonEnvs).forEach((e=>{s[e]=t.pythonEnvs?.[e]?.replace(/\\/g,"/")||""})),t.pythonEnvs=s}return t.nodePath=t.nodePath?.replace(/\\/g,"/"),t.browserPath=t.browserPath?.replace(/\\/g,"/"),t}async createOrUpdateSystemSettings(t){return this.withLock((async()=>{0===Object.keys(this.settings).length&&await this._loadSettingsInternal();const s=t=>t?t.replace(/\\/g,"/"):void 0;this.settings.pythonEnvs||(this.settings.pythonEnvs={});const e={...this.settings,...t,nodePath:s(void 0!==t.nodePath?t.nodePath:this.settings.nodePath),browserPath:s(void 0!==t.browserPath?t.browserPath:this.settings.browserPath),systemEnvironments:void 0!==t.systemEnvironments?t.systemEnvironments:this.settings.systemEnvironments,userConfigurations:void 0!==t.userConfigurations?t.userConfigurations:this.settings.userConfigurations||{}};return this.settings=e,await this._applyDefaultsIfNeededInternal(),await this._saveSettingsInternal(),Logger.info("System settings updated."),this.getSystemSettings()}))}async _saveSettingsInternal(){try{const t={...this.settings};if(t.nodePath=t.nodePath?.replace(/\\/g,"/"),t.browserPath=t.browserPath?.replace(/\\/g,"/"),t.pythonEnvs){const s={};Object.keys(t.pythonEnvs).forEach((e=>{s[e]=t.pythonEnvs?.[e]?.replace(/\\/g,"/")||""})),t.pythonEnvs=s}await fs.mkdir(path.dirname(this.settingsFilePath),{recursive:!0}),await fs.writeFile(this.settingsFilePath,JSON.stringify(t,null,2)),Logger.info(`System settings saved to ${this.settingsFilePath}`)}catch(t){throw Logger.error(`Error saving settings to ${this.settingsFilePath}:`,t),t}}async saveSettings(){await this.withLock((async()=>{await this._saveSettingsInternal()}))}}export const systemSettingsManager=SystemSettingsManager.getInstance();
257
2
  //# sourceMappingURL=SystemSettingsManager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["fs","path","SETTINGS_DIR","Logger","getSystemPythonExecutablePath","getNpmExecutablePath","getBrowserPath","SETTINGS_FILE_NAME","SETTINGS_FILE_PATH","join","SystemSettingsManager","static","settings","settingsFilePath","settingsLock","Promise","resolve","constructor","this","loadSettings","catch","error","getInstance","instance","withLock","operation","currentLock","releaseLock","_loadSettingsInternal","mkdir","dirname","recursive","data","readFile","JSON","parse","_applyDefaultsIfNeededInternal","code","info","updated","normalizePath","p","replace","undefined","pythonEnvs","pythonPath","e","warn","nodePath","npmExecDir","nodeExecutable","process","platform","platformNodePath","browserPath","systemEnvironments","env","userConfigurations","_saveSettingsInternal","applyDefaultsIfNeeded","getSystemSettings","Object","keys","length","normalizedSettings","stringify","normalizedPythonEnvs","forEach","key","createOrUpdateSystemSettings","newSettings","async","updatedSettings","settingsToSave","writeFile","saveSettings","systemSettingsManager"],"sources":["../../../src/core/loaders/SystemSettingsManager.ts"],"mappings":"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","ignoreList":[]}
@@ -1,101 +1,2 @@
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
- /**
31
- * Path to the user information file
32
- */
33
- export const USER_INFO_PATH = path.join(SETTINGS_DIR, 'settings', 'user_info.json');
34
- /**
35
- * Path to the local feeds schema directory
36
- */
37
- export const LOCAL_FEEDS_SCHEMA_DIR = path.join(LOCAL_FEEDS_DIR, 'schemas');
38
- const CODE_STRORAGE_DIR = (() => {
39
- switch (process.platform) {
40
- case 'win32':
41
- return path.join(os.homedir(), 'AppData', 'Roaming', 'Code', 'User');
42
- case 'darwin': // macOS
43
- return path.join(os.homedir(), 'Library', 'Application Support', 'Code', 'User');
44
- default: // linux
45
- return path.join(os.homedir(), '.config', 'Code', 'User');
46
- }
47
- })();
48
- const CODE_INSIDER_STRORAGE_DIR = (() => {
49
- switch (process.platform) {
50
- case 'win32':
51
- return path.join(os.homedir(), 'AppData', 'Roaming', 'Code - Insiders', 'User');
52
- case 'darwin': // macOS
53
- return path.join(os.homedir(), 'Library', 'Application Support', 'Code - Insiders', 'User');
54
- default: // linux
55
- return path.join(os.homedir(), '.config', 'Code - Insiders', 'User');
56
- }
57
- })();
58
- /**
59
- * Supported client configurations.
60
- * Key: Client name (e.g., 'vscode')
61
- * Value: Client-specific settings or configuration details.
62
- * TODO: Define actual client settings structure.
63
- */
64
- export const SUPPORTED_CLIENTS = {
65
- 'MSRooCode': {
66
- extension: {
67
- extensionId: 'microsoftai.ms-roo-cline',
68
- leastVersion: '0.0.8',
69
- repository: 'ai-microsoft/roo-cline',
70
- assetName: 'ms-roo-cline-${version}.vsix',
71
- private: true
72
- },
73
- codeSettingPath: path.join(CODE_STRORAGE_DIR, 'globalStorage', 'microsoftai.ms-roo-cline', 'settings', 'cline_mcp_settings.json'),
74
- codeInsiderSettingPath: path.join(CODE_INSIDER_STRORAGE_DIR, 'globalStorage', 'microsoftai.ms-roo-cline', 'settings', 'cline_mcp_settings.json'),
75
- },
76
- 'Cline': {
77
- extension: {
78
- extensionId: 'saoudrizwan.claude-dev',
79
- },
80
- codeSettingPath: path.join(CODE_STRORAGE_DIR, 'globalStorage', 'saoudrizwan.claude-dev', 'settings', 'cline_mcp_settings.json'),
81
- codeInsiderSettingPath: path.join(CODE_INSIDER_STRORAGE_DIR, 'globalStorage', 'saoudrizwan.claude-dev', 'settings', 'cline_mcp_settings.json'),
82
- },
83
- 'GithubCopilot': {
84
- extension: {
85
- extensionId: 'github.copilot',
86
- },
87
- codeSettingPath: path.join(CODE_STRORAGE_DIR, 'settings.json'),
88
- codeInsiderSettingPath: path.join(CODE_INSIDER_STRORAGE_DIR, 'settings.json'),
89
- },
90
- // Add other supported clients here
91
- };
92
- /**
93
- * List of supported client names.
94
- */
95
- export const SUPPORTED_CLIENT_NAMES = Object.keys(SUPPORTED_CLIENTS);
96
- /**
97
- * Minimum time between requirement update checks (in milliseconds)
98
- * 10 minutes = 10 * 60 * 1000 = 600000 ms
99
- */
100
- export const UPDATE_CHECK_INTERVAL_MS = 10 * 60 * 1000; // 10 minutes
1
+ import os from"os";import path from"path";export const GITHUB_REPO={url:"https://github.com/ai-microsoft/imcp-feed.git",repoName:"ai-microsoft/imcp-feed",feedsPath:"feeds",feedAssetsName:"imcp-feeds-${latest}.zip"};export const SETTINGS_DIR=(process.platform,path.join(os.homedir(),".imcp"));export const LOCAL_FEEDS_DIR=path.join(SETTINGS_DIR,"feeds");export const USER_INFO_PATH=path.join(SETTINGS_DIR,"settings","user_info.json");export const LOCAL_FEEDS_SCHEMA_DIR=path.join(LOCAL_FEEDS_DIR,"schemas");const CODE_STRORAGE_DIR=(()=>{switch(process.platform){case"win32":return path.join(os.homedir(),"AppData","Roaming","Code","User");case"darwin":return path.join(os.homedir(),"Library","Application Support","Code","User");default:return path.join(os.homedir(),".config","Code","User")}})(),CODE_INSIDER_STRORAGE_DIR=(()=>{switch(process.platform){case"win32":return path.join(os.homedir(),"AppData","Roaming","Code - Insiders","User");case"darwin":return path.join(os.homedir(),"Library","Application Support","Code - Insiders","User");default:return path.join(os.homedir(),".config","Code - Insiders","User")}})();export const SUPPORTED_CLIENTS={MSRooCode:{extension:{extensionId:"microsoftai.ms-roo-cline",leastVersion:"0.0.8",repository:"ai-microsoft/roo-cline",assetName:"ms-roo-cline-${version}.vsix",private:!0},codeSettingPath:path.join(CODE_STRORAGE_DIR,"globalStorage","microsoftai.ms-roo-cline","settings","cline_mcp_settings.json"),codeInsiderSettingPath:path.join(CODE_INSIDER_STRORAGE_DIR,"globalStorage","microsoftai.ms-roo-cline","settings","cline_mcp_settings.json")},Cline:{extension:{extensionId:"saoudrizwan.claude-dev"},codeSettingPath:path.join(CODE_STRORAGE_DIR,"globalStorage","saoudrizwan.claude-dev","settings","cline_mcp_settings.json"),codeInsiderSettingPath:path.join(CODE_INSIDER_STRORAGE_DIR,"globalStorage","saoudrizwan.claude-dev","settings","cline_mcp_settings.json")},GithubCopilot:{extension:{extensionId:"github.copilot"},codeSettingPath:path.join(CODE_STRORAGE_DIR,"settings.json"),codeInsiderSettingPath:path.join(CODE_INSIDER_STRORAGE_DIR,"settings.json")}};export const SUPPORTED_CLIENT_NAMES=Object.keys(SUPPORTED_CLIENTS);export const UPDATE_CHECK_INTERVAL_MS=6e5;
101
2
  //# sourceMappingURL=constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["os","path","GITHUB_REPO","url","repoName","feedsPath","feedAssetsName","SETTINGS_DIR","process","platform","join","homedir","LOCAL_FEEDS_DIR","USER_INFO_PATH","LOCAL_FEEDS_SCHEMA_DIR","CODE_STRORAGE_DIR","CODE_INSIDER_STRORAGE_DIR","SUPPORTED_CLIENTS","MSRooCode","extension","extensionId","leastVersion","repository","assetName","private","codeSettingPath","codeInsiderSettingPath","Cline","GithubCopilot","SUPPORTED_CLIENT_NAMES","Object","keys","UPDATE_CHECK_INTERVAL_MS"],"sources":["../../../src/core/metadatas/constants.ts"],"mappings":"OAAOA,OAAQ,YACRC,SAAU,cASV,MAAMC,YAAc,CACzBC,IAAK,gDACLC,SAAU,yBACVC,UAAW,QACXC,eAAgB,mCAMX,MAAMC,cACHC,QAAQC,SAILR,KAAKS,KAAKV,GAAGW,UAAW,iBAO9B,MAAMC,gBAAkBX,KAAKS,KAAKH,aAAc,gBAKhD,MAAMM,eAAiBZ,KAAKS,KAAKH,aAAc,WAAY,yBAK3D,MAAMO,uBAAyBb,KAAKS,KAAKE,gBAAiB,WAEjE,MAAMG,kBAAoB,MACxB,OAAQP,QAAQC,UACd,IAAK,QACH,OAAOR,KAAKS,KAAKV,GAAGW,UAAW,UAAW,UAAW,OAAQ,QAC/D,IAAK,SACH,OAAOV,KAAKS,KAAKV,GAAGW,UAAW,UAAW,sBAAuB,OAAQ,QAC3E,QACE,OAAOV,KAAKS,KAAKV,GAAGW,UAAW,UAAW,OAAQ,QAEvD,EATyB,GAWpBK,0BAA4B,MAChC,OAAQR,QAAQC,UACd,IAAK,QACH,OAAOR,KAAKS,KAAKV,GAAGW,UAAW,UAAW,UAAW,kBAAmB,QAC1E,IAAK,SACH,OAAOV,KAAKS,KAAKV,GAAGW,UAAW,UAAW,sBAAuB,kBAAmB,QACtF,QACE,OAAOV,KAAKS,KAAKV,GAAGW,UAAW,UAAW,kBAAmB,QAElE,EATiC,UAiB3B,MAAMM,kBAUR,CACHC,UAAa,CAEXC,UAAW,CACTC,YAAa,2BACbC,aAAc,QACdC,WAAY,yBACZC,UAAW,+BACXC,SAAS,GAEXC,gBAAiBxB,KAAKS,KAAKK,kBAAmB,gBAAiB,2BAA4B,WAAY,2BACvGW,uBAAwBzB,KAAKS,KAAKM,0BAA2B,gBAAiB,2BAA4B,WAAY,4BAExHW,MAAS,CACPR,UAAW,CACTC,YAAa,0BAEfK,gBAAiBxB,KAAKS,KAAKK,kBAAmB,gBAAiB,yBAA0B,WAAY,2BACrGW,uBAAwBzB,KAAKS,KAAKM,0BAA2B,gBAAiB,yBAA0B,WAAY,4BAEtHY,cAAiB,CACfT,UAAW,CACTC,YAAa,kBAEfK,gBAAiBxB,KAAKS,KAAKK,kBAAmB,iBAC9CW,uBAAwBzB,KAAKS,KAAKM,0BAA2B,0BAQ1D,MAAMa,uBAAyBC,OAAOC,KAAKd,0BAM3C,MAAMe,yBAA2B","ignoreList":[]}
@@ -1,47 +1,2 @@
1
- /**
2
- * Step name constants for InstallOperationManager and step recording.
3
- *
4
- * This file defines all static step names and documents dynamic step name patterns
5
- * used throughout the installation and onboarding process.
6
- *
7
- * Dynamic step names are documented as template string patterns.
8
- */
9
- /** Step for processing all requirement updates in a batch operation. */
10
- export const STEP_PROCESS_REQUIREMENT_UPDATES = 'Processing all requirement updates';
11
- /** Step for checking the status of a specific requirement. */
12
- export const STEP_CHECKING_REQUIREMENT_STATUS = 'Checking the status of requirement';
13
- /** Step for installing requirements in the background process. */
14
- export const STEP_INSTALLING_REQUIREMENTS_IN_BACKGROUND = 'Installing requirements in the background';
15
- /** Step for running the install logic in the NugetInstaller. */
16
- export const STEP_NUGET_INSTALLER_INSTALL = 'Running install in NugetInstaller';
17
- /** Step for checking and installing all requirements as needed. */
18
- export const STEP_CHECK_AND_INSTALL_REQUIREMENTS = 'Checking and installing all requirements';
19
- /** Step for running the install logic in the CommandInstaller. */
20
- export const STEP_COMMAND_INSTALLER_INSTALL = 'Running install in CommandInstaller';
21
- /** Step for running the install logic in the GeneralInstaller. */
22
- export const STEP_GENERAL_INSTALLER_INSTALL = 'Running install in GeneralInstaller';
23
- /** Step for executing the actual installation command (npm, pip, etc.). */
24
- export const STEP_INSTALLATION_COMMAND_EXECUTION = 'Executing installation command for requirement';
25
- /** Step for running the install logic in the PipInstaller. */
26
- export const STEP_PIP_INSTALLER_INSTALL = 'Running install in PipInstaller';
27
- /** Step for processing requirement updates in the RequirementService. */
28
- export const STEP_PROCESS_REQUIREMENT_UPDATES_SERVICE = 'Processing requirement updates in RequirementService';
29
- /** Step for checking if the server is ready after installation. */
30
- export const STEP_CHECK_SERVER_READINESS = 'Checking server readiness after installation';
31
- /** Step for running the install logic in the NpmInstaller. */
32
- export const STEP_NPM_INSTALLER_INSTALL = 'Running install in NpmInstaller';
33
- /** Prefix for steps that update a specific requirement. */
34
- export const STEP_INSTALL_REQUIREMENT_PREFIX = 'Updating requirement:';
35
- /** Prefix for steps that execute an installation command for a requirement. */
36
- export const STEP_INSTALL_COMMAND_PREFIX = 'Executing installation command for:';
37
- /** Step for checking and installing the VS Code extension for the client. */
38
- export const STEP_CHECK_VSCODE_AND_INSTALL_EXTENSION = 'Checking and installing VS Code extension for client';
39
- /** Step for setting up the installation configuration (env, args, etc.). */
40
- export const STEP_SETUP_INSTALLATION_CONFIG = 'Setting up installation configuration';
41
- /** Step for updating VS Code settings for the client/server. */
42
- export const STEP_UPDATE_VSCODE_SETTINGS = 'Updating VS Code settings for client/server';
43
- /** Step for the overall installation process of a client or server. */
44
- export const STEP_INSTALLATION = 'Running overall installation process';
45
- /** Step for marking the initiation of an onboarding or installation process. */
46
- export const STEP_INITIATED = 'Initiating onboarding or installation process';
1
+ export const STEP_PROCESS_REQUIREMENT_UPDATES="Processing all requirement updates";export const STEP_CHECKING_REQUIREMENT_STATUS="Checking the status of requirement";export const STEP_INSTALLING_REQUIREMENTS_IN_BACKGROUND="Installing requirements in the background";export const STEP_NUGET_INSTALLER_INSTALL="Running install in NugetInstaller";export const STEP_CHECK_AND_INSTALL_REQUIREMENTS="Checking and installing all requirements";export const STEP_COMMAND_INSTALLER_INSTALL="Running install in CommandInstaller";export const STEP_GENERAL_INSTALLER_INSTALL="Running install in GeneralInstaller";export const STEP_INSTALLATION_COMMAND_EXECUTION="Executing installation command for requirement";export const STEP_PIP_INSTALLER_INSTALL="Running install in PipInstaller";export const STEP_PROCESS_REQUIREMENT_UPDATES_SERVICE="Processing requirement updates in RequirementService";export const STEP_CHECK_SERVER_READINESS="Checking server readiness after installation";export const STEP_NPM_INSTALLER_INSTALL="Running install in NpmInstaller";export const STEP_INSTALL_REQUIREMENT_PREFIX="Updating requirement:";export const STEP_INSTALL_COMMAND_PREFIX="Executing installation command for:";export const STEP_CHECK_VSCODE_AND_INSTALL_EXTENSION="Checking and installing VS Code extension for client";export const STEP_SETUP_INSTALLATION_CONFIG="Setting up installation configuration";export const STEP_UPDATE_VSCODE_SETTINGS="Updating VS Code settings for client/server";export const STEP_INSTALLATION="Running overall installation process";export const STEP_INITIATED="Initiating onboarding or installation process";
47
2
  //# sourceMappingURL=recordingConstants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["STEP_PROCESS_REQUIREMENT_UPDATES","STEP_CHECKING_REQUIREMENT_STATUS","STEP_INSTALLING_REQUIREMENTS_IN_BACKGROUND","STEP_NUGET_INSTALLER_INSTALL","STEP_CHECK_AND_INSTALL_REQUIREMENTS","STEP_COMMAND_INSTALLER_INSTALL","STEP_GENERAL_INSTALLER_INSTALL","STEP_INSTALLATION_COMMAND_EXECUTION","STEP_PIP_INSTALLER_INSTALL","STEP_PROCESS_REQUIREMENT_UPDATES_SERVICE","STEP_CHECK_SERVER_READINESS","STEP_NPM_INSTALLER_INSTALL","STEP_INSTALL_REQUIREMENT_PREFIX","STEP_INSTALL_COMMAND_PREFIX","STEP_CHECK_VSCODE_AND_INSTALL_EXTENSION","STEP_SETUP_INSTALLATION_CONFIG","STEP_UPDATE_VSCODE_SETTINGS","STEP_INSTALLATION","STEP_INITIATED"],"sources":["../../../src/core/metadatas/recordingConstants.ts"],"mappings":"OAUO,MAAMA,iCAAmC,4CAGzC,MAAMC,iCAAmC,4CAGzC,MAAMC,2CAA6C,mDAGnD,MAAMC,6BAA+B,2CAGrC,MAAMC,oCAAsC,kDAG5C,MAAMC,+BAAiC,6CAGvC,MAAMC,+BAAiC,6CAGvC,MAAMC,oCAAsC,wDAG5C,MAAMC,2BAA6B,yCAGnC,MAAMC,yCAA2C,8DAGjD,MAAMC,4BAA8B,sDAGpC,MAAMC,2BAA6B,yCAGnC,MAAMC,gCAAkC,+BAGxC,MAAMC,4BAA8B,6CAGpC,MAAMC,wCAA0C,8DAGhD,MAAMC,+BAAiC,+CAGvC,MAAMC,4BAA8B,qDAGpC,MAAMC,kBAAoB,8CAG1B,MAAMC,eAAiB","ignoreList":[]}
@@ -1,16 +1,2 @@
1
- export var OSType;
2
- (function (OSType) {
3
- OSType["Windows"] = "windows";
4
- OSType["MacOS"] = "macos";
5
- OSType["Linux"] = "linux";
6
- })(OSType || (OSType = {}));
7
- // Events that can be emitted by the SDK
8
- export var MCPEvent;
9
- (function (MCPEvent) {
10
- MCPEvent["SERVER_INSTALLED"] = "server:installed";
11
- MCPEvent["SERVER_UNINSTALLED"] = "server:uninstalled";
12
- MCPEvent["SERVER_STARTED"] = "server:started";
13
- MCPEvent["SERVER_STOPPED"] = "server:stopped";
14
- MCPEvent["CONFIG_CHANGED"] = "config:changed";
15
- })(MCPEvent || (MCPEvent = {}));
1
+ export var OSType;!function(e){e.Windows="windows",e.MacOS="macos",e.Linux="linux"}(OSType||(OSType={}));export var MCPEvent;!function(e){e.SERVER_INSTALLED="server:installed",e.SERVER_UNINSTALLED="server:uninstalled",e.SERVER_STARTED="server:started",e.SERVER_STOPPED="server:stopped",e.CONFIG_CHANGED="config:changed"}(MCPEvent||(MCPEvent={}));
16
2
  //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["OSType","MCPEvent"],"sources":["../../../src/core/metadatas/types.ts"],"mappings":"OAAA,IAAYA,QAAZ,SAAYA,GACVA,EAAA,kBACAA,EAAA,cACAA,EAAA,aACD,CAJD,CAAYA,gBAAM,YAoKlB,IAAYC,UAAZ,SAAYA,GACVA,EAAA,oCACAA,EAAA,wCACAA,EAAA,gCACAA,EAAA,gCACAA,EAAA,+BACD,CAND,CAAYA,oBAAQ","ignoreList":[]}