imcp 0.1.9 → 0.1.11

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 (102) hide show
  1. package/README.md +9 -4
  2. package/dist/cli/commands/list.js +1 -1
  3. package/dist/cli/commands/list.js.map +1 -1
  4. package/dist/cli/commands/pull.js +1 -1
  5. package/dist/cli/commands/pull.js.map +1 -1
  6. package/dist/cli/commands/serve.js +1 -1
  7. package/dist/cli/commands/serve.js.map +1 -1
  8. package/dist/cli/commands/uninstall.js +1 -1
  9. package/dist/cli/commands/uninstall.js.map +1 -1
  10. package/dist/cli/index.js +1 -1
  11. package/dist/cli/index.js.map +1 -1
  12. package/dist/core/installers/clients/BaseClientInstaller.js +1 -1
  13. package/dist/core/installers/clients/BaseClientInstaller.js.map +1 -1
  14. package/dist/core/installers/clients/ClientInstaller.js +1 -1
  15. package/dist/core/installers/clients/ClientInstaller.js.map +1 -1
  16. package/dist/core/installers/clients/ClientInstallerFactory.js +1 -1
  17. package/dist/core/installers/clients/ClientInstallerFactory.js.map +1 -1
  18. package/dist/core/installers/clients/VisualStudioInstaller.d.ts +51 -0
  19. package/dist/core/installers/clients/VisualStudioInstaller.js +2 -0
  20. package/dist/core/installers/clients/VisualStudioInstaller.js.map +1 -0
  21. package/dist/core/installers/requirements/CommandInstaller.js +1 -1
  22. package/dist/core/installers/requirements/CommandInstaller.js.map +1 -1
  23. package/dist/core/installers/requirements/GeneralInstaller.js +1 -1
  24. package/dist/core/installers/requirements/GeneralInstaller.js.map +1 -1
  25. package/dist/core/installers/requirements/NpmInstaller.d.ts +6 -0
  26. package/dist/core/installers/requirements/NpmInstaller.js +1 -1
  27. package/dist/core/installers/requirements/NpmInstaller.js.map +1 -1
  28. package/dist/core/installers/requirements/NugetInstaller.js +1 -1
  29. package/dist/core/installers/requirements/NugetInstaller.js.map +1 -1
  30. package/dist/core/installers/requirements/PipInstaller.js +1 -1
  31. package/dist/core/installers/requirements/PipInstaller.js.map +1 -1
  32. package/dist/core/loaders/ConfigurationLoader.js +1 -1
  33. package/dist/core/loaders/ConfigurationLoader.js.map +1 -1
  34. package/dist/core/loaders/ConfigurationProvider.d.ts +1 -1
  35. package/dist/core/loaders/ConfigurationProvider.js +1 -1
  36. package/dist/core/loaders/ConfigurationProvider.js.map +1 -1
  37. package/dist/core/loaders/InstallOperationManager.js +1 -1
  38. package/dist/core/loaders/InstallOperationManager.js.map +1 -1
  39. package/dist/core/loaders/SystemSettingsManager.js +1 -1
  40. package/dist/core/loaders/SystemSettingsManager.js.map +1 -1
  41. package/dist/core/metadatas/constants.d.ts +5 -1
  42. package/dist/core/metadatas/constants.js +1 -1
  43. package/dist/core/metadatas/constants.js.map +1 -1
  44. package/dist/core/metadatas/recordingConstants.d.ts +2 -0
  45. package/dist/core/metadatas/recordingConstants.js +1 -1
  46. package/dist/core/metadatas/recordingConstants.js.map +1 -1
  47. package/dist/core/onboard/FeedOnboardService.js +1 -1
  48. package/dist/core/onboard/FeedOnboardService.js.map +1 -1
  49. package/dist/core/onboard/OnboardStatusManager.js +1 -1
  50. package/dist/core/onboard/OnboardStatusManager.js.map +1 -1
  51. package/dist/core/validators/StdioServerValidator.js +1 -1
  52. package/dist/core/validators/StdioServerValidator.js.map +1 -1
  53. package/dist/services/InstallationService.js +1 -1
  54. package/dist/services/InstallationService.js.map +1 -1
  55. package/dist/services/MCPManager.d.ts +1 -1
  56. package/dist/services/MCPManager.js +1 -1
  57. package/dist/services/MCPManager.js.map +1 -1
  58. package/dist/services/RequirementService.js +1 -1
  59. package/dist/services/RequirementService.js.map +1 -1
  60. package/dist/services/ServerService.js +1 -1
  61. package/dist/services/ServerService.js.map +1 -1
  62. package/dist/services/TelemetryService.js +1 -1
  63. package/dist/services/TelemetryService.js.map +1 -1
  64. package/dist/utils/UpdateCheckTracker.js +1 -1
  65. package/dist/utils/UpdateCheckTracker.js.map +1 -1
  66. package/dist/utils/adoUtils.js +1 -1
  67. package/dist/utils/adoUtils.js.map +1 -1
  68. package/dist/utils/clientUtils.js +1 -1
  69. package/dist/utils/clientUtils.js.map +1 -1
  70. package/dist/utils/feedUtils.js +1 -1
  71. package/dist/utils/feedUtils.js.map +1 -1
  72. package/dist/utils/gitUtils.d.ts +15 -0
  73. package/dist/utils/gitUtils.js +2 -0
  74. package/dist/utils/gitUtils.js.map +1 -0
  75. package/dist/utils/logger.js +1 -1
  76. package/dist/utils/logger.js.map +1 -1
  77. package/dist/utils/macroExpressionUtils.js +1 -1
  78. package/dist/utils/macroExpressionUtils.js.map +1 -1
  79. package/dist/utils/osUtils.js +1 -1
  80. package/dist/utils/osUtils.js.map +1 -1
  81. package/dist/utils/versionUtils.js +1 -1
  82. package/dist/utils/versionUtils.js.map +1 -1
  83. package/dist/web/public/js/api.js +1 -1
  84. package/dist/web/public/js/detailsWidget.js +1 -1
  85. package/dist/web/public/js/flights/flights.js +1 -1
  86. package/dist/web/public/js/modal/installModal.js +1 -1
  87. package/dist/web/public/js/modal/installation.js +1 -1
  88. package/dist/web/public/js/modal/loadingModal.js +1 -1
  89. package/dist/web/public/js/modal/modalSetup.js +1 -1
  90. package/dist/web/public/js/modal.js +1 -1
  91. package/dist/web/public/js/notifications.js +1 -1
  92. package/dist/web/public/js/onboard/formProcessor.js +1 -1
  93. package/dist/web/public/js/onboard/index.js +1 -1
  94. package/dist/web/public/js/onboard/publishHandler.js +1 -1
  95. package/dist/web/public/js/onboard/uiHandlers.js +1 -1
  96. package/dist/web/public/js/onboard/validationHandlers.js +1 -1
  97. package/dist/web/public/js/serverCategoryDetails.js +1 -1
  98. package/dist/web/public/js/serverCategoryList.js +1 -1
  99. package/dist/web/public/js/settings.js +1 -1
  100. package/dist/web/server.js +1 -1
  101. package/dist/web/server.js.map +1 -1
  102. package/package.json +1 -1
package/README.md CHANGED
@@ -46,19 +46,24 @@ Options:
46
46
 
47
47
  - `-p, --port <port>`: Port to run the server on (default: 3000)
48
48
  - `-f, --feed-file <filepath>`: Path to a custom feed configuration file
49
- - `-s, --schema-directory <schemaDir>`: Path to a directory containing adhoc schema files
49
+ - `-s, --schemas-directory <path>`: Path to a directory containing adhoc schema files
50
+ - `-r, --repo <repository>`: Git repository URL to sync feeds from
51
+ - `-b, --branch <branch>`: Git branch to sync feeds from (defaults to main)
50
52
 
51
53
  Example:
52
54
 
53
55
  ```bash
54
- # Start the web interface on port 8080
55
- npx -y imcp@latest serve --port 8080
56
+ # Start the web interface on port 3000
57
+ npx -y imcp@latest serve --port 3000
56
58
 
57
59
  # Start with a custom feed configuration file
58
60
  npx -y imcp@latest serve --feed-file ./custom-feed.json
59
61
 
60
62
  # Start with a custom feed configuration file and adhoc schema files.
61
- npx -y imcp@latest serve --feed-file ./custom-feed.json --schema-directory ./feeds/schemas/ai-coder-tools
63
+ npx -y imcp@latest serve --feed-file ./custom-feed.json --schemas-directory ./feeds/schemas/ai-coder-tools
64
+
65
+ # Start with feed from custom repo and branch
66
+ npx -y imcp@latest serve --repo https://github.com/ai-microsoft/imcp-feed --branch main
62
67
  ```
63
68
 
64
69
  ## MCP Installation and Publish
@@ -1,2 +1,2 @@
1
- import{Command}from"commander";import fs from"fs/promises";import path from"path";import{LOCAL_FEEDS_DIR}from"../../core/metadatas/constants.js";import{mcpManager}from"../../services/MCPManager.js";import{Logger}from"../../utils/logger.js";export function createListCommand(){return new Command("list").description("List all available MCP servers from feeds").option("--pull","Sync with remote feeds before listing").action((async e=>{try{if(Logger.debug({action:"list_command_started",options:e}),e.pull)try{await mcpManager.syncFeeds()}catch(e){Logger.error("Failed to sync feeds, falling back to local feeds",e)}await mcpManager.initialize(),Logger.debug({action:"ensuring_feeds_directory",path:LOCAL_FEEDS_DIR}),await fs.mkdir(LOCAL_FEEDS_DIR,{recursive:!0}),Logger.debug("Reading feed files from directory...");const r=(await fs.readdir(LOCAL_FEEDS_DIR)).filter((e=>e.endsWith(".json")));Logger.debug({action:"found_feed_files",count:r.length,files:r});const o=[];for(const e of r){Logger.debug(`Processing feed file: ${e}`);try{const r=path.join(LOCAL_FEEDS_DIR,e),t=await fs.readFile(r,"utf8"),s=JSON.parse(t);Logger.debug({action:"processing_feed",file:e,feedName:s.name,serverCount:s.mcpServers?.length??0});const i={name:s.name,displayName:s.displayName,description:s.description,mcpServers:s.mcpServers.map((e=>({name:e.name,description:e.description})))};o.push(i),Logger.debug(`Successfully processed feed: ${s.name}`)}catch(r){Logger.error(`Failed to process feed file: ${e}`,r)}}if(0===o.length)return void Logger.log("No feeds found.");Logger.debug({action:"completed_processing",totalFeeds:o.length,totalServers:o.reduce(((e,r)=>e+r.mcpServers.length),0)})}catch(e){Logger.error("Failed to list servers",e),process.exit(1)}}))}
1
+ import{Command}from"commander";import fs from"fs/promises";import path from"path";import{LOCAL_FEEDS_DIR}from"../../core/metadatas/constants.js";import{mcpManager}from"../../services/MCPManager.js";import{Logger}from"../../utils/logger.js";export function createListCommand(){return new Command("list").description("List all available MCP servers from feeds").option("--pull","Sync with remote feeds before listing").action((async e=>{try{if(Logger.debug({action:"list_command_started",options:e}),e.pull)try{await mcpManager.syncFeeds()}catch(e){Logger.error("Failed to sync feeds, falling back to local feeds",e)}await mcpManager.initialize(),Logger.debug({action:"ensuring_feeds_directory",path:LOCAL_FEEDS_DIR}),await fs.mkdir(LOCAL_FEEDS_DIR,{recursive:!0}),Logger.debug("Reading feed files from directory...");const r=(await fs.readdir(LOCAL_FEEDS_DIR)).filter((e=>e.endsWith(".json")));Logger.debug({action:"found_feed_files",count:r.length,files:r});const o=[];for(const e of r){Logger.debug(`Processing feed file: ${e}`);try{const r=path.join(LOCAL_FEEDS_DIR,e),t=await fs.readFile(r,"utf8"),s=JSON.parse(t);Logger.debug({action:"processing_feed",file:e,feedName:s.name,serverCount:s.mcpServers?.length??0});const i={name:s.name,displayName:s.displayName,description:s.description,mcpServers:s.mcpServers.map((e=>({name:e.name,description:e.description})))};o.push(i),Logger.debug(`Successfully processed feed: ${s.name}`)}catch(r){Logger.error(`Failed to process feed file: ${e}`,r)}}if(0===o.length)return void Logger.log("No feeds found.");Logger.debug({action:"completed_processing",totalFeeds:o.length,totalServers:o.reduce(((e,r)=>e+r.mcpServers.length),0)}),console.log(JSON.stringify(o,null,2))}catch(e){Logger.error("Failed to list servers",e),process.exit(1)}}))}
2
2
  //# sourceMappingURL=list.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["Command","fs","path","LOCAL_FEEDS_DIR","mcpManager","Logger","createListCommand","description","option","action","async","options","debug","pull","syncFeeds","syncError","error","initialize","mkdir","recursive","jsonFiles","readdir","filter","file","endsWith","count","length","files","feeds","filePath","join","content","readFile","feedConfig","JSON","parse","feedName","name","serverCount","mcpServers","simplifiedFeed","displayName","map","server","push","log","totalFeeds","totalServers","reduce","acc","feed","process","exit"],"sources":["../../../src/cli/commands/list.ts"],"mappings":"OAASA,YAAe,mBACjBC,OAAQ,qBACRC,SAAU,cACRC,oBAAuB,2CACvBC,eAAkB,sCAClBC,WAAc,+BAcjB,SAAUC,oBACd,OAAO,IAAIN,QAAQ,QAChBO,YAAY,6CACZC,OAAO,SAAU,yCACjBC,QAAOC,MAAOC,IACb,IAOE,GANAN,OAAOO,MAAM,CACXH,OAAQ,uBACRE,YAIEA,EAAQE,KACV,UACQT,WAAWU,WACnB,CAAE,MAAOC,GACPV,OAAOW,MAAM,oDAAqDD,EACpE,OAEIX,WAAWa,aAEjBZ,OAAOO,MAAM,CACXH,OAAQ,2BACRP,KAAMC,wBAIFF,GAAGiB,MAAMf,gBAAiB,CAAEgB,WAAW,IAG7Cd,OAAOO,MAAM,wCACb,MACMQ,SADcnB,GAAGoB,QAAQlB,kBACPmB,QAAOC,GAAQA,EAAKC,SAAS,WAErDnB,OAAOO,MAAM,CACXH,OAAQ,mBACRgB,MAAOL,EAAUM,OACjBC,MAAOP,IAGT,MAAMQ,EAA0B,GAGhC,IAAK,MAAML,KAAQH,EAAW,CAC5Bf,OAAOO,MAAM,yBAAyBW,KACtC,IACE,MAAMM,EAAW3B,KAAK4B,KAAK3B,gBAAiBoB,GACtCQ,QAAgB9B,GAAG+B,SAASH,EAAU,QACtCI,EAAaC,KAAKC,MAAMJ,GAE9B1B,OAAOO,MAAM,CACXH,OAAQ,kBACRc,OACAa,SAAUH,EAAWI,KACrBC,YAAaL,EAAWM,YAAYb,QAAU,IAIhD,MAAMc,EAAiC,CACrCH,KAAMJ,EAAWI,KACjBI,YAAaR,EAAWQ,YACxBlC,YAAa0B,EAAW1B,YACxBgC,WAAYN,EAAWM,WAAWG,KAAKC,IAAgB,CACrDN,KAAMM,EAAON,KACb9B,YAAaoC,EAAOpC,iBAIxBqB,EAAMgB,KAAKJ,GACXnC,OAAOO,MAAM,gCAAgCqB,EAAWI,OAC1D,CAAE,MAAOrB,GACPX,OAAOW,MAAM,gCAAgCO,IAAQP,EACvD,CACF,CAEA,GAAqB,IAAjBY,EAAMF,OAER,YADArB,OAAOwC,IAAI,mBAIbxC,OAAOO,MAAM,CACXH,OAAQ,uBACRqC,WAAYlB,EAAMF,OAClBqB,aAAcnB,EAAMoB,QAAO,CAACC,EAAKC,IAASD,EAAMC,EAAKX,WAAWb,QAAQ,IAK5E,CAAE,MAAOV,GACPX,OAAOW,MAAM,yBAA0BA,GACvCmC,QAAQC,KAAK,EACf,IAEN","ignoreList":[]}
