imcp 0.1.8 → 0.1.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +9 -4
- package/dist/cli/commands/list.js +1 -1
- package/dist/cli/commands/list.js.map +1 -1
- package/dist/cli/commands/pull.js +1 -1
- package/dist/cli/commands/pull.js.map +1 -1
- package/dist/cli/commands/serve.js +1 -1
- package/dist/cli/commands/serve.js.map +1 -1
- package/dist/cli/commands/uninstall.js +1 -1
- package/dist/cli/commands/uninstall.js.map +1 -1
- package/dist/cli/index.js +1 -1
- package/dist/cli/index.js.map +1 -1
- package/dist/core/installers/clients/BaseClientInstaller.js +1 -1
- package/dist/core/installers/clients/BaseClientInstaller.js.map +1 -1
- package/dist/core/installers/clients/ClientInstaller.js +1 -1
- package/dist/core/installers/clients/ClientInstaller.js.map +1 -1
- package/dist/core/installers/requirements/CommandInstaller.js +1 -1
- package/dist/core/installers/requirements/CommandInstaller.js.map +1 -1
- package/dist/core/installers/requirements/GeneralInstaller.js +1 -1
- package/dist/core/installers/requirements/GeneralInstaller.js.map +1 -1
- package/dist/core/installers/requirements/NugetInstaller.js +1 -1
- package/dist/core/installers/requirements/NugetInstaller.js.map +1 -1
- package/dist/core/installers/requirements/PipInstaller.js +1 -1
- package/dist/core/installers/requirements/PipInstaller.js.map +1 -1
- package/dist/core/loaders/ConfigurationLoader.js +1 -1
- package/dist/core/loaders/ConfigurationLoader.js.map +1 -1
- package/dist/core/loaders/ConfigurationProvider.d.ts +1 -1
- package/dist/core/loaders/ConfigurationProvider.js +1 -1
- package/dist/core/loaders/ConfigurationProvider.js.map +1 -1
- package/dist/core/loaders/InstallOperationManager.js +1 -1
- package/dist/core/loaders/InstallOperationManager.js.map +1 -1
- package/dist/core/loaders/SystemSettingsManager.js +1 -1
- package/dist/core/loaders/SystemSettingsManager.js.map +1 -1
- package/dist/core/onboard/FeedOnboardService.js +1 -1
- package/dist/core/onboard/FeedOnboardService.js.map +1 -1
- package/dist/core/onboard/OnboardStatusManager.js +1 -1
- package/dist/core/onboard/OnboardStatusManager.js.map +1 -1
- package/dist/core/validators/StdioServerValidator.js +1 -1
- package/dist/core/validators/StdioServerValidator.js.map +1 -1
- package/dist/services/InstallationService.js +1 -1
- package/dist/services/InstallationService.js.map +1 -1
- package/dist/services/MCPManager.d.ts +1 -1
- package/dist/services/MCPManager.js +1 -1
- package/dist/services/MCPManager.js.map +1 -1
- package/dist/services/RequirementService.js +1 -1
- package/dist/services/RequirementService.js.map +1 -1
- package/dist/services/ServerService.js +1 -1
- package/dist/services/ServerService.js.map +1 -1
- package/dist/services/TelemetryService.js +1 -1
- package/dist/services/TelemetryService.js.map +1 -1
- package/dist/utils/UpdateCheckTracker.js +1 -1
- package/dist/utils/UpdateCheckTracker.js.map +1 -1
- package/dist/utils/adoUtils.js +1 -1
- package/dist/utils/adoUtils.js.map +1 -1
- package/dist/utils/clientUtils.js +1 -1
- package/dist/utils/clientUtils.js.map +1 -1
- package/dist/utils/feedUtils.js +1 -1
- package/dist/utils/feedUtils.js.map +1 -1
- package/dist/utils/gitUtils.d.ts +15 -0
- package/dist/utils/gitUtils.js +2 -0
- package/dist/utils/gitUtils.js.map +1 -0
- package/dist/utils/logger.js +1 -1
- package/dist/utils/logger.js.map +1 -1
- package/dist/utils/macroExpressionUtils.js +1 -1
- package/dist/utils/macroExpressionUtils.js.map +1 -1
- package/dist/utils/osUtils.js +1 -1
- package/dist/utils/osUtils.js.map +1 -1
- package/dist/utils/versionUtils.js +1 -1
- package/dist/utils/versionUtils.js.map +1 -1
- package/dist/web/public/js/api.js +1 -1
- package/dist/web/public/js/detailsWidget.js +1 -1
- package/dist/web/public/js/flights/flights.js +1 -1
- package/dist/web/public/js/modal/installModal.js +1 -1
- package/dist/web/public/js/modal/installation.js +1 -1
- package/dist/web/public/js/modal/loadingModal.js +1 -1
- package/dist/web/public/js/modal/modalSetup.js +1 -1
- package/dist/web/public/js/modal.js +1 -1
- package/dist/web/public/js/notifications.js +1 -1
- package/dist/web/public/js/onboard/formProcessor.js +1 -1
- package/dist/web/public/js/onboard/index.js +1 -1
- package/dist/web/public/js/onboard/publishHandler.js +1 -1
- package/dist/web/public/js/onboard/uiHandlers.js +1 -1
- package/dist/web/public/js/onboard/validationHandlers.js +1 -1
- package/dist/web/public/js/serverCategoryDetails.js +1 -1
- package/dist/web/public/js/serverCategoryList.js +1 -1
- package/dist/web/public/js/settings.js +1 -1
- package/dist/web/server.js +1 -1
- package/dist/web/server.js.map +1 -1
- 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, --
|
|
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
|
|
55
|
-
npx -y imcp@latest serve --port
|
|
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 --
|
|
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,
|
|
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(
|
|
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","
|
|
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
|
|
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,
|
|
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
|
|
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","
|
|
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
|
package/dist/cli/index.js.map
CHANGED
|
@@ -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,
|
|
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,
|
|
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,t){const s={...e.installation};s.mode=e.mode,t.args&&t.args.length>0&&(Logger.debug(`Using args from ServerInstallOptions: ${t.args.join(" ")}`),s.args=t.args);const n=s.env||{},a={};for(const[e,t]of Object.entries(n)){const s=t;s.Default&&(a[e]=s.Default)}return s.env={...a,...t.env||{}},await this._resolveConfigMacros(s,t),Logger.debug(`Final installation config: ${JSON.stringify(s)}`),s}async _resolveConfigMacros(e,t){for(const s of Object.values(MACRO_EXPRESSIONS)){const n=e.args?.some((e=>"string"==typeof e&&e.includes(s))),a=Object.values(e.env||{}).some((e=>"string"==typeof e&&e.includes(s)));if(!n&&!a){Logger.debug(`Macro ${s} not found in args or env, skipping resolution.`);continue}const r=MacroResolverFunctions[s];if(r){const n=await r(e,t);if(void 0!==n){if(e.args){const t=e.args.join(" ");e.args=e.args.map((e=>"string"==typeof e&&e.includes(s)?e.replace(new RegExp(s.replace(/[${}]/g,"\\$&"),"g"),n):e)),e.args.join(" ")!==t&&Logger.debug(`Args after ${s} ('${n}') replacement: ${e.args.join(" ")}`)}if(e.env){const t=JSON.stringify(e.env);for(const t in e.env)"string"==typeof e.env[t]&&e.env[t].includes(s)&&(e.env[t]=e.env[t].replace(new RegExp(s.replace(/[${}]/g,"\\$&"),"g"),n));JSON.stringify(e.env)!==t&&Logger.debug(`Env after ${s} ('${n}') replacement: ${JSON.stringify(e.env)}`)}}else Logger.debug(`Could not resolve value for macro: ${s}. It will not be replaced.`)}}}async handleWindowsNpx(e){if("win32"===process.platform&&"npx"===e.command){const t=await getNpmExecutablePath();return{...e,command:"cmd",args:["/c","npx",...e.args],env:{...e.env,APPDATA:t}}}return e}initializeSettings(e){e.mcpServers||(e.mcpServers={})}async handleStdioMode(e,t,s){s.args&&(s.args=s.args.map((e=>"string"==typeof e?e.replace(/\\/g,"/"):e))),e.mcpServers[t]={command:s.command,args:s.args,env:s.env,autoApprove:[],disabled:!1,alwaysAllow:[]}}handleSseMode(e,t,s){e.mcpServers[t]={type:"sse",url:s.url}}async checkVSCodeAndInstallExtension(e){const t=await isCommandAvailable("code"),s=await isCommandAvailable("code-insiders");if(!t&&!s)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,t){const s=[],n=await isCommandAvailable("code"),a=await isCommandAvailable("code-insiders");if(n)try{const n=SUPPORTED_CLIENTS[this.clientName].codeSettingPath;await this.setupClientSettings(n,e,t),s.push({success:!0,path:n})}catch(e){s.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,t),s.push({success:!0,path:n})}catch(e){s.push({success:!1,path:SUPPORTED_CLIENTS[this.clientName].codeInsiderSettingPath,error:e instanceof Error?e.message:String(e)})}return s}async install(e,t,s){const n=this.generateOperationId(),a=InstallOperationManager.getInstance(s||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 s=await a.recording((()=>this.setupInstallConfig(e,t)),{stepName:RecordingConstants.STEP_SETUP_INSTALLATION_CONFIG});e.mode&&(s.mode=e.mode);const r=await a.recording((()=>this.updateVSCodeSettings(e.name,s)),{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 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:n,error:e instanceof Error?e.message:String(e)},message:t}}})}}
|
|
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","
|
|
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","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,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}
|
|
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":"OAASA,0BAA6B,gDAS7BC,WAAc,kCACdC,2BAA8B,qCAC9BC,4BAA+B,kDAOlC,MAAOC,gBAIGC,aACAC,WACAC,QALJC,eAER,WAAAC,CACYJ,EACAC,EACAC,GAFAG,KAAAL,eACAK,KAAAJ,aACAI,KAAAH,UAERG,KAAKF,eAAiBR,sBAAsBW,aAChD,CAKA,aAAMC,CAAQC,GACV,MAAMC,EAAqC,GAGrCC,EAAkBL,KAAKH,QAAQS,KAAIC,MAAOC,IAC5C,MAAMC,QAAeT,KAAKU,cAAcF,EAAYL,GAEpD,OADAC,EAAgBO,KAAKF,GACdA,CAAM,IAOjB,aAHMG,QAAQC,IAAIR,GAGX,CACHS,SAAS,EACTC,QAAS,iCACTN,OAAQL,EAEhB,CAKQ,mBAAMM,CAAcF,EAAoBL,GAC5C,MAAMa,EAAchB,KAAKiB,sBAGzB,IAAKzB,uBAAuB0B,kBAAkBV,GAC1C,MAAO,CACHC,OAAQ,SACRU,KAAM,UACNC,OAAQ,SACRL,QAAS,uBAAuBP,IAChCQ,eAKR,MAAMK,EAAiC,CACnCZ,OAAQ,UACRU,KAAM,UACNC,OAAQ,SACRL,QAAS,yCAAyCP,IAClDQ,eA8CJ,OA1CAhB,KAAKsB,oBAAoBd,EAAYQ,EAAab,GAC7CoB,MAAMd,IACmB,cAAlBA,EAAOA,QAA4C,WAAlBA,EAAOA,QACxChB,wBACKQ,YAAYD,KAAKL,aAAcK,KAAKJ,YACpC4B,kBAAkBf,EAAOA,QAGlCT,KAAKF,eAAe2B,4BAChBzB,KAAKL,aACLK,KAAKJ,WACLY,EACAC,EACH,IAEJiB,OAAOC,IACJ3B,KAAKF,eAAe2B,4BAChBzB,KAAKL,aACLK,KAAKJ,WACLY,EACA,CACIC,OAAQ,SACRU,KAAM,UACNC,OAAQ,SACRL,QAAS,2BAA2BP,MAAemB,aAAiBC,MAAQD,EAAMZ,QAAUc,OAAOF,KACnGX,cACAW,MAAOA,aAAiBC,MAAQD,EAAMZ,QAAUc,OAAOF,KAG/DpC,OAAOoC,MAAM,2BAA2BnB,MAAemB,aAAiBC,MAAQD,EAAMZ,QAAUc,OAAOF,MACvGlC,wBACKQ,YAAYD,KAAKL,aAAcK,KAAKJ,YACpC4B,kBAAkB,SAAUG,EAAM,UAIzC3B,KAAKF,eAAe2B,4BACtBzB,KAAKL,aACLK,KAAKJ,WACLY,EACAa,GAEGA,CACX,CAEQ,yBAAMC,CAAoBd,EAAoBQ,EAAqBb,GAEvE,UADgCH,KAAK8B,kBAAkBd,EAAaR,EAAYL,
|
|
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{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
|
|
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":"OAA+CA,WAAoC,kCAC1EC,kBAAqB,4BACrBC,UAAWC,mBAAsB,mCACjCC,WAAc,qCAEXC,uBAAwB,+CAa9B,MAAOC,yBAAyBL,cAMlC,gBAAAM,CAAiBC,EAAgCC,GAC7C,MAAM,IAAIC,MAAM,0BACpB,CAMQC,gBAAkD,CACtDC,GAAM,CAAEC,QAAS,eAAgBC,MAAO,OAS5C,SAAAC,CAAUP,GACN,MAA4B,YAArBA,EAAYQ,IACvB,CAEA,mBAAAC,GACI,OAAO,CACX,CAMQ,kBAAAC,CAAmBC,GACvB,MAAMC,EAASlB,YACTmB,EAAUC,KAAKX,gBAAgBQ,GAErC,OAAIE,EACOD,IAAWpB,OAAOuB,QAAUF,EAAQR,QAAUQ,EAAQP,MAI1DK,CACX,CAOA,uBAAMK,CAAkBhB,GACpB,UACUL,iBACN,MAAMgB,EAAcX,EAAYiB,OAASjB,EAAYkB,KAErD,IAAIC,EAEJ,GAHezB,cAGAF,OAAOuB,QAElB,IACII,QAAsBL,KAAKM,YAAY,SAAST,UACpD,CAAE,MAAOU,GACLzB,OAAO0B,MAAM,qCAAqCD,KAGlDF,EAAgB,CAAEI,OAAQ,GAAIC,OAAQ,GAC1C,MAGA,IACIL,QAAsBL,KAAKM,YAAY,SAAST,gBACpD,CAAE,MAAOU,GACLzB,OAAO0B,MAAM,qCAAqCD,KAElDF,EAAgB,CAAEI,OAAQ,GAAIC,OAAQ,GAC1C,CAIJ,MAAMC,EAAYN,EAAcI,OAAOG,OAAOC,OAAS,EAGvD,IAAIC,EACJ,GAAIH,EACA,IACI,MAAMI,QAAsBf,KAAKM,YAAY,GAAGT,eAChD,GAAIkB,EAAcN,OAAQ,CAEtB,MAAMO,EAAeD,EAAcN,OAAOQ,MAAM,oBAChDH,EAAUE,EAAeA,EAAa,QAAKE,CAC/C,CACJ,CAAE,MAAOX,GACLzB,OAAO0B,MAAM,mCAAmCD,IAEpD,CAGJ,MAAO,CACHH,KAAMlB,EAAYkB,KAClBV,KAAM,UACNiB,YACAG,UACAK,YAAY,EAEpB,CAAE,MAAOZ,GAEL,OADAzB,OAAOyB,MAAM,gCAAgCA,KACtC,CACHH,KAAMlB,EAAYkB,KAClBV,KAAM,UACNiB,WAAW,EACXJ,MAAOA,aAAiBnB,MAAQmB,EAAMa,QAAUC,OAAOd,GACvDY,YAAY,EAEpB,CACJ,CAcA,aAAMG,CAAQpC,EAAgCqC,EAAmCpC,GAC7E,MAAMqC,
|
|
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
|
|
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,
|
|
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":[]}
|
|
@@ -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")
|
|
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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
|
|
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}"
|
|
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
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["BaseInstaller","handleGitHubRelease","getGitHubLatestVersion","handleAdoArtifact","getArtifactLatestVersion","compareVersions","Logger","RecordingConstants","PipInstaller","getPythonCommand","options","settings","pythonEnv","getPipCommand","this","canHandle","requirement","type","supportCheckUpdates","getLatestVersion","registry","githubRelease","execPromise","repository","artifacts","pipCmd","stdout","name","latestMatch","match","versionsMatch","versions","split","map","v","trim","length","checkInstallation","stderr","installed","includes","toLowerCase","versionMatch","installedVersion","undefined","version","inProgress","error","Error","message","String","install","recorder","recording","async","status","log","command","packageSource","resolvedPath","recordStep","pythonCmd","adoArtifactResult","package","registryUrl","debug","Promise","resolve","setTimeout","stepName","STEP_INSTALL_COMMAND_PREFIX","inProgressMessage","endMessage","result","STEP_PIP_INSTALLER_INSTALL","onError"],"sources":["../../../../src/core/installers/requirements/PipInstaller.ts"],"mappings":"OACSA,kBAAqB,4BACrBC,oBAAqBC,2BAA8B,yDACjCC,kBAAmBC,6BAAgC,oCACrEC,oBAAuB,wCACvBC,WAAc,qCAEXC,uBAAwB,+CAI9B,MAAOC,qBAAqBR,cACtB,gBAAAS,CAAiBC,GACrB,OAAOA,GAASC,UAAUC,WAAuB,QACrD,CAEQ,aAAAC,CAAcH,GAElB,MAAO,GADWI,KAAKL,iBAAiBC,WAE5C,CAOA,SAAAK,CAAUC,GACN,MAA4B,QAArBA,EAAYC,IACvB,CAEA,mBAAAC,GACI,OAAO,CACX,CAQA,sBAAMC,CAAiBH,EAAgCN,GACnD,GAAIM,EAAYI,SAAU,CACtB,GAAIJ,EAAYI,SAASC,cACrB,OAAOnB,uBAAuBY,KAAKQ,YAAaN,EAAYI,SAASC,cAAcE,YAChF,GAAIP,EAAYI,SAASI,UAE5B,OAAOpB,yBAAyBY,EAAaA,EAAYI,SAASI,UAAWd,EAErF,CAEA,MAAMe,EAASX,KAAKD,cAAcH,IAC5BgB,OAAEA,SAAiBZ,KAAKQ,YAAY,GAAGG,oBAAyBT,EAAYW,gBAS5EC,EAAcF,EAAOG,MAAM,iCACjC,GAAID,GAAeA,EAAY,GAC3B,OAAOA,EAAY,GAGvB,MAAME,EAAgBJ,EAAOG,MAAM,+CACnC,GAAIC,GAAiBA,EAAc,GAAI,CACnC,MAAMC,EAAWD,EAAc,GAAGE,MAAM,KAAKC,KAAIC,GAAKA,EAAEC,SACxD,GAAIJ,EAASK,OAAS,EAGlB,OAAOL,EAAS,EAExB,CAEJ,CAQA,uBAAMM,CAAkBrB,EAAgCN,GACpD,IACI,MAAMe,EAASX,KAAKD,cAAcH,IAC5BgB,OAAEA,EAAMY,OAAEA,SAAiBxB,KAAKQ,YAAY,GAAGG,UAAeT,EAAYW,QAE1EY,EAAYb,EAAOc,SAASxB,EAAYW,KAAKc,eAC7CC,EAAehB,EAAOG,MAAM,iBAC5Bc,EAAmBD,EAAeA,EAAa,QAAKE,EAE1D,MAAO,CACHjB,KAAMX,EAAYW,KAClBV,KAAM,MACNsB,UAAWA,EACXM,QAASF,EACTG,YAAY,EACZlC,UAAWE,KAAKL,iBAAiBC,GAEzC,CAAE,MAAOqC,GACL,MAAO,CACHpB,KAAMX,EAAYW,KAClBV,KAAM,MACNsB,WAAW,EACXQ,MAAOA,aAAiBC,MAAQD,EAAME,QAAUC,OAAOH,GACvDD,YAAY,EACZlC,UAAWE,KAAKL,iBAAiBC,GAEzC,CACJ,CASA,aAAMyC,CAAQnC,EAAgCoC,EAAmC1C,GAE7E,aAAa0C,EAASC,WAClBC,UACI,MAAMC,QAAezC,KAAKuB,kBAAkBrB,EAAaN,GACzD,GAAI6C,EAAOhB,WAAagB,EAAOV,SAAoE,IAAzDxC,gBAAgBkD,EAAOV,QAAS7B,EAAY6B,WAAmB7B,EAAY6B,QAAQJ,cAAcD,SAAS,UAEhJ,OADAlC,OAAOkD,IAAI,GAAGxC,EAAYW,SAAS4B,EAAOV,iCAAiC/B,KAAKL,qBACzE8C,EAGX,MAAM9B,EAASX,KAAKD,cAAcH,GAClC,IAAI+C,EAEJ,GAAKzC,EAAYI,SAMV,CACH,IAAIsC,EACJ,GAAI1C,EAAYI,SAASC,
|
|
1
|
+
{"version":3,"names":["BaseInstaller","handleGitHubRelease","getGitHubLatestVersion","handleAdoArtifact","getArtifactLatestVersion","compareVersions","Logger","RecordingConstants","PipInstaller","getPythonCommand","options","settings","pythonEnv","getPipCommand","this","canHandle","requirement","type","supportCheckUpdates","getLatestVersion","registry","githubRelease","execPromise","repository","artifacts","pipCmd","stdout","name","latestMatch","match","versionsMatch","versions","split","map","v","trim","length","checkInstallation","stderr","installed","includes","toLowerCase","versionMatch","installedVersion","undefined","version","inProgress","error","Error","message","String","install","recorder","recording","async","status","log","command","packageSource","resolvedPath","recordStep","pythonCmd","adoArtifactResult","package","registryUrl","debug","Promise","resolve","setTimeout","stepName","STEP_INSTALL_COMMAND_PREFIX","inProgressMessage","endMessage","result","STEP_PIP_INSTALLER_INSTALL","onError"],"sources":["../../../../src/core/installers/requirements/PipInstaller.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import fs from"fs/promises";import path from"path";import{LOCAL_FEEDS_DIR,SUPPORTED_CLIENTS}from"../metadatas/constants.js";import{Logger}from"../../utils/logger.js";import{readJsonFile}from"../../utils/clientUtils.js";export class ConfigurationLoader{static updateServerInstalledStatus(t,
|
|
1
|
+
import fs from"fs/promises";import path from"path";import{LOCAL_FEEDS_DIR,SUPPORTED_CLIENTS}from"../metadatas/constants.js";import{Logger}from"../../utils/logger.js";import{readJsonFile}from"../../utils/clientUtils.js";export class ConfigurationLoader{static updateServerInstalledStatus(e,t,s){e.installedStatus||(e.installedStatus={}),e.installedStatus[t]=s}static removeClientStatus(e,t){e.installedStatus&&e.installedStatus[t]&&delete e.installedStatus[t]}static syncServerCategoriesWithClientSettings(e){return e.clientMCPSettings?(e.localServerCategories=e.localServerCategories.map((t=>{if(!t.installationStatus?.serversStatus)return t;const s={...t.installationStatus.serversStatus},a=e.clientMCPSettings;for(const[e,t]of Object.entries(a)){const a="GithubCopilot"===e?t.servers||{}:t.mcpServers||{};Object.keys(s).forEach((t=>{if(a[t]){if(!s[t].installedStatus[e]){const a={status:"completed",type:"install",target:"server",message:`Server ${t} is configured for client ${e}`};ConfigurationLoader.updateServerInstalledStatus(s[t],e,a)}}else ConfigurationLoader.removeClientStatus(s[t],e)}))}return{...t,installationStatus:{...t.installationStatus,serversStatus:s,lastUpdated:(new Date).toISOString()}}})),e):e}static initializeInstallationStatus(e){const t={},s={};if(e){if(e.requirements)for(const s of e.requirements)t[s.name]={name:s.name,type:s.type,installed:!1,version:s.version,error:void 0};if(e.mcpServers)for(const t of e.mcpServers)s[t.name]={name:t.name,error:void 0,installedStatus:{}}}return{requirementsStatus:t,serversStatus:s,lastUpdated:(new Date).toISOString()}}static async syncServerCategoriesWithFeeds(e){e.localServerCategories=e.localServerCategories.filter((t=>e.feeds[t.name])).map((t=>(t.feedConfiguration=e.feeds[t.name],t.installationStatus&&t.installationStatus.requirementsStatus&&0!==Object.keys(t.installationStatus.requirementsStatus).length&&t.installationStatus.serversStatus&&!(Object.keys(t.installationStatus.serversStatus).length<Object.keys(t.feedConfiguration?.mcpServers||[]).length)||(t.installationStatus=ConfigurationLoader.initializeInstallationStatus(t.feedConfiguration)),t)));const t=new Set(e.localServerCategories.map((e=>e.name)));for(const[s,a]of Object.entries(e.feeds))if(!t.has(s)){const t={name:s,displayName:a.displayName||s,type:"local",description:a.description||`Local MCP server category: ${s}`,installationStatus:ConfigurationLoader.initializeInstallationStatus(a),feedConfiguration:a};e.localServerCategories.push(t),console.log(`Created new local server entry for feed: ${s}`)}return e}static async loadFeedsIntoConfiguration(e,t,s){try{await fs.mkdir(LOCAL_FEEDS_DIR,{recursive:!0});const a={};if(t)try{const e=await fs.readFile(t,"utf8");let r=JSON.parse(e);r&&r.name&&(r.systemTags||(r.systemTags={}),r.systemTags.adhoc="true",s?.prLink&&(r.PullRequest=s.prLink),s?.adhocServers&&s.adhocServers.length>0&&r.mcpServers&&(r.mcpServers=r.mcpServers.map((e=>(s.adhocServers.includes(e.name)&&(e.systemTags||(e.systemTags={}),e.systemTags.adhoc="true"),e)))),a[r.name]=r,console.log(`Loaded and processed feed configuration from provided file: ${t}`))}catch(e){console.log(`Error loading feed configuration from provided file ${t}:`,e)}const r=(await fs.readdir(LOCAL_FEEDS_DIR)).filter((e=>e.endsWith(".json")));if(0===r.length&&!t)return console.log(`No feed configuration files found in ${LOCAL_FEEDS_DIR}`),e;for(const e of r)try{const t=path.join(LOCAL_FEEDS_DIR,e),s=await fs.readFile(t,"utf8"),r=JSON.parse(s);r&&r.name&&(a[r.name]?console.log(`Skipping local feed ${r.name} as it was provided via --feed-file`):a[r.name]=r)}catch(t){console.warn(`Error loading feed configuration from ${e}:`,t)}const o=Object.values(a);o.sort(((e,t)=>{const s=e.displayName||"",a=t.displayName||"";return s.localeCompare(a)}));const n={};for(const e of o)n[e.name]=e;return e.feeds=n,await ConfigurationLoader.syncServerCategoriesWithFeeds(e)}catch(e){throw console.error("Error loading feed configurations:",e),e}}static async loadClientMCPSettings(e){try{Logger.debug("Starting to load MCP client settings...");const t={};for(const[e,s]of Object.entries(SUPPORTED_CLIENTS)){const a=process.env.CODE_INSIDERS?s.codeInsiderSettingPath:s.codeSettingPath;try{let s=await readJsonFile(a,!0);"GithubCopilot"===e&&(s=s.mcp?s.mcp:{servers:{},inputs:[]}),t[e]=s,Logger.debug(`Successfully loaded MCP settings for ${e}`)}catch(s){Logger.debug(`Warning: Could not load MCP settings for client ${e}: ${s instanceof Error?s.message:String(s)}`),t[e]={}}}return e.clientMCPSettings=t,ConfigurationLoader.syncServerCategoriesWithClientSettings(e)}catch(e){throw Logger.error("Error loading client MCP settings:",e),e}}}
|
|
2
2
|
//# sourceMappingURL=ConfigurationLoader.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["fs","path","LOCAL_FEEDS_DIR","SUPPORTED_CLIENTS","Logger","readJsonFile","ConfigurationLoader","updateServerInstalledStatus","serverStatus","clientName","operationStatus","installedStatus","removeClientStatus","syncServerCategoriesWithClientSettings","configuration","clientMCPSettings","localServerCategories","map","category","installationStatus","serversStatus","updatedServerStatus","clientSettings","settings","Object","entries","clientServers","servers","mcpServers","keys","forEach","serverName","status","type","target","message","lastUpdated","Date","toISOString","initializeInstallationStatus","feedConfig","requirementsStatus","requirements","req","name","installed","version","error","undefined","mcp","syncServerCategoriesWithFeeds","filter","server","feeds","feedConfiguration","length","existingServerNames","Set","feedName","has","newServerCategory","displayName","description","push","loadFeedsIntoConfiguration","feedFile","mkdir","recursive","content","readFile","config","JSON","parse","systemTags","prLink","PullRequest","adhocServers","includes","jsonFiles","readdir","file","endsWith","filePath","join","loadClientMCPSettings","debug","settingPath","process","env","CODE_INSIDERS","codeInsiderSettingPath","codeSettingPath","inputs","Error","String"],"sources":["../../../src/core/loaders/ConfigurationLoader.ts"],"mappings":"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
|
|
1
|
+
{"version":3,"names":["fs","path","LOCAL_FEEDS_DIR","SUPPORTED_CLIENTS","Logger","readJsonFile","ConfigurationLoader","updateServerInstalledStatus","serverStatus","clientName","operationStatus","installedStatus","removeClientStatus","syncServerCategoriesWithClientSettings","configuration","clientMCPSettings","localServerCategories","map","category","installationStatus","serversStatus","updatedServerStatus","clientSettings","settings","Object","entries","clientServers","servers","mcpServers","keys","forEach","serverName","status","type","target","message","lastUpdated","Date","toISOString","initializeInstallationStatus","feedConfig","requirementsStatus","requirements","req","name","installed","version","error","undefined","mcp","syncServerCategoriesWithFeeds","filter","server","feeds","feedConfiguration","length","existingServerNames","Set","feedName","has","newServerCategory","displayName","description","push","console","log","loadFeedsIntoConfiguration","feedFile","mkdir","recursive","content","readFile","config","JSON","parse","systemTags","prLink","PullRequest","adhocServers","includes","jsonFiles","readdir","file","endsWith","filePath","join","warn","feedValues","values","sort","a","b","displayNameA","displayNameB","localeCompare","sortedFeeds","loadClientMCPSettings","debug","settingPath","process","env","CODE_INSIDERS","codeInsiderSettingPath","codeSettingPath","inputs","Error","String"],"sources":["../../../src/core/loaders/ConfigurationLoader.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -29,7 +29,7 @@ export declare class ConfigurationProvider {
|
|
|
29
29
|
isRequirementsReady(categoryName: string, serverName: string): Promise<boolean>;
|
|
30
30
|
GetServerRequirementStatus(categoryName: string, serverName: string): Promise<RequirementStatus[]>;
|
|
31
31
|
isServerReady(categoryName: string, serverName: string, clients: string[]): Promise<boolean>;
|
|
32
|
-
syncFeeds(): Promise<void>;
|
|
32
|
+
syncFeeds(repo?: string, branch?: string): Promise<void>;
|
|
33
33
|
private loadFeedsIntoConfiguration;
|
|
34
34
|
private loadClientMCPSettings;
|
|
35
35
|
reloadClientMCPSettings(): Promise<void>;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import fs from"fs/promises";import path from"path";import{exec}from"child_process";import{promisify}from"util";import{fileURLToPath}from"url";import{GITHUB_REPO,LOCAL_FEEDS_DIR,SETTINGS_DIR,SUPPORTED_CLIENTS}from"../metadatas/constants.js";import{Logger}from"../../utils/logger.js";import{checkGithubAuth}from"../../utils/githubAuth.js";import{ConfigurationLoader}from"./ConfigurationLoader.js";const execAsync=promisify(exec),__dirname=path.dirname(fileURLToPath(import.meta.url));export class ConfigurationProvider{static instance;configPath;configuration;configLock=Promise.resolve();tempDir;constructor(){this.configPath=path.join(SETTINGS_DIR,"configurations.json"),this.configuration={localServerCategories:[],feeds:{},clientMCPSettings:{}},this.tempDir=path.join(LOCAL_FEEDS_DIR,"../temp")}static getInstance(){return ConfigurationProvider.instance||(ConfigurationProvider.instance=new ConfigurationProvider),ConfigurationProvider.instance}async withLock(t){const e=this.configLock;let i;this.configLock=new Promise((t=>i=t));try{return await e,await t()}finally{i()}}async initialize(t,e){await this.withLock((async()=>{const i=path.dirname(this.configPath);await fs.mkdir(i,{recursive:!0});try{await fs.rm(this.configPath,{recursive:!0,force:!0})}catch(t){if("ENOENT"!==t.code)throw t}try{try{const t=JSON.parse(await fs.readFile(this.configPath,"utf8"));this.configuration=t}catch(t){if("ENOENT"!==t.code)throw t;await this.saveConfiguration()}await this.loadFeedsIntoConfiguration(t,e),await this.loadClientMCPSettings()}catch(t){throw Logger.error("Error during initialization",t),t}}))}async saveConfiguration(){const t=path.dirname(this.configPath);await fs.mkdir(t,{recursive:!0}),await fs.writeFile(this.configPath,JSON.stringify(this.configuration,null,2))}async getServerCategories(){return await this.withLock((async()=>this.configuration.localServerCategories))}async getServerCategory(t){return await this.withLock((async()=>this.configuration.localServerCategories.find((e=>e.name===t))))}async getClientMcpSettings(){return await this.withLock((async()=>this.configuration.clientMCPSettings))}async getFeedConfiguration(t){return await this.withLock((async()=>this.configuration.feeds[t]))}async getServerMcpConfig(t,e){return await this.withLock((async()=>this.configuration.feeds[t]?.mcpServers.find((t=>t.name===e))))}async getInstallationStatus(t){return await this.withLock((async()=>{const e=this.configuration.localServerCategories.find((e=>e.name===t));return e?.installationStatus}))}async getServerStatus(t,e){return await this.withLock((async()=>{const i=this.configuration.localServerCategories.find((e=>e.name===t)),a=i?.installationStatus;return a?.serversStatus[e]}))}async getRequirementStatus(t,e){return await this.withLock((async()=>{const i=this.configuration.localServerCategories.find((e=>e.name===t)),a=i?.installationStatus;return a?.requirementsStatus[e]}))}async updateInstallationStatus(t,e,i){return await this.withLock((async()=>{const a=this.configuration.localServerCategories.find((e=>e.name===t));return!!a&&(a.installationStatus||(a.installationStatus={requirementsStatus:{},serversStatus:{},lastUpdated:(new Date).toISOString()}),a.installationStatus.requirementsStatus={...a.installationStatus.requirementsStatus,...e},a.installationStatus.serversStatus={...a.installationStatus.serversStatus,...i},a.installationStatus.lastUpdated=(new Date).toISOString(),await this.saveConfiguration(),!0)}))}async updateRequirementStatus(t,e,i){return await this.withLock((async()=>{const a=this.configuration.localServerCategories.find((e=>e.name===t));return!!a?.installationStatus&&(a.installationStatus.requirementsStatus[e]=i,a.installationStatus.lastUpdated=(new Date).toISOString(),await this.saveConfiguration(),!0)}))}async updateRequirementOperationStatus(t,e,i){return await this.withLock((async()=>{const a=this.configuration.localServerCategories.find((e=>e.name===t));return!!a?.installationStatus?.requirementsStatus[e]&&(a.installationStatus.requirementsStatus[e].operationStatus=i,a.installationStatus.lastUpdated=(new Date).toISOString(),await this.saveConfiguration(),!0)}))}async updateServerStatus(t,e,i){return await this.withLock((async()=>{const a=this.configuration.localServerCategories.find((e=>e.name===t));return!!a?.installationStatus&&(a.installationStatus.serversStatus[e]=i,a.installationStatus.lastUpdated=(new Date).toISOString(),await this.saveConfiguration(),!0)}))}async updateServerOperationStatus(t,e,i,a){return await this.withLock((async()=>{const r=this.configuration.localServerCategories.find((e=>e.name===t));return!!r?.installationStatus?.serversStatus[e]&&(r.installationStatus.serversStatus[e].installedStatus[i]=a,r.installationStatus.lastUpdated=(new Date).toISOString(),await this.saveConfiguration(),!0)}))}async isRequirementsReady(t,e){return await this.withLock((async()=>{const i=this.configuration.localServerCategories.find((e=>e.name===t));if(!i?.feedConfiguration)return!1;const a=i.feedConfiguration.mcpServers.find((t=>t.name===e));if(!a?.dependencies?.requirements)return!0;const r=a.dependencies.requirements.map((t=>t.name)),n=i?.installationStatus;return!!n?.requirementsStatus&&r.every((t=>{const e=n.requirementsStatus[t];return e?.installed&&!e?.error}))}))}async GetServerRequirementStatus(t,e){return await this.withLock((async()=>{const i=this.configuration.localServerCategories.find((e=>e.name===t));if(!i?.feedConfiguration)return[];const a=i.feedConfiguration.mcpServers.find((t=>t.name===e));
|
|
1
|
+
import fs from"fs/promises";import path from"path";import{exec}from"child_process";import{promisify}from"util";import{fileURLToPath}from"url";import{GITHUB_REPO,LOCAL_FEEDS_DIR,SETTINGS_DIR,SUPPORTED_CLIENTS}from"../metadatas/constants.js";import{Logger}from"../../utils/logger.js";import{checkGithubAuth}from"../../utils/githubAuth.js";import{ConfigurationLoader}from"./ConfigurationLoader.js";const execAsync=promisify(exec),__dirname=path.dirname(fileURLToPath(import.meta.url));export class ConfigurationProvider{static instance;configPath;configuration;configLock=Promise.resolve();tempDir;constructor(){this.configPath=path.join(SETTINGS_DIR,"configurations.json"),this.configuration={localServerCategories:[],feeds:{},clientMCPSettings:{}},this.tempDir=path.join(LOCAL_FEEDS_DIR,"../temp")}static getInstance(){return ConfigurationProvider.instance||(ConfigurationProvider.instance=new ConfigurationProvider),ConfigurationProvider.instance}async withLock(t){const e=this.configLock;let i;this.configLock=new Promise((t=>i=t));try{return await e,await t()}finally{i()}}async initialize(t,e){await this.withLock((async()=>{const i=path.dirname(this.configPath);await fs.mkdir(i,{recursive:!0});try{await fs.rm(this.configPath,{recursive:!0,force:!0})}catch(t){if("ENOENT"!==t.code)throw t}try{try{const t=JSON.parse(await fs.readFile(this.configPath,"utf8"));this.configuration=t}catch(t){if("ENOENT"!==t.code)throw t;await this.saveConfiguration()}await this.loadFeedsIntoConfiguration(t,e),await this.loadClientMCPSettings()}catch(t){throw Logger.error("Error during initialization",t),t}}))}async saveConfiguration(){const t=path.dirname(this.configPath);await fs.mkdir(t,{recursive:!0}),await fs.writeFile(this.configPath,JSON.stringify(this.configuration,null,2))}async getServerCategories(){return await this.withLock((async()=>this.configuration.localServerCategories))}async getServerCategory(t){return await this.withLock((async()=>this.configuration.localServerCategories.find((e=>e.name===t))))}async getClientMcpSettings(){return await this.withLock((async()=>this.configuration.clientMCPSettings))}async getFeedConfiguration(t){return await this.withLock((async()=>this.configuration.feeds[t]))}async getServerMcpConfig(t,e){return await this.withLock((async()=>this.configuration.feeds[t]?.mcpServers.find((t=>t.name===e))))}async getInstallationStatus(t){return await this.withLock((async()=>{const e=this.configuration.localServerCategories.find((e=>e.name===t));return e?.installationStatus}))}async getServerStatus(t,e){return await this.withLock((async()=>{const i=this.configuration.localServerCategories.find((e=>e.name===t)),a=i?.installationStatus;return a?.serversStatus[e]}))}async getRequirementStatus(t,e){return await this.withLock((async()=>{const i=this.configuration.localServerCategories.find((e=>e.name===t)),a=i?.installationStatus;return a?.requirementsStatus[e]}))}async updateInstallationStatus(t,e,i){return await this.withLock((async()=>{const a=this.configuration.localServerCategories.find((e=>e.name===t));return!!a&&(a.installationStatus||(a.installationStatus={requirementsStatus:{},serversStatus:{},lastUpdated:(new Date).toISOString()}),a.installationStatus.requirementsStatus={...a.installationStatus.requirementsStatus,...e},a.installationStatus.serversStatus={...a.installationStatus.serversStatus,...i},a.installationStatus.lastUpdated=(new Date).toISOString(),await this.saveConfiguration(),!0)}))}async updateRequirementStatus(t,e,i){return await this.withLock((async()=>{const a=this.configuration.localServerCategories.find((e=>e.name===t));return!!a?.installationStatus&&(a.installationStatus.requirementsStatus[e]=i,a.installationStatus.lastUpdated=(new Date).toISOString(),await this.saveConfiguration(),!0)}))}async updateRequirementOperationStatus(t,e,i){return await this.withLock((async()=>{const a=this.configuration.localServerCategories.find((e=>e.name===t));return!!a?.installationStatus?.requirementsStatus[e]&&(a.installationStatus.requirementsStatus[e].operationStatus=i,a.installationStatus.lastUpdated=(new Date).toISOString(),await this.saveConfiguration(),!0)}))}async updateServerStatus(t,e,i){return await this.withLock((async()=>{const a=this.configuration.localServerCategories.find((e=>e.name===t));return!!a?.installationStatus&&(a.installationStatus.serversStatus[e]=i,a.installationStatus.lastUpdated=(new Date).toISOString(),await this.saveConfiguration(),!0)}))}async updateServerOperationStatus(t,e,i,a){return await this.withLock((async()=>{const r=this.configuration.localServerCategories.find((e=>e.name===t));return!!r?.installationStatus?.serversStatus[e]&&(r.installationStatus.serversStatus[e].installedStatus[i]=a,r.installationStatus.lastUpdated=(new Date).toISOString(),await this.saveConfiguration(),!0)}))}async isRequirementsReady(t,e){return await this.withLock((async()=>{const i=this.configuration.localServerCategories.find((e=>e.name===t));if(!i?.feedConfiguration)return!1;const a=i.feedConfiguration.mcpServers.find((t=>t.name===e));if(!a?.dependencies?.requirements)return!0;const r=a.dependencies.requirements.map((t=>t.name)),n=i?.installationStatus;return!!n?.requirementsStatus&&r.every((t=>{const e=n.requirementsStatus[t];return e?.installed&&!e?.error}))}))}async GetServerRequirementStatus(t,e){return await this.withLock((async()=>{const i=this.configuration.localServerCategories.find((e=>e.name===t));if(!i?.feedConfiguration)return[];const a=i.feedConfiguration.mcpServers.find((t=>t.name===e));if(!a?.dependencies?.requirements)return[];return a.dependencies.requirements.map((t=>t.name)).map((t=>i?.installationStatus?.requirementsStatus[t])).filter((t=>void 0!==t))}))}async isServerReady(t,e,i){return await this.withLock((async()=>{const a=this.configuration.localServerCategories.find((e=>e.name===t)),r=a?.installationStatus,n=r?.serversStatus[e];return!!n&&i.every((t=>{const e=n.installedStatus?.[t];return"completed"===e?.status&&!e?.error}))}))}async syncFeeds(t,e){return await this.withLock((async()=>{Logger.log("Starting feed synchronization...");try{await checkGithubAuth(),Logger.debug({action:"create_directories",paths:{localFeeds:LOCAL_FEEDS_DIR,tempDir:this.tempDir}}),await fs.mkdir(LOCAL_FEEDS_DIR,{recursive:!0}),await fs.mkdir(this.tempDir,{recursive:!0}),await fs.rm(this.tempDir,{recursive:!0,force:!0});const i=t||GITHUB_REPO.url,a=e||"main";if(t||e){Logger.debug(`Using git clone with repository ${i} and branch ${a}`);const{cloneGitRepository:t}=await import("../../utils/gitUtils.js"),e=path.join(this.tempDir,"repo-clone");await t(i,a,e);const r=path.join(e,GITHUB_REPO.feedsPath);Logger.debug("Updating local feeds from git clone..."),await fs.rm(LOCAL_FEEDS_DIR,{recursive:!0,force:!0});try{await fs.access(r)}catch(t){throw new Error(`Could not find feeds directory in cloned repository: ${r}`)}await fs.cp(r,LOCAL_FEEDS_DIR,{recursive:!0,force:!0}),Logger.log("Successfully updated local feeds from git repository")}else{Logger.debug("Downloading latest release...");const{downloadGithubRelease:t}=await import("../../utils/githubUtils.js"),{version:e,downloadPath:i}=await t(GITHUB_REPO.repoName,"latest",GITHUB_REPO.feedAssetsName,void 0,!0,this.tempDir);Logger.debug({action:"download_release",downloadPath:i,version:e,repoName:GITHUB_REPO.repoName}),Logger.debug("Updating local feeds..."),await fs.rm(LOCAL_FEEDS_DIR,{recursive:!0,force:!0});const a=i;try{await fs.access(i)}catch(t){throw new Error(`Could not find feeds directory in downloaded path: ${a}`)}await fs.cp(a,LOCAL_FEEDS_DIR,{recursive:!0,force:!0}),Logger.log("Successfully updated local feeds")}}catch(t){throw Logger.error("Error during feed synchronization",t),new Error("Failed to sync feeds. Use --verbose for detailed error information.")}}))}async loadFeedsIntoConfiguration(t,e){this.configuration=await ConfigurationLoader.loadFeedsIntoConfiguration(this.configuration,t,e),await this.saveConfiguration()}async loadClientMCPSettings(){this.configuration=await ConfigurationLoader.loadClientMCPSettings(this.configuration),await this.saveConfiguration()}async reloadClientMCPSettings(){return await this.withLock((async()=>{await this.loadClientMCPSettings()}))}async removeServerFromClientMCPSettings(t,e){return await this.withLock((async()=>{const{readJsonFile:i,writeJsonFile:a}=await import("../../utils/clientUtils.js"),r=Object.entries(SUPPORTED_CLIENTS),n=e?r.filter((([t])=>t===e)):r;for(const[e,r]of n){const n=process.env.CODE_INSIDERS?r.codeInsiderSettingPath:r.codeSettingPath;try{const r=await i(n,!0);let s=!1;"GithubCopilot"===e&&r.mcp?.servers?.[t]?(delete r.mcp.servers[t],s=!0):r.mcpServers?.[t]&&(delete r.mcpServers[t],s=!0),s&&(await a(n,r),Logger.debug(`Removed server ${t} from client ${e} settings`))}catch(i){Logger.error(`Failed to remove server ${t} from client ${e} settings:`,i)}}if(this.configuration.clientMCPSettings){if(e){const i=this.configuration.clientMCPSettings[e];i&&(i.mcpServers?.[t]&&delete i.mcpServers[t],i.servers?.[t]&&delete i.servers[t])}else for(const e of Object.values(this.configuration.clientMCPSettings))e.mcpServers?.[t]&&delete e.mcpServers[t],e.servers?.[t]&&delete e.servers[t];await this.saveConfiguration()}}))}}export const configProvider=ConfigurationProvider.getInstance();
|
|
2
2
|
//# sourceMappingURL=ConfigurationProvider.js.map
|