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.
Files changed (56) hide show
  1. package/README.md +8 -8
  2. package/dist/cli/commands/list-installed.d.ts +2 -0
  3. package/dist/cli/commands/list-installed.js +2 -0
  4. package/dist/cli/commands/list-installed.js.map +1 -0
  5. package/dist/cli/commands/update.js +1 -1
  6. package/dist/cli/commands/update.js.map +1 -1
  7. package/dist/cli/index.js +1 -1
  8. package/dist/cli/index.js.map +1 -1
  9. package/dist/cli/tui/components/ClientSelector.js +1 -1
  10. package/dist/cli/tui/components/ClientSelector.js.map +1 -1
  11. package/dist/core/installers/clients/BaseClientInstaller.js +1 -1
  12. package/dist/core/installers/clients/BaseClientInstaller.js.map +1 -1
  13. package/dist/core/installers/clients/ClientInstallerFactory.js +1 -1
  14. package/dist/core/installers/clients/ClientInstallerFactory.js.map +1 -1
  15. package/dist/core/installers/clients/CopilotCLIInstaller.d.ts +18 -0
  16. package/dist/core/installers/clients/CopilotCLIInstaller.js +2 -0
  17. package/dist/core/installers/clients/CopilotCLIInstaller.js.map +1 -0
  18. package/dist/core/installers/clients/ExtensionInstaller.d.ts +1 -0
  19. package/dist/core/installers/clients/ExtensionInstaller.js +1 -1
  20. package/dist/core/installers/clients/ExtensionInstaller.js.map +1 -1
  21. package/dist/core/installers/requirements/NpmInstaller.js +1 -1
  22. package/dist/core/installers/requirements/NpmInstaller.js.map +1 -1
  23. package/dist/core/metadatas/constants.d.ts +4 -0
  24. package/dist/core/metadatas/constants.js +1 -1
  25. package/dist/core/metadatas/constants.js.map +1 -1
  26. package/dist/utils/versionUtils.js +1 -1
  27. package/dist/utils/versionUtils.js.map +1 -1
  28. package/dist/web/public/js/api.js.map +1 -1
  29. package/dist/web/public/js/detailsWidget.js.map +1 -1
  30. package/dist/web/public/js/flights/flights.js.map +1 -1
  31. package/dist/web/public/js/modal/index.js.map +1 -1
  32. package/dist/web/public/js/modal/installModal.js.map +1 -1
  33. package/dist/web/public/js/modal/installation.js.map +1 -1
  34. package/dist/web/public/js/modal/loadingModal.js.map +1 -1
  35. package/dist/web/public/js/modal/modalSetup.js.map +1 -1
  36. package/dist/web/public/js/modal/modalUtils.js.map +1 -1
  37. package/dist/web/public/js/modal/versionUtils.js.map +1 -1
  38. package/dist/web/public/js/modal.js.map +1 -1
  39. package/dist/web/public/js/notifications.js.map +1 -1
  40. package/dist/web/public/js/onboard/formProcessor.js.map +1 -1
  41. package/dist/web/public/js/onboard/index.js.map +1 -1
  42. package/dist/web/public/js/onboard/publishHandler.js.map +1 -1
  43. package/dist/web/public/js/onboard/state.js.map +1 -1
  44. package/dist/web/public/js/onboard/templates.js.map +1 -1
  45. package/dist/web/public/js/onboard/uiHandlers.js.map +1 -1
  46. package/dist/web/public/js/onboard/validationHandlers.js.map +1 -1
  47. package/dist/web/public/js/serverCategoryDetails.js.map +1 -1
  48. package/dist/web/public/js/serverCategoryList.js.map +1 -1
  49. package/dist/web/public/js/settings.js.map +1 -1
  50. package/package.json +1 -1
  51. package/dist/core/installers/clients/CodexInstaller.d.ts +0 -45
  52. package/dist/core/installers/clients/CodexInstaller.js +0 -2
  53. package/dist/core/installers/clients/CodexInstaller.js.map +0 -1
  54. package/dist/utils/tomlUtils.d.ts +0 -17
  55. package/dist/utils/tomlUtils.js +0 -2
  56. 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 -y imcp@latest serve
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 -y imcp@latest serve [options]
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 -y imcp@latest serve --port 3000
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 -y imcp@latest serve --feed-file ./custom-feed.json
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 -y imcp@latest serve --feed-file ./custom-feed.json --schemas-directory ./feeds/schemas/ai-coder-tools
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 -y imcp@latest serve --repo https://github.com/ai-microsoft/imcp-feed --branch main
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';
2
+ export declare function createListInstalledCommand(): Command;
@@ -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 a=o[r];Logger.log(`Checking for updates: ${r} (category: ${a})`);const i=RequirementService.getInstance();await i.checkServerRequirementForUpdateAsync(a,r),await new Promise((e=>setTimeout(e,2e3)));const n=ConfigurationProvider.getInstance(),s=await n.getInstallationStatus(a),c=s?.requirementsStatus||{},l=await mcpManager.getFeedConfiguration(a),m=l?.mcpServers.find((e=>e.name===r)),p=m?.dependencies?.requirements?.map((e=>e.name))||[],g=[];for(const e of p){const r=c[e];r?.availableUpdate&&(g.push({name:e,updateVersion:r.availableUpdate.version}),Logger.log(` ↑ ${e}: ${r.version||"current"} → ${r.availableUpdate.version}`))}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 d={targetClients:t,blockUntilComplete:!0,requirements:g.map((e=>({name:e.name,version:e.updateVersion,type:"npm"})))},u=await serverService.installMcpServer(a,r,d);u.success?Logger.log(`✓ ${u.message||"Update completed successfully."}`):(Logger.error(`✗ ${u.message||"Update failed."}`),process.exit(1))}catch(e){const r=e instanceof Error?e.message:"Unknown error";Logger.error("Update failed:",r),process.exit(1)}}))}
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","requirementService","getInstance","checkServerRequirementForUpdateAsync","Promise","resolve","setTimeout","configProvider","installationStatus","getInstallationStatus","requirementsStatus","feedConfig","getFeedConfiguration","serverConfig","mcpServers","find","s","serverRequirementNames","dependencies","requirements","map","r","requirementsToUpdate","reqName","status","availableUpdate","push","updateVersion","version","length","installOptions","targetClients","blockUntilComplete","type","result","installMcpServer","success"],"sources":["../../../src/cli/commands/update.ts"],"mappings":"OAASA,YAAe,mBACfC,kBAAqB,yCACrBC,WAAc,+BACdC,kBAAqB,kCACrBC,eAAkB,sCAClBC,uBAA0B,8CAC1BC,0BAA6B,qDAC7BC,uBAAwBC,uBAA0B,mCAGrD,SAAUC,sBACd,OAAO,IAAIT,QAAQ,UAChBU,YAAY,qEACZC,YAAY,QAAS,wPAQrBC,eACC,gBACA,yBAEDA,eACC,sBACA,2DAA2DL,0BAE5DM,QAAOC,MAAOC,IAIb,UAE2BZ,kBAEvBD,OAAOc,IAAI,uDACLf,cAAcgB,mBAEhBb,WAAWc,aAEjB,MAAMC,EAAaJ,EAAQK,KAAKC,OAOhC,IAAIC,EAUAC,EAhBCJ,IACHjB,OAAOsB,MAAM,4BACbC,QAAQC,KAAK,IAKf,IACEJ,EAAgBd,mBAAmBO,EAAQY,QAC7C,CAAE,MAAOC,GACP,MAAMC,EAAUD,aAAuBE,MAAQF,EAAYC,QAAUE,OAAOH,GAC5E1B,OAAOsB,MAAMK,GACbJ,QAAQC,KAAK,EACf,CAIA,IACEH,QAAoBtB,cAAc+B,wBAAwB,CAACb,GAC7D,CAAE,MAAOK,GACP,MAAMK,EAAUL,aAAiBM,MAAQN,EAAMK,QAAU,uCACzD3B,OAAOsB,MAAMK,GACbJ,QAAQC,KAAK,EACf,CAEA,MAAMO,EAAeV,EAAYJ,GACjCjB,OAAOc,IAAI,yBAAyBG,gBAAyBc,MAG7D,MAAMC,EAAqB7B,mBAAmB8B,oBACxCD,EAAmBE,qCAAqCH,EAAcd,SAGtE,IAAIkB,SAAQC,GAAWC,WAAWD,EAAS,OAGjD,MAAME,EAAiBlC,sBAAsB6B,cACvCM,QAA2BD,EAAeE,sBAAsBT,GAChEU,EAAqBF,GAAoBE,oBAAsB,GAG/DC,QAAmBxC,WAAWyC,qBAAqBZ,GACnDa,EAAeF,GAAYG,WAAWC,MAAKC,GAAKA,EAAE7B,OAASD,IAC3D+B,EAAyBJ,GAAcK,cAAcC,cAAcC,KAAIC,GAAKA,EAAElC,QAAS,GAGvFmC,EAAuE,GAC7E,IAAK,MAAMC,KAAWN,EAAwB,CAC5C,MAAMO,EAASd,EAAmBa,GAC9BC,GAAQC,kBACVH,EAAqBI,KAAK,CACxBvC,KAAMoC,EACNI,cAAeH,EAAOC,gBAAgBG,UAExC3D,OAAOc,IAAI,OAAOwC,MAAYC,EAAOI,SAAW,eAAeJ,EAAOC,gBAAgBG,WAE1F,CAEA,GAAoC,IAAhCN,EAAqBO,OAEvB,YADA5D,OAAOc,IAAI,4DAIbd,OAAOc,IAAI,SAASuC,EAAqBO,gDAGzC,MAAMC,EAAuC,CAC3CC,cAAe1C,EACf2C,oBAAoB,EACpBb,aAAcG,EAAqBF,KAAIC,IAAK,CAC1ClC,KAAMkC,EAAElC,KACRyC,QAASP,EAAEM,cACXM,KAAM,WAIJC,QAAelE,cAAcmE,iBAAiBnC,EAAcd,EAAY4C,GAE1EI,EAAOE,QACTnE,OAAOc,IAAI,KAAKmD,EAAOtC,SAAW,qCAElC3B,OAAOsB,MAAM,KAAK2C,EAAOtC,SAAW,oBACpCJ,QAAQC,KAAK,GAEjB,CAAE,MAAOF,GACP,MAAMK,EAAUL,aAAiBM,MAAQN,EAAMK,QAAU,gBACzD3B,OAAOsB,MAAM,iBAAkBK,GAC/BJ,QAAQC,KAAK,EACf,IAEN","ignoreList":[]}
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":"OAASA,YAAe,mBACfC,SAAY,uBACdC,SAAU,cACRC,kBAAqB,yCACrBC,WAAc,+BACdC,kBAAqB,kCACrBC,eAAkB,sCAClBC,uBAA0B,8CAC1BC,0BAA6B,qDAC7BC,2BAA8B,wCAC9BC,uBAAwBC,uBAA0B,4BAO3D,SAASC,qBAAqBC,GAC5B,OAAKA,EACDA,EAAQC,SAAS,MACZD,EAAQE,QAAQ,iBAAkB,MAEpCF,EAJc,SAKvB,QAEM,SAAUG,sBACd,OAAO,IAAIhB,QAAQ,UAChBiB,YAAY,qEACZC,YAAY,QAAS,wPAQrBC,eACC,gBACA,yBAEDA,eACC,sBACA,2DAA2DT,0BAE5DU,QAAOC,MAAOC,IAIb,UAE2BjB,kBAEvBD,OAAOmB,IAAI,uDACLpB,cAAcqB,mBAEhBlB,WAAWmB,aAEjB,MAAMC,EAAaJ,EAAQK,KAAKC,OAOhC,IAAIC,EAUAC,EAhBCJ,IACHtB,OAAO2B,MAAM,4BACbC,QAAQC,KAAK,IAKf,IACEJ,EAAgBlB,mBAAmBW,EAAQY,QAC7C,CAAE,MAAOC,GACP,MAAMC,EAAUD,aAAuBE,MAAQF,EAAYC,QAAUE,OAAOH,GAC5E/B,OAAO2B,MAAMK,GACbJ,QAAQC,KAAK,EACf,CAIA,IACEH,QAAoB3B,cAAcoC,wBAAwB,CAACb,GAC7D,CAAE,MAAOK,GACP,MAAMK,EAAUL,aAAiBM,MAAQN,EAAMK,QAAU,uCACzDhC,OAAO2B,MAAMK,GACbJ,QAAQC,KAAK,EACf,CAEA,MAAMO,EAAeV,EAAYJ,GACjCtB,OAAOmB,IAAI,yBAAyBG,gBAAyBc,MAG7D,MAAMC,EAAiBjC,sBAAsBkC,cACvCC,EAAqBpC,mBAAmBmC,cAExCE,QAAmBtC,WAAWuC,qBAAqBL,GACpDI,IACHxC,OAAO2B,MAAM,8CAA8CS,KAC3DR,QAAQC,KAAK,IAGf,MAAMa,EAAeF,EAAWG,WAAWC,MAAKC,GAAKA,EAAEtB,OAASD,IAChE,IAAKoB,GAAcI,cAAcC,cAAkE,IAAlDL,EAAaI,aAAaC,aAAaC,OAEtF,YADAhD,OAAOmB,IAAI,iDAIb,MAAM8B,EAAyBP,EAAaI,aAAaC,aAAaG,KAAIC,GAAKA,EAAE5B,OAG3E6B,EAAqF,GACrFC,EAAmBhD,uBAAuBP,KAAKwD,UAAUzD,OAE/D,IAAK,MAAM0D,KAAWN,EAAwB,CAC5C,MAAMO,EAAYhB,EAAWO,cAAcH,MAAMO,GAAyBA,EAAE5B,OAASgC,IACrF,IAAKC,EAAW,CACdxD,OAAOmB,IAAI,wCAAwCoC,gBACnD,QACF,CAEA,MAAME,QAAsBpB,EAAeqB,qBAAqBtB,EAAcmB,GAC9E,IAAKE,EAAe,CAClBzD,OAAOmB,IAAI,6BAA6BoC,6BACxC,QACF,CAGA,IAAII,EAAiBnD,qBAAqBiD,EAAchD,SACxD,IAAKgD,EAAchD,SAAWgD,EAAchD,QAAQC,SAAS,MAC3D,IACE,MAAMkD,QAAmBP,EAAiBQ,kBAAkBL,GACxDI,GAAYnD,UACdkD,EAAiBC,EAAWnD,QAEhC,CAAE,MAEF,CAGFT,OAAOmB,IAAI,cAAcoC,iBAAuBI,SAEhD,IAEE,MAAMG,QAAsBvB,EAAmBwB,2BAC7CP,EAAWC,EAAerB,EAAcd,GAGtCwC,EAAcE,iBAChBZ,EAAqBa,KAAK,CACxB1C,KAAMgC,EACNW,cAAeJ,EAAcE,gBAAgBvD,QAC7C0D,KAAMX,EAAUW,OAElBnE,OAAOmB,IAAI,OAAOoC,MAAYI,OAAoBG,EAAcE,gBAAgBvD,iBAG1E4B,EAAe+B,wBAAwBhC,EAAcmB,EAASO,IAEpE9D,OAAOmB,IAAI,OAAOoC,oBAA0BI,KAEhD,CAAE,MAAOU,GACP,MAAMC,EAAMD,aAAsBpC,MAAQoC,EAAWrC,QAAUE,OAAOmC,GACtErE,OAAO2B,MAAM,sBAAsB4B,MAAYe,IACjD,CACF,CAEA,GAAoC,IAAhClB,EAAqBJ,OAEvB,YADAhD,OAAOmB,IAAI,4DAIbnB,OAAOmB,IAAI,SAASiC,EAAqBJ,gDAGzC,MAAMuB,EAAuC,CAC3CC,cAAe/C,EACfgD,oBAAoB,EACpB1B,aAAcK,EAAqBF,KAAIC,IAAK,CAC1C5B,KAAM4B,EAAE5B,KACRd,QAAS0C,EAAEe,cACXC,KAAMhB,EAAEgB,UAIZ,UACQ5B,EAAmBmC,0BAA0BtC,EAAcd,EAAYiD,GAC7EvE,OAAOmB,IAAI,uCACb,CAAE,MAAOwD,GACP,MAAML,EAAMK,aAAuB1C,MAAQ0C,EAAY3C,QAAUE,OAAOyC,GACxE3E,OAAO2B,MAAM,gCAAgC2C,KAC7C1C,QAAQC,KAAK,EACf,CAGA7B,OAAOmB,IAAI,uCACX,MAAMyD,QAAsB7E,cAAc8E,iBAAiBzC,EAAcd,EAAY,CACnFkD,cAAe/C,EACfgD,oBAAoB,EACpBK,2BAA2B,IAGzBF,EAAcG,QAChB/E,OAAOmB,IAAI,KAAKyD,EAAc5C,SAAW,qCAEzChC,OAAO2B,MAAM,0CAA0CiD,EAAc5C,SAAW,mBAChFJ,QAAQC,KAAK,GAEjB,CAAE,MAAOF,GACP,MAAMK,EAAUL,aAAiBM,MAAQN,EAAMK,QAAU,gBACzDhC,OAAO2B,MAAM,iBAAkBK,GAC/BJ,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{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
@@ -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,IAAIZ,QACpBY,EACGC,KAAK,QACLC,YAAY,6CACZC,OAAO,YAAa,uCAGvBH,EAAQI,aAAaC,QAAQC,MAC7B,MAAMC,EAAOP,EAAQO,OACrBX,OAAOY,aAAaD,EAAKE,SAGzBT,EAAQU,WAAWrB,sBACnBW,EAAQU,WAAWnB,wBACnBS,EAAQU,WAAWjB,uBACnBO,EAAQU,WAAWpB,qBACnBU,EAAQU,WAAWlB,0BACnBQ,EAAQU,WAAWhB,qBACnBM,EAAQU,WAAWf,oBAGnBK,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
+ {"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,EAAUhB,uBAiBhB,OAfAD,UAAS,CAACkB,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,KAAC1B,IAAG,CAAC2B,cAAc,SAAQC,SACxBT,EAAQU,KAAI,CAACL,EAAQM,KACpB,MAAMC,EAAanB,EAAgBoB,IAAIR,GACjCS,EAAcpB,EAAwBmB,IAAIR,GAC1CU,EAAWjB,GAASa,IAAQf,EAC5BoB,EAAO/B,aAAaoB,IAAW,KAI/BY,EAAsB,YAATlB,EAAqBe,GAAeA,EAEvD,OACEI,MAACrC,IAAG,CAAA4B,SAAA,CACFF,KAACzB,KAAI,CAACqC,MAAOJ,EAAW,YAASK,EAASX,SACvCM,EAAW,KAAO,OAGnBG,MAAAG,UADDJ,EACC,CAAAR,SAAA,CACEF,KAACzB,KAAI,CAACqC,MAAM,OAAOG,UAAQ,EAAAb,SAAA,OAC3BS,MAACpC,KAAI,CAACwC,UAAQ,EAAAb,SAAA,CAAEO,EAAI,IAAGX,KACvBE,KAACzB,KAAI,CAACqC,MAAgB,YAATpB,EAAqB,QAAU,OAAQuB,UAAQ,EAAAb,SAChD,YAATV,EAAqB,uBAAyB,uBAInD,CAAAU,SAAA,CACES,MAACpC,KAAI,CAACqC,MAAOP,EAAuB,YAATb,EAAqB,QAAU,MAAS,OAAMU,SAAA,CACtEG,EAAa,IAAM,IAAK,OAE3BM,MAACpC,KAAI,CACHqC,MAAOP,EAAuB,YAATb,EAAqB,QAAU,MAASgB,EAAW,aAAUK,EAClFG,KAAMX,GAAcG,EAAQN,SAAA,CAE3BO,EAAI,IAAGX,UArBNA,EA0BX,KAIT","ignoreList":[]}
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,INSTRUMENTATION_KEY}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)}return s.env={...r,...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))),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))}),o=a.some((e=>e.success)),i=a.filter((e=>e.success)).map((e=>e.path)),l=a.filter((e=>!e.success)).map((e=>e.error));return{status:o?"completed":"failed",type:"install",target:"server",message:o?`Successfully installed ${this.clientName} client. Updated settings in: ${i.join(", ")}`:`Failed to install ${this.clientName} client. Errors: ${l.join("; ")}`,operationId:n,error:o?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}}})}}
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","SUPPORTED_CLIENTS","INSTRUMENTATION_KEY","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","JSON","stringify","macro","values","isMacroInArgs","some","arg","includes","isMacroInEnv","value","PYTHON_PACKAGE","resolver","resolvedValue","undefined","originalArgsString","map","replace","RegExp","originalEnvJson","handleWindowsNpx","process","platform","command","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","startingCommand","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
+ {"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 t={MSRooCode:MSRooCodeInstaller,RooCode:RooCodeInstaller,Cline:ClineInstaller,GithubCopilot:GithubCopilotInstaller,ClaudeCode:ClaudeCodeInstaller};return SUPPORTED_CLIENTS.VisualStudio&&(t.VisualStudio=VisualStudioInstaller),t})();static getInstaller(t){if(!SUPPORTED_CLIENTS[t])return;const l=this.installerMap[t];return l?new l:void 0}static isClientSupported(t){return!!SUPPORTED_CLIENTS[t]}}
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,+BAM3B,MAAOC,uBACDC,oBAA8E,MAClF,MAAMC,EAAqD,CACvDC,UAAWV,mBACXW,QAASL,iBACTM,MAAOX,eACPY,cAAeX,uBACfY,WAAYV,qBAOhB,OAJIC,kBAAkBU,eAClBN,EAAIM,aAAeZ,uBAGhBM,CACV,EAdqF,GAqBtF,mBAAOO,CACHC,GAGA,IAAKZ,kBAAkBY,GACnB,OAGJ,MAAMC,EAAiBC,KAAKC,aAAaH,GACzC,OAAOC,EAAiB,IAAIA,OAAmBG,CACnD,CAOA,wBAAOC,CAAkBL,GACrB,QAASZ,kBAAkBY,EAC/B","ignoreList":[]}
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":[]}
@@ -11,6 +11,7 @@ export declare class ExtensionInstaller {
11
11
  * Check if an extension is installed and get its version
12
12
  */
13
13
  private static checkExtension;
14
+ private static hasBundledCopilotChat;
14
15
  /**
15
16
  * Install extension from marketplace
16
17
  */
@@ -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 e of[!1,!0]){if(!await this.getVSCodePath(e)){Logger.debug((e?"VSCode Insiders":"VSCode")+" not found, skipping...");continue}const t=await this.checkExtension(s,e);if(!t||r&&i&&compareVersions(t,i)<0)if(r)try{if(!n||!o)throw new Error(`Missing repository or assetName for private extension ${s}`);const{resolvedPath:t}=await handleGitHubRelease({name:s,version:"latest",type:"extension"},{repository:n,assetName:o});a=await this.installPrivateExtension(t,e)}catch(e){Logger.error(`Failed to install/update private extension ${s}:`,e);continue}else a=await this.installPublicExtension(s,e);else Logger.debug(`Extension ${s} is already installed and up to date`),a=!0}return a}}
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","clientName","client","leastVersion","repository","assetName","private","isPrivate","success","debug","currentVersion","Error","resolvedPath","type"],"sources":["../../../../src/core/installers/clients/ExtensionInstaller.ts"],"mappings":"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","ignoreList":[]}
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":"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","ignoreList":[]}
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":"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","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:"github.copilot"},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")}};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";
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,mCAMX,MAAMC,cACHC,QAAQC,SAILR,KAAKS,KAAKV,GAAGW,UAAW,iBAO9B,MAAMC,gBAAkBX,KAAKS,KAAKH,aAAc,gBAKhD,MAAMM,eAAiBZ,KAAKS,KAAKH,aAAc,WAAY,yBAK3D,MAAMO,uBAAyBb,KAAKS,KAAKE,gBAAiB,WAEjE,MAAMG,kBAAoB,MACxB,OAAQP,QAAQC,UACd,IAAK,QACH,OAAOR,KAAKS,KAAKV,GAAGW,UAAW,UAAW,UAAW,OAAQ,QAC/D,IAAK,SACH,OAAOV,KAAKS,KAAKV,GAAGW,UAAW,UAAW,sBAAuB,OAAQ,QAC3E,QACE,OAAIH,QAAQQ,IAAIC,gBACPhB,KAAKS,KAAKV,GAAGW,UAAW,iBAAkB,OAAQ,QAEpDV,KAAKS,KAAKV,GAAGW,UAAW,UAAW,OAAQ,QAEvD,EAZyB,GAcpBO,0BAA4B,MAChC,OAAQV,QAAQC,UACd,IAAK,QACH,OAAOR,KAAKS,KAAKV,GAAGW,UAAW,UAAW,UAAW,kBAAmB,QAC1E,IAAK,SACH,OAAOV,KAAKS,KAAKV,GAAGW,UAAW,UAAW,sBAAuB,kBAAmB,QACtF,QACE,OAAOV,KAAKS,KAAKV,GAAGW,UAAW,UAAW,kBAAmB,QAElE,EATiC,UAqB3B,MAAMQ,kBAUR,MACH,MAAMC,EAA+B,CACnCC,UAAa,CACXC,UAAW,CACTC,YAAa,2BACbC,aAAc,QACdC,WAAY,yBACZC,UAAW,+BACXC,SAAS,GAEXC,gBAAiB3B,KAAKS,KAAKK,kBAAmB,gBAAiB,2BAA4B,WAAY,2BACvGc,uBAAwB5B,KAAKS,KAAKQ,0BAA2B,gBAAiB,2BAA4B,WAAY,4BAExHY,QAAW,CACTR,UAAW,CACTC,YAAa,8BAEfK,gBAAiB3B,KAAKS,KAAKK,kBAAmB,gBAAiB,6BAA8B,WAAY,qBACzGc,uBAAwB5B,KAAKS,KAAKQ,0BAA2B,gBAAiB,6BAA8B,WAAY,sBAE1Ha,MAAS,CACPT,UAAW,CACTC,YAAa,0BAEfK,gBAAiB3B,KAAKS,KAAKK,kBAAmB,gBAAiB,yBAA0B,WAAY,2BACrGc,uBAAwB5B,KAAKS,KAAKQ,0BAA2B,gBAAiB,yBAA0B,WAAY,4BAEtHc,cAAiB,CACfV,UAAW,CACTC,YAAa,kBAEfK,gBAAiB3B,KAAKS,KAAKK,kBAAmB,YAC9Cc,uBAAwB5B,KAAKS,KAAKQ,0BAA2B,aAE/De,WAAc,CACZL,gBAAiB3B,KAAKS,KAAKV,GAAGW,UAAW,gBACzCkB,uBAAwB5B,KAAKS,KAAKV,GAAGW,UAAW,kBAUpD,MANyB,UAArBH,QAAQC,WACVW,EAAsB,aAAI,CACxBQ,gBAAiB3B,KAAKS,KAAKV,GAAGW,UAAW,aACzCkB,uBAAwB5B,KAAKS,KAAKV,GAAGW,UAAW,eAG7CS,CACR,EA/CI,UAoDE,MAAMc,uBAAyBC,OAAOC,KAAKjB,0BAM3C,MAAMkB,yBAA2B,WAKjC,MAAMC,oBAAsB","ignoreList":[]}
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:"",yellow:""},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),r=a.split(".").map(Number);for(let e=0;e<Math.max(t.length,r.length);e++){const a=e<t.length?t[e]:0,o=e<r.length?r[e]:0;if(a!==o)return a-o}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 \`npx -y ${e.name}@latest serve\` or update package with \`npm install -g ${e.name}@latest\`${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 r=await axios.get(`https://registry.npmjs.org/${a}`);if(r.data&&r.data["dist-tags"]&&r.data["dist-tags"].latest){const o=r.data["dist-tags"].latest;compareVersions(o,t)>0&&(e={latestVersion:o,message:`New version (${o}) is available. Relaunch with \`npx -y ${a}@latest serve\``})}}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}}
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:"",yellow:""},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