1
+ {"version":3,"names":["Command","fs","path","LOCAL_FEEDS_DIR","mcpManager","Logger","createListCommand","description","option","action","async","options","debug","pull","syncFeeds","syncError","error","initialize","mkdir","recursive","jsonFiles","readdir","filter","file","endsWith","count","length","files","feeds","filePath","join","content","readFile","feedConfig","JSON","parse","feedName","name","serverCount","mcpServers","simplifiedFeed","displayName","map","server","push","log","totalFeeds","totalServers","reduce","acc","feed","console","stringify","process","exit"],"sources":["../../../src/cli/commands/list.ts"],"mappings":"OAASA,YAAe,mBACjBC,OAAQ,qBACRC,SAAU,cACRC,oBAAuB,2CACvBC,eAAkB,sCAClBC,WAAc,+BAcjB,SAAUC,oBACd,OAAO,IAAIN,QAAQ,QAChBO,YAAY,6CACZC,OAAO,SAAU,yCACjBC,QAAOC,MAAOC,IACb,IAOE,GANAN,OAAOO,MAAM,CACXH,OAAQ,uBACRE,YAIEA,EAAQE,KACV,UACQT,WAAWU,WACnB,CAAE,MAAOC,GACPV,OAAOW,MAAM,oDAAqDD,EACpE,OAEIX,WAAWa,aAEjBZ,OAAOO,MAAM,CACXH,OAAQ,2BACRP,KAAMC,wBAIFF,GAAGiB,MAAMf,gBAAiB,CAAEgB,WAAW,IAG7Cd,OAAOO,MAAM,wCACb,MACMQ,SADcnB,GAAGoB,QAAQlB,kBACPmB,QAAOC,GAAQA,EAAKC,SAAS,WAErDnB,OAAOO,MAAM,CACXH,OAAQ,mBACRgB,MAAOL,EAAUM,OACjBC,MAAOP,IAGT,MAAMQ,EAA0B,GAGhC,IAAK,MAAML,KAAQH,EAAW,CAC5Bf,OAAOO,MAAM,yBAAyBW,KACtC,IACE,MAAMM,EAAW3B,KAAK4B,KAAK3B,gBAAiBoB,GACtCQ,QAAgB9B,GAAG+B,SAASH,EAAU,QACtCI,EAAaC,KAAKC,MAAMJ,GAE9B1B,OAAOO,MAAM,CACXH,OAAQ,kBACRc,OACAa,SAAUH,EAAWI,KACrBC,YAAaL,EAAWM,YAAYb,QAAU,IAIhD,MAAMc,EAAiC,CACrCH,KAAMJ,EAAWI,KACjBI,YAAaR,EAAWQ,YACxBlC,YAAa0B,EAAW1B,YACxBgC,WAAYN,EAAWM,WAAWG,KAAKC,IAAgB,CACrDN,KAAMM,EAAON,KACb9B,YAAaoC,EAAOpC,iBAIxBqB,EAAMgB,KAAKJ,GACXnC,OAAOO,MAAM,gCAAgCqB,EAAWI,OAC1D,CAAE,MAAOrB,GACPX,OAAOW,MAAM,gCAAgCO,IAAQP,EACvD,CACF,CAEA,GAAqB,IAAjBY,EAAMF,OAER,YADArB,OAAOwC,IAAI,mBAIbxC,OAAOO,MAAM,CACXH,OAAQ,uBACRqC,WAAYlB,EAAMF,OAClBqB,aAAcnB,EAAMoB,QAAO,CAACC,EAAKC,IAASD,EAAMC,EAAKX,WAAWb,QAAQ,KAI1EyB,QAAQN,IAAIX,KAAKkB,UAAUxB,EAAO,KAAM,GAC1C,CAAE,MAAOZ,GACPX,OAAOW,MAAM,yBAA0BA,GACvCqC,QAAQC,KAAK,EACf,IAEN","ignoreList":[]}
@@ -1,2 +1,2 @@
1
- import{Command}from"commander";import{serverService}from"../../services/ServerService.js";export function createPullCommand(){return new Command("pull").description("Pull MCP server configurations from remote feed source").action((async()=>{try{await serverService.syncFeeds()}catch(e){e instanceof Error&&e.message,process.exit(1)}}))}
1
+ import{Command}from"commander";import{serverService}from"../../services/ServerService.js";export function createPullCommand(){return new Command("pull").description("Pull MCP server configurations from remote feed source").action((async()=>{try{await serverService.syncFeeds()}catch(r){const e=r instanceof Error?r.message:"Unknown error";console.error("Error syncing configurations:",e),process.exit(1)}}))}
2
2
  //# sourceMappingURL=pull.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["Command","serverService","createPullCommand","description","action","async","syncFeeds","error","Error","message","process","exit"],"sources":["../../../src/cli/commands/pull.ts"],"mappings":"OAASA,YAAe,mBACfC,kBAAqB,yCAExB,SAAUC,oBACd,OAAO,IAAIF,QAAQ,QAChBG,YAAY,0DACZC,QAAOC,UACN,UACQJ,cAAcK,WACtB,CAAE,MAAOC,GACSA,aAAiBC,OAAQD,EAAME,QAE/CC,QAAQC,KAAK,EACf,IAEN","ignoreList":[]}
1
+ {"version":3,"names":["Command","serverService","createPullCommand","description","action","async","syncFeeds","error","message","Error","console","process","exit"],"sources":["../../../src/cli/commands/pull.ts"],"mappings":"OAASA,YAAe,mBACfC,kBAAqB,yCAExB,SAAUC,oBACd,OAAO,IAAIF,QAAQ,QAChBG,YAAY,0DACZC,QAAOC,UACN,UACQJ,cAAcK,WACtB,CAAE,MAAOC,GACP,MAAMC,EAAUD,aAAiBE,MAAQF,EAAMC,QAAU,gBACzDE,QAAQH,MAAM,gCAAiCC,GAC/CG,QAAQC,KAAK,EACf,IAEN","ignoreList":[]}
@@ -1,2 +1,2 @@
1
- import{Command}from"commander";import{startWebServer}from"../../web/server.js";import{mcpManager}from"../../services/MCPManager.js";export function createServeCommand(){return new Command("serve").description("Serve local web interface").option("-p, --port <port>","Port to run the server on","3000").option("-f, --feed-file <filepath>","Path to a custom feed configuration file").option("-s, --schemas-directory <path>","Path to a directory containing adhoc schema files").action((async e=>{try{await mcpManager.syncFeeds(),await mcpManager.initialize(e.feedFile,e.schemasDirectory);const r=parseInt(e.port,10);if(isNaN(r)||r<1||r>65535)throw new Error("Invalid port number");await startWebServer(r),process.on("SIGINT",(()=>{process.exit(0)}))}catch(e){e instanceof Error&&e.message,process.exit(1)}}))}
1
+ import{Command}from"commander";import{startWebServer}from"../../web/server.js";import{mcpManager}from"../../services/MCPManager.js";export function createServeCommand(){return new Command("serve").description("Serve local web interface").option("-p, --port <port>","Port to run the server on","3000").option("-f, --feed-file <filepath>","Path to a custom feed configuration file").option("-s, --schemas-directory <path>","Path to a directory containing adhoc schema files").option("-r, --repo <repository>","Git repository URL to sync feeds from").option("-b, --branch <branch>","Git branch to sync feeds from (defaults to main)").action((async e=>{try{await mcpManager.syncFeeds(e.repo,e.branch),await mcpManager.initialize(e.feedFile,e.schemasDirectory);const r=parseInt(e.port,10);if(isNaN(r)||r<1||r>65535)throw new Error("Invalid port number");await startWebServer(r),process.on("SIGINT",(()=>{console.log("\nShutting down server..."),process.exit(0)}))}catch(e){const r=e instanceof Error?e.message:"Unknown error";console.error("Failed to start web server:",r),process.exit(1)}}))}
2
2
  //# sourceMappingURL=serve.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["Command","startWebServer","mcpManager","createServeCommand","description","option","action","async","options","syncFeeds","initialize","feedFile","schemasDirectory","port","parseInt","isNaN","Error","process","on","exit","error","message"],"sources":["../../../src/cli/commands/serve.ts"],"mappings":"OAASA,YAAe,mBACfC,mBAAsB,6BACtBC,eAAkB,sCAIrB,SAAUC,qBACd,OAAO,IAAIH,QAAQ,SAChBI,YAAY,6BACZC,OAAO,oBAAqB,4BAA6B,QACzDA,OAAO,6BAA8B,4CACrCA,OAAO,iCAAkC,qDACzCC,QAAOC,MAAOC,IACb,UAEQN,WAAWO,kBAGXP,WAAWQ,WAAWF,EAAQG,SAAUH,EAAQI,kBAEtD,MAAMC,EAAOC,SAASN,EAAQK,KAAM,IACpC,GAAIE,MAAMF,IAASA,EAAO,GAAKA,EAAO,MACpC,MAAM,IAAIG,MAAM,6BAGZf,eAAeY,GAGrBI,QAAQC,GAAG,UAAU,KAEnBD,QAAQE,KAAK,EAAE,GAEnB,CAAE,MAAOC,GACSA,aAAiBJ,OAAQI,EAAMC,QAE/CJ,QAAQE,KAAK,EACf,IAEN","ignoreList":[]}
1
+ {"version":3,"names":["Command","startWebServer","mcpManager","createServeCommand","description","option","action","async","options","syncFeeds","repo","branch","initialize","feedFile","schemasDirectory","port","parseInt","isNaN","Error","process","on","console","log","exit","error","message"],"sources":["../../../src/cli/commands/serve.ts"],"mappings":"OAASA,YAAe,mBACfC,mBAAsB,6BACtBC,eAAkB,sCAIrB,SAAUC,qBACd,OAAO,IAAIH,QAAQ,SAChBI,YAAY,6BACZC,OAAO,oBAAqB,4BAA6B,QACzDA,OAAO,6BAA8B,4CACrCA,OAAO,iCAAkC,qDACzCA,OAAO,0BAA2B,yCAClCA,OAAO,wBAAyB,oDAChCC,QAAOC,MAAOC,IACb,UAEQN,WAAWO,UAAUD,EAAQE,KAAMF,EAAQG,cAG3CT,WAAWU,WAAWJ,EAAQK,SAAUL,EAAQM,kBAEtD,MAAMC,EAAOC,SAASR,EAAQO,KAAM,IACpC,GAAIE,MAAMF,IAASA,EAAO,GAAKA,EAAO,MACpC,MAAM,IAAIG,MAAM,6BAGZjB,eAAec,GAGrBI,QAAQC,GAAG,UAAU,KACnBC,QAAQC,IAAI,6BACZH,QAAQI,KAAK,EAAE,GAEnB,CAAE,MAAOC,GACP,MAAMC,EAAUD,aAAiBN,MAAQM,EAAMC,QAAU,gBACzDJ,QAAQG,MAAM,8BAA+BC,GAC7CN,QAAQI,KAAK,EACf,IAEN","ignoreList":[]}
@@ -1,2 +1,2 @@
1
- import{Command}from"commander";import{serverService}from"../../services/ServerService.js";export function createUninstallCommand(){return new Command("uninstall").description("Uninstall specific MCP servers").requiredOption("--category <category>","Server category").requiredOption("--names <names>","Server names (semicolon separated)").requiredOption("--targets <targets>","Target clients to uninstall from (semicolon separated)").option("--remove-data","Remove all associated data",!0).action((async e=>{try{const r=e.names.split(";").map((e=>e.trim()));await serverService.validateServerName(e.category,r)||process.exit(1);const t=await Promise.all(r.map((r=>{const t=e.targets?e.targets.split(";").map((e=>e.trim())):[];return serverService.uninstallMcpServer(e.category,r,{removeData:e.removeData,targets:t})}))),{success:a,messages:s}=serverService.formatOperationResults(t);s.forEach((e=>{})),a||process.exit(1)}catch(e){e instanceof Error&&e.message,process.exit(1)}}))}
1
+ import{Command}from"commander";import{serverService}from"../../services/ServerService.js";export function createUninstallCommand(){return new Command("uninstall").description("Uninstall specific MCP servers").requiredOption("--category <category>","Server category").requiredOption("--names <names>","Server names (semicolon separated)").requiredOption("--targets <targets>","Target clients to uninstall from (semicolon separated)").option("--remove-data","Remove all associated data",!0).action((async e=>{try{const r=e.names.split(";").map((e=>e.trim()));await serverService.validateServerName(e.category,r)||(console.error("Invalid server names provided"),process.exit(1)),console.log(`Uninstalling servers: ${r.join(", ")}`);const s=await Promise.all(r.map((r=>{const s=e.targets?e.targets.split(";").map((e=>e.trim())):[];return serverService.uninstallMcpServer(e.category,r,{removeData:e.removeData,targets:s})}))),{success:a,messages:o}=serverService.formatOperationResults(s);o.forEach((e=>{a?console.log(`✓ ${e}`):console.error(`✗ ${e}`)})),a||process.exit(1)}catch(e){const r=e instanceof Error?e.message:"Unknown error";console.error("Uninstallation failed:",r),process.exit(1)}}))}
2
2
  //# sourceMappingURL=uninstall.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["Command","serverService","createUninstallCommand","description","requiredOption","option","action","async","options","serverNames","names","split","map","name","trim","validateServerName","category","process","exit","results","Promise","all","serverName","targets","t","uninstallMcpServer","removeData","success","messages","formatOperationResults","forEach","message","error","Error"],"sources":["../../../src/cli/commands/uninstall.ts"],"mappings":"OAASA,YAAe,mBACfC,kBAAqB,yCAExB,SAAUC,yBACd,OAAO,IAAIF,QAAQ,aAChBG,YAAY,kCACZC,eACC,wBACA,mBAEDA,eACC,kBACA,sCAEDA,eACC,sBACA,0DAEDC,OACC,gBACA,8BACA,GAEDC,QAAOC,MAAOC,IACb,IACE,MAAMC,EAAcD,EAAQE,MAAMC,MAAM,KAAKC,KAAKC,GAAiBA,EAAKC,eAE/Cb,cAAcc,mBAAmBP,EAAQQ,SAAUP,IAG1EQ,QAAQC,KAAK,GAKf,MAAMC,QAAgBC,QAAQC,IAC5BZ,EAAYG,KAAKU,IACf,MAAMC,EAAUf,EAAQe,QAAUf,EAAQe,QAAQZ,MAAM,KAAKC,KAAKY,GAAcA,EAAEV,SAAU,GAC5F,OAAOb,cAAcwB,mBAAmBjB,EAAQQ,SAAUM,EAAY,CACpEI,WAAYlB,EAAQkB,WACpBH,QAASA,GACT,MAIAI,QAAEA,EAAOC,SAAEA,GAAa3B,cAAc4B,uBAAuBV,GACnES,EAASE,SAAQC,IAKf,IAGGJ,GACHV,QAAQC,KAAK,EAEjB,CAAE,MAAOc,GACSA,aAAiBC,OAAQD,EAAMD,QAE/Cd,QAAQC,KAAK,EACf,IAEN","ignoreList":[]}
