imcp 0.2.2 → 0.2.4
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 +8 -8
- package/dist/cli/commands/list-installed.d.ts +2 -0
- package/dist/cli/commands/list-installed.js +2 -0
- package/dist/cli/commands/list-installed.js.map +1 -0
- package/dist/cli/commands/update.js +1 -1
- package/dist/cli/commands/update.js.map +1 -1
- package/dist/cli/index.js +1 -1
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/tui/components/ClientSelector.js +1 -1
- package/dist/cli/tui/components/ClientSelector.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/ClientInstallerFactory.js +1 -1
- package/dist/core/installers/clients/ClientInstallerFactory.js.map +1 -1
- package/dist/core/installers/clients/CopilotCLIInstaller.d.ts +18 -0
- package/dist/core/installers/clients/CopilotCLIInstaller.js +2 -0
- package/dist/core/installers/clients/CopilotCLIInstaller.js.map +1 -0
- package/dist/core/installers/clients/ExtensionInstaller.d.ts +1 -0
- package/dist/core/installers/clients/ExtensionInstaller.js +1 -1
- package/dist/core/installers/clients/ExtensionInstaller.js.map +1 -1
- package/dist/core/installers/requirements/NpmInstaller.js +1 -1
- package/dist/core/installers/requirements/NpmInstaller.js.map +1 -1
- package/dist/core/metadatas/constants.d.ts +4 -0
- package/dist/core/metadatas/constants.js +1 -1
- package/dist/core/metadatas/constants.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.map +1 -1
- package/dist/web/public/js/detailsWidget.js.map +1 -1
- package/dist/web/public/js/flights/flights.js.map +1 -1
- package/dist/web/public/js/modal/index.js.map +1 -1
- package/dist/web/public/js/modal/installModal.js.map +1 -1
- package/dist/web/public/js/modal/installation.js.map +1 -1
- package/dist/web/public/js/modal/loadingModal.js.map +1 -1
- package/dist/web/public/js/modal/modalSetup.js.map +1 -1
- package/dist/web/public/js/modal/modalUtils.js.map +1 -1
- package/dist/web/public/js/modal/versionUtils.js.map +1 -1
- package/dist/web/public/js/modal.js.map +1 -1
- package/dist/web/public/js/notifications.js.map +1 -1
- package/dist/web/public/js/onboard/formProcessor.js.map +1 -1
- package/dist/web/public/js/onboard/index.js.map +1 -1
- package/dist/web/public/js/onboard/publishHandler.js.map +1 -1
- package/dist/web/public/js/onboard/state.js.map +1 -1
- package/dist/web/public/js/onboard/templates.js.map +1 -1
- package/dist/web/public/js/onboard/uiHandlers.js.map +1 -1
- package/dist/web/public/js/onboard/validationHandlers.js.map +1 -1
- package/dist/web/public/js/serverCategoryDetails.js.map +1 -1
- package/dist/web/public/js/serverCategoryList.js.map +1 -1
- package/dist/web/public/js/settings.js.map +1 -1
- package/package.json +1 -1
- package/dist/core/installers/clients/CodexInstaller.d.ts +0 -45
- package/dist/core/installers/clients/CodexInstaller.js +0 -2
- package/dist/core/installers/clients/CodexInstaller.js.map +0 -1
- package/dist/utils/tomlUtils.d.ts +0 -17
- package/dist/utils/tomlUtils.js +0 -2
- package/dist/utils/tomlUtils.js.map +0 -1
package/README.md
CHANGED
|
@@ -15,13 +15,13 @@ IMCP allows you to:
|
|
|
15
15
|
- Quick usage with latest version
|
|
16
16
|
|
|
17
17
|
```
|
|
18
|
-
npx
|
|
18
|
+
npx --yes --registry=https://packagefeedproxy.microsoft.io/npm/ imcp@latest serve
|
|
19
19
|
```
|
|
20
20
|
|
|
21
21
|
- Or install it globally
|
|
22
22
|
|
|
23
23
|
```bash
|
|
24
|
-
npm install -g imcp
|
|
24
|
+
npm install -g imcp --registry=https://packagefeedproxy.microsoft.io/npm/
|
|
25
25
|
```
|
|
26
26
|
|
|
27
27
|
```
|
|
@@ -39,7 +39,7 @@ imcp serve
|
|
|
39
39
|
Starts a local web interface for managing MCP servers.
|
|
40
40
|
|
|
41
41
|
```bash
|
|
42
|
-
npx
|
|
42
|
+
npx --yes --registry=https://packagefeedproxy.microsoft.io/npm/ imcp@latest serve [options]
|
|
43
43
|
```
|
|
44
44
|
|
|
45
45
|
Options:
|
|
@@ -54,16 +54,16 @@ Example:
|
|
|
54
54
|
|
|
55
55
|
```bash
|
|
56
56
|
# Start the web interface on port 3000
|
|
57
|
-
npx
|
|
57
|
+
npx --yes --registry=https://packagefeedproxy.microsoft.io/npm/ imcp@latest serve --port 3000
|
|
58
58
|
|
|
59
59
|
# Start with a custom feed configuration file
|
|
60
|
-
npx
|
|
60
|
+
npx --yes --registry=https://packagefeedproxy.microsoft.io/npm/ imcp@latest serve --feed-file ./custom-feed.json
|
|
61
61
|
|
|
62
62
|
# Start with a custom feed configuration file and adhoc schema files.
|
|
63
|
-
npx
|
|
63
|
+
npx --yes --registry=https://packagefeedproxy.microsoft.io/npm/ imcp@latest serve --feed-file ./custom-feed.json --schemas-directory ./feeds/schemas/ai-coder-tools
|
|
64
64
|
|
|
65
65
|
# Start with feed from custom repo and branch
|
|
66
|
-
npx
|
|
66
|
+
npx --yes --registry=https://packagefeedproxy.microsoft.io/npm/ imcp@latest serve --repo https://github.com/ai-microsoft/imcp-feed --branch main
|
|
67
67
|
```
|
|
68
68
|
|
|
69
69
|
### tui
|
|
@@ -117,7 +117,7 @@ Options:
|
|
|
117
117
|
|
|
118
118
|
CLI installs block until requirement checks, requirement reinstalls (when requested), and client installers complete, so you always see success/failure inline in the terminal. The web UI continues to track these steps asynchronously via the install operation log.
|
|
119
119
|
|
|
120
|
-
Supported client keys: `MSRooCode`, `RooCode`, `Cline`, `GithubCopilot`, `ClaudeCode`, and (on Windows) `VisualStudio`.
|
|
120
|
+
Supported client keys: `MSRooCode`, `RooCode`, `Cline`, `GithubCopilot`, `ClaudeCode`, `CopilotCLI`, and (on Windows) `VisualStudio`.
|
|
121
121
|
|
|
122
122
|
The CLI automatically resolves each server's category based on the name defined in your feeds, so no `--category` flag is needed. Run `imcp pull` if a server name cannot be found locally. When using payloads, ensure each server entry includes a non-empty `targetClients` array using the keys above.
|
|
123
123
|
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{Command}from"commander";import{SUPPORTED_CLIENTS,SUPPORTED_CLIENT_NAMES}from"../../core/metadatas/constants.js";import{readJsonFile}from"../../utils/clientUtils.js";import{Logger}from"../../utils/logger.js";import{SUPPORTED_CLIENTS_TEXT}from"../utils/clientOptions.js";function extractServers(e,t){const o="GithubCopilot"===e||"VisualStudio"===e?t.servers||{}:t.mcpServers||{};return Object.entries(o).map((([e,t])=>{const o={name:e};return t.command?(o.mode="stdio",o.command=[t.command,...t.args||[]].join(" ")):t.url?(o.mode=t.type||"sse",o.url=t.url):t.type&&(o.mode=t.type),o}))}export function createListInstalledCommand(){return new Command("list-installed").description("List locally installed MCP servers across client settings files").option("--clients <clients>",`Filter by clients (semicolon separated). Supported values: ${SUPPORTED_CLIENTS_TEXT}`).option("--json","Output raw JSON instead of a human-readable table").action((async e=>{try{let t;t=e.clients?e.clients.split(";").map((e=>e.trim())).filter(Boolean).map((e=>{const t=SUPPORTED_CLIENT_NAMES.find((t=>t.toLowerCase()===e.toLowerCase()));return t||(Logger.error(`Unknown client "${e}". Supported clients: ${SUPPORTED_CLIENTS_TEXT}`),process.exit(1)),t})):[...SUPPORTED_CLIENT_NAMES];const o=[];for(const e of t){const t=SUPPORTED_CLIENTS[e],s=process.env.CODE_INSIDERS?t.codeInsiderSettingPath:t.codeSettingPath;try{const t=extractServers(e,await readJsonFile(s));o.push({clientName:e,settingsPath:s,servers:t})}catch(t){const r=t instanceof Error?t.message:String(t);Logger.debug(`Could not read settings for ${e} at ${s}: ${r}`),o.push({clientName:e,settingsPath:s,servers:[],error:r})}}if(e.json)return void console.log(JSON.stringify(o,null,2));let s=0;for(const e of o)if(0!==e.servers.length||e.error)if(console.log(`\n📦 ${e.clientName}`),console.log(` Settings: ${e.settingsPath}`),e.error)console.log(` ⚠ Could not read settings: ${e.error}`);else if(0!==e.servers.length)for(const t of e.servers){const e=t.mode?` [${t.mode}]`:"",o=t.command||t.url||"";console.log(` • ${t.name}${e}${o?" → "+o:""}`),s++}else console.log(" (no MCP servers installed)");0===s?console.log("\nNo installed MCP servers found across any client."):console.log(`\nTotal: ${s} server(s) across ${o.filter((e=>e.servers.length>0)).length} client(s).`)}catch(e){Logger.error("Failed to list installed servers",e),process.exit(1)}}))}
|
|
2
|
+
//# sourceMappingURL=list-installed.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["Command","SUPPORTED_CLIENTS","SUPPORTED_CLIENT_NAMES","readJsonFile","Logger","SUPPORTED_CLIENTS_TEXT","extractServers","clientName","settings","serversObj","servers","mcpServers","Object","entries","map","name","config","server","command","mode","args","join","url","type","createListInstalledCommand","description","option","action","async","options","clientNames","clients","split","c","trim","filter","Boolean","match","find","n","toLowerCase","error","process","exit","results","clientConfig","settingsPath","env","CODE_INSIDERS","codeInsiderSettingPath","codeSettingPath","push","message","Error","String","debug","json","console","log","JSON","stringify","totalServers","result","length","detail","r"],"sources":["../../../src/cli/commands/list-installed.ts"],"mappings":"OAASA,YAAe,mBACfC,kBAAmBC,2BAA8B,2CACjDC,iBAAoB,oCACpBC,WAAc,+BACdC,2BAA8B,4BAoBvC,SAASC,eAAeC,EAAoBC,GAC1C,MAAMC,EAA6B,kBAAfF,GAAiD,iBAAfA,EAClDC,EAASE,SAAW,GACpBF,EAASG,YAAc,GAE3B,OAAOC,OAAOC,QAAQJ,GAAYK,KAAI,EAAEC,EAAMC,MAC5C,MAAMC,EAA0B,CAAEF,QAUlC,OATIC,EAAOE,SACTD,EAAOE,KAAO,QACdF,EAAOC,QAAU,CAACF,EAAOE,WAAaF,EAAOI,MAAQ,IAAKC,KAAK,MACtDL,EAAOM,KAChBL,EAAOE,KAAOH,EAAOO,MAAQ,MAC7BN,EAAOK,IAAMN,EAAOM,KACXN,EAAOO,OAChBN,EAAOE,KAAOH,EAAOO,MAEhBN,CAAM,GAEjB,QAEM,SAAUO,6BACd,OAAO,IAAIxB,QAAQ,kBAChByB,YAAY,mEACZC,OACC,sBACA,8DAA8DrB,0BAE/DqB,OAAO,SAAU,qDACjBC,QAAOC,MAAOC,IACb,IAEE,IAAIC,EAEFA,EADED,EAAQE,QACIF,EAAQE,QACnBC,MAAM,KACNlB,KAAImB,GAAKA,EAAEC,SACXC,OAAOC,SACPtB,KAAImB,IACH,MAAMI,EAAQnC,uBAAuBoC,MAAKC,GAAKA,EAAEC,gBAAkBP,EAAEO,gBAKrE,OAJKH,IACHjC,OAAOqC,MAAM,mBAAmBR,0BAA0B5B,0BAC1DqC,QAAQC,KAAK,IAERN,CAAK,IAGF,IAAInC,wBAGpB,MAAM0C,EAAoC,GAE1C,IAAK,MAAMrC,KAAcuB,EAAa,CACpC,MAAMe,EAAe5C,kBAAkBM,GACjCuC,EAAeJ,QAAQK,IAAIC,cAC7BH,EAAaI,uBACbJ,EAAaK,gBAEjB,IACE,MACMxC,EAAUJ,eAAeC,QADRJ,aAAa2C,IAEpCF,EAAQO,KAAK,CAAE5C,aAAYuC,eAAcpC,WAC3C,CAAE,MAAO+B,GACP,MAAMW,EAAUX,aAAiBY,MAAQZ,EAAMW,QAAUE,OAAOb,GAChErC,OAAOmD,MAAM,+BAA+BhD,QAAiBuC,MAAiBM,KAC9ER,EAAQO,KAAK,CAAE5C,aAAYuC,eAAcpC,QAAS,GAAI+B,MAAOW,GAC/D,CACF,CAGA,GAAIvB,EAAQ2B,KAEV,YADAC,QAAQC,IAAIC,KAAKC,UAAUhB,EAAS,KAAM,IAK5C,IAAIiB,EAAe,EACnB,IAAK,MAAMC,KAAUlB,EACnB,GAA8B,IAA1BkB,EAAOpD,QAAQqD,QAAiBD,EAAOrB,MAO3C,GAHAgB,QAAQC,IAAI,QAAQI,EAAOvD,cAC3BkD,QAAQC,IAAI,gBAAgBI,EAAOhB,gBAE/BgB,EAAOrB,MACTgB,QAAQC,IAAI,kCAAkCI,EAAOrB,cAIvD,GAA8B,IAA1BqB,EAAOpD,QAAQqD,OAKnB,IAAK,MAAM9C,KAAU6C,EAAOpD,QAAS,CACnC,MAAMS,EAAOF,EAAOE,KAAO,KAAKF,EAAOE,QAAU,GAC3C6C,EAAS/C,EAAOC,SAAWD,EAAOK,KAAO,GAC/CmC,QAAQC,IAAI,QAAQzC,EAAOF,OAAOI,IAAO6C,EAAS,QAAUA,EAAS,MACrEH,GACF,MATEJ,QAAQC,IAAI,iCAYK,IAAjBG,EACFJ,QAAQC,IAAI,uDAEZD,QAAQC,IAAI,YAAYG,sBAAiCjB,EAAQT,QAAO8B,GAAKA,EAAEvD,QAAQqD,OAAS,IAAGA,oBAEvG,CAAE,MAAOtB,GACPrC,OAAOqC,MAAM,mCAAoCA,GACjDC,QAAQC,KAAK,EACf,IAEN","ignoreList":[]}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{Command}from"commander";import{serverService}from"../../services/ServerService.js";import{Logger}from"../../utils/logger.js";import{hasLocalFeeds}from"../../utils/feedUtils.js";import{mcpManager}from"../../services/MCPManager.js";import{RequirementService}from"../../services/RequirementService.js";import{ConfigurationProvider}from"../../core/loaders/ConfigurationProvider.js";import{SUPPORTED_CLIENTS_TEXT,parseClientsOption}from"../utils/clientOptions.js";export function createUpdateCommand(){return new Command("update").description("Update MCP server requirements to their latest available versions").addHelpText("after",'\nExamples:\n # Update all requirements for a server\n $ imcp update --name coding-flow --clients "MSRooCode;GithubCopilot"\n\n # Update for all clients\n $ imcp update --name coding-flow --clients "MSRooCode;GithubCopilot;ClaudeCode"\n ').requiredOption("--name <name>","Server name to update").requiredOption("--clients <clients>",`Target clients (semicolon separated). Supported values: ${SUPPORTED_CLIENTS_TEXT}`).action((async e=>{try{await hasLocalFeeds()||(Logger.log("Local feeds not found, syncing from remote..."),await serverService.syncFeeds()),await mcpManager.initialize();const r=e.name.trim();let t,o;r||(Logger.error("Server name is required."),process.exit(1));try{t=parseClientsOption(e.clients)}catch(e){const r=e instanceof Error?e.message:String(e);Logger.error(r),process.exit(1)}try{o=await serverService.resolveServerCategories([r])}catch(e){const r=e instanceof Error?e.message:"Failed to resolve server categories.";Logger.error(r),process.exit(1)}const
|
|
1
|
+
import{Command}from"commander";import{exec}from"child_process";import util from"util";import{serverService}from"../../services/ServerService.js";import{Logger}from"../../utils/logger.js";import{hasLocalFeeds}from"../../utils/feedUtils.js";import{mcpManager}from"../../services/MCPManager.js";import{RequirementService}from"../../services/RequirementService.js";import{ConfigurationProvider}from"../../core/loaders/ConfigurationProvider.js";import{createInstallerFactory}from"../../core/installers/index.js";import{SUPPORTED_CLIENTS_TEXT,parseClientsOption}from"../utils/clientOptions.js";function formatDisplayVersion(e){return e?e.includes("${")?e.replace(/\$\{([^}]+)\}/g,"$1"):e:"unknown"}export function createUpdateCommand(){return new Command("update").description("Update MCP server requirements to their latest available versions").addHelpText("after",'\nExamples:\n # Update all requirements for a server\n $ imcp update --name coding-flow --clients "MSRooCode;GithubCopilot"\n\n # Update for all clients\n $ imcp update --name coding-flow --clients "MSRooCode;GithubCopilot;ClaudeCode"\n ').requiredOption("--name <name>","Server name to update").requiredOption("--clients <clients>",`Target clients (semicolon separated). Supported values: ${SUPPORTED_CLIENTS_TEXT}`).action((async e=>{try{await hasLocalFeeds()||(Logger.log("Local feeds not found, syncing from remote..."),await serverService.syncFeeds()),await mcpManager.initialize();const r=e.name.trim();let t,o;r||(Logger.error("Server name is required."),process.exit(1));try{t=parseClientsOption(e.clients)}catch(e){const r=e instanceof Error?e.message:String(e);Logger.error(r),process.exit(1)}try{o=await serverService.resolveServerCategories([r])}catch(e){const r=e instanceof Error?e.message:"Failed to resolve server categories.";Logger.error(r),process.exit(1)}const i=o[r];Logger.log(`Checking for updates: ${r} (category: ${i})`);const n=ConfigurationProvider.getInstance(),s=RequirementService.getInstance(),a=await mcpManager.getFeedConfiguration(i);a||(Logger.error(`Feed configuration not found for category: ${i}`),process.exit(1));const c=a.mcpServers.find((e=>e.name===r));if(!c?.dependencies?.requirements||0===c.dependencies.requirements.length)return void Logger.log("✓ No requirements configured for this server.");const l=c.dependencies.requirements.map((e=>e.name)),g=[],p=createInstallerFactory(util.promisify(exec));for(const e of l){const t=a.requirements?.find((r=>r.name===e));if(!t){Logger.log(` ⚠ Requirement config not found for ${e}, skipping.`);continue}const o=await n.getRequirementStatus(i,e);if(!o){Logger.log(` ⚠ No current status for ${e}, skipping update check.`);continue}let c=formatDisplayVersion(o.version);if(!o.version||o.version.includes("${"))try{const e=await p.checkInstallation(t);e?.version&&(c=e.version)}catch{}Logger.log(` Checking ${e} (installed: ${c})...`);try{const a=await s.checkRequirementForUpdates(t,o,i,r);a.availableUpdate?(g.push({name:e,updateVersion:a.availableUpdate.version,type:t.type}),Logger.log(` ↑ ${e}: ${c} → ${a.availableUpdate.version}`),await n.updateRequirementStatus(i,e,a)):Logger.log(` ✓ ${e} is up to date (${c})`)}catch(r){const t=r instanceof Error?r.message:String(r);Logger.error(` ✗ Error checking ${e}: ${t}`)}}if(0===g.length)return void Logger.log("✓ All requirements are up to date. No updates available.");Logger.log(`Found ${g.length} requirement(s) to update. Applying...`);const m={targetClients:t,blockUntilComplete:!0,requirements:g.map((e=>({name:e.name,version:e.updateVersion,type:e.type})))};try{await s.processRequirementUpdates(i,r,m),Logger.log("✓ Requirements updated successfully.")}catch(e){const r=e instanceof Error?e.message:String(e);Logger.error(`✗ Requirement update failed: ${r}`),process.exit(1)}Logger.log("Refreshing client configurations...");const u=await serverService.installMcpServer(i,r,{targetClients:t,blockUntilComplete:!0,forceRequirementReinstall:!1});u.success?Logger.log(`✓ ${u.message||"Update completed successfully."}`):(Logger.error(`✗ Client configuration refresh failed: ${u.message||"Unknown error"}`),process.exit(1))}catch(e){const r=e instanceof Error?e.message:"Unknown error";Logger.error("Update failed:",r),process.exit(1)}}))}
|
|
2
2
|
//# sourceMappingURL=update.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["Command","serverService","Logger","hasLocalFeeds","mcpManager","RequirementService","ConfigurationProvider","SUPPORTED_CLIENTS_TEXT","parseClientsOption","createUpdateCommand","description","addHelpText","requiredOption","action","async","options","log","syncFeeds","initialize","serverName","name","trim","parsedClients","categoryMap","error","process","exit","clients","clientError","message","Error","String","resolveServerCategories","categoryName","
|
|
1
|
+
{"version":3,"names":["Command","exec","util","serverService","Logger","hasLocalFeeds","mcpManager","RequirementService","ConfigurationProvider","createInstallerFactory","SUPPORTED_CLIENTS_TEXT","parseClientsOption","formatDisplayVersion","version","includes","replace","createUpdateCommand","description","addHelpText","requiredOption","action","async","options","log","syncFeeds","initialize","serverName","name","trim","parsedClients","categoryMap","error","process","exit","clients","clientError","message","Error","String","resolveServerCategories","categoryName","configProvider","getInstance","requirementService","feedConfig","getFeedConfiguration","serverConfig","mcpServers","find","s","dependencies","requirements","length","serverRequirementNames","map","r","requirementsToUpdate","installerFactory","promisify","reqName","reqConfig","currentStatus","getRequirementStatus","displayVersion","realStatus","checkInstallation","updatedStatus","checkRequirementForUpdates","availableUpdate","push","updateVersion","type","updateRequirementStatus","checkError","msg","installOptions","targetClients","blockUntilComplete","processRequirementUpdates","updateError","installResult","installMcpServer","forceRequirementReinstall","success"],"sources":["../../../src/cli/commands/update.ts"],"mappings":"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","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{createListCommand}from"./commands/list.js";import{createInstallCommand}from"./commands/install.js";import{createUninstallCommand}from"./commands/uninstall.js";import{createUpdateCommand}from"./commands/update.js";import{createPullCommand}from"./commands/pull.js";import{createTuiCommand}from"./commands/tui.js";import{Logger}from"../utils/logger.js";import{checkForUpdates}from"../utils/versionUtils.js";async function main(){const o=new Command;o.name("imcp").description("IMCP (Install Model Context Protocol) CLI").option("--verbose","Show detailed logs for all commands"),o.parseOptions(process.argv);const e=o.opts();Logger.setVerbose(!!e.verbose),o.addCommand(createServeCommand()),o.addCommand(createInstallCommand()),o.addCommand(createUpdateCommand()),o.addCommand(createListCommand()),o.addCommand(createUninstallCommand()),o.addCommand(createPullCommand()),o.addCommand(createTuiCommand()),o.exitOverride(),await checkForUpdates();try{await o.parseAsync(process.argv)}catch(o){const e=o;"commander.help"===e.code||"commander.version"===e.code?process.exit(0):(console.error("Error:",e.message||"An unknown error occurred"),process.exit(1))}}process.on("unhandledRejection",(o=>{o instanceof Error?console.error("Unhandled promise rejection:",o.message):console.error("Unhandled promise rejection:",o),process.exit(1)})),main().catch((o=>{o instanceof Error?console.error("Fatal error:",o.message):console.error("Fatal error:",o),process.exit(1)}));
|
|
2
|
+
import{Command}from"commander";import{createServeCommand}from"./commands/serve.js";import{createListCommand}from"./commands/list.js";import{createInstallCommand}from"./commands/install.js";import{createUninstallCommand}from"./commands/uninstall.js";import{createUpdateCommand}from"./commands/update.js";import{createPullCommand}from"./commands/pull.js";import{createTuiCommand}from"./commands/tui.js";import{createListInstalledCommand}from"./commands/list-installed.js";import{Logger}from"../utils/logger.js";import{checkForUpdates}from"../utils/versionUtils.js";async function main(){const o=new Command;o.name("imcp").description("IMCP (Install Model Context Protocol) CLI").option("--verbose","Show detailed logs for all commands"),o.parseOptions(process.argv);const e=o.opts();Logger.setVerbose(!!e.verbose),o.addCommand(createServeCommand()),o.addCommand(createInstallCommand()),o.addCommand(createUpdateCommand()),o.addCommand(createListCommand()),o.addCommand(createListInstalledCommand()),o.addCommand(createUninstallCommand()),o.addCommand(createPullCommand()),o.addCommand(createTuiCommand()),o.exitOverride(),await checkForUpdates();try{await o.parseAsync(process.argv)}catch(o){const e=o;"commander.help"===e.code||"commander.version"===e.code?process.exit(0):(console.error("Error:",e.message||"An unknown error occurred"),process.exit(1))}}process.on("unhandledRejection",(o=>{o instanceof Error?console.error("Unhandled promise rejection:",o.message):console.error("Unhandled promise rejection:",o),process.exit(1)})),main().catch((o=>{o instanceof Error?console.error("Fatal error:",o.message):console.error("Fatal error:",o),process.exit(1)}));
|
|
3
3
|
//# sourceMappingURL=index.js.map
|
package/dist/cli/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["Command","createServeCommand","createListCommand","createInstallCommand","createUninstallCommand","createUpdateCommand","createPullCommand","createTuiCommand","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,6BAC1BC,sBAAyB,4BACzBC,yBAA4B,+BAC5BC,2BAA8B,iCAC9BC,wBAA2B,8BAC3BC,sBAAyB,4BACzBC,qBAAwB,2BACxBC,WAAc,4BACdC,oBAAuB,2BAOhCC,eAAeC,OAIb,MAAMC,EAAU,
|
|
1
|
+
{"version":3,"names":["Command","createServeCommand","createListCommand","createInstallCommand","createUninstallCommand","createUpdateCommand","createPullCommand","createTuiCommand","createListInstalledCommand","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,6BAC1BC,sBAAyB,4BACzBC,yBAA4B,+BAC5BC,2BAA8B,iCAC9BC,wBAA2B,8BAC3BC,sBAAyB,4BACzBC,qBAAwB,2BACxBC,+BAAkC,sCAClCC,WAAc,4BACdC,oBAAuB,2BAOhCC,eAAeC,OAIb,MAAMC,EAAU,IAAIb,QACpBa,EACGC,KAAK,QACLC,YAAY,6CACZC,OAAO,YAAa,uCAGvBH,EAAQI,aAAaC,QAAQC,MAC7B,MAAMC,EAAOP,EAAQO,OACrBX,OAAOY,aAAaD,EAAKE,SAGzBT,EAAQU,WAAWtB,sBACnBY,EAAQU,WAAWpB,wBACnBU,EAAQU,WAAWlB,uBACnBQ,EAAQU,WAAWrB,qBACnBW,EAAQU,WAAWf,8BACnBK,EAAQU,WAAWnB,0BACnBS,EAAQU,WAAWjB,qBACnBO,EAAQU,WAAWhB,oBAGnBM,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{jsx as _jsx,jsxs as _jsxs,Fragment as _Fragment}from"react/jsx-runtime";import{Box,Text,useInput}from"ink";import{SUPPORTED_CLIENT_NAMES}from"../../../core/metadatas/constants.js";const CLIENT_ICONS={MSRooCode:"🦘",RooCode:"🦘",Cline:"🤖",GithubCopilot:"🐙",ClaudeCode:"🧠",VisualStudio:"💜"};export function ClientSelector({selectedClients:e,alreadyInstalledClients:o,onToggle:r,cursorIndex:s,onCursorMove:l,focus:n=!1,mode:t}){const i=SUPPORTED_CLIENT_NAMES;return useInput(((e,o)=>{if(n)if(o.upArrow)l(-1);else if(o.downArrow)l(1);else if(" "===e){const e=i[s];e&&r(e)}}),{isActive:n}),_jsx(Box,{flexDirection:"column",children:i.map(((r,l)=>{const i=e.has(r),d=o.has(r),a=n&&l===s,c=CLIENT_ICONS[r]||"📦",x="install"===t?d:!d;return _jsxs(Box,{children:[_jsx(Text,{color:a?"cyan":void 0,children:a?"❯ ":" "}),_jsxs(_Fragment,x?{children:[_jsx(Text,{color:"gray",dimColor:!0,children:"○ "}),_jsxs(Text,{dimColor:!0,children:[c," ",r]}),_jsx(Text,{color:"install"===t?"green":"gray",dimColor:!0,children:"install"===t?" (already installed)":" (not installed)"})]}:{children:[_jsxs(Text,{color:i?"install"===t?"green":"red":"gray",children:[i?"●":"○"," "]}),_jsxs(Text,{color:i?"install"===t?"green":"red":a?"white":void 0,bold:i||a,children:[c," ",r]})]})]},r)}))})}
|
|
1
|
+
import{jsx as _jsx,jsxs as _jsxs,Fragment as _Fragment}from"react/jsx-runtime";import{Box,Text,useInput}from"ink";import{SUPPORTED_CLIENT_NAMES}from"../../../core/metadatas/constants.js";const CLIENT_ICONS={MSRooCode:"🦘",RooCode:"🦘",Cline:"🤖",GithubCopilot:"🐙",ClaudeCode:"🧠",CopilotCLI:"✨",VisualStudio:"💜"};export function ClientSelector({selectedClients:e,alreadyInstalledClients:o,onToggle:r,cursorIndex:s,onCursorMove:l,focus:n=!1,mode:t}){const i=SUPPORTED_CLIENT_NAMES;return useInput(((e,o)=>{if(n)if(o.upArrow)l(-1);else if(o.downArrow)l(1);else if(" "===e){const e=i[s];e&&r(e)}}),{isActive:n}),_jsx(Box,{flexDirection:"column",children:i.map(((r,l)=>{const i=e.has(r),d=o.has(r),a=n&&l===s,c=CLIENT_ICONS[r]||"📦",x="install"===t?d:!d;return _jsxs(Box,{children:[_jsx(Text,{color:a?"cyan":void 0,children:a?"❯ ":" "}),_jsxs(_Fragment,x?{children:[_jsx(Text,{color:"gray",dimColor:!0,children:"○ "}),_jsxs(Text,{dimColor:!0,children:[c," ",r]}),_jsx(Text,{color:"install"===t?"green":"gray",dimColor:!0,children:"install"===t?" (already installed)":" (not installed)"})]}:{children:[_jsxs(Text,{color:i?"install"===t?"green":"red":"gray",children:[i?"●":"○"," "]}),_jsxs(Text,{color:i?"install"===t?"green":"red":a?"white":void 0,bold:i||a,children:[c," ",r]})]})]},r)}))})}
|
|
2
2
|
//# sourceMappingURL=ClientSelector.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["Box","Text","useInput","SUPPORTED_CLIENT_NAMES","CLIENT_ICONS","MSRooCode","RooCode","Cline","GithubCopilot","ClaudeCode","VisualStudio","ClientSelector","selectedClients","alreadyInstalledClients","onToggle","cursorIndex","onCursorMove","focus","mode","clients","input","key","upArrow","downArrow","client","isActive","_jsx","flexDirection","children","map","idx","isSelected","has","isInstalled","isCursor","icon","isDisabled","_jsxs","color","undefined","_Fragment","dimColor","bold"],"sources":["../../../../src/cli/tui/components/ClientSelector.tsx"],"mappings":"sFACSA,IAAKC,KAAMC,aAAgB,aAC3BC,2BAA8B,uCAYvC,MAAMC,aAAuC,CAC3CC,UAAa,KACbC,QAAW,KACXC,MAAS,KACTC,cAAiB,KACjBC,WAAc,KACdC,aAAgB,aAGZ,SAAUC,gBAAeC,gBAC7BA,EAAeC,wBACfA,EAAuBC,SACvBA,EAAQC,YACRA,EAAWC,aACXA,EAAYC,MACZA,GAAQ,EAAKC,KACbA,IAEA,MAAMC,
|
|
1
|
+
{"version":3,"names":["Box","Text","useInput","SUPPORTED_CLIENT_NAMES","CLIENT_ICONS","MSRooCode","RooCode","Cline","GithubCopilot","ClaudeCode","CopilotCLI","VisualStudio","ClientSelector","selectedClients","alreadyInstalledClients","onToggle","cursorIndex","onCursorMove","focus","mode","clients","input","key","upArrow","downArrow","client","isActive","_jsx","flexDirection","children","map","idx","isSelected","has","isInstalled","isCursor","icon","isDisabled","_jsxs","color","undefined","_Fragment","dimColor","bold"],"sources":["../../../../src/cli/tui/components/ClientSelector.tsx"],"mappings":"sFACSA,IAAKC,KAAMC,aAAgB,aAC3BC,2BAA8B,uCAYvC,MAAMC,aAAuC,CAC3CC,UAAa,KACbC,QAAW,KACXC,MAAS,KACTC,cAAiB,KACjBC,WAAc,KACdC,WAAc,IACdC,aAAgB,aAGZ,SAAUC,gBAAeC,gBAC7BA,EAAeC,wBACfA,EAAuBC,SACvBA,EAAQC,YACRA,EAAWC,aACXA,EAAYC,MACZA,GAAQ,EAAKC,KACbA,IAEA,MAAMC,EAAUjB,uBAiBhB,OAfAD,UAAS,CAACmB,EAAeC,KACvB,GAAKJ,EAEL,GAAII,EAAIC,QACNN,GAAc,QACT,GAAIK,EAAIE,UACbP,EAAa,QACR,GAAc,MAAVI,EAAe,CACxB,MAAMI,EAASL,EAAQJ,GACnBS,GACFV,EAASU,EAEb,IACC,CAAEC,SAAUR,IAGbS,KAAC3B,IAAG,CAAC4B,cAAc,SAAQC,SACxBT,EAAQU,KAAI,CAACL,EAAQM,KACpB,MAAMC,EAAanB,EAAgBoB,IAAIR,GACjCS,EAAcpB,EAAwBmB,IAAIR,GAC1CU,EAAWjB,GAASa,IAAQf,EAC5BoB,EAAOhC,aAAaqB,IAAW,KAI/BY,EAAsB,YAATlB,EAAqBe,GAAeA,EAEvD,OACEI,MAACtC,IAAG,CAAA6B,SAAA,CACFF,KAAC1B,KAAI,CAACsC,MAAOJ,EAAW,YAASK,EAASX,SACvCM,EAAW,KAAO,OAGnBG,MAAAG,UADDJ,EACC,CAAAR,SAAA,CACEF,KAAC1B,KAAI,CAACsC,MAAM,OAAOG,UAAQ,EAAAb,SAAA,OAC3BS,MAACrC,KAAI,CAACyC,UAAQ,EAAAb,SAAA,CAAEO,EAAI,IAAGX,KACvBE,KAAC1B,KAAI,CAACsC,MAAgB,YAATpB,EAAqB,QAAU,OAAQuB,UAAQ,EAAAb,SAChD,YAATV,EAAqB,uBAAyB,uBAInD,CAAAU,SAAA,CACES,MAACrC,KAAI,CAACsC,MAAOP,EAAuB,YAATb,EAAqB,QAAU,MAAS,OAAMU,SAAA,CACtEG,EAAa,IAAM,IAAK,OAE3BM,MAACrC,KAAI,CACHsC,MAAOP,EAAuB,YAATb,EAAqB,QAAU,MAASgB,EAAW,aAAUK,EAClFG,KAAMX,GAAcG,EAAQN,SAAA,CAE3BO,EAAI,IAAGX,UArBNA,EA0BX,KAIT","ignoreList":[]}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{Logger}from"../../../utils/logger.js";import{exec,spawn}from"child_process";import{promisify}from"util";import*as http from"http";import*as https from"https";import{isCommandAvailable,getNpmExecutablePath}from"../../../utils/osUtils.js";import{ExtensionInstaller}from"./ExtensionInstaller.js";import{SUPPORTED_CLIENTS
|
|
1
|
+
import{Logger}from"../../../utils/logger.js";import{exec,spawn}from"child_process";import{promisify}from"util";import*as http from"http";import*as https from"https";import{isCommandAvailable,getNpmExecutablePath}from"../../../utils/osUtils.js";import{ExtensionInstaller}from"./ExtensionInstaller.js";import{INSTRUMENTATION_KEY,PUBLIC_NPM_REGISTRY_ARG,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||{},r={APPLICATIONINSIGHTS_CONNECTION_STRING:`InstrumentationKey=${INSTRUMENTATION_KEY}`};for(const[e,t]of Object.entries(n)){const s=t;s.Default&&(r[e]=s.Default)}if(s.env={...r,...t.env||{}},await this._resolveConfigMacros(s,t),"string"==typeof s.command&&/(?:^|[\\/])npx(?:\.cmd)?$/i.test(s.command.trim())){const e=s.args||[],t=e.some((e=>"--registry"===e||e.startsWith("--registry=")));s.args=t?e:[PUBLIC_NPM_REGISTRY_ARG,...e]}return"string"==typeof s.startingCommand&&/^(\s*(?:cmd(?:\.exe)?\s+\/c\s+)?npx(?:\.cmd)?)(?=\s|$)/i.test(s.startingCommand)&&!/(?:^|\s)--registry(?:=|\s)/i.test(s.startingCommand)&&(s.startingCommand=s.startingCommand.replace(/^(\s*(?:cmd(?:\.exe)?\s+\/c\s+)?npx(?:\.cmd)?)(?=\s|$)/i,`$1 ${PUBLIC_NPM_REGISTRY_ARG}`)),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))),r=Object.values(e.env||{}).some((e=>"string"==typeof e&&e.includes(s)));if(!n&&!r&&s!==MACRO_EXPRESSIONS.PYTHON_PACKAGE){Logger.debug(`Macro ${s} not found in args or env, skipping resolution.`);continue}const a=MacroResolverFunctions[s];if(a){const n=await a(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={})}normalizeServerName(e){return(e||"").toLowerCase().replace(/_/g,"-")}applySourceEnv(e,t){e&&"coding-flow"===this.normalizeServerName(t)&&(e.env&&"object"==typeof e.env||(e.env={}),e.env.SOURCE=this.clientName)}setupSettings(e,t,s){e.mcpServers[t]={type:s.mode||"sse",url:s.url},this.applySourceEnv(e.mcpServers[t],t)}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:[]},this.applySourceEnv(e.mcpServers[t],t)}async isServerReachable(e){return new Promise((t=>{try{const s=new URL(e),n=("https:"===s.protocol?https:http).request(s,{method:"HEAD",timeout:2e3},(e=>{t(!0),e.resume()}));n.on("error",(s=>{Logger.debug(`Server at ${e} is not reachable: ${s.message}`),t(!1)})),n.on("timeout",(()=>{Logger.debug(`Timeout checking server reachability at ${e}`),n.destroy(),t(!1)})),n.end()}catch(s){Logger.error(`Error parsing URL or making request to ${e}: ${s.message}`),t(!1)}}))}async handleSseAndStreamableMode(e,t,s){if(s.url){if(await this.isServerReachable(s.url))Logger.info(`Server at ${s.url} is already running or reachable. Skipping start command.`);else if(s.startingCommand&&"string"==typeof s.startingCommand){Logger.info(`Server at ${s.url} not reachable. Attempting to start server with command: ${s.startingCommand}`);const e=s.startingCommand.split(" "),t=e[0],n=e.slice(1);try{const e=spawn(t,n,{detached:!0,stdio:"ignore",shell:"win32"===process.platform});e.on("error",(e=>{Logger.error(`Failed to start server process with command "${s.startingCommand}": ${e.message}`)})),e.unref(),Logger.info(`Detached server process (PID: ${e.pid}) started with command: "${s.startingCommand}". It will continue running if this main process exits.`)}catch(e){Logger.error(`Exception when trying to spawn server process with command "${s.startingCommand}": ${e.message}`)}}else s.startingCommand?Logger.warn(`startingCommand is present but not a string: ${JSON.stringify(s.startingCommand)}`):Logger.info(`Server at ${s.url} not reachable and no startingCommand provided.`)}else Logger.warn("No URL provided in installConfig for SSE mode. Cannot check reachability or configure server.");this.setupSettings(e,t,s)}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"),r=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(r)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(),r=InstallOperationManager.getInstance(s||e.name,e.name);return await r.recording((async()=>{await r.recording((()=>this.checkVSCodeAndInstallExtension(n)),{stepName:RecordingConstants.STEP_CHECK_VSCODE_AND_INSTALL_EXTENSION,endMessage:e=>e?.message,onResult:e=>"failed"!==e?.status});const s=await r.recording((()=>this.setupInstallConfig(e,t)),{stepName:RecordingConstants.STEP_SETUP_INSTALLATION_CONFIG});e.mode&&(s.mode=e.mode);const a=await r.recording((()=>this.updateVSCodeSettings(e.name,s)),{stepName:RecordingConstants.STEP_UPDATE_VSCODE_SETTINGS,endMessage:e=>e?.some((e=>e.success))?`Updated settings in: ${e.map((e=>e.path)).join(", ")}`:`Failed to update settings: ${e.map((e=>e.error)).join("; ")}`,onResult:e=>e?.some((e=>e.success))}),i=a.some((e=>e.success)),o=a.filter((e=>e.success)).map((e=>e.path)),c=a.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: ${c.join("; ")}`,operationId:n,error:i?void 0:c.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","spawn","promisify","http","https","isCommandAvailable","getNpmExecutablePath","ExtensionInstaller","
|
|
1
|
+
{"version":3,"names":["Logger","exec","spawn","promisify","http","https","isCommandAvailable","getNpmExecutablePath","ExtensionInstaller","INSTRUMENTATION_KEY","PUBLIC_NPM_REGISTRY_ARG","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","APPLICATIONINSIGHTS_CONNECTION_STRING","key","config","Object","entries","envConfig","Default","this","_resolveConfigMacros","command","test","trim","hasRegistry","some","arg","startsWith","startingCommand","replace","JSON","stringify","macro","values","isMacroInArgs","includes","isMacroInEnv","value","PYTHON_PACKAGE","resolver","resolvedValue","undefined","originalArgsString","map","RegExp","originalEnvJson","handleWindowsNpx","process","platform","npmPath","APPDATA","initializeSettings","settings","mcpServers","normalizeServerName","serverName","toLowerCase","applySourceEnv","target","SOURCE","clientName","setupSettings","installConfig","type","url","handleStdioMode","autoApprove","disabled","alwaysAllow","isServerReachable","urlString","Promise","resolve","URL","request","protocol","method","timeout","res","resume","on","err","message","destroy","end","error","handleSseAndStreamableMode","info","commandParts","split","slice","child","detached","stdio","shell","unref","pid","warn","checkVSCodeAndInstallExtension","operationId","isVSCodeInstalled","isVSCodeInsidersInstalled","status","installExtension","updateVSCodeSettings","results","settingPath","codeSettingPath","setupClientSettings","push","success","path","Error","String","codeInsiderSettingPath","install","categoryName","recorder","getInstance","name","recording","async","stepName","STEP_CHECK_VSCODE_AND_INSTALL_EXTENSION","endMessage","result","onResult","STEP_SETUP_INSTALLATION_CONFIG","STEP_UPDATE_VSCODE_SETTINGS","r","anySuccess","successPaths","filter","errors","STEP_INSTALLATION","onError","errorMsg"],"sources":["../../../../src/core/installers/clients/BaseClientInstaller.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{MSRooCodeInstaller}from"./MSRooCodeInstaller.js";import{ClineInstaller}from"./ClineInstaller.js";import{GithubCopilotInstaller}from"./GithubCopilotInstaller.js";import{VisualStudioInstaller}from"./VisualStudioInstaller.js";import{ClaudeCodeInstaller}from"./ClaudeCodeInstaller.js";import{SUPPORTED_CLIENTS}from"../../metadatas/constants.js";import{RooCodeInstaller}from"./RooCodeInstaller.js";export class ClientInstallerFactory{static installerMap=(()=>{const
|
|
1
|
+
import{MSRooCodeInstaller}from"./MSRooCodeInstaller.js";import{ClineInstaller}from"./ClineInstaller.js";import{GithubCopilotInstaller}from"./GithubCopilotInstaller.js";import{VisualStudioInstaller}from"./VisualStudioInstaller.js";import{ClaudeCodeInstaller}from"./ClaudeCodeInstaller.js";import{SUPPORTED_CLIENTS}from"../../metadatas/constants.js";import{RooCodeInstaller}from"./RooCodeInstaller.js";import{CopilotCLIInstaller}from"./CopilotCLIInstaller.js";export class ClientInstallerFactory{static installerMap=(()=>{const l={MSRooCode:MSRooCodeInstaller,RooCode:RooCodeInstaller,Cline:ClineInstaller,GithubCopilot:GithubCopilotInstaller,ClaudeCode:ClaudeCodeInstaller,CopilotCLI:CopilotCLIInstaller};return SUPPORTED_CLIENTS.VisualStudio&&(l.VisualStudio=VisualStudioInstaller),l})();static getInstaller(l){if(!SUPPORTED_CLIENTS[l])return;const t=this.installerMap[l];return t?new t:void 0}static isClientSupported(l){return!!SUPPORTED_CLIENTS[l]}}
|
|
2
2
|
//# sourceMappingURL=ClientInstallerFactory.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["MSRooCodeInstaller","ClineInstaller","GithubCopilotInstaller","VisualStudioInstaller","ClaudeCodeInstaller","SUPPORTED_CLIENTS","RooCodeInstaller","ClientInstallerFactory","static","map","MSRooCode","RooCode","Cline","GithubCopilot","ClaudeCode","VisualStudio","getInstaller","clientName","InstallerClass","this","installerMap","undefined","isClientSupported"],"sources":["../../../../src/core/installers/clients/ClientInstallerFactory.ts"],"mappings":"OAASA,uBAA0B,iCAC1BC,mBAAsB,6BACtBC,2BAA8B,qCAC9BC,0BAA6B,oCAC7BC,wBAA2B,kCAE3BC,sBAAyB,sCACzBC,qBAAwB,+
|
|
1
|
+
{"version":3,"names":["MSRooCodeInstaller","ClineInstaller","GithubCopilotInstaller","VisualStudioInstaller","ClaudeCodeInstaller","SUPPORTED_CLIENTS","RooCodeInstaller","CopilotCLIInstaller","ClientInstallerFactory","static","map","MSRooCode","RooCode","Cline","GithubCopilot","ClaudeCode","CopilotCLI","VisualStudio","getInstaller","clientName","InstallerClass","this","installerMap","undefined","isClientSupported"],"sources":["../../../../src/core/installers/clients/ClientInstallerFactory.ts"],"mappings":"OAASA,uBAA0B,iCAC1BC,mBAAsB,6BACtBC,2BAA8B,qCAC9BC,0BAA6B,oCAC7BC,wBAA2B,kCAE3BC,sBAAyB,sCACzBC,qBAAwB,+BACxBC,wBAA2B,kCAM9B,MAAOC,uBACDC,oBAA8E,MAClF,MAAMC,EAAqD,CACvDC,UAAWX,mBACXY,QAASN,iBACTO,MAAOZ,eACPa,cAAeZ,uBACfa,WAAYX,oBACZY,WAAYT,qBAOhB,OAJIF,kBAAkBY,eAClBP,EAAIO,aAAed,uBAGhBO,CACV,EAfqF,GAsBtF,mBAAOQ,CACHC,GAGA,IAAKd,kBAAkBc,GACnB,OAGJ,MAAMC,EAAiBC,KAAKC,aAAaH,GACzC,OAAOC,EAAiB,IAAIA,OAAmBG,CACnD,CAOA,wBAAOC,CAAkBL,GACrB,QAASd,kBAAkBc,EAC/B","ignoreList":[]}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { BaseClientInstaller } from './BaseClientInstaller.js';
|
|
2
|
+
import { McpConfig, ServerInstallOptions, OperationStatus } from '../../metadatas/types.js';
|
|
3
|
+
/**
|
|
4
|
+
* Installer for GitHub Copilot CLI's user-level MCP configuration.
|
|
5
|
+
*/
|
|
6
|
+
export declare class CopilotCLIInstaller extends BaseClientInstaller {
|
|
7
|
+
protected readonly clientName: string;
|
|
8
|
+
protected updateCopilotCLISettings(serverName: string, installConfig: any): Promise<Array<{
|
|
9
|
+
success: boolean;
|
|
10
|
+
path: string;
|
|
11
|
+
error?: string;
|
|
12
|
+
}>>;
|
|
13
|
+
setupClientSettings(settingPath: string, serverName: string, installConfig: any): Promise<void>;
|
|
14
|
+
protected initializeSettings(settings: any): void;
|
|
15
|
+
protected handleStdioMode(settings: any, serverName: string, finalConfig: any): Promise<void>;
|
|
16
|
+
protected setupSettings(settings: any, serverName: string, installConfig: any): void;
|
|
17
|
+
install(serverConfig: McpConfig, options: ServerInstallOptions, categoryName?: string): Promise<OperationStatus>;
|
|
18
|
+
}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{BaseClientInstaller}from"./BaseClientInstaller.js";import{Logger}from"../../../utils/logger.js";import fs from"fs/promises";import path from"path";import{SUPPORTED_CLIENTS}from"../../metadatas/constants.js";import{InstallOperationManager}from"../../loaders/InstallOperationManager.js";import*as RecordingConstants from"../../metadatas/recordingConstants.js";export class CopilotCLIInstaller extends BaseClientInstaller{clientName="CopilotCLI";async updateCopilotCLISettings(t,e){Logger.debug("Updating GitHub Copilot CLI settings");const s=[];try{const a=SUPPORTED_CLIENTS[this.clientName].codeSettingPath;Logger.debug(`Attempting to update settings at: ${a}`),await this.setupClientSettings(a,t,e),s.push({success:!0,path:a}),Logger.debug("Successfully updated GitHub Copilot CLI settings")}catch(t){const e=t instanceof Error?t.message:String(t);Logger.error("Failed to update GitHub Copilot CLI settings:",t),s.push({success:!1,path:SUPPORTED_CLIENTS[this.clientName].codeSettingPath,error:e})}return s}async setupClientSettings(t,e,s){Logger.debug(`Setting up GitHub Copilot CLI settings at ${t}`);try{await fs.mkdir(path.dirname(t),{recursive:!0});let a={};try{const e=await fs.readFile(t,"utf8");a=JSON.parse(e)}catch(t){Logger.debug("No existing settings file found, creating new one")}this.initializeSettings(a),"stdio"===s.mode?await this.handleStdioMode(a,e,s):"sse"!==s.mode&&"streamable-http"!==s.mode||await this.handleSseAndStreamableMode(a,e,s),await fs.writeFile(t,JSON.stringify(a,null,2),"utf8"),Logger.debug(`Successfully updated GitHub Copilot CLI settings at ${t}`)}catch(t){throw Logger.error("Failed to setup GitHub Copilot CLI settings:",t),t}}initializeSettings(t){t.mcpServers||(t.mcpServers={})}async handleStdioMode(t,e,s){s.args&&(s.args=s.args.map((t=>"string"==typeof t?t.replace(/\\/g,"/"):t))),t.mcpServers[e]={type:"stdio",command:s.command,args:s.args,env:s.env||{}},this.applySourceEnv(t.mcpServers[e],e)}setupSettings(t,e,s){t.mcpServers[e]={type:"streamable-http"===s.mode?"http":s.mode||"sse",url:s.url},this.applySourceEnv(t.mcpServers[e],e)}async install(t,e,s){const a=this.generateOperationId(),i=InstallOperationManager.getInstance(s||t.name,t.name);return await i.recording((async()=>{const s=await i.recording((()=>this.setupInstallConfig(t,e)),{stepName:RecordingConstants.STEP_SETUP_INSTALLATION_CONFIG});t.mode&&(s.mode=t.mode);const r=await i.recording((()=>this.updateCopilotCLISettings(t.name,s)),{stepName:"Update GitHub Copilot CLI Settings",onResult:t=>t?.some((t=>t.success))}),n=r.some((t=>t.success)),o=r.filter((t=>t.success)).map((t=>t.path)),l=r.filter((t=>!t.success)).map((t=>t.error));return{status:n?"completed":"failed",type:"install",target:"server",message:n?`Successfully installed ${this.clientName} client. Updated settings in: ${o.join(", ")}`:`Failed to install ${this.clientName} client. Errors: ${l.join("; ")}`,operationId:a,error:n?void 0:l.join("; ")}}),{stepName:RecordingConstants.STEP_INSTALLATION,onResult:t=>"failed"!==t?.status,endMessage:t=>t?.message,onError:t=>{const e=`Unexpected error installing ${this.clientName} client: ${t instanceof Error?t.message:String(t)}`;return{result:{status:"failed",type:"install",target:"server",message:e,operationId:a,error:t instanceof Error?t.message:String(t)},message:e}}})}}
|
|
2
|
+
//# sourceMappingURL=CopilotCLIInstaller.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["BaseClientInstaller","Logger","fs","path","SUPPORTED_CLIENTS","InstallOperationManager","RecordingConstants","CopilotCLIInstaller","clientName","updateCopilotCLISettings","serverName","installConfig","debug","results","settingPath","this","codeSettingPath","setupClientSettings","push","success","error","errorMessage","Error","message","String","mkdir","dirname","recursive","settings","existingContent","readFile","JSON","parse","initializeSettings","mode","handleStdioMode","handleSseAndStreamableMode","writeFile","stringify","mcpServers","finalConfig","args","map","arg","replace","type","command","env","applySourceEnv","setupSettings","url","install","serverConfig","options","categoryName","operationId","generateOperationId","recorder","getInstance","name","recording","async","setupInstallConfig","stepName","STEP_SETUP_INSTALLATION_CONFIG","onResult","result","some","r","anySuccess","successPaths","filter","errors","status","target","join","undefined","STEP_INSTALLATION","endMessage","onError","errorMsg"],"sources":["../../../../src/core/installers/clients/CopilotCLIInstaller.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{exec}from"child_process";import{promisify}from"util";import{SUPPORTED_CLIENTS}from"../../metadatas/constants.js";import{Logger}from"../../../utils/logger.js";import{handleGitHubRelease}from"../../../utils/githubUtils.js";import{compareVersions}from"../../../utils/versionUtils.js";const execAsync=promisify(exec);export class ExtensionInstaller{static async getVSCodePath(e){const t=e?"code-insiders":"code";try{if("win32"===process.platform)return await execAsync(`where ${t}`),t;if("darwin"!==process.platform)return await execAsync(`which ${t}`),t;{const t=e?"Visual Studio Code - Insiders.app":"Visual Studio Code.app",s=`/Applications/${t}`,i=`${process.env.HOME}/Applications/${t}`;try{return await execAsync(`test -d "${s}"`),s}catch{try{return await execAsync(`test -d "${i}"`),i}catch{return null}}}}catch{return null}}static async listExtensions(e){const t=e?"code-insiders":"code";try{const{stdout:e}=await execAsync(`${t} --list-extensions --show-versions`);return e.split("\n").filter((e=>e.trim())).map((e=>{const[t,s]=e.split("@"),[i,n]=t.split(".");return{name:n,publisher:i,version:s||""}}))}catch(e){return Logger.error(`Failed to list extensions for ${t}:`,e),[]}}static async checkExtension(e,t){const s=await this.listExtensions(t),[i,n]=e.split("."),o=s.find((e=>e.publisher.toLowerCase()===i.toLowerCase()&&e.name.toLowerCase()===n.toLowerCase()));return o?o.version:null}static async installPublicExtension(e,t){const s=t?"code-insiders":"code";try{return await execAsync(`${s} --install-extension ${e}`),!0}catch(t){return Logger.error(`Failed to install extension ${e}:`,t),!1}}static async installPrivateExtension(e,t){const s=t?"code-insiders":"code";try{return await execAsync(`${s} --install-extension "${e}"`),!0}catch(t){return Logger.error(`Failed to install extension from VSIX ${e}:`,t),!1}}static async installExtension(e){const t=SUPPORTED_CLIENTS[e];if(!t?.extension?.extensionId)return Logger.error(`No extension configuration found for client ${e}`),!1;const{extensionId:s,leastVersion:i,repository:n,assetName:o,private:r}=t.extension;let a=!1;for(const
|
|
1
|
+
import{exec}from"child_process";import{promisify}from"util";import{BUNDLED_COPILOT_MIN_VSCODE_VERSION,GITHUB_COPILOT_CHAT_EXTENSION_ID,SUPPORTED_CLIENTS}from"../../metadatas/constants.js";import{Logger}from"../../../utils/logger.js";import{handleGitHubRelease}from"../../../utils/githubUtils.js";import{compareVersions}from"../../../utils/versionUtils.js";const execAsync=promisify(exec);export class ExtensionInstaller{static async getVSCodePath(e){const t=e?"code-insiders":"code";try{if("win32"===process.platform)return await execAsync(`where ${t}`),t;if("darwin"!==process.platform)return await execAsync(`which ${t}`),t;{const t=e?"Visual Studio Code - Insiders.app":"Visual Studio Code.app",s=`/Applications/${t}`,i=`${process.env.HOME}/Applications/${t}`;try{return await execAsync(`test -d "${s}"`),s}catch{try{return await execAsync(`test -d "${i}"`),i}catch{return null}}}}catch{return null}}static async listExtensions(e){const t=e?"code-insiders":"code";try{const{stdout:e}=await execAsync(`${t} --list-extensions --show-versions`);return e.split("\n").filter((e=>e.trim())).map((e=>{const[t,s]=e.split("@"),[i,n]=t.split(".");return{name:n,publisher:i,version:s||""}}))}catch(e){return Logger.error(`Failed to list extensions for ${t}:`,e),[]}}static async checkExtension(e,t){const s=await this.listExtensions(t),[i,n]=e.split("."),o=s.find((e=>e.publisher.toLowerCase()===i.toLowerCase()&&e.name.toLowerCase()===n.toLowerCase()));return o?o.version:null}static async hasBundledCopilotChat(e,t,s){if("GithubCopilot"!==e||t.toLowerCase()!==GITHUB_COPILOT_CHAT_EXTENSION_ID.toLowerCase())return!1;const i=s?"code-insiders":"code";try{const{stdout:e}=await execAsync(`${i} --version`),t=e.split(/\r?\n/).find((e=>e.trim()))?.trim()||"",s=t.match(/^\d+\.\d+\.\d+/)?.[0];return!!s&&compareVersions(s,BUNDLED_COPILOT_MIN_VSCODE_VERSION)>=0}catch(e){return Logger.debug(`Failed to determine VS Code version for ${i}: ${e instanceof Error?e.message:String(e)}`),!1}}static async installPublicExtension(e,t){const s=t?"code-insiders":"code";try{return await execAsync(`${s} --install-extension ${e}`),!0}catch(t){return Logger.error(`Failed to install extension ${e}:`,t),!1}}static async installPrivateExtension(e,t){const s=t?"code-insiders":"code";try{return await execAsync(`${s} --install-extension "${e}"`),!0}catch(t){return Logger.error(`Failed to install extension from VSIX ${e}:`,t),!1}}static async installExtension(e){const t=SUPPORTED_CLIENTS[e];if(!t?.extension?.extensionId)return Logger.error(`No extension configuration found for client ${e}`),!1;const{extensionId:s,leastVersion:i,repository:n,assetName:o,private:r}=t.extension;let a=!1;for(const t of[!1,!0]){if(!await this.getVSCodePath(t)){Logger.debug((t?"VSCode Insiders":"VSCode")+" not found, skipping...");continue}const c=await this.checkExtension(s,t);if(c||!await this.hasBundledCopilotChat(e,s,t))if(!c||r&&i&&compareVersions(c,i)<0)if(r)try{if(!n||!o)throw new Error(`Missing repository or assetName for private extension ${s}`);const{resolvedPath:e}=await handleGitHubRelease({name:s,version:"latest",type:"extension"},{repository:n,assetName:o});a=await this.installPrivateExtension(e,t)}catch(e){Logger.error(`Failed to install/update private extension ${s}:`,e);continue}else a=await this.installPublicExtension(s,t);else Logger.debug(`Extension ${s} is already installed and up to date`),a=!0;else Logger.debug(`Extension ${s} is bundled with ${t?"VSCode Insiders":"VSCode"}`),a=!0}return a}}
|
|
2
2
|
//# sourceMappingURL=ExtensionInstaller.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["exec","promisify","SUPPORTED_CLIENTS","Logger","handleGitHubRelease","compareVersions","execAsync","ExtensionInstaller","getVSCodePath","isInsiders","command","process","platform","appName","systemPath","userPath","env","HOME","listExtensions","stdout","split","filter","line","trim","map","extension","version","publisher","name","error","checkExtension","extensionId","extensions","this","find","ext","toLowerCase","installPublicExtension","installPrivateExtension","vsixPath","installExtension","
|
|
1
|
+
{"version":3,"names":["exec","promisify","BUNDLED_COPILOT_MIN_VSCODE_VERSION","GITHUB_COPILOT_CHAT_EXTENSION_ID","SUPPORTED_CLIENTS","Logger","handleGitHubRelease","compareVersions","execAsync","ExtensionInstaller","getVSCodePath","isInsiders","command","process","platform","appName","systemPath","userPath","env","HOME","listExtensions","stdout","split","filter","line","trim","map","extension","version","publisher","name","error","checkExtension","extensionId","extensions","this","find","ext","toLowerCase","hasBundledCopilotChat","clientName","versionLine","match","debug","Error","message","String","installPublicExtension","installPrivateExtension","vsixPath","installExtension","client","leastVersion","repository","assetName","private","isPrivate","success","currentVersion","resolvedPath","type"],"sources":["../../../../src/core/installers/clients/ExtensionInstaller.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{BaseInstaller}from"./BaseInstaller.js";import{compareVersions}from"../../../utils/versionUtils.js";import{handleGitHubRelease,getGitHubLatestVersion}from"../../../utils/githubUtils.js";import{handleArtifact as handleAdoArtifact,getArtifactLatestVersion}from"../../../utils/adoUtils.js";import path from"path";import fs from"fs/promises";import{SETTINGS_DIR}from"../../metadatas/constants.js";import{Logger}from"../../../utils/logger.js";import*as RecordingConstants from"../../metadatas/recordingConstants.js";export class NpmInstaller extends BaseInstaller{canHandle(e){return"npm"===e.type}supportCheckUpdates(){return!0}async getLatestVersion(e,t){if(e.registry){if(e.registry.githubRelease)return getGitHubLatestVersion(this.execPromise,e.registry.githubRelease.repository);if(e.registry.artifacts){const r=t?.settings?.folderName||this._getRequirementFolderPath(e);return getArtifactLatestVersion(e,e.registry.artifacts,t,r)}}const{stdout:r}=await this.execPromise(`npm view ${e.name} version`);return r.trim()}_getRequirementFolderPath(e){return path.join(SETTINGS_DIR,"npm_requirements",e.name,e.version.includes("latest")?"latest":e.version)}async checkInstallation(e,t){const r=t?.settings?.folderName||this._getRequirementFolderPath(e),n=this._getRequirementName(e);try{await fs.access(r)}catch(t){return Logger.debug(`Requirement directory ${r} does not exist. Skipping installation check.`),{name:e.name,type:"npm",installed:!1,inProgress:!1,error:`Requirement directory ${r} does not exist. Skipping installation check.`}}try{const t=await this._getInstalledVersion(n,r);return t?{name:e.name,type:"npm",installed:!0,version:t,npmPath:r,inProgress:!1}:{name:e.name,type:"npm",installed:!1,inProgress:!1,error:`Package ${e.name} not found or version missing in npm list output in ${r}.`}}catch(t){return Logger.debug(`Error checking installation for ${e.name} in ${r}: ${t instanceof Error?t.message:String(t)}`),{name:e.name,type:"npm",installed:!1,inProgress:!1,error:t instanceof Error?t.message:String(t)}}}async _getInstalledVersion(e,t){try{const r=`npm list ${e} --depth=0 --json --prefix "${t}"`;Logger.debug(`Getting installed version for ${e} in ${t} with command: ${r}`);const{stdout:n}=await this.execPromise(r),s=JSON.parse(n);return s.dependencies&&s.dependencies[e]&&s.dependencies[e].version?s.dependencies[e].version:void Logger.debug(`Package ${e} not found in npm list output in ${t}.`)}catch(r){return void Logger.debug(`Error getting installed version for ${e} in ${t}: ${r instanceof Error?r.message:String(r)}`)}}_getRequirementName(e){return e.registry?.artifacts?.registryName?`@${e.registry.artifacts.registryName}/${e.name}`:e.name}async _installPackage(e,t,r,n){Logger.debug(`Installing NPM package from "${t}" into "${r}"`),await fs.mkdir(r,{recursive:!0});const s=`npm install ${t} --prefix "${r}"`;Logger.debug(`Executing install command: ${s}`);const i=this._getRequirementName(e);return await n.recording((async()=>{const{stdout:n,stderr:a}=await this.execPromise(s);Logger.debug(`NPM install stdout for ${t} in ${r}: ${n}`),!a||a.toLowerCase().includes("added")||a.toLowerCase().includes("updated")||a.toLowerCase().includes("found 0 vulnerabilities")||Logger.log(`NPM install stderr for ${t} in ${r}: ${a}`);const o=await this._getInstalledVersion(i,r);if(o)return Logger.log(`Successfully installed and verified ${i}@${o} into ${r}`),{version:o};throw new Error(`Successfully ran npm install for ${t}, but ${e.name} version could not be determined via npm list in ${r}, stderr: ${a}`)}),{stepName:RecordingConstants.STEP_INSTALLATION_COMMAND_EXECUTION,inProgressMessage:`Running: ${s}`,onError:e=>{throw Logger.error(`Error during NPM installation: ${e instanceof Error?e.message:String(e)}`),e}})}async install(e,t,r){const n=r?.settings?.folderName||this._getRequirementFolderPath(e);return await fs.mkdir(n,{recursive:!0}),t.recording((async()=>{const s=await this.checkInstallation(e,{settings:{folderName:n}});if(s.installed&&s.version&&0===compareVersions(s.version,e.version)&&!e.version.toLowerCase().includes("latest"))return Logger.log(`${e.name}@${s.version} already installed in ${n}.`),s;let i=e.version,a=`${e.name}@${e.version}`;if(e.registry)if(e.registry.githubRelease){const t=await handleGitHubRelease(e,e.registry.githubRelease);a=t.resolvedPath,i=t.resolvedVersion}else{if(!e.registry.artifacts)throw t&&await t.recordStep("NpmInstaller:RegistryConfig","failed","Invalid registry configuration for npm."),new Error("Invalid registry configuration for npm.");{const t=await handleAdoArtifact(e,e.registry.artifacts,r?.settings?.pythonCommand,n);a=`${t.package}@${t.version}`,i=t.version}}return i=(await this._installPackage(e,a,n,t)).version,{name:e.name,type:"npm",installed:!0,version:i,inProgress:!1,npmPath:n}}),{stepName:RecordingConstants.STEP_NPM_INSTALLER_INSTALL,inProgressMessage:`Installing npm package: ${e.name}`,endMessage:t=>t.installed?`Install completed for ${e.name}`:`Install failed for ${e.name}`,onError:t=>({result:{name:e.name,type:"npm",installed:!1,error:t instanceof Error?t.message:String(t),inProgress:!1},message:t instanceof Error?t.message:String(t)})})}}
|
|
1
|
+
import{BaseInstaller}from"./BaseInstaller.js";import{compareVersions}from"../../../utils/versionUtils.js";import{handleGitHubRelease,getGitHubLatestVersion}from"../../../utils/githubUtils.js";import{handleArtifact as handleAdoArtifact,getArtifactLatestVersion}from"../../../utils/adoUtils.js";import path from"path";import fs from"fs/promises";import{PUBLIC_NPM_REGISTRY_ARG,SETTINGS_DIR}from"../../metadatas/constants.js";import{Logger}from"../../../utils/logger.js";import*as RecordingConstants from"../../metadatas/recordingConstants.js";export class NpmInstaller extends BaseInstaller{canHandle(e){return"npm"===e.type}supportCheckUpdates(){return!0}async getLatestVersion(e,t){if(e.registry){if(e.registry.githubRelease)return getGitHubLatestVersion(this.execPromise,e.registry.githubRelease.repository);if(e.registry.artifacts){const r=t?.settings?.folderName||this._getRequirementFolderPath(e);return getArtifactLatestVersion(e,e.registry.artifacts,t,r)}}const{stdout:r}=await this.execPromise(`npm view ${e.name} version ${PUBLIC_NPM_REGISTRY_ARG}`);return r.trim()}_getRequirementFolderPath(e){return path.join(SETTINGS_DIR,"npm_requirements",e.name,e.version.includes("latest")?"latest":e.version)}async checkInstallation(e,t){const r=t?.settings?.folderName||this._getRequirementFolderPath(e),n=this._getRequirementName(e);try{await fs.access(r)}catch(t){return Logger.debug(`Requirement directory ${r} does not exist. Skipping installation check.`),{name:e.name,type:"npm",installed:!1,inProgress:!1,error:`Requirement directory ${r} does not exist. Skipping installation check.`}}try{const t=await this._getInstalledVersion(n,r);return t?{name:e.name,type:"npm",installed:!0,version:t,npmPath:r,inProgress:!1}:{name:e.name,type:"npm",installed:!1,inProgress:!1,error:`Package ${e.name} not found or version missing in npm list output in ${r}.`}}catch(t){return Logger.debug(`Error checking installation for ${e.name} in ${r}: ${t instanceof Error?t.message:String(t)}`),{name:e.name,type:"npm",installed:!1,inProgress:!1,error:t instanceof Error?t.message:String(t)}}}async _getInstalledVersion(e,t){try{const r=`npm list ${e} --depth=0 --json --prefix "${t}"`;Logger.debug(`Getting installed version for ${e} in ${t} with command: ${r}`);const{stdout:n}=await this.execPromise(r),s=JSON.parse(n);return s.dependencies&&s.dependencies[e]&&s.dependencies[e].version?s.dependencies[e].version:void Logger.debug(`Package ${e} not found in npm list output in ${t}.`)}catch(r){return void Logger.debug(`Error getting installed version for ${e} in ${t}: ${r instanceof Error?r.message:String(r)}`)}}_getRequirementName(e){return e.registry?.artifacts?.registryName?`@${e.registry.artifacts.registryName}/${e.name}`:e.name}async _installPackage(e,t,r,n){Logger.debug(`Installing NPM package from "${t}" into "${r}"`),await fs.mkdir(r,{recursive:!0});const s=`npm install ${t} ${PUBLIC_NPM_REGISTRY_ARG} --prefix "${r}"`;Logger.debug(`Executing install command: ${s}`);const i=this._getRequirementName(e);return await n.recording((async()=>{const{stdout:n,stderr:a}=await this.execPromise(s);Logger.debug(`NPM install stdout for ${t} in ${r}: ${n}`),!a||a.toLowerCase().includes("added")||a.toLowerCase().includes("updated")||a.toLowerCase().includes("found 0 vulnerabilities")||Logger.log(`NPM install stderr for ${t} in ${r}: ${a}`);const o=await this._getInstalledVersion(i,r);if(o)return Logger.log(`Successfully installed and verified ${i}@${o} into ${r}`),{version:o};throw new Error(`Successfully ran npm install for ${t}, but ${e.name} version could not be determined via npm list in ${r}, stderr: ${a}`)}),{stepName:RecordingConstants.STEP_INSTALLATION_COMMAND_EXECUTION,inProgressMessage:`Running: ${s}`,onError:e=>{throw Logger.error(`Error during NPM installation: ${e instanceof Error?e.message:String(e)}`),e}})}async install(e,t,r){const n=r?.settings?.folderName||this._getRequirementFolderPath(e);return await fs.mkdir(n,{recursive:!0}),t.recording((async()=>{const s=await this.checkInstallation(e,{settings:{folderName:n}});if(s.installed&&s.version&&0===compareVersions(s.version,e.version)&&!e.version.toLowerCase().includes("latest"))return Logger.log(`${e.name}@${s.version} already installed in ${n}.`),s;let i=e.version,a=`${e.name}@${e.version}`;if(e.registry)if(e.registry.githubRelease){const t=await handleGitHubRelease(e,e.registry.githubRelease);a=t.resolvedPath,i=t.resolvedVersion}else{if(!e.registry.artifacts)throw t&&await t.recordStep("NpmInstaller:RegistryConfig","failed","Invalid registry configuration for npm."),new Error("Invalid registry configuration for npm.");{const t=await handleAdoArtifact(e,e.registry.artifacts,r?.settings?.pythonCommand,n);a=`${t.package}@${t.version}`,i=t.version}}return i=(await this._installPackage(e,a,n,t)).version,{name:e.name,type:"npm",installed:!0,version:i,inProgress:!1,npmPath:n}}),{stepName:RecordingConstants.STEP_NPM_INSTALLER_INSTALL,inProgressMessage:`Installing npm package: ${e.name}`,endMessage:t=>t.installed?`Install completed for ${e.name}`:`Install failed for ${e.name}`,onError:t=>({result:{name:e.name,type:"npm",installed:!1,error:t instanceof Error?t.message:String(t),inProgress:!1},message:t instanceof Error?t.message:String(t)})})}}
|
|
2
2
|
//# sourceMappingURL=NpmInstaller.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["BaseInstaller","compareVersions","handleGitHubRelease","getGitHubLatestVersion","handleAdoArtifact","getArtifactLatestVersion","path","fs","SETTINGS_DIR","Logger","RecordingConstants","NpmInstaller","canHandle","requirement","type","supportCheckUpdates","getLatestVersion","options","registry","githubRelease","this","execPromise","repository","artifacts","targetDir","settings","folderName","_getRequirementFolderPath","stdout","name","trim","join","version","includes","checkInstallation","requirementDir","requirementName","_getRequirementName","access","dirErr","debug","installed","inProgress","error","installedVersion","_getInstalledVersion","npmPath","Error","message","String","directory","command","listOutput","JSON","parse","dependencies","registryName","_installPackage","packageSource","recorder","mkdir","recursive","installCommand","recording","async","installStdout","stderr","installStderr","toLowerCase","log","stepName","STEP_INSTALLATION_COMMAND_EXECUTION","inProgressMessage","onError","install","status","resolvedVersion","packageToInstall","result","resolvedPath","recordStep","adoResult","pythonCommand","package","STEP_NPM_INSTALLER_INSTALL","endMessage"],"sources":["../../../../src/core/installers/requirements/NpmInstaller.ts"],"mappings":"OACSA,kBAAqB,4BACrBC,oBAAuB,wCACvBC,oBAAqBC,2BAA8B,yDAEjCC,kBAAsCC,6BAAgC,oCAC1FC,SAAU,cACVC,OAAQ,
|
|
1
|
+
{"version":3,"names":["BaseInstaller","compareVersions","handleGitHubRelease","getGitHubLatestVersion","handleAdoArtifact","getArtifactLatestVersion","path","fs","PUBLIC_NPM_REGISTRY_ARG","SETTINGS_DIR","Logger","RecordingConstants","NpmInstaller","canHandle","requirement","type","supportCheckUpdates","getLatestVersion","options","registry","githubRelease","this","execPromise","repository","artifacts","targetDir","settings","folderName","_getRequirementFolderPath","stdout","name","trim","join","version","includes","checkInstallation","requirementDir","requirementName","_getRequirementName","access","dirErr","debug","installed","inProgress","error","installedVersion","_getInstalledVersion","npmPath","Error","message","String","directory","command","listOutput","JSON","parse","dependencies","registryName","_installPackage","packageSource","recorder","mkdir","recursive","installCommand","recording","async","installStdout","stderr","installStderr","toLowerCase","log","stepName","STEP_INSTALLATION_COMMAND_EXECUTION","inProgressMessage","onError","install","status","resolvedVersion","packageToInstall","result","resolvedPath","recordStep","adoResult","pythonCommand","package","STEP_NPM_INSTALLER_INSTALL","endMessage"],"sources":["../../../../src/core/installers/requirements/NpmInstaller.ts"],"mappings":"OACSA,kBAAqB,4BACrBC,oBAAuB,wCACvBC,oBAAqBC,2BAA8B,yDAEjCC,kBAAsCC,6BAAgC,oCAC1FC,SAAU,cACVC,OAAQ,qBAEXC,wBACAC,iBACG,sCACEC,WAAc,qCAEXC,uBAAwB,+CAK9B,MAAOC,qBAAqBZ,cAM9B,SAAAa,CAAUC,GACN,MAA4B,QAArBA,EAAYC,IACvB,CAEA,mBAAAC,GACI,OAAO,CACX,CAQA,sBAAMC,CAAiBH,EAAgCI,GACnD,GAAIJ,EAAYK,SAAU,CACtB,GAAIL,EAAYK,SAASC,cACrB,OAAOjB,uBAAuBkB,KAAKC,YAAaR,EAAYK,SAASC,cAAcG,YAChF,GAAIT,EAAYK,SAASK,UAAW,CAGvC,MAAMC,EAAYP,GAASQ,UAAUC,YAAcN,KAAKO,0BAA0Bd,GAClF,OAAOT,yBAAyBS,EAAaA,EAAYK,SAASK,UAAWN,EAASO,EAC1F,CACJ,CAEA,MAAMI,OAAEA,SAAiBR,KAAKC,YAAY,YAAYR,EAAYgB,gBAAgBtB,2BAClF,OAAOqB,EAAOE,MAClB,CAQQ,yBAAAH,CAA0Bd,GAC9B,OAAOR,KAAK0B,KACRvB,aACA,mBACAK,EAAYgB,KACZhB,EAAYmB,QAAQC,SAAS,UAAY,SAAWpB,EAAYmB,QACxE,CAcA,uBAAME,CAAkBrB,EAAgCI,GACpD,MAAMkB,EAAiBlB,GAASQ,UAAUC,YAAcN,KAAKO,0BAA0Bd,GACjFuB,EAAkBhB,KAAKiB,oBAAoBxB,GAEjD,UACUP,GAAGgC,OAAOH,EACpB,CAAE,MAAOI,GAEL,OADA9B,OAAO+B,MAAM,yBAAyBL,kDAC/B,CACHN,KAAMhB,EAAYgB,KAClBf,KAAM,MACN2B,WAAW,EACXC,YAAY,EACZC,MAAO,yBAAyBR,iDAExC,CACA,IACI,MAAMS,QAAyBxB,KAAKyB,qBAAqBT,EAAiBD,GAE1E,OAAIS,EACO,CACHf,KAAMhB,EAAYgB,KAClBf,KAAM,MACN2B,WAAW,EACXT,QAASY,EACTE,QAASX,EACTO,YAAY,GAIb,CACHb,KAAMhB,EAAYgB,KAClBf,KAAM,MACN2B,WAAW,EACXC,YAAY,EACZC,MAAO,WAAW9B,EAAYgB,2DAA2DM,KAEjG,CAAE,MAAOQ,GAGL,OADAlC,OAAO+B,MAAM,mCAAmC3B,EAAYgB,WAAWM,MAAmBQ,aAAiBI,MAAQJ,EAAMK,QAAUC,OAAON,MACnI,CACHd,KAAMhB,EAAYgB,KAClBf,KAAM,MACN2B,WAAW,EACXC,YAAY,EACZC,MAAOA,aAAiBI,MAAQJ,EAAMK,QAAUC,OAAON,GAE/D,CACJ,CASQ,0BAAME,CAAqBT,EAAyBc,GACxD,IACI,MAAMC,EAAU,YAAYf,gCAA8Cc,KAC1EzC,OAAO+B,MAAM,iCAAiCJ,QAAsBc,mBAA2BC,KAC/F,MAAMvB,OAAEA,SAAiBR,KAAKC,YAAY8B,GACpCC,EAAaC,KAAKC,MAAM1B,GAE9B,OAAIwB,EAAWG,cAAgBH,EAAWG,aAAanB,IAAoBgB,EAAWG,aAAanB,GAAiBJ,QACzGoB,EAAWG,aAAanB,GAAiBJ,aAEpDvB,OAAO+B,MAAM,WAAWJ,qCAAmDc,KAE/E,CAAE,MAAOP,GAEL,YADAlC,OAAO+B,MAAM,uCAAuCJ,QAAsBc,MAAcP,aAAiBI,MAAQJ,EAAMK,QAAUC,OAAON,KAE5I,CACJ,CASQ,mBAAAN,CAAoBxB,GACxB,OAAOA,EAAYK,UAAUK,WAAWiC,aAAe,IAAI3C,EAAYK,SAASK,UAAUiC,gBAAgB3C,EAAYgB,OAAShB,EAAYgB,IAC/I,CAUQ,qBAAM4B,CACV5C,EACA6C,EACAlC,EACAmC,GAEAlD,OAAO+B,MAAM,gCAAgCkB,YAAwBlC,YAC/DlB,GAAGsD,MAAMpC,EAAW,CAAEqC,WAAW,IAEvC,MAAMC,EAAiB,eAAeJ,KAAiBnD,qCAAqCiB,KAC5Ff,OAAO+B,MAAM,8BAA8BsB,KAC3C,MAAM1B,EAAkBhB,KAAKiB,oBAAoBxB,GAEjD,aAAa8C,EAASI,WAClBC,UACI,MAAQpC,OAAQqC,EAAeC,OAAQC,SAAwB/C,KAAKC,YAAYyC,GAChFrD,OAAO+B,MAAM,0BAA0BkB,QAAoBlC,MAAcyC,MACrEE,GAAkBA,EAAcC,cAAcnC,SAAS,UAAakC,EAAcC,cAAcnC,SAAS,YAAekC,EAAcC,cAAcnC,SAAS,4BAE7JxB,OAAO4D,IAAI,0BAA0BX,QAAoBlC,MAAc2C,KAI3E,MAAMvB,QAAyBxB,KAAKyB,qBAAqBT,EAAiBZ,GAE1E,GAAIoB,EAEA,OADAnC,OAAO4D,IAAI,uCAAuCjC,KAAmBQ,UAAyBpB,KACvF,CAAEQ,QAASY,GAElB,MAAM,IAAIG,MAAM,oCAAoCW,UAAsB7C,EAAYgB,wDAAwDL,cAAsB2C,IACxK,GAEJ,CACIG,SAAU5D,mBAAmB6D,oCAC7BC,kBAAmB,YAAYV,IAC/BW,QAAU9B,IAEN,MADAlC,OAAOkC,MAAM,kCAAkCA,aAAiBI,MAAQJ,EAAMK,QAAUC,OAAON,MACzFA,CAAK,GAI3B,CASA,aAAM+B,CAAQ7D,EAAgC8C,EAAmC1C,GAC7E,MAAMO,EAAYP,GAASQ,UAAUC,YAAcN,KAAKO,0BAA0Bd,GAElF,aADMP,GAAGsD,MAAMpC,EAAW,CAAEqC,WAAW,IAChCF,EAASI,WACZC,UACI,MAAMW,QAAevD,KAAKc,kBAAkBrB,EAAa,CAAEY,SAAU,CAAEC,WAAYF,KACnF,GAAImD,EAAOlC,WAAakC,EAAO3C,SAAoE,IAAzDhC,gBAAgB2E,EAAO3C,QAASnB,EAAYmB,WAAmBnB,EAAYmB,QAAQoC,cAAcnC,SAAS,UAEhJ,OADAxB,OAAO4D,IAAI,GAAGxD,EAAYgB,QAAQ8C,EAAO3C,gCAAgCR,MAClEmD,EAGX,IAAIC,EAAkB/D,EAAYmB,QAC9B6C,EAA2B,GAAGhE,EAAYgB,QAAQhB,EAAYmB,UAElE,GAAInB,EAAYK,SACZ,GAAIL,EAAYK,SAASC,cAAe,CACpC,MAAM2D,QAAe7E,oBAAoBY,EAAaA,EAAYK,SAASC,eAC3E0D,EAAmBC,EAAOC,aAC1BH,EAAkBE,EAAOF,eAC7B,KAAO,KAAI/D,EAAYK,SAASK,UAW5B,MADIoC,SAAgBA,EAASqB,WAAW,8BAA+B,SAAU,2CAC3E,IAAIjC,MAAM,2CAXuB,CACvC,MAAMkC,QAAqC9E,kBACvCU,EACAA,EAAYK,SAASK,UACrBN,GAASQ,UAAUyD,cACnB1D,GAEJqD,EAAmB,GAAGI,EAAUE,WAAWF,EAAUjD,UACrD4C,EAAkBK,EAAUjD,OAChC,CAGA,CAKJ,OAFA4C,SADiCxD,KAAKqC,gBAAgB5C,EAAagE,EAAkBrD,EAAWmC,IAC3D3B,QAE9B,CACHH,KAAMhB,EAAYgB,KAClBf,KAAM,MACN2B,WAAW,EACXT,QAAS4C,EACTlC,YAAY,EACZI,QAAStB,EACZ,GAEL,CACI8C,SAAU5D,mBAAmB0E,2BAC7BZ,kBAAmB,2BAA2B3D,EAAYgB,OAC1DwD,WAAaP,GACTA,EAAOrC,UACD,yBAAyB5B,EAAYgB,OACrC,sBAAsBhB,EAAYgB,OAC5C4C,QAAU9B,IACC,CACHmC,OAAQ,CACJjD,KAAMhB,EAAYgB,KAClBf,KAAM,MACN2B,WAAW,EACXE,MAAOA,aAAiBI,MAAQJ,EAAMK,QAAUC,OAAON,GACvDD,YAAY,GAEhBM,QAASL,aAAiBI,MAAQJ,EAAMK,QAAUC,OAAON,MAI7E","ignoreList":[]}
|
|
@@ -10,6 +10,10 @@ export declare const GITHUB_REPO: {
|
|
|
10
10
|
feedsPath: string;
|
|
11
11
|
feedAssetsName: string;
|
|
12
12
|
};
|
|
13
|
+
export declare const PUBLIC_NPM_REGISTRY = "https://packagefeedproxy.microsoft.io/npm/";
|
|
14
|
+
export declare const PUBLIC_NPM_REGISTRY_ARG = "--registry=https://packagefeedproxy.microsoft.io/npm/";
|
|
15
|
+
export declare const GITHUB_COPILOT_CHAT_EXTENSION_ID = "GitHub.copilot-chat";
|
|
16
|
+
export declare const BUNDLED_COPILOT_MIN_VSCODE_VERSION = "1.116.0";
|
|
13
17
|
/**
|
|
14
18
|
* Local settings directory path based on OS
|
|
15
19
|
*/
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import os from"os";import path from"path";export const GITHUB_REPO={url:"https://github.com/ai-microsoft/imcp-feed.git",repoName:"ai-microsoft/imcp-feed",feedsPath:"feeds",feedAssetsName:"imcp-feeds-${latest}.zip"};export const SETTINGS_DIR=(process.platform,path.join(os.homedir(),".imcp"));export const LOCAL_FEEDS_DIR=path.join(SETTINGS_DIR,"feeds");export const USER_INFO_PATH=path.join(SETTINGS_DIR,"settings","user_info.json");export const LOCAL_FEEDS_SCHEMA_DIR=path.join(LOCAL_FEEDS_DIR,"schemas");const CODE_STRORAGE_DIR=(()=>{switch(process.platform){case"win32":return path.join(os.homedir(),"AppData","Roaming","Code","User");case"darwin":return path.join(os.homedir(),"Library","Application Support","Code","User");default:return process.env.WSL_DISTRO_NAME?path.join(os.homedir(),".vscode-server","data","User"):path.join(os.homedir(),".config","Code","User")}})(),CODE_INSIDER_STRORAGE_DIR=(()=>{switch(process.platform){case"win32":return path.join(os.homedir(),"AppData","Roaming","Code - Insiders","User");case"darwin":return path.join(os.homedir(),"Library","Application Support","Code - Insiders","User");default:return path.join(os.homedir(),".config","Code - Insiders","User")}})();export const SUPPORTED_CLIENTS=(()=>{const o={MSRooCode:{extension:{extensionId:"microsoftai.ms-roo-cline",leastVersion:"0.0.8",repository:"ai-microsoft/roo-cline",assetName:"ms-roo-cline-${version}.vsix",private:!0},codeSettingPath:path.join(CODE_STRORAGE_DIR,"globalStorage","microsoftai.ms-roo-cline","settings","cline_mcp_settings.json"),codeInsiderSettingPath:path.join(CODE_INSIDER_STRORAGE_DIR,"globalStorage","microsoftai.ms-roo-cline","settings","cline_mcp_settings.json")},RooCode:{extension:{extensionId:"rooveterinaryinc.roo-cline"},codeSettingPath:path.join(CODE_STRORAGE_DIR,"globalStorage","rooveterinaryinc.roo-cline","settings","mcp_settings.json"),codeInsiderSettingPath:path.join(CODE_INSIDER_STRORAGE_DIR,"globalStorage","rooveterinaryinc.roo-cline","settings","mcp_settings.json")},Cline:{extension:{extensionId:"saoudrizwan.claude-dev"},codeSettingPath:path.join(CODE_STRORAGE_DIR,"globalStorage","saoudrizwan.claude-dev","settings","cline_mcp_settings.json"),codeInsiderSettingPath:path.join(CODE_INSIDER_STRORAGE_DIR,"globalStorage","saoudrizwan.claude-dev","settings","cline_mcp_settings.json")},GithubCopilot:{extension:{extensionId:"
|
|
1
|
+
import os from"os";import path from"path";export const GITHUB_REPO={url:"https://github.com/ai-microsoft/imcp-feed.git",repoName:"ai-microsoft/imcp-feed",feedsPath:"feeds",feedAssetsName:"imcp-feeds-${latest}.zip"};export const PUBLIC_NPM_REGISTRY="https://packagefeedproxy.microsoft.io/npm/";export const PUBLIC_NPM_REGISTRY_ARG=`--registry=${PUBLIC_NPM_REGISTRY}`;export const GITHUB_COPILOT_CHAT_EXTENSION_ID="GitHub.copilot-chat";export const BUNDLED_COPILOT_MIN_VSCODE_VERSION="1.116.0";export const SETTINGS_DIR=(process.platform,path.join(os.homedir(),".imcp"));export const LOCAL_FEEDS_DIR=path.join(SETTINGS_DIR,"feeds");export const USER_INFO_PATH=path.join(SETTINGS_DIR,"settings","user_info.json");export const LOCAL_FEEDS_SCHEMA_DIR=path.join(LOCAL_FEEDS_DIR,"schemas");const CODE_STRORAGE_DIR=(()=>{switch(process.platform){case"win32":return path.join(os.homedir(),"AppData","Roaming","Code","User");case"darwin":return path.join(os.homedir(),"Library","Application Support","Code","User");default:return process.env.WSL_DISTRO_NAME?path.join(os.homedir(),".vscode-server","data","User"):path.join(os.homedir(),".config","Code","User")}})(),CODE_INSIDER_STRORAGE_DIR=(()=>{switch(process.platform){case"win32":return path.join(os.homedir(),"AppData","Roaming","Code - Insiders","User");case"darwin":return path.join(os.homedir(),"Library","Application Support","Code - Insiders","User");default:return path.join(os.homedir(),".config","Code - Insiders","User")}})();export const SUPPORTED_CLIENTS=(()=>{const o={MSRooCode:{extension:{extensionId:"microsoftai.ms-roo-cline",leastVersion:"0.0.8",repository:"ai-microsoft/roo-cline",assetName:"ms-roo-cline-${version}.vsix",private:!0},codeSettingPath:path.join(CODE_STRORAGE_DIR,"globalStorage","microsoftai.ms-roo-cline","settings","cline_mcp_settings.json"),codeInsiderSettingPath:path.join(CODE_INSIDER_STRORAGE_DIR,"globalStorage","microsoftai.ms-roo-cline","settings","cline_mcp_settings.json")},RooCode:{extension:{extensionId:"rooveterinaryinc.roo-cline"},codeSettingPath:path.join(CODE_STRORAGE_DIR,"globalStorage","rooveterinaryinc.roo-cline","settings","mcp_settings.json"),codeInsiderSettingPath:path.join(CODE_INSIDER_STRORAGE_DIR,"globalStorage","rooveterinaryinc.roo-cline","settings","mcp_settings.json")},Cline:{extension:{extensionId:"saoudrizwan.claude-dev"},codeSettingPath:path.join(CODE_STRORAGE_DIR,"globalStorage","saoudrizwan.claude-dev","settings","cline_mcp_settings.json"),codeInsiderSettingPath:path.join(CODE_INSIDER_STRORAGE_DIR,"globalStorage","saoudrizwan.claude-dev","settings","cline_mcp_settings.json")},GithubCopilot:{extension:{extensionId:"GitHub.copilot-chat"},codeSettingPath:path.join(CODE_STRORAGE_DIR,"mcp.json"),codeInsiderSettingPath:path.join(CODE_INSIDER_STRORAGE_DIR,"mcp.json")},ClaudeCode:{codeSettingPath:path.join(os.homedir(),".claude.json"),codeInsiderSettingPath:path.join(os.homedir(),".claude.json")},CopilotCLI:{codeSettingPath:path.join(os.homedir(),".copilot","mcp-config.json"),codeInsiderSettingPath:path.join(os.homedir(),".copilot","mcp-config.json")}};return"win32"===process.platform&&(o.VisualStudio={codeSettingPath:path.join(os.homedir(),".mcp.json"),codeInsiderSettingPath:path.join(os.homedir(),".mcp.json")}),o})();export const SUPPORTED_CLIENT_NAMES=Object.keys(SUPPORTED_CLIENTS);export const UPDATE_CHECK_INTERVAL_MS=6e5;export const INSTRUMENTATION_KEY="c5fc06c7-a96c-4d80-9aff-bc9c933db0d1";
|
|
2
2
|
//# sourceMappingURL=constants.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["os","path","GITHUB_REPO","url","repoName","feedsPath","feedAssetsName","SETTINGS_DIR","process","platform","join","homedir","LOCAL_FEEDS_DIR","USER_INFO_PATH","LOCAL_FEEDS_SCHEMA_DIR","CODE_STRORAGE_DIR","env","WSL_DISTRO_NAME","CODE_INSIDER_STRORAGE_DIR","SUPPORTED_CLIENTS","clients","MSRooCode","extension","extensionId","leastVersion","repository","assetName","private","codeSettingPath","codeInsiderSettingPath","RooCode","Cline","GithubCopilot","ClaudeCode","SUPPORTED_CLIENT_NAMES","Object","keys","UPDATE_CHECK_INTERVAL_MS","INSTRUMENTATION_KEY"],"sources":["../../../src/core/metadatas/constants.ts"],"mappings":"OAAOA,OAAQ,YACRC,SAAU,cAQV,MAAMC,YAAc,CACzBC,IAAK,gDACLC,SAAU,yBACVC,UAAW,QACXC,eAAgB,
|
|
1
|
+
{"version":3,"names":["os","path","GITHUB_REPO","url","repoName","feedsPath","feedAssetsName","PUBLIC_NPM_REGISTRY","PUBLIC_NPM_REGISTRY_ARG","GITHUB_COPILOT_CHAT_EXTENSION_ID","BUNDLED_COPILOT_MIN_VSCODE_VERSION","SETTINGS_DIR","process","platform","join","homedir","LOCAL_FEEDS_DIR","USER_INFO_PATH","LOCAL_FEEDS_SCHEMA_DIR","CODE_STRORAGE_DIR","env","WSL_DISTRO_NAME","CODE_INSIDER_STRORAGE_DIR","SUPPORTED_CLIENTS","clients","MSRooCode","extension","extensionId","leastVersion","repository","assetName","private","codeSettingPath","codeInsiderSettingPath","RooCode","Cline","GithubCopilot","ClaudeCode","CopilotCLI","SUPPORTED_CLIENT_NAMES","Object","keys","UPDATE_CHECK_INTERVAL_MS","INSTRUMENTATION_KEY"],"sources":["../../../src/core/metadatas/constants.ts"],"mappings":"OAAOA,OAAQ,YACRC,SAAU,cAQV,MAAMC,YAAc,CACzBC,IAAK,gDACLC,SAAU,yBACVC,UAAW,QACXC,eAAgB,mCAGX,MAAMC,oBAAsB,oDAC5B,MAAMC,wBAA0B,cAAcD,6BAC9C,MAAME,iCAAmC,6BACzC,MAAMC,mCAAqC,iBAK3C,MAAMC,cACHC,QAAQC,SAILZ,KAAKa,KAAKd,GAAGe,UAAW,iBAO9B,MAAMC,gBAAkBf,KAAKa,KAAKH,aAAc,gBAKhD,MAAMM,eAAiBhB,KAAKa,KAAKH,aAAc,WAAY,yBAK3D,MAAMO,uBAAyBjB,KAAKa,KAAKE,gBAAiB,WAEjE,MAAMG,kBAAoB,MACxB,OAAQP,QAAQC,UACd,IAAK,QACH,OAAOZ,KAAKa,KAAKd,GAAGe,UAAW,UAAW,UAAW,OAAQ,QAC/D,IAAK,SACH,OAAOd,KAAKa,KAAKd,GAAGe,UAAW,UAAW,sBAAuB,OAAQ,QAC3E,QACE,OAAIH,QAAQQ,IAAIC,gBACPpB,KAAKa,KAAKd,GAAGe,UAAW,iBAAkB,OAAQ,QAEpDd,KAAKa,KAAKd,GAAGe,UAAW,UAAW,OAAQ,QAEvD,EAZyB,GAcpBO,0BAA4B,MAChC,OAAQV,QAAQC,UACd,IAAK,QACH,OAAOZ,KAAKa,KAAKd,GAAGe,UAAW,UAAW,UAAW,kBAAmB,QAC1E,IAAK,SACH,OAAOd,KAAKa,KAAKd,GAAGe,UAAW,UAAW,sBAAuB,kBAAmB,QACtF,QACE,OAAOd,KAAKa,KAAKd,GAAGe,UAAW,UAAW,kBAAmB,QAElE,EATiC,UAqB3B,MAAMQ,kBAUR,MACH,MAAMC,EAA+B,CACnCC,UAAa,CACXC,UAAW,CACTC,YAAa,2BACbC,aAAc,QACdC,WAAY,yBACZC,UAAW,+BACXC,SAAS,GAEXC,gBAAiB/B,KAAKa,KAAKK,kBAAmB,gBAAiB,2BAA4B,WAAY,2BACvGc,uBAAwBhC,KAAKa,KAAKQ,0BAA2B,gBAAiB,2BAA4B,WAAY,4BAExHY,QAAW,CACTR,UAAW,CACTC,YAAa,8BAEfK,gBAAiB/B,KAAKa,KAAKK,kBAAmB,gBAAiB,6BAA8B,WAAY,qBACzGc,uBAAwBhC,KAAKa,KAAKQ,0BAA2B,gBAAiB,6BAA8B,WAAY,sBAE1Ha,MAAS,CACPT,UAAW,CACTC,YAAa,0BAEfK,gBAAiB/B,KAAKa,KAAKK,kBAAmB,gBAAiB,yBAA0B,WAAY,2BACrGc,uBAAwBhC,KAAKa,KAAKQ,0BAA2B,gBAAiB,yBAA0B,WAAY,4BAEtHc,cAAiB,CACfV,UAAW,CACTC,YAxGwC,uBA0G1CK,gBAAiB/B,KAAKa,KAAKK,kBAAmB,YAC9Cc,uBAAwBhC,KAAKa,KAAKQ,0BAA2B,aAE/De,WAAc,CACZL,gBAAiB/B,KAAKa,KAAKd,GAAGe,UAAW,gBACzCkB,uBAAwBhC,KAAKa,KAAKd,GAAGe,UAAW,iBAElDuB,WAAc,CACZN,gBAAiB/B,KAAKa,KAAKd,GAAGe,UAAW,WAAY,mBACrDkB,uBAAwBhC,KAAKa,KAAKd,GAAGe,UAAW,WAAY,qBAUhE,MANyB,UAArBH,QAAQC,WACVW,EAAsB,aAAI,CACxBQ,gBAAiB/B,KAAKa,KAAKd,GAAGe,UAAW,aACzCkB,uBAAwBhC,KAAKa,KAAKd,GAAGe,UAAW,eAG7CS,CACR,EAnDI,UAwDE,MAAMe,uBAAyBC,OAAOC,KAAKlB,0BAM3C,MAAMmB,yBAA2B,WAKjC,MAAMC,oBAAsB","ignoreList":[]}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import fs from"fs";import path from"path";import{fileURLToPath}from"url";import axios from"axios";import{Logger}from"./logger.js";const COLORS={reset:"[0m",yellow:"[33m"},PACKAGE_NAME="imcp";export function getPackageVersion(){try{if(process.env.npm_package_version)return{packageName:"imcp",packageVersion:process.env.npm_package_version};let e=path.dirname(fileURLToPath(import.meta.url));for(let a=0;a<3;a++){const a=path.join(e,"package.json");if(fs.existsSync(a)){return{packageName:"imcp",packageVersion:JSON.parse(fs.readFileSync(a,"utf8")).version}}e=path.join(e,"..")}return{packageName:"imcp",packageVersion:"unknown"}}catch(e){return console.error("Failed to get package version:",e),{packageName:"imcp",packageVersion:"unknown"}}}export function compareVersions(e,a){const t=e.split(".").map(Number),
|
|
1
|
+
import fs from"fs";import path from"path";import{fileURLToPath}from"url";import axios from"axios";import{Logger}from"./logger.js";import{PUBLIC_NPM_REGISTRY,PUBLIC_NPM_REGISTRY_ARG}from"../core/metadatas/constants.js";const COLORS={reset:"[0m",yellow:"[33m"},PACKAGE_NAME="imcp";function getNpxRelaunchCommand(e){return`npx --yes ${PUBLIC_NPM_REGISTRY_ARG} ${e}@latest serve`}function getNpmGlobalUpdateCommand(e){return`npm install -g ${e}@latest ${PUBLIC_NPM_REGISTRY_ARG}`}export function getPackageVersion(){try{if(process.env.npm_package_version)return{packageName:"imcp",packageVersion:process.env.npm_package_version};let e=path.dirname(fileURLToPath(import.meta.url));for(let a=0;a<3;a++){const a=path.join(e,"package.json");if(fs.existsSync(a)){return{packageName:"imcp",packageVersion:JSON.parse(fs.readFileSync(a,"utf8")).version}}e=path.join(e,"..")}return{packageName:"imcp",packageVersion:"unknown"}}catch(e){return console.error("Failed to get package version:",e),{packageName:"imcp",packageVersion:"unknown"}}}export function compareVersions(e,a){const t=e.split(".").map(Number),o=a.split(".").map(Number);for(let e=0;e<Math.max(t.length,o.length);e++){const a=e<t.length?t[e]:0,n=e<o.length?o[e]:0;if(a!==n)return a-n}return 0}export async function checkForUpdates(){Logger.debug("Checking for updates...");try{const e=await getAppVersion();e.availableUpdate&&(console.log(`${COLORS.yellow}Update available for ${e.name}: ${e.version} → ${e.availableUpdate.latestVersion}${COLORS.reset}`),console.log(`${COLORS.yellow}Relaunch with \`${getNpxRelaunchCommand(e.name)}\` or update package with \`${getNpmGlobalUpdateCommand(e.name)}\`${COLORS.reset}`))}catch(e){Logger.debug(`Failed to check npm registry: ${e instanceof Error?e.message:String(e)}`)}}export async function getAppVersion(){let e;const{packageName:a,packageVersion:t}=getPackageVersion();try{const o=await axios.get(`${PUBLIC_NPM_REGISTRY}${a}`);if(o.data&&o.data["dist-tags"]&&o.data["dist-tags"].latest){const n=o.data["dist-tags"].latest;compareVersions(n,t)>0&&(e={latestVersion:n,message:`New version (${n}) is available. Relaunch with \`${getNpxRelaunchCommand(a)}\``})}}catch(e){Logger.debug(`Failed to fetch latest version from npm for ${a}: ${e instanceof Error?e.message:String(e)}`)}return{name:a,version:t,availableUpdate:e}}
|
|
2
2
|
//# sourceMappingURL=versionUtils.js.map
|