1
+ {"version":3,"names":["Command","serverService","createUninstallCommand","description","requiredOption","option","action","async","options","serverNames","names","split","map","name","trim","validateServerName","category","console","error","process","exit","log","join","results","Promise","all","serverName","targets","t","uninstallMcpServer","removeData","success","messages","formatOperationResults","forEach","message","Error"],"sources":["../../../src/cli/commands/uninstall.ts"],"mappings":"OAASA,YAAe,mBACfC,kBAAqB,yCAExB,SAAUC,yBACd,OAAO,IAAIF,QAAQ,aAChBG,YAAY,kCACZC,eACC,wBACA,mBAEDA,eACC,kBACA,sCAEDA,eACC,sBACA,0DAEDC,OACC,gBACA,8BACA,GAEDC,QAAOC,MAAOC,IACb,IACE,MAAMC,EAAcD,EAAQE,MAAMC,MAAM,KAAKC,KAAKC,GAAiBA,EAAKC,eAE/Cb,cAAcc,mBAAmBP,EAAQQ,SAAUP,KAE1EQ,QAAQC,MAAM,iCACdC,QAAQC,KAAK,IAGfH,QAAQI,IAAI,yBAAyBZ,EAAYa,KAAK,SAEtD,MAAMC,QAAgBC,QAAQC,IAC5BhB,EAAYG,KAAKc,IACf,MAAMC,EAAUnB,EAAQmB,QAAUnB,EAAQmB,QAAQhB,MAAM,KAAKC,KAAKgB,GAAcA,EAAEd,SAAU,GAC5F,OAAOb,cAAc4B,mBAAmBrB,EAAQQ,SAAUU,EAAY,CACpEI,WAAYtB,EAAQsB,WACpBH,QAASA,GACT,MAIAI,QAAEA,EAAOC,SAAEA,GAAa/B,cAAcgC,uBAAuBV,GACnES,EAASE,SAAQC,IACXJ,EACFd,QAAQI,IAAI,KAAKc,KAEjBlB,QAAQC,MAAM,KAAKiB,IACrB,IAGGJ,GACHZ,QAAQC,KAAK,EAEjB,CAAE,MAAOF,GACP,MAAMiB,EAAUjB,aAAiBkB,MAAQlB,EAAMiB,QAAU,gBACzDlB,QAAQC,MAAM,yBAA0BiB,GACxChB,QAAQC,KAAK,EACf,IAEN","ignoreList":[]}
package/dist/cli/index.js CHANGED
@@ -1,3 +1,3 @@
1
1
  #!/usr/bin/env node
2
- import{Command}from"commander";import{createServeCommand}from"./commands/serve.js";import{Logger}from"../utils/logger.js";import{checkForUpdates}from"../utils/versionUtils.js";async function main(){const e=new Command;e.name("imcp").description("IMCP (Install Model Context Protocol) CLI").option("--verbose","Show detailed logs for all commands"),e.parseOptions(process.argv);const o=e.opts();Logger.setVerbose(!!o.verbose),e.addCommand(createServeCommand()),e.exitOverride(),await checkForUpdates();try{await e.parseAsync(process.argv)}catch(e){const o=e;"commander.help"===o.code||"commander.version"===o.code?process.exit(0):process.exit(1)}}process.on("unhandledRejection",(e=>{Error,process.exit(1)})),main().catch((e=>{Error,process.exit(1)}));
2
+ import{Command}from"commander";import{createServeCommand}from"./commands/serve.js";import{Logger}from"../utils/logger.js";import{checkForUpdates}from"../utils/versionUtils.js";async function main(){const e=new Command;e.name("imcp").description("IMCP (Install Model Context Protocol) CLI").option("--verbose","Show detailed logs for all commands"),e.parseOptions(process.argv);const o=e.opts();Logger.setVerbose(!!o.verbose),e.addCommand(createServeCommand()),e.exitOverride(),await checkForUpdates();try{await e.parseAsync(process.argv)}catch(e){const o=e;"commander.help"===o.code||"commander.version"===o.code?process.exit(0):(console.error("Error:",o.message||"An unknown error occurred"),process.exit(1))}}process.on("unhandledRejection",(e=>{e instanceof Error?console.error("Unhandled promise rejection:",e.message):console.error("Unhandled promise rejection:",e),process.exit(1)})),main().catch((e=>{e instanceof Error?console.error("Fatal error:",e.message):console.error("Fatal error:",e),process.exit(1)}));
3
3
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["Command","createServeCommand","Logger","checkForUpdates","async","main","program","name","description","option","parseOptions","process","argv","opts","setVerbose","verbose","addCommand","exitOverride","parseAsync","error","commanderError","code","exit","on","Error","catch"],"sources":["../../src/cli/index.ts"],"mappings":";OAESA,YAAe,mBACfC,uBAA0B,6BAM1BC,WAAc,4BACdC,oBAAuB,2BAOhCC,eAAeC,OAIb,MAAMC,EAAU,IAAIN,QACpBM,EACGC,KAAK,QACLC,YAAY,6CACZC,OAAO,YAAa,uCAGvBH,EAAQI,aAAaC,QAAQC,MAC7B,MAAMC,EAAOP,EAAQO,OACrBX,OAAOY,aAAaD,EAAKE,SAGzBT,EAAQU,WAAWf,sBAOnBK,EAAQW,qBAGFd,kBAEN,UACQG,EAAQY,WAAWP,QAAQC,KACnC,CAAE,MAAOO,GACP,MAAMC,EAAiBD,EAEK,mBAAxBC,EAAeC,MAGgB,sBAAxBD,EAAeC,KADxBV,QAAQW,KAAK,GAMbX,QAAQW,KAAK,EAEjB,CACF,CAGAX,QAAQY,GAAG,sBAAuBJ,IACXK,MAKrBb,QAAQW,KAAK,EAAE,IAIjBjB,OAAOoB,OAAON,IACSK,MAKrBb,QAAQW,KAAK,EAAE","ignoreList":[]}
1
+ {"version":3,"names":["Command","createServeCommand","Logger","checkForUpdates","async","main","program","name","description","option","parseOptions","process","argv","opts","setVerbose","verbose","addCommand","exitOverride","parseAsync","error","commanderError","code","exit","console","message","on","Error","catch"],"sources":["../../src/cli/index.ts"],"mappings":";OAESA,YAAe,mBACfC,uBAA0B,6BAM1BC,WAAc,4BACdC,oBAAuB,2BAOhCC,eAAeC,OAIb,MAAMC,EAAU,IAAIN,QACpBM,EACGC,KAAK,QACLC,YAAY,6CACZC,OAAO,YAAa,uCAGvBH,EAAQI,aAAaC,QAAQC,MAC7B,MAAMC,EAAOP,EAAQO,OACrBX,OAAOY,aAAaD,EAAKE,SAGzBT,EAAQU,WAAWf,sBAOnBK,EAAQW,qBAGFd,kBAEN,UACQG,EAAQY,WAAWP,QAAQC,KACnC,CAAE,MAAOO,GACP,MAAMC,EAAiBD,EAEK,mBAAxBC,EAAeC,MAGgB,sBAAxBD,EAAeC,KADxBV,QAAQW,KAAK,IAKbC,QAAQJ,MAAM,SAAUC,EAAeI,SAAW,6BAClDb,QAAQW,KAAK,GAEjB,CACF,CAGAX,QAAQc,GAAG,sBAAuBN,IAC5BA,aAAiBO,MACnBH,QAAQJ,MAAM,+BAAgCA,EAAMK,SAEpDD,QAAQJ,MAAM,+BAAgCA,GAEhDR,QAAQW,KAAK,EAAE,IAIjBjB,OAAOsB,OAAOR,IACRA,aAAiBO,MACnBH,QAAQJ,MAAM,eAAgBA,EAAMK,SAEpCD,QAAQJ,MAAM,eAAgBA,GAEhCR,QAAQW,KAAK,EAAE","ignoreList":[]}
@@ -1,2 +1,2 @@
1
- import{Logger}from"../../../utils/logger.js";import{exec}from"child_process";import{promisify}from"util";import{isCommandAvailable,getNpmExecutablePath}from"../../../utils/osUtils.js";import{ExtensionInstaller}from"./ExtensionInstaller.js";import{SUPPORTED_CLIENTS}from"../../metadatas/constants.js";import{MACRO_EXPRESSIONS,MacroResolverFunctions}from"../../../utils/macroExpressionUtils.js";import{InstallOperationManager}from"../../loaders/InstallOperationManager.js";import*as RecordingConstants from"../../metadatas/recordingConstants.js";const execAsync=promisify(exec);export class BaseClientInstaller{generateOperationId(){return`install-${Date.now()}-${Math.random().toString(36).substr(2,9)}`}async setupInstallConfig(e,s){const t={...e.installation};t.mode=e.mode,s.args&&s.args.length>0&&(Logger.debug(`Using args from ServerInstallOptions: ${s.args.join(" ")}`),t.args=s.args);const n=t.env||{},a={};for(const[e,s]of Object.entries(n)){const t=s;t.Default&&(a[e]=t.Default)}return t.env={...a,...s.env||{}},await this._resolveConfigMacros(t,s),Logger.debug(`Final installation config: ${JSON.stringify(t)}`),t}async _resolveConfigMacros(e,s){for(const t of Object.values(MACRO_EXPRESSIONS)){const n=e.args?.some((e=>"string"==typeof e&&e.includes(t))),a=Object.values(e.env||{}).some((e=>"string"==typeof e&&e.includes(t)));if(!n&&!a){Logger.debug(`Macro ${t} not found in args or env, skipping resolution.`);continue}const r=MacroResolverFunctions[t];if(r){const n=await r(e,s);if(void 0!==n){if(e.args){const s=e.args.join(" ");e.args=e.args.map((e=>"string"==typeof e&&e.includes(t)?e.replace(new RegExp(t.replace(/[${}]/g,"\\$&"),"g"),n):e)),e.args.join(" ")!==s&&Logger.debug(`Args after ${t} ('${n}') replacement: ${e.args.join(" ")}`)}if(e.env){const s=JSON.stringify(e.env);for(const s in e.env)"string"==typeof e.env[s]&&e.env[s].includes(t)&&(e.env[s]=e.env[s].replace(new RegExp(t.replace(/[${}]/g,"\\$&"),"g"),n));JSON.stringify(e.env)!==s&&Logger.debug(`Env after ${t} ('${n}') replacement: ${JSON.stringify(e.env)}`)}}else Logger.debug(`Could not resolve value for macro: ${t}. It will not be replaced.`)}}}async handleWindowsNpx(e){if("win32"===process.platform&&"npx"===e.command){const s=await getNpmExecutablePath();return{...e,command:"cmd",args:["/c","npx",...e.args],env:{...e.env,APPDATA:s}}}return e}initializeSettings(e){e.mcpServers||(e.mcpServers={})}async handleStdioMode(e,s,t){t.args&&(t.args=t.args.map((e=>"string"==typeof e?e.replace(/\\/g,"/"):e))),e.mcpServers[s]={command:t.command,args:t.args,env:t.env,autoApprove:[],disabled:!1,alwaysAllow:[]}}handleSseMode(e,s,t){e.mcpServers[s]={type:"sse",url:t.url}}async checkVSCodeAndInstallExtension(e){const s=await isCommandAvailable("code"),t=await isCommandAvailable("code-insiders");return s||t?await ExtensionInstaller.installExtension(this.clientName)?void 0:(Logger.debug(`Failed to install ${this.clientName} extension`),{status:"failed",type:"install",target:"server",message:`Failed to install ${this.clientName} extension`,operationId:e}):{status:"failed",type:"install",target:"server",message:"Failed to install as neither VS Code nor VS Code Insiders are installed on this system. Please run `code` or `code-insiders` to make sure they are installed. Relaunch imcp after installation.",operationId:e}}async updateVSCodeSettings(e,s){const t=[],n=await isCommandAvailable("code"),a=await isCommandAvailable("code-insiders");if(n)try{const n=SUPPORTED_CLIENTS[this.clientName].codeSettingPath;await this.setupClientSettings(n,e,s),t.push({success:!0,path:n})}catch(e){t.push({success:!1,path:SUPPORTED_CLIENTS[this.clientName].codeSettingPath,error:e instanceof Error?e.message:String(e)})}if(a)try{const n=SUPPORTED_CLIENTS[this.clientName].codeInsiderSettingPath;await this.setupClientSettings(n,e,s),t.push({success:!0,path:n})}catch(e){t.push({success:!1,path:SUPPORTED_CLIENTS[this.clientName].codeInsiderSettingPath,error:e instanceof Error?e.message:String(e)})}return t}async install(e,s,t){const n=this.generateOperationId(),a=InstallOperationManager.getInstance(t||e.name,e.name);return await a.recording((async()=>{await a.recording((()=>this.checkVSCodeAndInstallExtension(n)),{stepName:RecordingConstants.STEP_CHECK_VSCODE_AND_INSTALL_EXTENSION,onResult:e=>"failed"!==e?.status});const t=await a.recording((()=>this.setupInstallConfig(e,s)),{stepName:RecordingConstants.STEP_SETUP_INSTALLATION_CONFIG});e.mode&&(t.mode=e.mode);const r=await a.recording((()=>this.updateVSCodeSettings(e.name,t)),{stepName:RecordingConstants.STEP_UPDATE_VSCODE_SETTINGS,onResult:e=>e?.some((e=>e.success))}),i=r.some((e=>e.success)),o=r.filter((e=>e.success)).map((e=>e.path)),l=r.filter((e=>!e.success)).map((e=>e.error));return{status:i?"completed":"failed",type:"install",target:"server",message:i?`Successfully installed ${this.clientName} client. Updated settings in: ${o.join(", ")}`:`Failed to install ${this.clientName} client. Errors: ${l.join("; ")}`,operationId:n,error:i?void 0:l.join("; ")}}),{stepName:RecordingConstants.STEP_INSTALLATION,onResult:e=>"failed"!==e?.status,endMessage:e=>e?.message,onError:e=>{const s=`Unexpected error installing ${this.clientName} client: ${e instanceof Error?e.message:String(e)}`;return{result:{status:"failed",type:"install",target:"server",message:s,operationId:n,error:e instanceof Error?e.message:String(e)},message:s}}})}}
1
+ import{Logger}from"../../../utils/logger.js";import{exec}from"child_process";import{promisify}from"util";import{isCommandAvailable,getNpmExecutablePath}from"../../../utils/osUtils.js";import{ExtensionInstaller}from"./ExtensionInstaller.js";import{SUPPORTED_CLIENTS}from"../../metadatas/constants.js";import{MACRO_EXPRESSIONS,MacroResolverFunctions}from"../../../utils/macroExpressionUtils.js";import{InstallOperationManager}from"../../loaders/InstallOperationManager.js";import*as RecordingConstants from"../../metadatas/recordingConstants.js";const execAsync=promisify(exec);export class BaseClientInstaller{generateOperationId(){return`install-${Date.now()}-${Math.random().toString(36).substr(2,9)}`}async setupInstallConfig(e,s){const t={...e.installation};t.mode=e.mode,s.args&&s.args.length>0&&(Logger.debug(`Using args from ServerInstallOptions: ${s.args.join(" ")}`),t.args=s.args);const n=t.env||{},a={};for(const[e,s]of Object.entries(n)){const t=s;t.Default&&(a[e]=t.Default)}return t.env={...a,...s.env||{}},await this._resolveConfigMacros(t,s),Logger.debug(`Final installation config: ${JSON.stringify(t)}`),t}async _resolveConfigMacros(e,s){for(const t of Object.values(MACRO_EXPRESSIONS)){const n=e.args?.some((e=>"string"==typeof e&&e.includes(t))),a=Object.values(e.env||{}).some((e=>"string"==typeof e&&e.includes(t)));if(!n&&!a){Logger.debug(`Macro ${t} not found in args or env, skipping resolution.`);continue}const i=MacroResolverFunctions[t];if(i){const n=await i(e,s);if(void 0!==n){if(e.args){const s=e.args.join(" ");e.args=e.args.map((e=>"string"==typeof e&&e.includes(t)?e.replace(new RegExp(t.replace(/[${}]/g,"\\$&"),"g"),n):e)),e.args.join(" ")!==s&&Logger.debug(`Args after ${t} ('${n}') replacement: ${e.args.join(" ")}`)}if(e.env){const s=JSON.stringify(e.env);for(const s in e.env)"string"==typeof e.env[s]&&e.env[s].includes(t)&&(e.env[s]=e.env[s].replace(new RegExp(t.replace(/[${}]/g,"\\$&"),"g"),n));JSON.stringify(e.env)!==s&&Logger.debug(`Env after ${t} ('${n}') replacement: ${JSON.stringify(e.env)}`)}}else Logger.debug(`Could not resolve value for macro: ${t}. It will not be replaced.`)}}}async handleWindowsNpx(e){if("win32"===process.platform&&"npx"===e.command){const s=await getNpmExecutablePath();return{...e,command:"cmd",args:["/c","npx",...e.args],env:{...e.env,APPDATA:s}}}return e}initializeSettings(e){e.mcpServers||(e.mcpServers={})}async handleStdioMode(e,s,t){t.args&&(t.args=t.args.map((e=>"string"==typeof e?e.replace(/\\/g,"/"):e))),e.mcpServers[s]={command:t.command,args:t.args,env:t.env,autoApprove:[],disabled:!1,alwaysAllow:[]}}handleSseMode(e,s,t){e.mcpServers[s]={type:"sse",url:t.url}}async checkVSCodeAndInstallExtension(e){const s=await isCommandAvailable("code"),t=await isCommandAvailable("code-insiders");if(!s&&!t)return{status:"failed",type:"install",target:"server",message:"Failed to install as neither VS Code nor VS Code Insiders are installed on this system. Please run `code` or `code-insiders` to make sure they are installed. Relaunch imcp after installation.",operationId:e};return await ExtensionInstaller.installExtension(this.clientName)?void 0:(Logger.debug(`Failed to install ${this.clientName} extension`),{status:"failed",type:"install",target:"server",message:`Failed to install ${this.clientName} extension`,operationId:e})}async updateVSCodeSettings(e,s){const t=[],n=await isCommandAvailable("code"),a=await isCommandAvailable("code-insiders");if(n)try{const n=SUPPORTED_CLIENTS[this.clientName].codeSettingPath;await this.setupClientSettings(n,e,s),t.push({success:!0,path:n})}catch(e){t.push({success:!1,path:SUPPORTED_CLIENTS[this.clientName].codeSettingPath,error:e instanceof Error?e.message:String(e)})}if(a)try{const n=SUPPORTED_CLIENTS[this.clientName].codeInsiderSettingPath;await this.setupClientSettings(n,e,s),t.push({success:!0,path:n})}catch(e){t.push({success:!1,path:SUPPORTED_CLIENTS[this.clientName].codeInsiderSettingPath,error:e instanceof Error?e.message:String(e)})}return t}async install(e,s,t){const n=this.generateOperationId(),a=InstallOperationManager.getInstance(t||e.name,e.name);return await a.recording((async()=>{await a.recording((()=>this.checkVSCodeAndInstallExtension(n)),{stepName:RecordingConstants.STEP_CHECK_VSCODE_AND_INSTALL_EXTENSION,endMessage:e=>e?.message,onResult:e=>"failed"!==e?.status});const t=await a.recording((()=>this.setupInstallConfig(e,s)),{stepName:RecordingConstants.STEP_SETUP_INSTALLATION_CONFIG});e.mode&&(t.mode=e.mode);const i=await a.recording((()=>this.updateVSCodeSettings(e.name,t)),{stepName:RecordingConstants.STEP_UPDATE_VSCODE_SETTINGS,endMessage:e=>e?.some((e=>e.success))?`Updated settings in: ${e.map((e=>e.path)).join(", ")}`:`Failed to update settings: ${e.map((e=>e.error)).join("; ")}`,onResult:e=>e?.some((e=>e.success))}),r=i.some((e=>e.success)),o=i.filter((e=>e.success)).map((e=>e.path)),l=i.filter((e=>!e.success)).map((e=>e.error));return{status:r?"completed":"failed",type:"install",target:"server",message:r?`Successfully installed ${this.clientName} client. Updated settings in: ${o.join(", ")}`:`Failed to install ${this.clientName} client. Errors: ${l.join("; ")}`,operationId:n,error:r?void 0:l.join("; ")}}),{stepName:RecordingConstants.STEP_INSTALLATION,onResult:e=>"failed"!==e?.status,endMessage:e=>e?.message,onError:e=>{const s=`Unexpected error installing ${this.clientName} client: ${e instanceof Error?e.message:String(e)}`;return{result:{status:"failed",type:"install",target:"server",message:s,operationId:n,error:e instanceof Error?e.message:String(e)},message:s}}})}}
2
2
  //# sourceMappingURL=BaseClientInstaller.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["Logger","exec","promisify","isCommandAvailable","getNpmExecutablePath","ExtensionInstaller","SUPPORTED_CLIENTS","MACRO_EXPRESSIONS","MacroResolverFunctions","InstallOperationManager","RecordingConstants","execAsync","BaseClientInstaller","generateOperationId","Date","now","Math","random","toString","substr","setupInstallConfig","serverConfig","options","finalConfig","installation","mode","args","length","debug","join","baseEnv","env","defaultEnv","key","config","Object","entries","envConfig","Default","this","_resolveConfigMacros","JSON","stringify","macro","values","isMacroInArgs","some","arg","includes","isMacroInEnv","value","resolver","resolvedValue","undefined","originalArgsString","map","replace","RegExp","originalEnvJson","handleWindowsNpx","process","platform","command","npmPath","APPDATA","initializeSettings","settings","mcpServers","handleStdioMode","serverName","autoApprove","disabled","alwaysAllow","handleSseMode","installConfig","type","url","checkVSCodeAndInstallExtension","operationId","isVSCodeInstalled","isVSCodeInsidersInstalled","installExtension","clientName","status","target","message","updateVSCodeSettings","results","settingPath","codeSettingPath","setupClientSettings","push","success","path","error","Error","String","codeInsiderSettingPath","install","categoryName","recorder","getInstance","name","recording","async","stepName","STEP_CHECK_VSCODE_AND_INSTALL_EXTENSION","onResult","result","STEP_SETUP_INSTALLATION_CONFIG","STEP_UPDATE_VSCODE_SETTINGS","r","anySuccess","successPaths","filter","errors","STEP_INSTALLATION","endMessage","onError","errorMsg"],"sources":["../../../../src/core/installers/clients/BaseClientInstaller.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["Logger","exec","promisify","isCommandAvailable","getNpmExecutablePath","ExtensionInstaller","SUPPORTED_CLIENTS","MACRO_EXPRESSIONS","MacroResolverFunctions","InstallOperationManager","RecordingConstants","execAsync","BaseClientInstaller","generateOperationId","Date","now","Math","random","toString","substr","setupInstallConfig","serverConfig","options","finalConfig","installation","mode","args","length","debug","join","baseEnv","env","defaultEnv","key","config","Object","entries","envConfig","Default","this","_resolveConfigMacros","JSON","stringify","macro","values","isMacroInArgs","some","arg","includes","isMacroInEnv","value","resolver","resolvedValue","undefined","originalArgsString","map","replace","RegExp","originalEnvJson","handleWindowsNpx","process","platform","command","npmPath","APPDATA","initializeSettings","settings","mcpServers","handleStdioMode","serverName","autoApprove","disabled","alwaysAllow","handleSseMode","installConfig","type","url","checkVSCodeAndInstallExtension","operationId","isVSCodeInstalled","isVSCodeInsidersInstalled","status","target","message","installExtension","clientName","updateVSCodeSettings","results","settingPath","codeSettingPath","setupClientSettings","push","success","path","error","Error","String","codeInsiderSettingPath","install","categoryName","recorder","getInstance","name","recording","async","stepName","STEP_CHECK_VSCODE_AND_INSTALL_EXTENSION","endMessage","result","onResult","STEP_SETUP_INSTALLATION_CONFIG","STEP_UPDATE_VSCODE_SETTINGS","r","anySuccess","successPaths","filter","errors","STEP_INSTALLATION","onError","errorMsg"],"sources":["../../../../src/core/installers/clients/BaseClientInstaller.ts"],"mappings":"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","ignoreList":[]}
@@ -1,2 +1,2 @@
1
- import{ConfigurationProvider}from"../../loaders/ConfigurationProvider.js";import{Logger}from"../../../utils/logger.js";import{ClientInstallerFactory}from"./ClientInstallerFactory.js";import{InstallOperationManager}from"../../loaders/InstallOperationManager.js";export class ClientInstaller{categoryName;serverName;clients;configProvider;constructor(e,t,r){this.categoryName=e,this.serverName=t,this.clients=r,this.configProvider=ConfigurationProvider.getInstance()}async install(e){const t=[],r=this.clients.map((async r=>{const a=await this.installClient(r,e);return t.push(a),a}));return await Promise.all(r),{success:!0,message:"Client installations completed",status:t}}async installClient(e,t){const r=this.generateOperationId();if(!ClientInstallerFactory.isClientSupported(e))return{status:"failed",type:"install",target:"server",message:`Unsupported client: ${e}`,operationId:r};const a={status:"pending",type:"install",target:"server",message:`Initializing installation for client: ${e}`,operationId:r};return this.processInstallation(e,r,t).then((t=>{"completed"!==t.status&&"failed"!==t.status||InstallOperationManager.getInstance(this.categoryName,this.serverName).markOverallStatus(t.status),this.configProvider.updateServerOperationStatus(this.categoryName,this.serverName,e,t)})).catch((t=>{this.configProvider.updateServerOperationStatus(this.categoryName,this.serverName,e,{status:"failed",type:"install",target:"server",message:`Error installing client ${e}: ${t instanceof Error?t.message:String(t)}`,operationId:r,error:t instanceof Error?t.message:String(t)}),Logger.error(`Error installing client ${e}: ${t instanceof Error?t.message:String(t)}`),InstallOperationManager.getInstance(this.categoryName,this.serverName).markOverallStatus("failed",t)})),await this.configProvider.updateServerOperationStatus(this.categoryName,this.serverName,e,a),a}async processInstallation(e,t,r){if(!await this.checkRequirements(t,e,r))return{status:"failed",type:"install",target:"server",message:`Requirements not ready for client: ${e} after timeout`,operationId:t};const a=ClientInstallerFactory.getInstaller(e);if(!a)throw new Error(`Failed to create installer for client: ${e}`);const s=await this.configProvider.getServerMcpConfig(this.categoryName,this.serverName);if(!s)throw new Error(`Server configuration not found for category: ${this.categoryName}, server: ${this.serverName}`);const i={status:"in-progress",type:"install",target:"server",message:`Installing client: ${e}`,operationId:t};return await this.configProvider.updateServerOperationStatus(this.categoryName,this.serverName,e,i),await a.install(s,r,this.categoryName)}generateOperationId(){return`install-${Date.now()}-${Math.random().toString(36).substr(2,9)}`}async checkRequirements(e,t,r){let a=await this.configProvider.isRequirementsReady(this.categoryName,this.serverName);if(!a){const r={status:"pending",type:"install",target:"server",message:`Waiting for requirements to be ready for client: ${t}`,operationId:e};await this.configProvider.updateServerOperationStatus(this.categoryName,this.serverName,t,r);const s=Date.now(),i=3e5,n=5e3;for(;!a&&Date.now()-s<i;)await new Promise((e=>setTimeout(e,n))),a=await this.configProvider.isRequirementsReady(this.categoryName,this.serverName)}const s=(await this.configProvider.GetServerRequirementStatus(this.categoryName,this.serverName)).find((e=>e.npmPath&&e.npmPath.length>0));return s&&s.npmPath&&(r.settings=r.settings||{},r.settings.npmPath=s.npmPath),a}}
1
+ import{ConfigurationProvider}from"../../loaders/ConfigurationProvider.js";import{Logger}from"../../../utils/logger.js";import{ClientInstallerFactory}from"./ClientInstallerFactory.js";import{InstallOperationManager}from"../../loaders/InstallOperationManager.js";export class ClientInstaller{categoryName;serverName;clients;configProvider;constructor(e,t,r){this.categoryName=e,this.serverName=t,this.clients=r,this.configProvider=ConfigurationProvider.getInstance()}async install(e){const t=[],r=this.clients.map((async r=>{const a=await this.installClient(r,e);return t.push(a),a}));return await Promise.all(r),{success:!0,message:"Client installations completed",status:t}}async installClient(e,t){const r=this.generateOperationId();if(!ClientInstallerFactory.isClientSupported(e))return{status:"failed",type:"install",target:"server",message:`Unsupported client: ${e}`,operationId:r};const a={status:"pending",type:"install",target:"server",message:`Initializing installation for client: ${e}`,operationId:r};return this.processInstallation(e,r,t).then((t=>{"completed"!==t.status&&"failed"!==t.status||InstallOperationManager.getInstance(this.categoryName,this.serverName).markOverallStatus(t.status),this.configProvider.updateServerOperationStatus(this.categoryName,this.serverName,e,t)})).catch((t=>{this.configProvider.updateServerOperationStatus(this.categoryName,this.serverName,e,{status:"failed",type:"install",target:"server",message:`Error installing client ${e}: ${t instanceof Error?t.message:String(t)}`,operationId:r,error:t instanceof Error?t.message:String(t)}),Logger.error(`Error installing client ${e}: ${t instanceof Error?t.message:String(t)}`),InstallOperationManager.getInstance(this.categoryName,this.serverName).markOverallStatus("failed",t)})),await this.configProvider.updateServerOperationStatus(this.categoryName,this.serverName,e,a),a}async processInstallation(e,t,r){if(!await this.checkRequirements(t,e,r)){return{status:"failed",type:"install",target:"server",message:`Requirements not ready for client: ${e} after timeout`,operationId:t}}const a=ClientInstallerFactory.getInstaller(e);if(!a)throw new Error(`Failed to create installer for client: ${e}`);const s=await this.configProvider.getServerMcpConfig(this.categoryName,this.serverName);if(!s)throw new Error(`Server configuration not found for category: ${this.categoryName}, server: ${this.serverName}`);const i={status:"in-progress",type:"install",target:"server",message:`Installing client: ${e}`,operationId:t};return await this.configProvider.updateServerOperationStatus(this.categoryName,this.serverName,e,i),await a.install(s,r,this.categoryName)}generateOperationId(){return`install-${Date.now()}-${Math.random().toString(36).substr(2,9)}`}async checkRequirements(e,t,r){let a=await this.configProvider.isRequirementsReady(this.categoryName,this.serverName);if(!a){const r={status:"pending",type:"install",target:"server",message:`Waiting for requirements to be ready for client: ${t}`,operationId:e};await this.configProvider.updateServerOperationStatus(this.categoryName,this.serverName,t,r);const s=Date.now(),i=3e5,n=5e3;for(;!a&&Date.now()-s<i;)await new Promise((e=>setTimeout(e,n))),a=await this.configProvider.isRequirementsReady(this.categoryName,this.serverName)}const s=(await this.configProvider.GetServerRequirementStatus(this.categoryName,this.serverName)).find((e=>e.npmPath&&e.npmPath.length>0));return s&&s.npmPath&&(r.settings=r.settings||{},r.settings.npmPath=s.npmPath),a}}
2
2
  //# sourceMappingURL=ClientInstaller.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["ConfigurationProvider","Logger","ClientInstallerFactory","InstallOperationManager","ClientInstaller","categoryName","serverName","clients","configProvider","constructor","this","getInstance","install","options","initialStatuses","installPromises","map","async","clientName","status","installClient","push","Promise","all","success","message","operationId","generateOperationId","isClientSupported","type","target","initialStatus","processInstallation","then","markOverallStatus","updateServerOperationStatus","catch","error","Error","String","checkRequirements","installer","getInstaller","serverConfig","getServerMcpConfig","inProgressStatus","Date","now","Math","random","toString","substr","requirementsReady","isRequirementsReady","pendingStatus","startTime","timeoutMs","intervalMs","resolve","setTimeout","npmPathRequirement","GetServerRequirementStatus","find","npmPath","length","settings"],"sources":["../../../../src/core/installers/clients/ClientInstaller.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["ConfigurationProvider","Logger","ClientInstallerFactory","InstallOperationManager","ClientInstaller","categoryName","serverName","clients","configProvider","constructor","this","getInstance","install","options","initialStatuses","installPromises","map","async","clientName","status","installClient","push","Promise","all","success","message","operationId","generateOperationId","isClientSupported","type","target","initialStatus","processInstallation","then","markOverallStatus","updateServerOperationStatus","catch","error","Error","String","checkRequirements","installer","getInstaller","serverConfig","getServerMcpConfig","inProgressStatus","Date","now","Math","random","toString","substr","requirementsReady","isRequirementsReady","pendingStatus","startTime","timeoutMs","intervalMs","resolve","setTimeout","npmPathRequirement","GetServerRequirementStatus","find","npmPath","length","settings"],"sources":["../../../../src/core/installers/clients/ClientInstaller.ts"],"mappings":"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","ignoreList":[]}
@@ -1,2 +1,2 @@
1
- import{MSRooCodeInstaller}from"./MSRooCodeInstaller.js";import{ClineInstaller}from"./ClineInstaller.js";import{GithubCopilotInstaller}from"./GithubCopilotInstaller.js";import{SUPPORTED_CLIENTS}from"../../metadatas/constants.js";export class ClientInstallerFactory{static installerMap={[Object.keys(SUPPORTED_CLIENTS)[0]]:MSRooCodeInstaller,[Object.keys(SUPPORTED_CLIENTS)[1]]:ClineInstaller,[Object.keys(SUPPORTED_CLIENTS)[2]]:GithubCopilotInstaller};static getInstaller(t){if(!SUPPORTED_CLIENTS[t])return;const e=this.installerMap[t];return e?new e:void 0}static isClientSupported(t){return!!SUPPORTED_CLIENTS[t]}}
1
+ import{MSRooCodeInstaller}from"./MSRooCodeInstaller.js";import{ClineInstaller}from"./ClineInstaller.js";import{GithubCopilotInstaller}from"./GithubCopilotInstaller.js";import{VisualStudioInstaller}from"./VisualStudioInstaller.js";import{SUPPORTED_CLIENTS}from"../../metadatas/constants.js";export class ClientInstallerFactory{static installerMap={[Object.keys(SUPPORTED_CLIENTS)[0]]:MSRooCodeInstaller,[Object.keys(SUPPORTED_CLIENTS)[1]]:ClineInstaller,[Object.keys(SUPPORTED_CLIENTS)[2]]:GithubCopilotInstaller,[Object.keys(SUPPORTED_CLIENTS)[3]]:VisualStudioInstaller};static getInstaller(t){if(!SUPPORTED_CLIENTS[t])return;const l=this.installerMap[t];return l?new l:void 0}static isClientSupported(t){return!!SUPPORTED_CLIENTS[t]}}
2
2
  //# sourceMappingURL=ClientInstallerFactory.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["MSRooCodeInstaller","ClineInstaller","GithubCopilotInstaller","SUPPORTED_CLIENTS","ClientInstallerFactory","static","Object","keys","getInstaller","clientName","InstallerClass","this","installerMap","undefined","isClientSupported"],"sources":["../../../../src/core/installers/clients/ClientInstallerFactory.ts"],"mappings":"OAASA,uBAA0B,iCAC1BC,mBAAsB,6BACtBC,2BAA8B,qCAE9BC,sBAAyB,sCAM5B,MAAOC,uBACDC,oBAA8E,CAClF,CAACC,OAAOC,KAAKJ,mBAAmB,IAAKH,mBACrC,CAACM,OAAOC,KAAKJ,mBAAmB,IAAKF,eACrC,CAACK,OAAOC,KAAKJ,mBAAmB,IAAKD,wBAQzC,mBAAOM,CACHC,GAGA,IAAKN,kBAAkBM,GACnB,OAGJ,MAAMC,EAAiBC,KAAKC,aAAaH,GACzC,OAAOC,EAAiB,IAAIA,OAAmBG,CACnD,CAOA,wBAAOC,CAAkBL,GACrB,QAASN,kBAAkBM,EAC/B","ignoreList":[]}
1
+ {"version":3,"names":["MSRooCodeInstaller","ClineInstaller","GithubCopilotInstaller","VisualStudioInstaller","SUPPORTED_CLIENTS","ClientInstallerFactory","static","Object","keys","getInstaller","clientName","InstallerClass","this","installerMap","undefined","isClientSupported"],"sources":["../../../../src/core/installers/clients/ClientInstallerFactory.ts"],"mappings":"OAASA,uBAA0B,iCAC1BC,mBAAsB,6BACtBC,2BAA8B,qCAC9BC,0BAA6B,oCAE7BC,sBAAyB,sCAM5B,MAAOC,uBACDC,oBAA8E,CAClF,CAACC,OAAOC,KAAKJ,mBAAmB,IAAKJ,mBACrC,CAACO,OAAOC,KAAKJ,mBAAmB,IAAKH,eACrC,CAACM,OAAOC,KAAKJ,mBAAmB,IAAKF,uBACrC,CAACK,OAAOC,KAAKJ,mBAAmB,IAAKD,uBAQzC,mBAAOM,CACHC,GAGA,IAAKN,kBAAkBM,GACnB,OAGJ,MAAMC,EAAiBC,KAAKC,aAAaH,GACzC,OAAOC,EAAiB,IAAIA,OAAmBG,CACnD,CAOA,wBAAOC,CAAkBL,GACrB,QAASN,kBAAkBM,EAC/B","ignoreList":[]}
@@ -0,0 +1,51 @@
1
+ import { BaseClientInstaller } from './BaseClientInstaller.js';
2
+ import { McpConfig, ServerInstallOptions, OperationStatus } from '../../metadatas/types.js';
3
+ /**
4
+ * Installer for Visual Studio client
5
+ * Handles installation and configuration of MCP server integration for Visual Studio
6
+ */
7
+ export declare class VisualStudioInstaller extends BaseClientInstaller {
8
+ protected readonly clientName: string;
9
+ /**
10
+ * Update VS settings without checking for VS Code variants
11
+ * @param serverName The name of the server to configure
12
+ * @param installConfig The installation configuration
13
+ * @returns Array of results indicating success/failure for VS settings
14
+ */
15
+ protected updateVSSettings(serverName: string, installConfig: any): Promise<Array<{
16
+ success: boolean;
17
+ path: string;
18
+ error?: string;
19
+ }>>;
20
+ /**
21
+ * Sets up client settings for Visual Studio
22
+ * Implements the abstract method from BaseClientInstaller
23
+ * @param settingPath Path to the settings file
24
+ * @param serverName Name of the server being installed
25
+ * @param installConfig Installation configuration
26
+ */
27
+ setupClientSettings(settingPath: string, serverName: string, installConfig: any): Promise<void>;
28
+ /**
29
+ * Initialize settings with GithubCopilot-specific structure
30
+ * Overrides base method to provide custom initialization
31
+ */
32
+ protected initializeSettings(settings: any): void;
33
+ /**
34
+ * Handle stdio mode configuration for GithubCopilot
35
+ * Overrides base method to provide custom stdio configuration
36
+ */
37
+ protected handleStdioMode(settings: any, serverName: string, finalConfig: any): Promise<void>;
38
+ /**
39
+ * Handle SSE mode configuration for GithubCopilot
40
+ * Overrides base method to provide custom SSE configuration
41
+ */
42
+ protected handleSseMode(settings: any, serverName: string, installConfig: any): void;
43
+ /**
44
+ * Install MCP server configuration for Visual Studio
45
+ * Custom implementation that skips VSCode-specific steps
46
+ * @param serverConfig Server configuration
47
+ * @param options Installation options
48
+ * @param categoryName Server category name
49
+ */
50
+ install(serverConfig: McpConfig, options: ServerInstallOptions, categoryName?: string): Promise<OperationStatus>;
51
+ }
@@ -0,0 +1,2 @@
1
+ import{BaseClientInstaller}from"./BaseClientInstaller.js";import{Logger}from"../../../utils/logger.js";import fs from"fs/promises";import path from"path";import{SUPPORTED_CLIENTS}from"../../metadatas/constants.js";import{InstallOperationManager}from"../../loaders/InstallOperationManager.js";import*as RecordingConstants from"../../metadatas/recordingConstants.js";export class VisualStudioInstaller extends BaseClientInstaller{clientName="VisualStudio";async updateVSSettings(e,t){Logger.debug("Updating Visual Studio settings");const s=[];try{const a=SUPPORTED_CLIENTS[this.clientName].codeSettingPath;Logger.debug(`Attempting to update settings at: ${a}`),await this.setupClientSettings(a,e,t),s.push({success:!0,path:a}),Logger.debug("Successfully updated Visual Studio settings")}catch(e){const t=e instanceof Error?e.message:String(e);Logger.error("Failed to update Visual Studio settings:",e),s.push({success:!1,path:SUPPORTED_CLIENTS[this.clientName].codeSettingPath,error:t})}return s}async setupClientSettings(e,t,s){Logger.debug(`Setting up Visual Studio client settings at ${e}`);try{const a=path.dirname(e);await fs.mkdir(a,{recursive:!0});let i={};try{const t=await fs.readFile(e,"utf8");i=JSON.parse(t)}catch(e){Logger.debug("No existing settings file found, creating new one")}this.initializeSettings(i),t=t.replace(/-/g,"_"),"stdio"===s.mode?await this.handleStdioMode(i,t,s):"sse"===s.mode&&this.handleSseMode(i,t,s),await fs.writeFile(e,JSON.stringify(i,null,2),"utf8"),Logger.debug(`Successfully updated Visual Studio settings at ${e}`)}catch(e){throw Logger.error("Failed to setup Visual Studio client settings:",e),e}}initializeSettings(e){e||(e={servers:{},inputs:[]}),e.inputs||(e.inputs=[]),e.servers||(e.servers={})}async handleStdioMode(e,t,s){s.args&&(s.args=s.args.map((e=>"string"==typeof e?e.replace(/\\/g,"/"):e))),e.servers[t]={command:s.command,args:s.args,env:s.env}}handleSseMode(e,t,s){e.servers[t]={type:"sse",url:s.url}}async install(e,t,s){const a=this.generateOperationId(),i=InstallOperationManager.getInstance(s||e.name,e.name);return await i.recording((async()=>{const s=await i.recording((()=>this.setupInstallConfig(e,t)),{stepName:RecordingConstants.STEP_SETUP_INSTALLATION_CONFIG});e.mode&&(s.mode=e.mode);const n=await i.recording((()=>this.updateVSSettings(e.name,s)),{stepName:RecordingConstants.STEP_UPDATE_VS_SETTINGS,onResult:e=>e?.some((e=>e.success))}),r=n.some((e=>e.success)),o=n.filter((e=>e.success)).map((e=>e.path)),l=n.filter((e=>!e.success)).map((e=>e.error));return{status:r?"completed":"failed",type:"install",target:"server",message:r?`Successfully installed ${this.clientName} client. Updated settings in: ${o.join(", ")}`:`Failed to install ${this.clientName} client. Errors: ${l.join("; ")}`,operationId:a,error:r?void 0:l.join("; ")}}),{stepName:RecordingConstants.STEP_INSTALLATION,onResult:e=>"failed"!==e?.status,endMessage:e=>e?.message,onError:e=>{const t=`Unexpected error installing ${this.clientName} client: ${e instanceof Error?e.message:String(e)}`;return{result:{status:"failed",type:"install",target:"server",message:t,operationId:a,error:e instanceof Error?e.message:String(e)},message:t}}})}}
2
+ //# sourceMappingURL=VisualStudioInstaller.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["BaseClientInstaller","Logger","fs","path","SUPPORTED_CLIENTS","InstallOperationManager","RecordingConstants","VisualStudioInstaller","clientName","updateVSSettings","serverName","installConfig","debug","results","settingPath","this","codeSettingPath","setupClientSettings","push","success","error","errorMessage","Error","message","String","settingsDir","dirname","mkdir","recursive","settings","existingContent","readFile","JSON","parse","initializeSettings","replace","mode","handleStdioMode","handleSseMode","writeFile","stringify","servers","inputs","finalConfig","args","map","arg","command","env","type","url","install","serverConfig","options","categoryName","operationId","generateOperationId","recorder","getInstance","name","recording","async","setupInstallConfig","stepName","STEP_SETUP_INSTALLATION_CONFIG","STEP_UPDATE_VS_SETTINGS","onResult","result","some","r","anySuccess","successPaths","filter","errors","status","target","join","undefined","STEP_INSTALLATION","endMessage","onError","errorMsg"],"sources":["../../../../src/core/installers/clients/VisualStudioInstaller.ts"],"mappings":"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","ignoreList":[]}
@@ -1,2 +1,2 @@
1
- import{OSType}from"../../metadatas/types.js";import{BaseInstaller}from"./BaseInstaller.js";import{getOSType,refreshPathEnv}from"../../../utils/osUtils.js";import{Logger}from"../../../utils/logger.js";import*as RecordingConstants from"../../metadatas/recordingConstants.js";export class CommandInstaller extends BaseInstaller{getLatestVersion(e,r){throw new Error("Method not implemented.")}commandMappings={uv:{windows:"astral-sh.uv",macos:"uv"}};canHandle(e){return"command"===e.type}supportCheckUpdates(){return!1}getMappedPackageId(e){const r=getOSType(),t=this.commandMappings[e];return t?r===OSType.Windows?t.windows:t.macos:e}async checkInstallation(e){try{await refreshPathEnv();const r=e.alias||e.name;let t;if(getOSType()===OSType.Windows)try{t=await this.execPromise(`where ${r} 2>nul`)}catch(e){Logger.debug(`Error checking command existence: ${e}`),t={stdout:"",stderr:""}}else try{t=await this.execPromise(`which ${r} 2>/dev/null`)}catch(e){Logger.debug(`Error checking command existence: ${e}`),t={stdout:"",stderr:""}}const n=t.stdout.trim().length>0;let s;if(n)try{const e=await this.execPromise(`${r} --version`);if(e.stdout){const r=e.stdout.match(/\d+\.\d+(\.\d+)?/);s=r?r[0]:void 0}}catch(e){Logger.debug(`Error checking command version: ${e}`)}return{name:e.name,type:"command",installed:n,version:s,inProgress:!1}}catch(r){return Logger.error(`Error checking installation: ${r}`),{name:e.name,type:"command",installed:!1,error:r instanceof Error?r.message:String(r),inProgress:!1}}}async install(e,r,t){const n=async()=>{const t=await this.checkInstallation(e);if(t.installed)return t;const n=this.getMappedPackageId(e.name),s=getOSType();let a;if(s===OSType.Windows)a=`winget install --id ${n}`,e.version&&"latest"!==e.version&&(a+=` --version ${e.version}`);else{if(s!==OSType.MacOS)throw r&&await r.recordStep("CommandInstaller:UnsupportedOS","failed",`Unsupported OS for ${e.name}`),new Error(`Unsupported operating system for installing ${e.name}`);a=`brew install ${n}`,e.version&&"latest"!==e.version&&(a+=`@${e.version}`)}const{stderr:o}=await this.execPromise(a);if(o&&o.toLowerCase().includes("error"))throw new Error(o);const i=await this.checkInstallation(e);if(!i.installed)throw new Error(`Failed to install ${e.name}`);return{name:e.name,type:"command",installed:!0,version:i.version||e.version,inProgress:!1}};if(r)return r.recording(n,{stepName:RecordingConstants.STEP_COMMAND_INSTALLER_INSTALL,inProgressMessage:`Installing command: ${e.name}`,endMessage:r=>r.installed?`Install completed for ${e.name}`:`Install failed for ${e.name}`,onError:r=>({result:{name:e.name,type:"command",installed:!1,error:r instanceof Error?r.message:String(r),inProgress:!1},message:r instanceof Error?r.message:String(r)})});try{return await n()}catch(r){return{name:e.name,type:"command",installed:!1,error:r instanceof Error?r.message:String(r),inProgress:!1}}}}
1
+ import{OSType}from"../../metadatas/types.js";import{BaseInstaller}from"./BaseInstaller.js";import{getOSType,refreshPathEnv}from"../../../utils/osUtils.js";import{Logger}from"../../../utils/logger.js";import*as RecordingConstants from"../../metadatas/recordingConstants.js";export class CommandInstaller extends BaseInstaller{getLatestVersion(e,r){throw new Error("Method not implemented.")}commandMappings={uv:{windows:"astral-sh.uv",macos:"uv"}};canHandle(e){return"command"===e.type}supportCheckUpdates(){return!1}getMappedPackageId(e){const r=getOSType(),t=this.commandMappings[e];return t?r===OSType.Windows?t.windows:t.macos:e}async checkInstallation(e){try{await refreshPathEnv();const r=e.alias||e.name;let t;if(getOSType()===OSType.Windows)try{t=await this.execPromise(`where ${r} 2>nul`)}catch(e){Logger.debug(`Error checking command existence: ${e}`),t={stdout:"",stderr:""}}else try{t=await this.execPromise(`which ${r} 2>/dev/null`)}catch(e){Logger.debug(`Error checking command existence: ${e}`),t={stdout:"",stderr:""}}const n=t.stdout.trim().length>0;let s;if(n)try{const e=await this.execPromise(`${r} --version`);if(e.stdout){const r=e.stdout.match(/\d+\.\d+(\.\d+)?/);s=r?r[0]:void 0}}catch(e){Logger.debug(`Error checking command version: ${e}`)}return{name:e.name,type:"command",installed:n,version:s,inProgress:!1}}catch(r){return Logger.error(`Error checking installation: ${r}`),{name:e.name,type:"command",installed:!1,error:r instanceof Error?r.message:String(r),inProgress:!1}}}async install(e,r,t){const doInstall=async()=>{const t=await this.checkInstallation(e);if(t.installed)return t;const n=this.getMappedPackageId(e.name),s=getOSType();let a;if(s===OSType.Windows)a=`winget install --id ${n}`,e.version&&"latest"!==e.version&&(a+=` --version ${e.version}`);else{if(s!==OSType.MacOS)throw r&&await r.recordStep("CommandInstaller:UnsupportedOS","failed",`Unsupported OS for ${e.name}`),new Error(`Unsupported operating system for installing ${e.name}`);a=`brew install ${n}`,e.version&&"latest"!==e.version&&(a+=`@${e.version}`)}const{stderr:o}=await this.execPromise(a);if(o&&o.toLowerCase().includes("error"))throw new Error(o);const i=await this.checkInstallation(e);if(!i.installed)throw new Error(`Failed to install ${e.name}`);return{name:e.name,type:"command",installed:!0,version:i.version||e.version,inProgress:!1}};if(r)return r.recording(doInstall,{stepName:RecordingConstants.STEP_COMMAND_INSTALLER_INSTALL,inProgressMessage:`Installing command: ${e.name}`,endMessage:r=>r.installed?`Install completed for ${e.name}`:`Install failed for ${e.name}`,onError:r=>({result:{name:e.name,type:"command",installed:!1,error:r instanceof Error?r.message:String(r),inProgress:!1},message:r instanceof Error?r.message:String(r)})});try{return await doInstall()}catch(r){return{name:e.name,type:"command",installed:!1,error:r instanceof Error?r.message:String(r),inProgress:!1}}}}
2
2
  //# sourceMappingURL=CommandInstaller.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["OSType","BaseInstaller","getOSType","refreshPathEnv","Logger","RecordingConstants","CommandInstaller","getLatestVersion","requirement","options","Error","commandMappings","uv","windows","macos","canHandle","type","supportCheckUpdates","getMappedPackageId","commandName","osType","mapping","this","Windows","checkInstallation","alias","name","commandResult","execPromise","error","debug","stdout","stderr","installed","trim","length","version","versionResult","versionMatch","match","undefined","inProgress","message","String","install","recorder","doInstall","async","status","packageId","installCommand","MacOS","recordStep","toLowerCase","includes","updatedStatus","recording","stepName","STEP_COMMAND_INSTALLER_INSTALL","inProgressMessage","endMessage","result","onError"],"sources":["../../../../src/core/installers/requirements/CommandInstaller.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["OSType","BaseInstaller","getOSType","refreshPathEnv","Logger","RecordingConstants","CommandInstaller","getLatestVersion","requirement","options","Error","commandMappings","uv","windows","macos","canHandle","type","supportCheckUpdates","getMappedPackageId","commandName","osType","mapping","this","Windows","checkInstallation","alias","name","commandResult","execPromise","error","debug","stdout","stderr","installed","trim","length","version","versionResult","versionMatch","match","undefined","inProgress","message","String","install","recorder","doInstall","async","status","packageId","installCommand","MacOS","recordStep","toLowerCase","includes","updatedStatus","recording","stepName","STEP_COMMAND_INSTALLER_INSTALL","inProgressMessage","endMessage","result","onError"],"sources":["../../../../src/core/installers/requirements/CommandInstaller.ts"],"mappings":"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","ignoreList":[]}
@@ -1,2 +1,2 @@
1
- import{BaseInstaller}from"./BaseInstaller.js";import{handleGitHubRelease}from"../../../utils/githubUtils.js";import{handleArtifact}from"../../../utils/adoUtils.js";import*as RecordingConstants from"../../metadatas/recordingConstants.js";export class GeneralInstaller extends BaseInstaller{getLatestVersion(e,r){throw new Error("Method not implemented.")}canHandle(e){return"other"===e.type}supportCheckUpdates(){return!1}async checkInstallation(e){return{name:e.name,type:"other",installed:!1,inProgress:!1}}async install(e,r,t){const s=async()=>{if(!e.registry)throw new Error('Registry must be specified for requirement type "other"');let r;if(e.registry.githubRelease)r=(await handleGitHubRelease(e,e.registry.githubRelease)).resolvedPath;else{if(!e.registry.artifacts)throw new Error("Invalid registry configuration");await handleArtifact(e,e.registry.artifacts)}return{name:e.name,type:"other",installed:!0,version:e.version,inProgress:!1}};if(r)return r.recording(s,{stepName:RecordingConstants.STEP_GENERAL_INSTALLER_INSTALL,inProgressMessage:`Installing general requirement: ${e.name}`,endMessage:r=>r.installed?`Install completed for ${e.name}`:`Install failed for ${e.name}`,onError:r=>({result:{name:e.name,type:"other",installed:!1,error:r instanceof Error?r.message:String(r),inProgress:!1},message:r instanceof Error?r.message:String(r)})});try{return await s()}catch(r){return{name:e.name,type:"other",installed:!1,error:r instanceof Error?r.message:String(r),inProgress:!1}}}}
1
+ import{BaseInstaller}from"./BaseInstaller.js";import{handleGitHubRelease}from"../../../utils/githubUtils.js";import{handleArtifact}from"../../../utils/adoUtils.js";import*as RecordingConstants from"../../metadatas/recordingConstants.js";export class GeneralInstaller extends BaseInstaller{getLatestVersion(e,r){throw new Error("Method not implemented.")}canHandle(e){return"other"===e.type}supportCheckUpdates(){return!1}async checkInstallation(e){return{name:e.name,type:"other",installed:!1,inProgress:!1}}async install(e,r,t){const doInstall=async()=>{if(!e.registry)throw new Error('Registry must be specified for requirement type "other"');let r;if(e.registry.githubRelease){r=(await handleGitHubRelease(e,e.registry.githubRelease)).resolvedPath}else{if(!e.registry.artifacts)throw new Error("Invalid registry configuration");await handleArtifact(e,e.registry.artifacts)}return{name:e.name,type:"other",installed:!0,version:e.version,inProgress:!1}};if(r)return r.recording(doInstall,{stepName:RecordingConstants.STEP_GENERAL_INSTALLER_INSTALL,inProgressMessage:`Installing general requirement: ${e.name}`,endMessage:r=>r.installed?`Install completed for ${e.name}`:`Install failed for ${e.name}`,onError:r=>({result:{name:e.name,type:"other",installed:!1,error:r instanceof Error?r.message:String(r),inProgress:!1},message:r instanceof Error?r.message:String(r)})});try{return await doInstall()}catch(r){return{name:e.name,type:"other",installed:!1,error:r instanceof Error?r.message:String(r),inProgress:!1}}}}
2
2
  //# sourceMappingURL=GeneralInstaller.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["BaseInstaller","handleGitHubRelease","handleArtifact","RecordingConstants","GeneralInstaller","getLatestVersion","requirement","options","Error","canHandle","type","supportCheckUpdates","checkInstallation","name","installed","inProgress","install","recorder","doInstall","async","registry","installPath","githubRelease","resolvedPath","artifacts","version","recording","stepName","STEP_GENERAL_INSTALLER_INSTALL","inProgressMessage","endMessage","result","onError","error","message","String"],"sources":["../../../../src/core/installers/requirements/GeneralInstaller.ts"],"mappings":"OACSA,kBAAqB,4BACrBC,wBAA2B,uCAC3BC,mBAAsB,uCAEnBC,uBAAwB,+CAM9B,MAAOC,yBAAyBJ,cAMlC,gBAAAK,CAAiBC,EAAgCC,GAC7C,MAAM,IAAIC,MAAM,0BACpB,CAMA,SAAAC,CAAUH,GACN,MAA4B,UAArBA,EAAYI,IACvB,CAEA,mBAAAC,GACI,OAAO,CACX,CASA,uBAAMC,CAAkBN,GAGpB,MAAO,CACHO,KAAMP,EAAYO,KAClBH,KAAM,QACNI,WAAW,EACXC,YAAY,EAEpB,CAmBA,aAAMC,CAAQV,EAAgCW,EAAmCV,GAC7E,MAAMW,EAAYC,UAEd,IAAKb,EAAYc,SACb,MAAM,IAAIZ,MAAM,2DAGpB,IAAIa,EAEJ,GAAIf,EAAYc,SAASE,cAErBD,SADqBpB,oBAAoBK,EAAaA,EAAYc,SAASE,gBACtDC,iBAClB,KAAIjB,EAAYc,SAASI,UAG5B,MAAM,IAAIhB,MAAM,wCAFVN,eAAeI,EAAaA,EAAYc,SAASI,UAG3D,CAIA,MAAO,CACHX,KAAMP,EAAYO,KAClBH,KAAM,QACNI,WAAW,EACXW,QAASnB,EAAYmB,QACrBV,YAAY,EACf,EAGL,GAAIE,EACA,OAAOA,EAASS,UAAUR,EAAW,CACjCS,SAAUxB,mBAAmByB,+BAC7BC,kBAAmB,mCAAmCvB,EAAYO,OAClEiB,WAAaC,GACTA,EAAOjB,UACD,yBAAyBR,EAAYO,OACrC,sBAAsBP,EAAYO,OAC5CmB,QAAUC,IACC,CACHF,OAAQ,CACJlB,KAAMP,EAAYO,KAClBH,KAAM,QACNI,WAAW,EACXmB,MAAOA,aAAiBzB,MAAQyB,EAAMC,QAAUC,OAAOF,GACvDlB,YAAY,GAEhBmB,QAASD,aAAiBzB,MAAQyB,EAAMC,QAAUC,OAAOF,OAKrE,IACI,aAAaf,GACjB,CAAE,MAAOe,GACL,MAAO,CACHpB,KAAMP,EAAYO,KAClBH,KAAM,QACNI,WAAW,EACXmB,MAAOA,aAAiBzB,MAAQyB,EAAMC,QAAUC,OAAOF,GACvDlB,YAAY,EAEpB,CAER","ignoreList":[]}
1
+ {"version":3,"names":["BaseInstaller","handleGitHubRelease","handleArtifact","RecordingConstants","GeneralInstaller","getLatestVersion","requirement","options","Error","canHandle","type","supportCheckUpdates","checkInstallation","name","installed","inProgress","install","recorder","doInstall","async","registry","installPath","githubRelease","resolvedPath","artifacts","version","recording","stepName","STEP_GENERAL_INSTALLER_INSTALL","inProgressMessage","endMessage","result","onError","error","message","String"],"sources":["../../../../src/core/installers/requirements/GeneralInstaller.ts"],"mappings":"OACSA,kBAAqB,4BACrBC,wBAA2B,uCAC3BC,mBAAsB,uCAEnBC,uBAAwB,+CAM9B,MAAOC,yBAAyBJ,cAMlC,gBAAAK,CAAiBC,EAAgCC,GAC7C,MAAM,IAAIC,MAAM,0BACpB,CAMA,SAAAC,CAAUH,GACN,MAA4B,UAArBA,EAAYI,IACvB,CAEA,mBAAAC,GACI,OAAO,CACX,CASA,uBAAMC,CAAkBN,GAGpB,MAAO,CACHO,KAAMP,EAAYO,KAClBH,KAAM,QACNI,WAAW,EACXC,YAAY,EAEpB,CAmBA,aAAMC,CAAQV,EAAgCW,EAAmCV,GAC7E,MAAMW,UAAYC,UAEd,IAAKb,EAAYc,SACb,MAAM,IAAIZ,MAAM,2DAGpB,IAAIa,EAEJ,GAAIf,EAAYc,SAASE,cAAe,CAEpCD,SADqBpB,oBAAoBK,EAAaA,EAAYc,SAASE,gBACtDC,YACzB,KAAO,KAAIjB,EAAYc,SAASI,UAG5B,MAAM,IAAIhB,MAAM,wCAFVN,eAAeI,EAAaA,EAAYc,SAASI,UAG3D,CAIA,MAAO,CACHX,KAAMP,EAAYO,KAClBH,KAAM,QACNI,WAAW,EACXW,QAASnB,EAAYmB,QACrBV,YAAY,EACf,EAGL,GAAIE,EACA,OAAOA,EAASS,UAAUR,UAAW,CACjCS,SAAUxB,mBAAmByB,+BAC7BC,kBAAmB,mCAAmCvB,EAAYO,OAClEiB,WAAaC,GACTA,EAAOjB,UACD,yBAAyBR,EAAYO,OACrC,sBAAsBP,EAAYO,OAC5CmB,QAAUC,IACC,CACHF,OAAQ,CACJlB,KAAMP,EAAYO,KAClBH,KAAM,QACNI,WAAW,EACXmB,MAAOA,aAAiBzB,MAAQyB,EAAMC,QAAUC,OAAOF,GACvDlB,YAAY,GAEhBmB,QAASD,aAAiBzB,MAAQyB,EAAMC,QAAUC,OAAOF,OAKrE,IACI,aAAaf,WACjB,CAAE,MAAOe,GACL,MAAO,CACHpB,KAAMP,EAAYO,KAClBH,KAAM,QACNI,WAAW,EACXmB,MAAOA,aAAiBzB,MAAQyB,EAAMC,QAAUC,OAAOF,GACvDlB,YAAY,EAEpB,CAER","ignoreList":[]}
@@ -32,6 +32,12 @@ export declare class NpmInstaller extends BaseInstaller {
32
32
  * @param options Installation options, may contain folderName.
33
33
  * @returns The status of the requirement
34
34
  */
35
+ /**
36
+ * Checks if the given NPM requirement is installed in the specified directory.
37
+ * Now checks if the requirementDir exists before attempting to get the installed version.
38
+ * @param requirement The requirement configuration
39
+ * @param options Optional server install options
40
+ */
35
41
  checkInstallation(requirement: RequirementConfig, options?: ServerInstallOptions): Promise<RequirementStatus>;
36
42
  /**
37
43
  * Retrieves the installed version of an NPM package from a given directory.
@@ -1,2 +1,2 @@
1
- import{BaseInstaller}from"./BaseInstaller.js";import{compareVersions}from"../../../utils/versionUtils.js";import{handleGitHubRelease,getGitHubLatestVersion}from"../../../utils/githubUtils.js";import{handleArtifact as handleAdoArtifact,getArtifactLatestVersion}from"../../../utils/adoUtils.js";import path from"path";import fs from"fs/promises";import{SETTINGS_DIR}from"../../metadatas/constants.js";import{Logger}from"../../../utils/logger.js";import*as RecordingConstants from"../../metadatas/recordingConstants.js";export class NpmInstaller extends BaseInstaller{canHandle(e){return"npm"===e.type}supportCheckUpdates(){return!0}async getLatestVersion(e,t){if(e.registry){if(e.registry.githubRelease)return getGitHubLatestVersion(this.execPromise,e.registry.githubRelease.repository);if(e.registry.artifacts){const r=t?.settings?.folderName||this._getRequirementFolderPath(e);return getArtifactLatestVersion(e,e.registry.artifacts,t,r)}}const{stdout:r}=await this.execPromise(`npm view ${e.name} version`);return r.trim()}_getRequirementFolderPath(e){return path.join(SETTINGS_DIR,"npm_requirements",e.name,e.version.includes("latest")?"latest":e.version)}async checkInstallation(e,t){const r=t?.settings?.folderName||this._getRequirementFolderPath(e),n=this._getRequirementName(e);Logger.debug(`Checking installation for ${n} in ${r}`);try{const t=await this._getInstalledVersion(n,r);return t?{name:e.name,type:"npm",installed:!0,version:t,npmPath:r,inProgress:!1}:{name:e.name,type:"npm",installed:!1,inProgress:!1,error:`Package ${e.name} not found or version missing in npm list output in ${r}.`}}catch(t){return Logger.debug(`Error checking installation for ${e.name} in ${r}: ${t instanceof Error?t.message:String(t)}`),{name:e.name,type:"npm",installed:!1,inProgress:!1,error:t instanceof Error?t.message:String(t)}}}async _getInstalledVersion(e,t){try{const r=`npm list ${e} --depth=0 --json --prefix "${t}"`;Logger.debug(`Getting installed version for ${e} in ${t} with command: ${r}`);const{stdout:n}=await this.execPromise(r),s=JSON.parse(n);return s.dependencies&&s.dependencies[e]&&s.dependencies[e].version?s.dependencies[e].version:void Logger.debug(`Package ${e} not found in npm list output in ${t}.`)}catch(r){return void Logger.debug(`Error getting installed version for ${e} in ${t}: ${r instanceof Error?r.message:String(r)}`)}}_getRequirementName(e){return e.registry?.artifacts?.registryName?`@${e.registry.artifacts.registryName}/${e.name}`:e.name}async _installPackage(e,t,r,n){Logger.debug(`Installing NPM package from "${t}" into "${r}"`),await fs.mkdir(r,{recursive:!0});const s=`npm install ${t} --prefix "${r}"`;Logger.debug(`Executing install command: ${s}`);const i=this._getRequirementName(e);return await n.recording((async()=>{const{stdout:n,stderr:a}=await this.execPromise(s);Logger.debug(`NPM install stdout for ${t} in ${r}: ${n}`),!a||a.toLowerCase().includes("added")||a.toLowerCase().includes("updated")||a.toLowerCase().includes("found 0 vulnerabilities")||Logger.log(`NPM install stderr for ${t} in ${r}: ${a}`);const o=await this._getInstalledVersion(i,r);if(o)return Logger.log(`Successfully installed and verified ${i}@${o} into ${r}`),{version:o};throw new Error(`Successfully ran npm install for ${t}, but ${e.name} version could not be determined via npm list in ${r}, stderr: ${a}`)}),{stepName:RecordingConstants.STEP_INSTALLATION_COMMAND_EXECUTION,inProgressMessage:`Running: ${s}`,onError:e=>{throw Logger.error(`Error during NPM installation: ${e instanceof Error?e.message:String(e)}`),e}})}async install(e,t,r){const n=r?.settings?.folderName||this._getRequirementFolderPath(e);return await fs.mkdir(n,{recursive:!0}),t.recording((async()=>{const s=await this.checkInstallation(e,{settings:{folderName:n}});if(s.installed&&s.version&&0===compareVersions(s.version,e.version)&&!e.version.toLowerCase().includes("latest"))return Logger.log(`${e.name}@${s.version} already installed in ${n}.`),s;let i=e.version,a=`${e.name}@${e.version}`;if(e.registry)if(e.registry.githubRelease){const t=await handleGitHubRelease(e,e.registry.githubRelease);a=t.resolvedPath,i=t.resolvedVersion}else{if(!e.registry.artifacts)throw t&&await t.recordStep("NpmInstaller:RegistryConfig","failed","Invalid registry configuration for npm."),new Error("Invalid registry configuration for npm.");{const t=await handleAdoArtifact(e,e.registry.artifacts,r?.settings?.pythonCommand,n);a=`${t.package}@${t.version}`,i=t.version}}return i=(await this._installPackage(e,a,n,t)).version,{name:e.name,type:"npm",installed:!0,version:i,inProgress:!1,npmPath:n}}),{stepName:RecordingConstants.STEP_NPM_INSTALLER_INSTALL,inProgressMessage:`Installing npm package: ${e.name}`,endMessage:t=>t.installed?`Install completed for ${e.name}`:`Install failed for ${e.name}`,onError:t=>({result:{name:e.name,type:"npm",installed:!1,error:t instanceof Error?t.message:String(t),inProgress:!1},message:t instanceof Error?t.message:String(t)})})}}
1
+ import{BaseInstaller}from"./BaseInstaller.js";import{compareVersions}from"../../../utils/versionUtils.js";import{handleGitHubRelease,getGitHubLatestVersion}from"../../../utils/githubUtils.js";import{handleArtifact as handleAdoArtifact,getArtifactLatestVersion}from"../../../utils/adoUtils.js";import path from"path";import fs from"fs/promises";import{SETTINGS_DIR}from"../../metadatas/constants.js";import{Logger}from"../../../utils/logger.js";import*as RecordingConstants from"../../metadatas/recordingConstants.js";export class NpmInstaller extends BaseInstaller{canHandle(e){return"npm"===e.type}supportCheckUpdates(){return!0}async getLatestVersion(e,t){if(e.registry){if(e.registry.githubRelease)return getGitHubLatestVersion(this.execPromise,e.registry.githubRelease.repository);if(e.registry.artifacts){const r=t?.settings?.folderName||this._getRequirementFolderPath(e);return getArtifactLatestVersion(e,e.registry.artifacts,t,r)}}const{stdout:r}=await this.execPromise(`npm view ${e.name} version`);return r.trim()}_getRequirementFolderPath(e){return path.join(SETTINGS_DIR,"npm_requirements",e.name,e.version.includes("latest")?"latest":e.version)}async checkInstallation(e,t){const r=t?.settings?.folderName||this._getRequirementFolderPath(e),n=this._getRequirementName(e);try{await fs.access(r)}catch(t){return Logger.debug(`Requirement directory ${r} does not exist. Skipping installation check.`),{name:e.name,type:"npm",installed:!1,inProgress:!1,error:`Requirement directory ${r} does not exist. Skipping installation check.`}}try{const t=await this._getInstalledVersion(n,r);return t?{name:e.name,type:"npm",installed:!0,version:t,npmPath:r,inProgress:!1}:{name:e.name,type:"npm",installed:!1,inProgress:!1,error:`Package ${e.name} not found or version missing in npm list output in ${r}.`}}catch(t){return Logger.debug(`Error checking installation for ${e.name} in ${r}: ${t instanceof Error?t.message:String(t)}`),{name:e.name,type:"npm",installed:!1,inProgress:!1,error:t instanceof Error?t.message:String(t)}}}async _getInstalledVersion(e,t){try{const r=`npm list ${e} --depth=0 --json --prefix "${t}"`;Logger.debug(`Getting installed version for ${e} in ${t} with command: ${r}`);const{stdout:n}=await this.execPromise(r),s=JSON.parse(n);return s.dependencies&&s.dependencies[e]&&s.dependencies[e].version?s.dependencies[e].version:void Logger.debug(`Package ${e} not found in npm list output in ${t}.`)}catch(r){return void Logger.debug(`Error getting installed version for ${e} in ${t}: ${r instanceof Error?r.message:String(r)}`)}}_getRequirementName(e){return e.registry?.artifacts?.registryName?`@${e.registry.artifacts.registryName}/${e.name}`:e.name}async _installPackage(e,t,r,n){Logger.debug(`Installing NPM package from "${t}" into "${r}"`),await fs.mkdir(r,{recursive:!0});const s=`npm install ${t} --prefix "${r}"`;Logger.debug(`Executing install command: ${s}`);const i=this._getRequirementName(e);return await n.recording((async()=>{const{stdout:n,stderr:a}=await this.execPromise(s);Logger.debug(`NPM install stdout for ${t} in ${r}: ${n}`),!a||a.toLowerCase().includes("added")||a.toLowerCase().includes("updated")||a.toLowerCase().includes("found 0 vulnerabilities")||Logger.log(`NPM install stderr for ${t} in ${r}: ${a}`);const o=await this._getInstalledVersion(i,r);if(o)return Logger.log(`Successfully installed and verified ${i}@${o} into ${r}`),{version:o};throw new Error(`Successfully ran npm install for ${t}, but ${e.name} version could not be determined via npm list in ${r}, stderr: ${a}`)}),{stepName:RecordingConstants.STEP_INSTALLATION_COMMAND_EXECUTION,inProgressMessage:`Running: ${s}`,onError:e=>{throw Logger.error(`Error during NPM installation: ${e instanceof Error?e.message:String(e)}`),e}})}async install(e,t,r){const n=r?.settings?.folderName||this._getRequirementFolderPath(e);return await fs.mkdir(n,{recursive:!0}),t.recording((async()=>{const s=await this.checkInstallation(e,{settings:{folderName:n}});if(s.installed&&s.version&&0===compareVersions(s.version,e.version)&&!e.version.toLowerCase().includes("latest"))return Logger.log(`${e.name}@${s.version} already installed in ${n}.`),s;let i=e.version,a=`${e.name}@${e.version}`;if(e.registry)if(e.registry.githubRelease){const t=await handleGitHubRelease(e,e.registry.githubRelease);a=t.resolvedPath,i=t.resolvedVersion}else{if(!e.registry.artifacts)throw t&&await t.recordStep("NpmInstaller:RegistryConfig","failed","Invalid registry configuration for npm."),new Error("Invalid registry configuration for npm.");{const t=await handleAdoArtifact(e,e.registry.artifacts,r?.settings?.pythonCommand,n);a=`${t.package}@${t.version}`,i=t.version}}return i=(await this._installPackage(e,a,n,t)).version,{name:e.name,type:"npm",installed:!0,version:i,inProgress:!1,npmPath:n}}),{stepName:RecordingConstants.STEP_NPM_INSTALLER_INSTALL,inProgressMessage:`Installing npm package: ${e.name}`,endMessage:t=>t.installed?`Install completed for ${e.name}`:`Install failed for ${e.name}`,onError:t=>({result:{name:e.name,type:"npm",installed:!1,error:t instanceof Error?t.message:String(t),inProgress:!1},message:t instanceof Error?t.message:String(t)})})}}
2
2
  //# sourceMappingURL=NpmInstaller.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["BaseInstaller","compareVersions","handleGitHubRelease","getGitHubLatestVersion","handleAdoArtifact","getArtifactLatestVersion","path","fs","SETTINGS_DIR","Logger","RecordingConstants","NpmInstaller","canHandle","requirement","type","supportCheckUpdates","getLatestVersion","options","registry","githubRelease","this","execPromise","repository","artifacts","targetDir","settings","folderName","_getRequirementFolderPath","stdout","name","trim","join","version","includes","checkInstallation","requirementDir","requirementName","_getRequirementName","debug","installedVersion","_getInstalledVersion","installed","npmPath","inProgress","error","Error","message","String","directory","command","listOutput","JSON","parse","dependencies","registryName","_installPackage","packageSource","recorder","mkdir","recursive","installCommand","recording","async","installStdout","stderr","installStderr","toLowerCase","log","stepName","STEP_INSTALLATION_COMMAND_EXECUTION","inProgressMessage","onError","install","status","resolvedVersion","packageToInstall","result","resolvedPath","recordStep","adoResult","pythonCommand","package","STEP_NPM_INSTALLER_INSTALL","endMessage"],"sources":["../../../../src/core/installers/requirements/NpmInstaller.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["BaseInstaller","compareVersions","handleGitHubRelease","getGitHubLatestVersion","handleAdoArtifact","getArtifactLatestVersion","path","fs","SETTINGS_DIR","Logger","RecordingConstants","NpmInstaller","canHandle","requirement","type","supportCheckUpdates","getLatestVersion","options","registry","githubRelease","this","execPromise","repository","artifacts","targetDir","settings","folderName","_getRequirementFolderPath","stdout","name","trim","join","version","includes","checkInstallation","requirementDir","requirementName","_getRequirementName","access","dirErr","debug","installed","inProgress","error","installedVersion","_getInstalledVersion","npmPath","Error","message","String","directory","command","listOutput","JSON","parse","dependencies","registryName","_installPackage","packageSource","recorder","mkdir","recursive","installCommand","recording","async","installStdout","stderr","installStderr","toLowerCase","log","stepName","STEP_INSTALLATION_COMMAND_EXECUTION","inProgressMessage","onError","install","status","resolvedVersion","packageToInstall","result","resolvedPath","recordStep","adoResult","pythonCommand","package","STEP_NPM_INSTALLER_INSTALL","endMessage"],"sources":["../../../../src/core/installers/requirements/NpmInstaller.ts"],"mappings":"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","ignoreList":[]}
@@ -1,2 +1,2 @@
1
- import{BaseInstaller}from"./BaseInstaller.js";import{handleGitHubRelease,getGitHubLatestVersion}from"../../../utils/githubUtils.js";import{compareVersions}from"../../../utils/versionUtils.js";import{Logger}from"../../../utils/logger.js";import*as RecordingConstants from"../../metadatas/recordingConstants.js";import{ensureDotnetToolsInPath}from"../../../utils/osUtils.js";import*as fs from"fs";import*as path from"path";export class NugetInstaller extends BaseInstaller{canHandle(e){return"nuget"===e.type}supportCheckUpdates(){return!0}async getLatestVersion(e,t){return e.registry&&e.registry.githubRelease?getGitHubLatestVersion(this.execPromise,e.registry.githubRelease.repository):e.registry&&e.registry.artifacts?void Logger.warn(`Artifacts registry is not supported for NuGet tool '${e.name}'.`):(Logger.warn(`Direct latest version check for NuGet tool '${e.name}' without a GitHub release registry is not supported. Please specify a version or use a GitHub release.`),e.version||void 0)}async checkInstallation(e,t){try{const{stdout:t}=await this.execPromise("dotnet tool list -g"),s=t.split("\n");let r,o=!1;for(const t of s){const s=t.trim().split(/\s+/);if(s.length>=2&&s[0].toLowerCase()===e.name.toLowerCase()){r=s[1],o=!0;break}}return{name:e.name,type:"nuget",installed:o,version:r,inProgress:!1}}catch(t){return Logger.debug(`Error checking NuGet tool installation for ${e.name}: ${t instanceof Error?t.message:String(t)}`),{name:e.name,type:"nuget",installed:!1,error:`Failed to check installation: ${t instanceof Error?t.message:String(t)}`,inProgress:!1}}}async install(e,t,s){return await t.recording((async()=>{const r=await this.checkInstallation(e,s);if(r.installed&&r.version&&e.version&&0===compareVersions(r.version,e.version)&&!e.version.toLowerCase().includes("latest"))return Logger.log(`NuGet tool ${e.name}==${r.version} already installed.`),r;let o;if(e.registry&&e.registry.githubRelease){const t=await handleGitHubRelease(e,e.registry.githubRelease),s=e.name,r=fs.existsSync(t.resolvedPath)&&fs.lstatSync(t.resolvedPath).isDirectory()?t.resolvedPath:path.dirname(t.resolvedPath);o=e.version&&!e.version.toLowerCase().includes("latest")?`dotnet tool install --global --add-source "${r}" ${s} --version ${e.version}`:`dotnet tool install --global --add-source "${r}" ${s}`}else{if(e.registry&&e.registry.artifacts){const s=`Artifacts registry is not supported for NuGet tool yet'${e.name}'. Only GitHubRelease is supported.`;throw Logger.error(s),await t.recordStep("NugetInstaller:RegistryConfig","failed",s),new Error(s)}o=e.version&&!e.version.toLowerCase().includes("latest")?`dotnet tool install --global ${e.name} --version ${e.version}`:`dotnet tool install --global ${e.name}`}return await t.recording((async()=>{const{stdout:t,stderr:r}=await this.execPromise(o);if(r&&!t.toLowerCase().includes("already installed")&&(Logger.debug(`NuGet tool installation stderr for ${e.name}: ${r}`),!(await this.checkInstallation(e,s)).installed))throw Logger.error(`NuGet tool ${e.name} not found after install command, stderr: ${r}`),new Error(`NuGet tool installation failed with: ${r}`);const n=await this.checkInstallation(e,s);if(!n.installed)throw new Error(`NuGet tool ${e.name} failed to install. Please check logs.`);return await ensureDotnetToolsInPath(),{name:e.name,type:"nuget",installed:!0,version:n.version||e.version,inProgress:!1}}),{stepName:`${RecordingConstants.STEP_INSTALL_COMMAND_PREFIX}: ${e.name} : ${e.version||"latest"}`,inProgressMessage:`Running: ${o}`,endMessage:e=>e.installed?`Succeeded: ${o}`:`Failed: ${o}`})}),{stepName:RecordingConstants.STEP_NUGET_INSTALLER_INSTALL,inProgressMessage:`Installing NuGet tool: ${e.name}`,endMessage:t=>t.installed?`Install completed for ${e.name} with version ${t.version}`:`Install failed for ${e.name}`,onError:t=>({result:{name:e.name,type:"nuget",installed:!1,error:t instanceof Error?t.message:String(t),inProgress:!1},message:t instanceof Error?t.message:String(t)})})}}
1
+ import{BaseInstaller}from"./BaseInstaller.js";import{handleGitHubRelease,getGitHubLatestVersion}from"../../../utils/githubUtils.js";import{compareVersions}from"../../../utils/versionUtils.js";import{Logger}from"../../../utils/logger.js";import*as RecordingConstants from"../../metadatas/recordingConstants.js";import{ensureDotnetToolsInPath}from"../../../utils/osUtils.js";import*as fs from"fs";import*as path from"path";export class NugetInstaller extends BaseInstaller{canHandle(e){return"nuget"===e.type}supportCheckUpdates(){return!0}async getLatestVersion(e,t){return e.registry&&e.registry.githubRelease?getGitHubLatestVersion(this.execPromise,e.registry.githubRelease.repository):e.registry&&e.registry.artifacts?void Logger.warn(`Artifacts registry is not supported for NuGet tool '${e.name}'.`):(Logger.warn(`Direct latest version check for NuGet tool '${e.name}' without a GitHub release registry is not supported. Please specify a version or use a GitHub release.`),e.version||void 0)}async checkInstallation(e,t){try{const{stdout:t}=await this.execPromise("dotnet tool list -g"),s=t.split("\n");let r,o=!1;for(const t of s){const s=t.trim().split(/\s+/);if(s.length>=2&&s[0].toLowerCase()===e.name.toLowerCase()){r=s[1],o=!0;break}}return{name:e.name,type:"nuget",installed:o,version:r,inProgress:!1}}catch(t){return Logger.debug(`Error checking NuGet tool installation for ${e.name}: ${t instanceof Error?t.message:String(t)}`),{name:e.name,type:"nuget",installed:!1,error:`Failed to check installation: ${t instanceof Error?t.message:String(t)}`,inProgress:!1}}}async install(e,t,s){return await t.recording((async()=>{const r=await this.checkInstallation(e,s);if(r.installed&&r.version&&e.version&&0===compareVersions(r.version,e.version)&&!e.version.toLowerCase().includes("latest"))return Logger.log(`NuGet tool ${e.name}==${r.version} already installed.`),r;let o;if(e.registry&&e.registry.githubRelease){const t=await handleGitHubRelease(e,e.registry.githubRelease),s=e.name,r=fs.existsSync(t.resolvedPath)&&fs.lstatSync(t.resolvedPath).isDirectory()?t.resolvedPath:path.dirname(t.resolvedPath);o=e.version&&!e.version.toLowerCase().includes("latest")?`dotnet tool install --global --add-source "${r}" ${s} --version ${e.version}`:`dotnet tool install --global --add-source "${r}" ${s}`}else{if(e.registry&&e.registry.artifacts){const s=`Artifacts registry is not supported for NuGet tool yet'${e.name}'. Only GitHubRelease is supported.`;throw Logger.error(s),await t.recordStep("NugetInstaller:RegistryConfig","failed",s),new Error(s)}o=e.version&&!e.version.toLowerCase().includes("latest")?`dotnet tool install --global ${e.name} --version ${e.version}`:`dotnet tool install --global ${e.name}`}return await t.recording((async()=>{const{stdout:t,stderr:r}=await this.execPromise(o);if(r&&!t.toLowerCase().includes("already installed")){Logger.debug(`NuGet tool installation stderr for ${e.name}: ${r}`);if(!(await this.checkInstallation(e,s)).installed)throw Logger.error(`NuGet tool ${e.name} not found after install command, stderr: ${r}`),new Error(`NuGet tool installation failed with: ${r}`)}const n=await this.checkInstallation(e,s);if(!n.installed)throw new Error(`NuGet tool ${e.name} failed to install. Please check logs.`);return await ensureDotnetToolsInPath(),{name:e.name,type:"nuget",installed:!0,version:n.version||e.version,inProgress:!1}}),{stepName:`${RecordingConstants.STEP_INSTALL_COMMAND_PREFIX}: ${e.name} : ${e.version||"latest"}`,inProgressMessage:`Running: ${o}`,endMessage:e=>e.installed?`Succeeded: ${o}`:`Failed: ${o}`})}),{stepName:RecordingConstants.STEP_NUGET_INSTALLER_INSTALL,inProgressMessage:`Installing NuGet tool: ${e.name}`,endMessage:t=>t.installed?`Install completed for ${e.name} with version ${t.version}`:`Install failed for ${e.name}`,onError:t=>({result:{name:e.name,type:"nuget",installed:!1,error:t instanceof Error?t.message:String(t),inProgress:!1},message:t instanceof Error?t.message:String(t)})})}}
2
2
  //# sourceMappingURL=NugetInstaller.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["BaseInstaller","handleGitHubRelease","getGitHubLatestVersion","compareVersions","Logger","RecordingConstants","ensureDotnetToolsInPath","fs","path","NugetInstaller","canHandle","requirement","type","supportCheckUpdates","getLatestVersion","_options","registry","githubRelease","this","execPromise","repository","artifacts","warn","name","version","undefined","checkInstallation","stdout","lines","split","installedVersion","isInstalled","line","parts","trim","length","toLowerCase","installed","inProgress","error","debug","Error","message","String","install","recorder","recording","async","status","includes","log","command","result","packageId","resolvedDir","existsSync","resolvedPath","lstatSync","isDirectory","dirname","errorMessage","recordStep","stderr","finalStatus","stepName","STEP_INSTALL_COMMAND_PREFIX","inProgressMessage","endMessage","STEP_NUGET_INSTALLER_INSTALL","onError"],"sources":["../../../../src/core/installers/requirements/NugetInstaller.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["BaseInstaller","handleGitHubRelease","getGitHubLatestVersion","compareVersions","Logger","RecordingConstants","ensureDotnetToolsInPath","fs","path","NugetInstaller","canHandle","requirement","type","supportCheckUpdates","getLatestVersion","_options","registry","githubRelease","this","execPromise","repository","artifacts","warn","name","version","undefined","checkInstallation","stdout","lines","split","installedVersion","isInstalled","line","parts","trim","length","toLowerCase","installed","inProgress","error","debug","Error","message","String","install","recorder","recording","async","status","includes","log","command","result","packageId","resolvedDir","existsSync","resolvedPath","lstatSync","isDirectory","dirname","errorMessage","recordStep","stderr","finalStatus","stepName","STEP_INSTALL_COMMAND_PREFIX","inProgressMessage","endMessage","STEP_NUGET_INSTALLER_INSTALL","onError"],"sources":["../../../../src/core/installers/requirements/NugetInstaller.ts"],"mappings":"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","ignoreList":[]}
@@ -1,2 +1,2 @@
1
- import{BaseInstaller}from"./BaseInstaller.js";import{handleGitHubRelease,getGitHubLatestVersion}from"../../../utils/githubUtils.js";import{handleArtifact as handleAdoArtifact,getArtifactLatestVersion}from"../../../utils/adoUtils.js";import{compareVersions}from"../../../utils/versionUtils.js";import{Logger}from"../../../utils/logger.js";import*as RecordingConstants from"../../metadatas/recordingConstants.js";export class PipInstaller extends BaseInstaller{getPythonCommand(e){return e?.settings?.pythonEnv||"python"}getPipCommand(e){return`${this.getPythonCommand(e)} -m pip`}canHandle(e){return"pip"===e.type}supportCheckUpdates(){return!0}async getLatestVersion(e,t){if(e.registry){if(e.registry.githubRelease)return getGitHubLatestVersion(this.execPromise,e.registry.githubRelease.repository);if(e.registry.artifacts)return getArtifactLatestVersion(e,e.registry.artifacts,t)}const s=this.getPipCommand(t),{stdout:r}=await this.execPromise(`${s} index versions ${e.name} --pre=0`),n=r.match(/(?:LATEST|Latest):\s*([^\s]+)/);if(n&&n[1])return n[1];const i=r.match(/(?:Available versions|VERSIONS):\s*([^\n]+)/);if(i&&i[1]){const e=i[1].split(",").map((e=>e.trim()));if(e.length>0)return e[0]}}async checkInstallation(e,t){try{const s=this.getPipCommand(t),{stdout:r,stderr:n}=await this.execPromise(`${s} show ${e.name}`),i=r.includes(e.name.toLowerCase()),a=r.match(/Version: (.+)/),o=a?a[1]:void 0;return{name:e.name,type:"pip",installed:i,version:o,inProgress:!1,pythonEnv:this.getPythonCommand(t)}}catch(s){return{name:e.name,type:"pip",installed:!1,error:s instanceof Error?s.message:String(s),inProgress:!1,pythonEnv:this.getPythonCommand(t)}}}async install(e,t,s){return await t.recording((async()=>{const r=await this.checkInstallation(e,s);if(r.installed&&r.version&&0===compareVersions(r.version,e.version)&&!e.version.toLowerCase().includes("latest"))return Logger.log(`${e.name}==${r.version} already installed for ${this.getPythonCommand}.`),r;const n=this.getPipCommand(s);let i;if(e.registry){let r;if(e.registry.githubRelease)r=(await handleGitHubRelease(e,e.registry.githubRelease)).resolvedPath,i=`${n} install "${r}"`;else{if(!e.registry.artifacts)throw await t.recordStep("PipInstaller:RegistryConfig","failed","Invalid registry configuration"),new Error("Invalid registry configuration");{const t=this.getPythonCommand(s),r=await handleAdoArtifact(e,e.registry.artifacts,t);i=`${n} install ${r.package} --extra-index-url ${r.registryUrl}`}}}else i=e.version&&!e.version.includes("latest")?`${n} install ${e.name}==${e.version}`:`${n} install --upgrade ${e.name}`;return await t.recording((async()=>{const{stderr:t}=await this.execPromise(i);if(t&&t.toLowerCase().includes("error")&&(Logger.debug(`Pip installation error: ${t}`),await new Promise((e=>setTimeout(e,5e3))),!(await this.checkInstallation(e,s)).installed))throw Logger.error(`Package not found after the command, ${t}`),new Error(`Pip installation failed with: ${t}`);return{name:e.name,type:"pip",installed:!0,version:e.version,inProgress:!1,pythonEnv:this.getPythonCommand(s)}}),{stepName:`${RecordingConstants.STEP_INSTALL_COMMAND_PREFIX}: ${e.name} : ${e.version}`,inProgressMessage:`Running: ${i}`,endMessage:e=>e.installed?`Succeeded: ${i}`:`Failed: ${i}`})}),{stepName:RecordingConstants.STEP_PIP_INSTALLER_INSTALL,inProgressMessage:`Installing pip package: ${e.name}`,endMessage:t=>t.installed?`Install completed for ${e.name} with version ${t.version}`:`Install failed for ${e.name}`,onError:t=>({result:{name:e.name,type:"pip",installed:!1,error:t instanceof Error?t.message:String(t),inProgress:!1,pythonEnv:this.getPythonCommand(s)},message:t instanceof Error?t.message:String(t)})})}}
1
+ import{BaseInstaller}from"./BaseInstaller.js";import{handleGitHubRelease,getGitHubLatestVersion}from"../../../utils/githubUtils.js";import{handleArtifact as handleAdoArtifact,getArtifactLatestVersion}from"../../../utils/adoUtils.js";import{compareVersions}from"../../../utils/versionUtils.js";import{Logger}from"../../../utils/logger.js";import*as RecordingConstants from"../../metadatas/recordingConstants.js";export class PipInstaller extends BaseInstaller{getPythonCommand(e){return e?.settings?.pythonEnv||"python"}getPipCommand(e){return`${this.getPythonCommand(e)} -m pip`}canHandle(e){return"pip"===e.type}supportCheckUpdates(){return!0}async getLatestVersion(e,t){if(e.registry){if(e.registry.githubRelease)return getGitHubLatestVersion(this.execPromise,e.registry.githubRelease.repository);if(e.registry.artifacts)return getArtifactLatestVersion(e,e.registry.artifacts,t)}const s=this.getPipCommand(t),{stdout:r}=await this.execPromise(`${s} index versions ${e.name} --pre=0`),n=r.match(/(?:LATEST|Latest):\s*([^\s]+)/);if(n&&n[1])return n[1];const i=r.match(/(?:Available versions|VERSIONS):\s*([^\n]+)/);if(i&&i[1]){const e=i[1].split(",").map((e=>e.trim()));if(e.length>0)return e[0]}}async checkInstallation(e,t){try{const s=this.getPipCommand(t),{stdout:r,stderr:n}=await this.execPromise(`${s} show ${e.name}`),i=r.includes(e.name.toLowerCase()),a=r.match(/Version: (.+)/),o=a?a[1]:void 0;return{name:e.name,type:"pip",installed:i,version:o,inProgress:!1,pythonEnv:this.getPythonCommand(t)}}catch(s){return{name:e.name,type:"pip",installed:!1,error:s instanceof Error?s.message:String(s),inProgress:!1,pythonEnv:this.getPythonCommand(t)}}}async install(e,t,s){return await t.recording((async()=>{const r=await this.checkInstallation(e,s);if(r.installed&&r.version&&0===compareVersions(r.version,e.version)&&!e.version.toLowerCase().includes("latest"))return Logger.log(`${e.name}==${r.version} already installed for ${this.getPythonCommand}.`),r;const n=this.getPipCommand(s);let i;if(e.registry){let r;if(e.registry.githubRelease){r=(await handleGitHubRelease(e,e.registry.githubRelease)).resolvedPath,i=`${n} install "${r}"`}else{if(!e.registry.artifacts)throw await t.recordStep("PipInstaller:RegistryConfig","failed","Invalid registry configuration"),new Error("Invalid registry configuration");{const t=this.getPythonCommand(s),r=await handleAdoArtifact(e,e.registry.artifacts,t);i=`${n} install ${r.package} --extra-index-url ${r.registryUrl}`}}}else i=e.version&&!e.version.includes("latest")?`${n} install ${e.name}==${e.version}`:`${n} install --upgrade ${e.name}`;return await t.recording((async()=>{const{stderr:t}=await this.execPromise(i);if(t&&t.toLowerCase().includes("error")){Logger.debug(`Pip installation error: ${t}`),await new Promise((e=>setTimeout(e,5e3)));if(!(await this.checkInstallation(e,s)).installed)throw Logger.error(`Package not found after the command, ${t}`),new Error(`Pip installation failed with: ${t}`)}return{name:e.name,type:"pip",installed:!0,version:e.version,inProgress:!1,pythonEnv:this.getPythonCommand(s)}}),{stepName:`${RecordingConstants.STEP_INSTALL_COMMAND_PREFIX}: ${e.name} : ${e.version}`,inProgressMessage:`Running: ${i}`,endMessage:e=>e.installed?`Succeeded: ${i}`:`Failed: ${i}`})}),{stepName:RecordingConstants.STEP_PIP_INSTALLER_INSTALL,inProgressMessage:`Installing pip package: ${e.name}`,endMessage:t=>t.installed?`Install completed for ${e.name} with version ${t.version}`:`Install failed for ${e.name}`,onError:t=>({result:{name:e.name,type:"pip",installed:!1,error:t instanceof Error?t.message:String(t),inProgress:!1,pythonEnv:this.getPythonCommand(s)},message:t instanceof Error?t.message:String(t)})})}}
2
2
  //# sourceMappingURL=PipInstaller.js.map