imcp 0.1.8 → 0.1.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (88) hide show
  1. package/README.md +9 -4
  2. package/dist/cli/commands/list.js +1 -1
  3. package/dist/cli/commands/list.js.map +1 -1
  4. package/dist/cli/commands/pull.js +1 -1
  5. package/dist/cli/commands/pull.js.map +1 -1
  6. package/dist/cli/commands/serve.js +1 -1
  7. package/dist/cli/commands/serve.js.map +1 -1
  8. package/dist/cli/commands/uninstall.js +1 -1
  9. package/dist/cli/commands/uninstall.js.map +1 -1
  10. package/dist/cli/index.js +1 -1
  11. package/dist/cli/index.js.map +1 -1
  12. package/dist/core/installers/clients/BaseClientInstaller.js +1 -1
  13. package/dist/core/installers/clients/BaseClientInstaller.js.map +1 -1
  14. package/dist/core/installers/clients/ClientInstaller.js +1 -1
  15. package/dist/core/installers/clients/ClientInstaller.js.map +1 -1
  16. package/dist/core/installers/requirements/CommandInstaller.js +1 -1
  17. package/dist/core/installers/requirements/CommandInstaller.js.map +1 -1
  18. package/dist/core/installers/requirements/GeneralInstaller.js +1 -1
  19. package/dist/core/installers/requirements/GeneralInstaller.js.map +1 -1
  20. package/dist/core/installers/requirements/NugetInstaller.js +1 -1
  21. package/dist/core/installers/requirements/NugetInstaller.js.map +1 -1
  22. package/dist/core/installers/requirements/PipInstaller.js +1 -1
  23. package/dist/core/installers/requirements/PipInstaller.js.map +1 -1
  24. package/dist/core/loaders/ConfigurationLoader.js +1 -1
  25. package/dist/core/loaders/ConfigurationLoader.js.map +1 -1
  26. package/dist/core/loaders/ConfigurationProvider.d.ts +1 -1
  27. package/dist/core/loaders/ConfigurationProvider.js +1 -1
  28. package/dist/core/loaders/ConfigurationProvider.js.map +1 -1
  29. package/dist/core/loaders/InstallOperationManager.js +1 -1
  30. package/dist/core/loaders/InstallOperationManager.js.map +1 -1
  31. package/dist/core/loaders/SystemSettingsManager.js +1 -1
  32. package/dist/core/loaders/SystemSettingsManager.js.map +1 -1
  33. package/dist/core/onboard/FeedOnboardService.js +1 -1
  34. package/dist/core/onboard/FeedOnboardService.js.map +1 -1
  35. package/dist/core/onboard/OnboardStatusManager.js +1 -1
  36. package/dist/core/onboard/OnboardStatusManager.js.map +1 -1
  37. package/dist/core/validators/StdioServerValidator.js +1 -1
  38. package/dist/core/validators/StdioServerValidator.js.map +1 -1
  39. package/dist/services/InstallationService.js +1 -1
  40. package/dist/services/InstallationService.js.map +1 -1
  41. package/dist/services/MCPManager.d.ts +1 -1
  42. package/dist/services/MCPManager.js +1 -1
  43. package/dist/services/MCPManager.js.map +1 -1
  44. package/dist/services/RequirementService.js +1 -1
  45. package/dist/services/RequirementService.js.map +1 -1
  46. package/dist/services/ServerService.js +1 -1
  47. package/dist/services/ServerService.js.map +1 -1
  48. package/dist/services/TelemetryService.js +1 -1
  49. package/dist/services/TelemetryService.js.map +1 -1
  50. package/dist/utils/UpdateCheckTracker.js +1 -1
  51. package/dist/utils/UpdateCheckTracker.js.map +1 -1
  52. package/dist/utils/adoUtils.js +1 -1
  53. package/dist/utils/adoUtils.js.map +1 -1
  54. package/dist/utils/clientUtils.js +1 -1
  55. package/dist/utils/clientUtils.js.map +1 -1
  56. package/dist/utils/feedUtils.js +1 -1
  57. package/dist/utils/feedUtils.js.map +1 -1
  58. package/dist/utils/gitUtils.d.ts +15 -0
  59. package/dist/utils/gitUtils.js +2 -0
  60. package/dist/utils/gitUtils.js.map +1 -0
  61. package/dist/utils/logger.js +1 -1
  62. package/dist/utils/logger.js.map +1 -1
  63. package/dist/utils/macroExpressionUtils.js +1 -1
  64. package/dist/utils/macroExpressionUtils.js.map +1 -1
  65. package/dist/utils/osUtils.js +1 -1
  66. package/dist/utils/osUtils.js.map +1 -1
  67. package/dist/utils/versionUtils.js +1 -1
  68. package/dist/utils/versionUtils.js.map +1 -1
  69. package/dist/web/public/js/api.js +1 -1
  70. package/dist/web/public/js/detailsWidget.js +1 -1
  71. package/dist/web/public/js/flights/flights.js +1 -1
  72. package/dist/web/public/js/modal/installModal.js +1 -1
  73. package/dist/web/public/js/modal/installation.js +1 -1
  74. package/dist/web/public/js/modal/loadingModal.js +1 -1
  75. package/dist/web/public/js/modal/modalSetup.js +1 -1
  76. package/dist/web/public/js/modal.js +1 -1
  77. package/dist/web/public/js/notifications.js +1 -1
  78. package/dist/web/public/js/onboard/formProcessor.js +1 -1
  79. package/dist/web/public/js/onboard/index.js +1 -1
  80. package/dist/web/public/js/onboard/publishHandler.js +1 -1
  81. package/dist/web/public/js/onboard/uiHandlers.js +1 -1
  82. package/dist/web/public/js/onboard/validationHandlers.js +1 -1
  83. package/dist/web/public/js/serverCategoryDetails.js +1 -1
  84. package/dist/web/public/js/serverCategoryList.js +1 -1
  85. package/dist/web/public/js/settings.js +1 -1
  86. package/dist/web/server.js +1 -1
  87. package/dist/web/server.js.map +1 -1
  88. package/package.json +1 -1
@@ -1,2 +1,2 @@
1
- import{createInstallerFactory}from"../core/installers/index.js";import{exec}from"child_process";import util from"util";import{configProvider,ConfigurationProvider}from"../core/loaders/ConfigurationProvider.js";import{Logger}from"../utils/logger.js";import{updateCheckTracker}from"../utils/UpdateCheckTracker.js";import{InstallOperationManager}from"../core/loaders/InstallOperationManager.js";import*as RecordingConstants from"../core/metadatas/recordingConstants.js";import{systemSettingsManager}from"../core/loaders/SystemSettingsManager.js";export class RequirementService{static instance;installerFactory;constructor(){this.installerFactory=createInstallerFactory(util.promisify(exec))}static getInstance(){return RequirementService.instance||(RequirementService.instance=new RequirementService),RequirementService.instance}generateOperationId(){return`install-${Date.now()}-${Math.random().toString(36).substr(2,9)}`}async checkAndInstallRequirements(e,t,r){const n=InstallOperationManager.getInstance(e,t);return n.recording((async()=>{const a=ConfigurationProvider.getInstance(),s=await a.getFeedConfiguration(e);if(!s){const e="Feed configuration not found";return{success:!1,message:e,status:[{status:"failed",type:"install",target:"server",message:e}]}}const i=s.mcpServers.find((e=>e.name===t));if(!i?.dependencies?.requirements||0===i.dependencies.requirements.length){const r=`No requirements for ${t} in category ${e}`;return Logger.debug(r),await n.recordStep(RecordingConstants.STEP_CHECKING_REQUIREMENT_STATUS,"completed",r),null}if(await n.recording((async()=>{await n.recordStep(RecordingConstants.STEP_CHECKING_REQUIREMENT_STATUS,"in-progress","Checking status of all requirements.");const o=await Promise.all(i.dependencies.requirements.map((async e=>{const t=s.requirements?.find((t=>t.name===e.name))||{name:e.name,version:e.version,type:"npm"};return await this.installerFactory.checkInstallation(t,r)}))),u=await a.isRequirementsReady(e,t);for(const t of o)t.installed&&!u?await a.updateRequirementStatus(e,t.name,{...t,installed:!0}):!t.installed&&u&&await a.updateRequirementStatus(e,t.name,{...t,installed:!1});return o.every((e=>e.installed))}),{stepName:RecordingConstants.STEP_CHECKING_REQUIREMENT_STATUS,inProgressMessage:`Checking status of all requirements for ${t}`,endMessage:r=>r?`Requirements for ${t} in ${e} are already installed.`:"Requirements check completed. Some requirements need installation."}))return null;const o=[...i.dependencies.requirements].sort(((e,t)=>(e.order??1/0)-(t.order??1/0)));return n.recordingAsync((()=>this.installRequirementsInBackground(e,t,s,o,r,n)),{stepName:RecordingConstants.STEP_INSTALLING_REQUIREMENTS_IN_BACKGROUND,inProgressMessage:"Starting background installation of requirements.",endMessage:()=>"Background installation of requirements completed.",onError:r=>{const n=`Error in background requirement installations for ${t} in ${e}: ${r instanceof Error?r.message:String(r)}`;return Logger.error(n),n}}),null}),{stepName:RecordingConstants.STEP_CHECK_AND_INSTALL_REQUIREMENTS,inProgressMessage:`Checking and installing requirements for ${t}`,endMessage:e=>!1===e?.success?`Requirement check/install failed: ${e.message}`:`Requirement check and install process for ${t} completed.`,onResult:e=>null===e||!1!==e.success})}async installRequirementsInBackground(e,t,r,n,a,s){const i=ConfigurationProvider.getInstance(),o=n.reduce(((e,t)=>{const r=t.order??1/0;return e[r]||(e[r]=[]),e[r].push(t),e}),{}),u=Object.keys(o).map(Number).sort(((e,t)=>e-t));for(const t of u){const n=o[t];await Promise.all(n.map((async t=>{const n=`InstallRequirement_${t.name}`;return s.recording((async()=>{let n=r.requirements?.find((e=>e.name===t.name));if(!n){n={name:t.name,version:t.version,type:"npm"};const r=`Requirement ${t.name} not found in feed's requirements definitions for category ${e}. Using default config.`;return Logger.warn(r),{installed:!0,message:r,type:n.type,name:t.name,version:t.version}}let o={...a};const u=await i.getRequirementStatus(e,t.name);"pip"===n.type&&u?.pythonEnv&&!o?.settings?.pythonEnv&&(o={...o,settings:{...o?.settings,pythonEnv:u.pythonEnv}});const c=this.installerFactory.getInstaller(n);if(!c){const r=`No installer found for requirement type: ${n.type}`;throw await this.updateRequirementFailureStatus(e,t.name,n.type,r),new Error(r)}const m=this.generateOperationId();await this.updateRequirementProgressStatus(e,t.name,n.type,m);const l=await c.install(n,s,o),g=l.installed,d=g?`Requirement ${t.name} installed successfully`:`Failed to install ${t.name}: ${l.error||"Unknown error"}`;if(await this.updateRequirementCompletionStatus(e,t.name,l,m),!g)throw new Error(d);return{...l,message:d}}),{stepName:n,inProgressMessage:`Starting installation of ${t.name}`,onResult:e=>e.installed,endMessage:e=>e.message})})))}}async updateRequirementFailureStatus(e,t,r,n){const a=ConfigurationProvider.getInstance();await a.updateRequirementStatus(e,t,{name:t,type:r,installed:!1,error:n,operationStatus:{status:"failed",type:"install",target:"requirement",message:`Error installing requirement: ${n}`,operationId:this.generateOperationId()}})}async updateRequirementProgressStatus(e,t,r,n){const a=ConfigurationProvider.getInstance();await a.updateRequirementStatus(e,t,{name:t,type:r,installed:!1,inProgress:!0,operationStatus:{status:"in-progress",type:"install",target:"requirement",message:`Installing requirement: ${t}`,operationId:n}})}async updateRequirementCompletionStatus(e,t,r,n){const a=ConfigurationProvider.getInstance();await a.updateRequirementStatus(e,t,{...r,operationStatus:{status:r.installed?"completed":"failed",type:"install",target:"requirement",message:r.installed?`Requirement ${t} installed successfully`:`Failed to install ${t}`,operationId:n}})}validateRequirement(e){if(!e.name)throw new Error("Requirement name is required");if(!e.type)throw new Error("Requirement type is required");if("other"===e.type&&!e.registry)throw new Error('Registry must be specified for requirement type "other"');if(e.registry){const{githubRelease:t,artifacts:r}=e.registry;if(t){if(!t.repository)throw new Error("Repository is required for GitHub release registry");if(!t.assetName)throw new Error("Asset name is required for GitHub release registry")}if(r&&!r.registryUrl)throw new Error("Registry URL is required for artifacts registry")}}async checkRequirementForUpdateAsync(){(await configProvider.getServerCategories()).forEach((async e=>{e&&e.feedConfiguration&&e.name&&(await updateCheckTracker.startOperation(e.name)?(Logger.info(`Checking the status of requirements in ${e.name}`),this.checkRequirementsForUpdateInternal(e).catch((t=>{e.name&&updateCheckTracker.endOperation(e.name).catch((e=>{})),Logger.error(`Error checking requirements for updates: ${t.message}`)}))):Logger.debug(`Update check already in progress for ${e.name}, skipping`))}))}async checkServerRequirementForUpdateAsync(e,t){const r=await configProvider.getServerCategory(e);r?await updateCheckTracker.startOperation(`${r.name}:${t}`)&&this.checkRequirementsForUpdateInternal(r,t).then((()=>{updateCheckTracker.endOperation(`${r.name}:${t}`).catch((e=>{}))})).catch((e=>{updateCheckTracker.endOperation(`${r.name}:${t}`).catch((e=>{})),Logger.error(`Error checking requirements for updates: ${e.message}`)})):Logger.error(`Server category ${e} not found`)}async checkRequirementsForUpdateInternal(e,t){if(e.name&&e.feedConfiguration?.requirements?.length)try{for(const r of e.feedConfiguration.requirements)if(r.version.includes("latest")){const n=e.installationStatus?.requirementsStatus[r.name];if(!n)continue;let a=t;if(a){Logger.debug(`Checking whether requirement ${r.name} has update for server ${t}`);const n=e.feedConfiguration.mcpServers.find((e=>e.name===t));if(!n?.dependencies?.requirements?.some((e=>e.name==r.name))){Logger.debug(`Requirement ${r.name} is not associated with server ${t}. Skipping update check.`);continue}}else a=e.feedConfiguration.mcpServers.find((e=>e.dependencies?.requirements?.some((e=>e.name==r.name))))?.name;if(!a){Logger.debug(`No server using requirement ${r.name}. Skipping update check.`);continue}const s=await this.checkRequirementForUpdates(r,n,e.name,a);s.availableUpdate&&e.name&&(await configProvider.updateRequirementStatus(e.name,r.name,s),e.installationStatus?.requirementsStatus&&(e.installationStatus.requirementsStatus[r.name]=s)),n.lastCheckTime=(new Date).toISOString(),await configProvider.updateRequirementStatus(e.name,r.name,n),e.installationStatus?.requirementsStatus&&(e.installationStatus.requirementsStatus[r.name]=s)}}catch(e){throw Logger.error(`Error checking requirements for updates: ${e instanceof Error?e.message:String(e)}`),e}}async checkRequirementStatus(e,t){return this.validateRequirement(e),await this.installerFactory.checkInstallation(e,t)}async checkRequirementForUpdates(e,t,r,n){this.validateRequirement(e);const a=this.installerFactory.getInstaller(e);if(!a||!a.supportCheckUpdates())return t;var s=await systemSettingsManager.getSystemSettings();const i="pip"===e.type?{settings:{pythonEnv:s.pythonEnvs?.[`${r}:${n}`]||s.pythonEnvs?.system||t.pythonEnv}}:void 0,o=await this.checkRequirementStatus(e,i);return await a.checkForUpdates(e,o)}async processRequirementUpdates(e,t,r){const n=`requirement-updates-${e}-${t}`;if(!await updateCheckTracker.startOperation(n))return void Logger.info(`Requirement updates for ${e}/${t} already in progress, skipping`);const a=InstallOperationManager.getInstance(e,t);try{await a.recording((async()=>{const t=ConfigurationProvider.getInstance(),n=await t.getFeedConfiguration(e);if(!n){const t=`Feed configuration not found for category: ${e}`;throw Logger.error(t),new Error(t)}const s=r.requirements?.map((async s=>{const i=`${RecordingConstants.STEP_INSTALL_REQUIREMENT_PREFIX}: ${s.name}`;return a.recording((async()=>{let i,o;try{if(i=n.requirements?.find((e=>e.name===s.name)),!i){const r=`Requirement configuration not found for: ${s.name}`;throw Logger.error(r),await t.updateRequirementStatus(e,s.name,{name:s.name,type:"unknown",installed:!1,inProgress:!1,error:r,operationStatus:{status:"failed",type:"update",target:"requirement",message:r}}),new Error(r)}if(o=await t.getRequirementStatus(e,s.name),!o){const r=`No current status found for requirement: ${s.name}`;throw Logger.error(r),await t.updateRequirementStatus(e,s.name,{name:s.name,type:i.type,installed:!1,inProgress:!1,error:r,operationStatus:{status:"failed",type:"update",target:"requirement",message:r}}),new Error(r)}Logger.info(`Updating ${s.name} from ${o.version||"unknown"} to ${s.version}`),await t.updateRequirementStatus(e,s.name,{...o,name:s.name,type:o.type||i.type||"unknown",installed:o.installed||!1,inProgress:!0,operationStatus:{status:"in-progress",type:"update",target:"requirement",message:`Updating ${s.name} from ${o.version||"unknown"} to ${s.version}`}});let u={...r};"pip"===i.type&&o.pythonEnv&&!u?.settings?.pythonEnv&&(u={...u,settings:{...u?.settings,pythonEnv:o.pythonEnv}});const c=await this.updateRequirement(i,s.version,a,u),m=`Successfully updated ${s.name} to version ${s.version}`,l=`Failed to update ${s.name} to version ${s.version}. Error: ${c.error||"Unknown"}`;if(await t.updateRequirementStatus(e,s.name,{...c,name:s.name,type:c.type||o.type||i.type||"unknown",installed:c.installed,inProgress:!1,operationStatus:{status:c.installed?"completed":"failed",type:"update",target:"requirement",message:c.installed?m:l},availableUpdate:c.installed?void 0:o.availableUpdate}),!c.installed)throw Logger.error(l),new Error(l);return Logger.info(m),c}catch(r){const n=`Error updating requirement ${s.name}: ${r instanceof Error?r.message:String(r)}`;throw Logger.error(n),await t.updateRequirementStatus(e,s.name,{name:s.name,type:i?.type||o?.type||"unknown",installed:!1,inProgress:!1,error:r instanceof Error?r.message:String(r),operationStatus:{status:"failed",type:"update",target:"requirement",message:n}}),r}}),{stepName:i,inProgressMessage:`Processing update for requirement ${s.name}`,onResult:e=>e.installed})}));s&&await Promise.all(s)}),{stepName:RecordingConstants.STEP_PROCESS_REQUIREMENT_UPDATES,inProgressMessage:`Starting to process requirement updates for ${t}`,endMessage:()=>`Finished processing requirement updates for ${t}`})}finally{await updateCheckTracker.endOperation(n)}}async updateRequirement(e,t,r,n){this.validateRequirement(e);const a={...e,version:e.version.includes("latest")?e.version:t};return await this.installerFactory.install(a,r,n)}}export const requirementService=RequirementService.getInstance();
1
+ import{createInstallerFactory}from"../core/installers/index.js";import{exec}from"child_process";import util from"util";import{configProvider,ConfigurationProvider}from"../core/loaders/ConfigurationProvider.js";import{Logger}from"../utils/logger.js";import{updateCheckTracker}from"../utils/UpdateCheckTracker.js";import{InstallOperationManager}from"../core/loaders/InstallOperationManager.js";import*as RecordingConstants from"../core/metadatas/recordingConstants.js";import{systemSettingsManager}from"../core/loaders/SystemSettingsManager.js";export class RequirementService{static instance;installerFactory;constructor(){this.installerFactory=createInstallerFactory(util.promisify(exec))}static getInstance(){return RequirementService.instance||(RequirementService.instance=new RequirementService),RequirementService.instance}generateOperationId(){return`install-${Date.now()}-${Math.random().toString(36).substr(2,9)}`}async checkAndInstallRequirements(e,t,r){const n=InstallOperationManager.getInstance(e,t);return n.recording((async()=>{const a=ConfigurationProvider.getInstance(),s=await a.getFeedConfiguration(e);if(!s){const e="Feed configuration not found";return{success:!1,message:e,status:[{status:"failed",type:"install",target:"server",message:e}]}}const i=s.mcpServers.find((e=>e.name===t));if(!i?.dependencies?.requirements||0===i.dependencies.requirements.length){const r=`No requirements for ${t} in category ${e}`;return Logger.debug(r),await n.recordStep(RecordingConstants.STEP_CHECKING_REQUIREMENT_STATUS,"completed",r),null}if(await n.recording((async()=>{await n.recordStep(RecordingConstants.STEP_CHECKING_REQUIREMENT_STATUS,"in-progress","Checking status of all requirements.");const o=await Promise.all(i.dependencies.requirements.map((async e=>{const t=s.requirements?.find((t=>t.name===e.name))||{name:e.name,version:e.version,type:"npm"};return await this.installerFactory.checkInstallation(t,r)}))),u=await a.isRequirementsReady(e,t);for(const t of o)t.installed&&!u?await a.updateRequirementStatus(e,t.name,{...t,installed:!0}):!t.installed&&u&&await a.updateRequirementStatus(e,t.name,{...t,installed:!1});return o.every((e=>e.installed))}),{stepName:RecordingConstants.STEP_CHECKING_REQUIREMENT_STATUS,inProgressMessage:`Checking status of all requirements for ${t}`,endMessage:r=>r?`Requirements for ${t} in ${e} are already installed.`:"Requirements check completed. Some requirements need installation."}))return null;const o=[...i.dependencies.requirements].sort(((e,t)=>(e.order??1/0)-(t.order??1/0)));return n.recordingAsync((()=>this.installRequirementsInBackground(e,t,s,o,r,n)),{stepName:RecordingConstants.STEP_INSTALLING_REQUIREMENTS_IN_BACKGROUND,inProgressMessage:"Starting background installation of requirements.",endMessage:()=>"Background installation of requirements completed.",onError:r=>{const n=`Error in background requirement installations for ${t} in ${e}: ${r instanceof Error?r.message:String(r)}`;return Logger.error(n),n}}),null}),{stepName:RecordingConstants.STEP_CHECK_AND_INSTALL_REQUIREMENTS,inProgressMessage:`Checking and installing requirements for ${t}`,endMessage:e=>!1===e?.success?`Requirement check/install failed: ${e.message}`:`Requirement check and install process for ${t} completed.`,onResult:e=>null===e||!1!==e.success})}async installRequirementsInBackground(e,t,r,n,a,s){const i=ConfigurationProvider.getInstance(),o=n.reduce(((e,t)=>{const r=t.order??1/0;return e[r]||(e[r]=[]),e[r].push(t),e}),{}),u=Object.keys(o).map(Number).sort(((e,t)=>e-t));for(const t of u){const n=o[t];await Promise.all(n.map((async t=>{const n=`InstallRequirement_${t.name}`;return s.recording((async()=>{let n=r.requirements?.find((e=>e.name===t.name));if(!n){n={name:t.name,version:t.version,type:"npm"};const r=`Requirement ${t.name} not found in feed's requirements definitions for category ${e}. Using default config.`;return Logger.warn(r),{installed:!0,message:r,type:n.type,name:t.name,version:t.version}}let o={...a};const u=await i.getRequirementStatus(e,t.name);"pip"===n.type&&u?.pythonEnv&&!o?.settings?.pythonEnv&&(o={...o,settings:{...o?.settings,pythonEnv:u.pythonEnv}});const c=this.installerFactory.getInstaller(n);if(!c){const r=`No installer found for requirement type: ${n.type}`;throw await this.updateRequirementFailureStatus(e,t.name,n.type,r),new Error(r)}const m=this.generateOperationId();await this.updateRequirementProgressStatus(e,t.name,n.type,m);const l=await c.install(n,s,o),d=l.installed,g=d?`Requirement ${t.name} installed successfully`:`Failed to install ${t.name}: ${l.error||"Unknown error"}`;if(await this.updateRequirementCompletionStatus(e,t.name,l,m),!d)throw new Error(g);return{...l,message:g}}),{stepName:n,inProgressMessage:`Starting installation of ${t.name}`,onResult:e=>e.installed,endMessage:e=>e.message})})))}}async updateRequirementFailureStatus(e,t,r,n){const a=ConfigurationProvider.getInstance();await a.updateRequirementStatus(e,t,{name:t,type:r,installed:!1,error:n,operationStatus:{status:"failed",type:"install",target:"requirement",message:`Error installing requirement: ${n}`,operationId:this.generateOperationId()}})}async updateRequirementProgressStatus(e,t,r,n){const a=ConfigurationProvider.getInstance();await a.updateRequirementStatus(e,t,{name:t,type:r,installed:!1,inProgress:!0,operationStatus:{status:"in-progress",type:"install",target:"requirement",message:`Installing requirement: ${t}`,operationId:n}})}async updateRequirementCompletionStatus(e,t,r,n){const a=ConfigurationProvider.getInstance();await a.updateRequirementStatus(e,t,{...r,operationStatus:{status:r.installed?"completed":"failed",type:"install",target:"requirement",message:r.installed?`Requirement ${t} installed successfully`:`Failed to install ${t}`,operationId:n}})}validateRequirement(e){if(!e.name)throw new Error("Requirement name is required");if(!e.type)throw new Error("Requirement type is required");if("other"===e.type&&!e.registry)throw new Error('Registry must be specified for requirement type "other"');if(e.registry){const{githubRelease:t,artifacts:r}=e.registry;if(t){if(!t.repository)throw new Error("Repository is required for GitHub release registry");if(!t.assetName)throw new Error("Asset name is required for GitHub release registry")}if(r&&!r.registryUrl)throw new Error("Registry URL is required for artifacts registry")}}async checkRequirementForUpdateAsync(){(await configProvider.getServerCategories()).forEach((async e=>{if(e&&e.feedConfiguration&&e.name){await updateCheckTracker.startOperation(e.name)?(Logger.info(`Checking the status of requirements in ${e.name}`),this.checkRequirementsForUpdateInternal(e).catch((t=>{e.name&&updateCheckTracker.endOperation(e.name).catch((e=>console.error(`Failed to mark update check as complete: ${e.message}`))),Logger.error(`Error checking requirements for updates: ${t.message}`)}))):Logger.debug(`Update check already in progress for ${e.name}, skipping`)}}))}async checkServerRequirementForUpdateAsync(e,t){const r=await configProvider.getServerCategory(e);if(!r)return void Logger.error(`Server category ${e} not found`);await updateCheckTracker.startOperation(`${r.name}:${t}`)&&this.checkRequirementsForUpdateInternal(r,t).then((()=>{updateCheckTracker.endOperation(`${r.name}:${t}`).catch((e=>console.error(`Failed to mark update check as complete: ${e.message}`)))})).catch((e=>{updateCheckTracker.endOperation(`${r.name}:${t}`).catch((e=>console.error(`Failed to mark update check as complete: ${e.message}`))),Logger.error(`Error checking requirements for updates: ${e.message}`)}))}async checkRequirementsForUpdateInternal(e,t){if(e.name&&e.feedConfiguration?.requirements?.length)try{for(const r of e.feedConfiguration.requirements)if(r.version.includes("latest")){const n=e.installationStatus?.requirementsStatus[r.name];if(!n)continue;let a=t;if(a){Logger.debug(`Checking whether requirement ${r.name} has update for server ${t}`);const n=e.feedConfiguration.mcpServers.find((e=>e.name===t));if(!n?.dependencies?.requirements?.some((e=>e.name==r.name))){Logger.debug(`Requirement ${r.name} is not associated with server ${t}. Skipping update check.`);continue}}else a=e.feedConfiguration.mcpServers.find((e=>e.dependencies?.requirements?.some((e=>e.name==r.name))))?.name;if(!a){Logger.debug(`No server using requirement ${r.name}. Skipping update check.`);continue}const s=await this.checkRequirementForUpdates(r,n,e.name,a);s.availableUpdate&&e.name&&(await configProvider.updateRequirementStatus(e.name,r.name,s),e.installationStatus?.requirementsStatus&&(e.installationStatus.requirementsStatus[r.name]=s)),n.lastCheckTime=(new Date).toISOString(),await configProvider.updateRequirementStatus(e.name,r.name,n),e.installationStatus?.requirementsStatus&&(e.installationStatus.requirementsStatus[r.name]=s)}}catch(e){throw Logger.error(`Error checking requirements for updates: ${e instanceof Error?e.message:String(e)}`),e}}async checkRequirementStatus(e,t){return this.validateRequirement(e),await this.installerFactory.checkInstallation(e,t)}async checkRequirementForUpdates(e,t,r,n){this.validateRequirement(e);const a=this.installerFactory.getInstaller(e);if(!a||!a.supportCheckUpdates())return t;var s=await systemSettingsManager.getSystemSettings();const i="pip"===e.type?{settings:{pythonEnv:s.pythonEnvs?.[`${r}:${n}`]||s.pythonEnvs?.system||t.pythonEnv}}:void 0,o=await this.checkRequirementStatus(e,i);return await a.checkForUpdates(e,o)}async processRequirementUpdates(e,t,r){const n=`requirement-updates-${e}-${t}`;if(!await updateCheckTracker.startOperation(n))return void Logger.info(`Requirement updates for ${e}/${t} already in progress, skipping`);const a=InstallOperationManager.getInstance(e,t);try{await a.recording((async()=>{const t=ConfigurationProvider.getInstance(),n=await t.getFeedConfiguration(e);if(!n){const t=`Feed configuration not found for category: ${e}`;throw Logger.error(t),new Error(t)}const s=r.requirements?.map((async s=>{const i=`${RecordingConstants.STEP_INSTALL_REQUIREMENT_PREFIX}: ${s.name}`;return a.recording((async()=>{let i,o;try{if(i=n.requirements?.find((e=>e.name===s.name)),!i){const r=`Requirement configuration not found for: ${s.name}`;throw Logger.error(r),await t.updateRequirementStatus(e,s.name,{name:s.name,type:"unknown",installed:!1,inProgress:!1,error:r,operationStatus:{status:"failed",type:"update",target:"requirement",message:r}}),new Error(r)}if(o=await t.getRequirementStatus(e,s.name),!o){const r=`No current status found for requirement: ${s.name}`;throw Logger.error(r),await t.updateRequirementStatus(e,s.name,{name:s.name,type:i.type,installed:!1,inProgress:!1,error:r,operationStatus:{status:"failed",type:"update",target:"requirement",message:r}}),new Error(r)}Logger.info(`Updating ${s.name} from ${o.version||"unknown"} to ${s.version}`),await t.updateRequirementStatus(e,s.name,{...o,name:s.name,type:o.type||i.type||"unknown",installed:o.installed||!1,inProgress:!0,operationStatus:{status:"in-progress",type:"update",target:"requirement",message:`Updating ${s.name} from ${o.version||"unknown"} to ${s.version}`}});let u={...r};"pip"===i.type&&o.pythonEnv&&!u?.settings?.pythonEnv&&(u={...u,settings:{...u?.settings,pythonEnv:o.pythonEnv}});const c=await this.updateRequirement(i,s.version,a,u),m=`Successfully updated ${s.name} to version ${s.version}`,l=`Failed to update ${s.name} to version ${s.version}. Error: ${c.error||"Unknown"}`;if(await t.updateRequirementStatus(e,s.name,{...c,name:s.name,type:c.type||o.type||i.type||"unknown",installed:c.installed,inProgress:!1,operationStatus:{status:c.installed?"completed":"failed",type:"update",target:"requirement",message:c.installed?m:l},availableUpdate:c.installed?void 0:o.availableUpdate}),!c.installed)throw Logger.error(l),new Error(l);return Logger.info(m),c}catch(r){const n=`Error updating requirement ${s.name}: ${r instanceof Error?r.message:String(r)}`;throw Logger.error(n),await t.updateRequirementStatus(e,s.name,{name:s.name,type:i?.type||o?.type||"unknown",installed:!1,inProgress:!1,error:r instanceof Error?r.message:String(r),operationStatus:{status:"failed",type:"update",target:"requirement",message:n}}),r}}),{stepName:i,inProgressMessage:`Processing update for requirement ${s.name}`,onResult:e=>e.installed})}));s&&await Promise.all(s)}),{stepName:RecordingConstants.STEP_PROCESS_REQUIREMENT_UPDATES,inProgressMessage:`Starting to process requirement updates for ${t}`,endMessage:()=>`Finished processing requirement updates for ${t}`})}finally{await updateCheckTracker.endOperation(n)}}async updateRequirement(e,t,r,n){this.validateRequirement(e);const a={...e,version:e.version.includes("latest")?e.version:t};return await this.installerFactory.install(a,r,n)}}export const requirementService=RequirementService.getInstance();
2
2
  //# sourceMappingURL=RequirementService.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["createInstallerFactory","exec","util","configProvider","ConfigurationProvider","Logger","updateCheckTracker","InstallOperationManager","RecordingConstants","systemSettingsManager","RequirementService","static","installerFactory","constructor","this","promisify","getInstance","instance","generateOperationId","Date","now","Math","random","toString","substr","checkAndInstallRequirements","categoryName","serverName","options","recoder","recording","async","feedConfig","getFeedConfiguration","errorMsg","success","message","status","type","target","serverConfig","mcpServers","find","s","name","dependencies","requirements","length","msg","debug","recordStep","STEP_CHECKING_REQUIREMENT_STATUS","requirementStatuses","Promise","all","map","req","reqConfig","r","version","checkInstallation","requirementsReady","isRequirementsReady","installed","updateRequirementStatus","every","stepName","inProgressMessage","endMessage","ready","sortedRequirements","sort","a","b","order","Infinity","recordingAsync","installRequirementsInBackground","STEP_INSTALLING_REQUIREMENTS_IN_BACKGROUND","onError","err","Error","String","error","STEP_CHECK_AND_INSTALL_REQUIREMENTS","result","onResult","requirementGroups","reduce","groups","push","orderKeys","Object","keys","Number","group","requirement","requirementConfig","warnMsg","warn","currentOptions","currentStatus","getRequirementStatus","pythonEnv","settings","installer","getInstaller","updateRequirementFailureStatus","operationId","updateRequirementProgressStatus","installStatus","install","updateRequirementCompletionStatus","requirementName","requirementType","errorMessage","operationStatus","inProgress","validateRequirement","registry","githubRelease","artifacts","repository","assetName","registryUrl","checkRequirementForUpdateAsync","getServerCategories","forEach","serverCategory","feedConfiguration","startOperation","info","checkRequirementsForUpdateInternal","catch","endOperation","lockError","checkServerRequirementForUpdateAsync","getServerCategory","then","includes","installationStatus","requirementsStatus","providedServerName","some","updatedStatus","checkRequirementForUpdates","availableUpdate","lastCheckTime","toISOString","checkRequirementStatus","supportCheckUpdates","systemSettings","getSystemSettings","pythonEnvs","system","undefined","checkForUpdates","processRequirementUpdates","operationKey","updatePromises","reqToUpdate","STEP_INSTALL_REQUIREMENT_PREFIX","updateRequirement","successMessage","failureMessage","STEP_PROCESS_REQUIREMENT_UPDATES","updateVersion","recorder","updatedRequirement","requirementService"],"sources":["../../src/services/RequirementService.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["createInstallerFactory","exec","util","configProvider","ConfigurationProvider","Logger","updateCheckTracker","InstallOperationManager","RecordingConstants","systemSettingsManager","RequirementService","static","installerFactory","constructor","this","promisify","getInstance","instance","generateOperationId","Date","now","Math","random","toString","substr","checkAndInstallRequirements","categoryName","serverName","options","recoder","recording","async","feedConfig","getFeedConfiguration","errorMsg","success","message","status","type","target","serverConfig","mcpServers","find","s","name","dependencies","requirements","length","msg","debug","recordStep","STEP_CHECKING_REQUIREMENT_STATUS","requirementStatuses","Promise","all","map","req","reqConfig","r","version","checkInstallation","requirementsReady","isRequirementsReady","installed","updateRequirementStatus","every","stepName","inProgressMessage","endMessage","ready","sortedRequirements","sort","a","b","order","Infinity","recordingAsync","installRequirementsInBackground","STEP_INSTALLING_REQUIREMENTS_IN_BACKGROUND","onError","err","Error","String","error","STEP_CHECK_AND_INSTALL_REQUIREMENTS","result","onResult","requirementGroups","reduce","groups","push","orderKeys","Object","keys","Number","group","requirement","requirementConfig","warnMsg","warn","currentOptions","currentStatus","getRequirementStatus","pythonEnv","settings","installer","getInstaller","updateRequirementFailureStatus","operationId","updateRequirementProgressStatus","installStatus","install","updateRequirementCompletionStatus","requirementName","requirementType","errorMessage","operationStatus","inProgress","validateRequirement","registry","githubRelease","artifacts","repository","assetName","registryUrl","checkRequirementForUpdateAsync","getServerCategories","forEach","serverCategory","feedConfiguration","startOperation","info","checkRequirementsForUpdateInternal","catch","endOperation","lockError","console","checkServerRequirementForUpdateAsync","getServerCategory","then","includes","installationStatus","requirementsStatus","providedServerName","some","updatedStatus","checkRequirementForUpdates","availableUpdate","lastCheckTime","toISOString","checkRequirementStatus","supportCheckUpdates","systemSettings","getSystemSettings","pythonEnvs","system","undefined","checkForUpdates","processRequirementUpdates","operationKey","updatePromises","reqToUpdate","STEP_INSTALL_REQUIREMENT_PREFIX","updateRequirement","successMessage","failureMessage","STEP_PROCESS_REQUIREMENT_UPDATES","updateVersion","recorder","updatedRequirement","requirementService"],"sources":["../../src/services/RequirementService.ts"],"mappings":"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","ignoreList":[]}
@@ -1,2 +1,2 @@
1
- import path from"path";import{fileURLToPath}from"url";import{Logger}from"../utils/logger.js";import{ServerSchemaProvider}from"../core/loaders/ServerSchemaProvider.js";import{mcpManager}from"./MCPManager.js";const __dirname=path.dirname(fileURLToPath(import.meta.url));export class ServerService{async listServerCategories(e={}){return mcpManager.listServerCategories(e)}async getServerCategory(e){return(await this.listServerCategories()).find((r=>r.name===e))}async getServerSchema(e,r){try{const a=ServerSchemaProvider.getInstance(),t=await mcpManager.getServerMcpConfig(e,r);return await a.getSchema(e,t?.schemas||`${r}.json`)}catch(a){throw Logger.error(`Failed to get schema for server ${r} in category ${e}:`,a),a}}async installMcpServer(e,r,a={}){Logger.debug(`Installing MCP server: ${JSON.stringify({category:e,serverName:r,options:a})}`);try{const t=await mcpManager.installServer(e,r,a);return Logger.debug(`Installation result: ${JSON.stringify(t)}`),t}catch(e){throw Logger.error(`Failed to install MCP server: ${r}`,e),e}}async uninstallMcpServer(e,r,a={}){Logger.debug(`Uninstalling MCP server: ${JSON.stringify({category:e,serverName:r,options:a})}`);try{const t=await mcpManager.uninstallServer(e,r,a);return Logger.debug(`Uninstallation result: ${JSON.stringify(t)}`),t}catch(e){throw Logger.error(`Failed to uninstall MCP server: ${r}`,e),e}}async validateServerName(e,r){const a=Array.isArray(r)?r:[r];Logger.debug(`Validating server names: ${JSON.stringify({category:e,names:a})}`);const t=await mcpManager.getFeedConfiguration(e);if(!t)return Logger.debug(`Validation failed: Category "${e}" not found in feeds`),!1;const n=a.filter((e=>!t.mcpServers.some((r=>r.name===e))));return!(n.length>0&&(Logger.debug(`Validation failed: Servers "${n.join(", ")}" not found in category "${e}"`),1))}formatOperationResults(e){return{success:e.every((e=>e.success)),messages:e.map((e=>e.message)).filter((e=>void 0!==e))}}async syncFeeds(){return mcpManager.syncFeeds()}async onboardFeed(e){try{const r=await mcpManager.onboardFeed(e);return Logger.log(`Feed onboarding process for '${e.name}' initiated with status: ${r.status}, ID: ${r.onboardingId}`),r}catch(r){throw Logger.error(`Failed to initiate feed onboarding for '${e.name}':`,r),r}}}export const serverService=new ServerService;
1
+ import path from"path";import{fileURLToPath}from"url";import{Logger}from"../utils/logger.js";import{ServerSchemaProvider}from"../core/loaders/ServerSchemaProvider.js";import{mcpManager}from"./MCPManager.js";const __dirname=path.dirname(fileURLToPath(import.meta.url));export class ServerService{async listServerCategories(e={}){return mcpManager.listServerCategories(e)}async getServerCategory(e){return(await this.listServerCategories()).find((r=>r.name===e))}async getServerSchema(e,r){try{const a=ServerSchemaProvider.getInstance(),t=await mcpManager.getServerMcpConfig(e,r);return await a.getSchema(e,t?.schemas||`${r}.json`)}catch(a){throw Logger.error(`Failed to get schema for server ${r} in category ${e}:`,a),a}}async installMcpServer(e,r,a={}){Logger.debug(`Installing MCP server: ${JSON.stringify({category:e,serverName:r,options:a})}`);try{const t=await mcpManager.installServer(e,r,a);return Logger.debug(`Installation result: ${JSON.stringify(t)}`),t}catch(e){throw Logger.error(`Failed to install MCP server: ${r}`,e),e}}async uninstallMcpServer(e,r,a={}){Logger.debug(`Uninstalling MCP server: ${JSON.stringify({category:e,serverName:r,options:a})}`);try{const t=await mcpManager.uninstallServer(e,r,a);return Logger.debug(`Uninstallation result: ${JSON.stringify(t)}`),t}catch(e){throw Logger.error(`Failed to uninstall MCP server: ${r}`,e),e}}async validateServerName(e,r){const a=Array.isArray(r)?r:[r];Logger.debug(`Validating server names: ${JSON.stringify({category:e,names:a})}`);const t=await mcpManager.getFeedConfiguration(e);if(!t)return Logger.debug(`Validation failed: Category "${e}" not found in feeds`),!1;const n=a.filter((e=>!t.mcpServers.some((r=>r.name===e))));return!(n.length>0)||(Logger.debug(`Validation failed: Servers "${n.join(", ")}" not found in category "${e}"`),!1)}formatOperationResults(e){return{success:e.every((e=>e.success)),messages:e.map((e=>e.message)).filter((e=>void 0!==e))}}async syncFeeds(){return mcpManager.syncFeeds()}async onboardFeed(e){try{const r=await mcpManager.onboardFeed(e);return Logger.log(`Feed onboarding process for '${e.name}' initiated with status: ${r.status}, ID: ${r.onboardingId}`),r}catch(r){throw Logger.error(`Failed to initiate feed onboarding for '${e.name}':`,r),r}}}export const serverService=new ServerService;
2
2
  //# sourceMappingURL=ServerService.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["path","fileURLToPath","Logger","ServerSchemaProvider","mcpManager","__dirname","dirname","url","ServerService","listServerCategories","options","getServerCategory","categoryName","this","find","s","name","getServerSchema","serverName","provider","getInstance","serverMcpConfig","getServerMcpConfig","getSchema","schemas","error","installMcpServer","category","debug","JSON","stringify","result","installServer","uninstallMcpServer","uninstallServer","validateServerName","names","serverNames","Array","isArray","feedConfig","getFeedConfiguration","invalidServers","filter","mcpServers","some","server","length","join","formatOperationResults","results","success","every","r","messages","map","message","m","undefined","syncFeeds","onboardFeed","config","log","status","onboardingId","serverService"],"sources":["../../src/services/ServerService.ts"],"mappings":"OAAOA,SAAU,cACRC,kBAAqB,aACrBC,WAAc,4BACAC,yBAA4B,iDAU1CC,eAAkB,kBAG3B,MAAMC,UAAYL,KAAKM,QAAQL,0BAA0BM,aAMnD,MAAOC,cAIX,0BAAMC,CAAqBC,EAAqC,IAC9D,OAAON,WAAWK,qBAAqBC,EACzC,CAKA,uBAAMC,CAAkBC,GAGtB,aAF+BC,KAAKJ,wBACIK,MAAKC,GAAKA,EAAEC,OAASJ,GAE/D,CAKA,qBAAMK,CAAgBL,EAAsBM,GAC1C,IACE,MAAMC,EAAWhB,qBAAqBiB,cAChCC,QAAwBjB,WAAWkB,mBAAmBV,EAAcM,GAC1E,aAAaC,EAASI,UAAUX,EAAcS,GAAiBG,SAAW,GAAGN,SAC/E,CAAE,MAAOO,GAEP,MADAvB,OAAOuB,MAAM,mCAAmCP,iBAA0BN,KAAiBa,GACrFA,CACR,CACF,CAKA,sBAAMC,CACJC,EACAT,EACAR,EAAgC,IAEhCR,OAAO0B,MAAM,0BAA0BC,KAAKC,UAAU,CAAEH,WAAUT,aAAYR,eAC9E,IACE,MAAMqB,QAAe3B,WAAW4B,cAAcL,EAAUT,EAAYR,GAEpE,OADAR,OAAO0B,MAAM,wBAAwBC,KAAKC,UAAUC,MAC7CA,CACT,CAAE,MAAON,GAEP,MADAvB,OAAOuB,MAAM,iCAAiCP,IAAcO,GACtDA,CACR,CACF,CAQA,wBAAMQ,CACJN,EACAT,EACAR,EAAkC,IAElCR,OAAO0B,MAAM,4BAA4BC,KAAKC,UAAU,CAAEH,WAAUT,aAAYR,eAChF,IACE,MAAMqB,QAAe3B,WAAW8B,gBAAgBP,EAAUT,EAAYR,GAEtE,OADAR,OAAO0B,MAAM,0BAA0BC,KAAKC,UAAUC,MAC/CA,CACT,CAAE,MAAON,GAEP,MADAvB,OAAOuB,MAAM,mCAAmCP,IAAcO,GACxDA,CACR,CACF,CAKA,wBAAMU,CAAmBR,EAAkBS,GACzC,MAAMC,EAAcC,MAAMC,QAAQH,GAASA,EAAQ,CAACA,GACpDlC,OAAO0B,MAAM,4BAA4BC,KAAKC,UAAU,CAAEH,WAAUS,MAAOC,OAG3E,MAAMG,QAAmBpC,WAAWqC,qBAAqBd,GACzD,IAAKa,EAEH,OADAtC,OAAO0B,MAAM,gCAAgCD,0BACtC,EAIT,MAAMe,EAAiBL,EAAYM,QAAO3B,IACvCwB,EAAWI,WAAWC,MAAKC,GAAUA,EAAO9B,OAASA,MAGxD,QAAI0B,EAAeK,OAAS,IAC1B7C,OAAO0B,MAAM,+BAA+Bc,EAAeM,KAAK,iCAAiCrB,MAC1F,GAIX,CAKA,sBAAAsB,CAAuBC,GAIrB,MAAO,CACLC,QAASD,EAAQE,OAAMC,GAAKA,EAAEF,UAC9BG,SAAUJ,EAAQK,KAAIF,GAAKA,EAAEG,UAASb,QAAQc,QAAyBC,IAAND,IAErE,CAKA,eAAME,GACJ,OAAOvD,WAAWuD,WACpB,CAMA,iBAAMC,CAAYC,GAChB,IACE,MAAM9B,QAAe3B,WAAWwD,YAAYC,GAI5C,OADA3D,OAAO4D,IAAI,gCAAgCD,EAAO7C,gCAAgCe,EAAOgC,eAAehC,EAAOiC,gBACxGjC,CACT,CAAE,MAAON,GAEP,MADAvB,OAAOuB,MAAM,2CAA2CoC,EAAO7C,SAAUS,GACnEA,CACR,CACF,SAIK,MAAMwC,cAAgB,IAAIzD","ignoreList":[]}
1
+ {"version":3,"names":["path","fileURLToPath","Logger","ServerSchemaProvider","mcpManager","__dirname","dirname","url","ServerService","listServerCategories","options","getServerCategory","categoryName","this","find","s","name","getServerSchema","serverName","provider","getInstance","serverMcpConfig","getServerMcpConfig","getSchema","schemas","error","installMcpServer","category","debug","JSON","stringify","result","installServer","uninstallMcpServer","uninstallServer","validateServerName","names","serverNames","Array","isArray","feedConfig","getFeedConfiguration","invalidServers","filter","mcpServers","some","server","length","join","formatOperationResults","results","success","every","r","messages","map","message","m","undefined","syncFeeds","onboardFeed","config","log","status","onboardingId","serverService"],"sources":["../../src/services/ServerService.ts"],"mappings":"OAAOA,SAAU,cACRC,kBAAqB,aACrBC,WAAc,4BACAC,yBAA4B,iDAU1CC,eAAkB,kBAG3B,MAAMC,UAAYL,KAAKM,QAAQL,0BAA0BM,aAMnD,MAAOC,cAIX,0BAAMC,CAAqBC,EAAqC,IAC9D,OAAON,WAAWK,qBAAqBC,EACzC,CAKA,uBAAMC,CAAkBC,GAGtB,aAF+BC,KAAKJ,wBACIK,MAAKC,GAAKA,EAAEC,OAASJ,GAE/D,CAKA,qBAAMK,CAAgBL,EAAsBM,GAC1C,IACE,MAAMC,EAAWhB,qBAAqBiB,cAChCC,QAAwBjB,WAAWkB,mBAAmBV,EAAcM,GAC1E,aAAaC,EAASI,UAAUX,EAAcS,GAAiBG,SAAW,GAAGN,SAC/E,CAAE,MAAOO,GAEP,MADAvB,OAAOuB,MAAM,mCAAmCP,iBAA0BN,KAAiBa,GACrFA,CACR,CACF,CAKA,sBAAMC,CACJC,EACAT,EACAR,EAAgC,IAEhCR,OAAO0B,MAAM,0BAA0BC,KAAKC,UAAU,CAAEH,WAAUT,aAAYR,eAC9E,IACE,MAAMqB,QAAe3B,WAAW4B,cAAcL,EAAUT,EAAYR,GAEpE,OADAR,OAAO0B,MAAM,wBAAwBC,KAAKC,UAAUC,MAC7CA,CACT,CAAE,MAAON,GAEP,MADAvB,OAAOuB,MAAM,iCAAiCP,IAAcO,GACtDA,CACR,CACF,CAQA,wBAAMQ,CACJN,EACAT,EACAR,EAAkC,IAElCR,OAAO0B,MAAM,4BAA4BC,KAAKC,UAAU,CAAEH,WAAUT,aAAYR,eAChF,IACE,MAAMqB,QAAe3B,WAAW8B,gBAAgBP,EAAUT,EAAYR,GAEtE,OADAR,OAAO0B,MAAM,0BAA0BC,KAAKC,UAAUC,MAC/CA,CACT,CAAE,MAAON,GAEP,MADAvB,OAAOuB,MAAM,mCAAmCP,IAAcO,GACxDA,CACR,CACF,CAKA,wBAAMU,CAAmBR,EAAkBS,GACzC,MAAMC,EAAcC,MAAMC,QAAQH,GAASA,EAAQ,CAACA,GACpDlC,OAAO0B,MAAM,4BAA4BC,KAAKC,UAAU,CAAEH,WAAUS,MAAOC,OAG3E,MAAMG,QAAmBpC,WAAWqC,qBAAqBd,GACzD,IAAKa,EAEH,OADAtC,OAAO0B,MAAM,gCAAgCD,0BACtC,EAIT,MAAMe,EAAiBL,EAAYM,QAAO3B,IACvCwB,EAAWI,WAAWC,MAAKC,GAAUA,EAAO9B,OAASA,MAGxD,QAAI0B,EAAeK,OAAS,KAC1B7C,OAAO0B,MAAM,+BAA+Bc,EAAeM,KAAK,iCAAiCrB,OAC1F,EAIX,CAKA,sBAAAsB,CAAuBC,GAIrB,MAAO,CACLC,QAASD,EAAQE,OAAMC,GAAKA,EAAEF,UAC9BG,SAAUJ,EAAQK,KAAIF,GAAKA,EAAEG,UAASb,QAAQc,QAAyBC,IAAND,IAErE,CAKA,eAAME,GACJ,OAAOvD,WAAWuD,WACpB,CAMA,iBAAMC,CAAYC,GAChB,IACE,MAAM9B,QAAe3B,WAAWwD,YAAYC,GAI5C,OADA3D,OAAO4D,IAAI,gCAAgCD,EAAO7C,gCAAgCe,EAAOgC,eAAehC,EAAOiC,gBACxGjC,CACT,CAAE,MAAON,GAEP,MADAvB,OAAOuB,MAAM,2CAA2CoC,EAAO7C,SAAUS,GACnEA,CACR,CACF,SAIK,MAAMwC,cAAgB,IAAIzD","ignoreList":[]}
@@ -1,2 +1,2 @@
1
- import*as appInsights from"applicationinsights";export class TelemetryService{static client=null;static instrumentationKey="InstrumentationKey=c5fc06c7-a96c-4d80-9aff-bc9c933db0d1";static{try{const t=new appInsights.TelemetryClient(TelemetryService.instrumentationKey);t.config.disableAppInsights=!1,t.config.maxBatchSize=250,t.context.tags[t.context.keys.cloudRole]="imcp",TelemetryService.client=t}catch(t){}}static trackEvent(t,e){this.client&&this.client.trackEvent({name:t,properties:e})}static trackException(t,e){this.client&&this.client.trackException({exception:t,properties:e})}static trackTrace(t,e){this.client&&this.client.trackTrace({message:t,properties:e})}static trackMetric(t,e){this.client&&this.client.trackMetric({name:t,value:e})}static flush(){return new Promise((t=>{this.client?(this.client.flush(),t()):t()}))}}
1
+ import*as appInsights from"applicationinsights";export class TelemetryService{static client=null;static instrumentationKey="InstrumentationKey=c5fc06c7-a96c-4d80-9aff-bc9c933db0d1";static{try{const t=new appInsights.TelemetryClient(TelemetryService.instrumentationKey);t.config.disableAppInsights=!1,t.config.maxBatchSize=250,t.context.tags[t.context.keys.cloudRole]="imcp",TelemetryService.client=t,console.log("Application Insights initialized")}catch(t){console.error("Failed to initialize Application Insights:",t)}}static trackEvent(t,i){this.client&&this.client.trackEvent({name:t,properties:i})}static trackException(t,i){this.client&&this.client.trackException({exception:t,properties:i})}static trackTrace(t,i){this.client&&this.client.trackTrace({message:t,properties:i})}static trackMetric(t,i){this.client&&this.client.trackMetric({name:t,value:i})}static flush(){return new Promise((t=>{this.client?(this.client.flush(),t()):t()}))}}
2
2
  //# sourceMappingURL=TelemetryService.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["appInsights","TelemetryService","static","client","TelemetryClient","instrumentationKey","config","disableAppInsights","maxBatchSize","context","tags","keys","cloudRole","error","trackEvent","name","properties","this","trackException","exception","trackTrace","message","trackMetric","value","flush","Promise","resolve"],"sources":["../../src/services/TelemetryService.ts"],"mappings":"UAAYA,gBAAiB,6BAEvB,MAAOC,iBACHC,cAAoD,KACpDA,0BAAqC,iEAI3C,IACE,MAAMC,EAAS,IAAIH,YAAYI,gBAAgBH,iBAAiBI,oBAChEF,EAAOG,OAAOC,oBAAqB,EACnCJ,EAAOG,OAAOE,aAAe,IAC7BL,EAAOM,QAAQC,KAAKP,EAAOM,QAAQE,KAAKC,WAAa,OACrDX,iBAAiBE,OAASA,CAE5B,CAAE,MAAOU,GAET,CACF,CAEA,iBAAOC,CAAWC,EAAcC,GACzBC,KAAKd,QAGVc,KAAKd,OAAOW,WAAW,CAAEC,OAAMC,cACjC,CAEA,qBAAOE,CAAeL,EAAcG,GAC7BC,KAAKd,QAGVc,KAAKd,OAAOe,eAAe,CAAEC,UAAWN,EAAOG,cACjD,CAEA,iBAAOI,CAAWC,EAAiBL,GAC5BC,KAAKd,QAGVc,KAAKd,OAAOiB,WAAW,CAAEC,UAASL,cACpC,CAEA,kBAAOM,CAAYP,EAAcQ,GAC1BN,KAAKd,QAGVc,KAAKd,OAAOmB,YAAY,CAAEP,OAAMQ,SAClC,CAEA,YAAOC,GACL,OAAO,IAAIC,SAASC,IACbT,KAAKd,QAIVc,KAAKd,OAAOqB,QACZE,KAJEA,GAIO,GAEb","ignoreList":[]}
1
+ {"version":3,"names":["appInsights","TelemetryService","static","client","TelemetryClient","instrumentationKey","config","disableAppInsights","maxBatchSize","context","tags","keys","cloudRole","console","log","error","trackEvent","name","properties","this","trackException","exception","trackTrace","message","trackMetric","value","flush","Promise","resolve"],"sources":["../../src/services/TelemetryService.ts"],"mappings":"UAAYA,gBAAiB,6BAEvB,MAAOC,iBACHC,cAAoD,KACpDA,0BAAqC,iEAI3C,IACE,MAAMC,EAAS,IAAIH,YAAYI,gBAAgBH,iBAAiBI,oBAChEF,EAAOG,OAAOC,oBAAqB,EACnCJ,EAAOG,OAAOE,aAAe,IAC7BL,EAAOM,QAAQC,KAAKP,EAAOM,QAAQE,KAAKC,WAAa,OACrDX,iBAAiBE,OAASA,EAC1BU,QAAQC,IAAI,mCACd,CAAE,MAAOC,GACPF,QAAQE,MAAM,6CAA8CA,EAC9D,CACF,CAEA,iBAAOC,CAAWC,EAAcC,GACzBC,KAAKhB,QAGVgB,KAAKhB,OAAOa,WAAW,CAAEC,OAAMC,cACjC,CAEA,qBAAOE,CAAeL,EAAcG,GAC7BC,KAAKhB,QAGVgB,KAAKhB,OAAOiB,eAAe,CAAEC,UAAWN,EAAOG,cACjD,CAEA,iBAAOI,CAAWC,EAAiBL,GAC5BC,KAAKhB,QAGVgB,KAAKhB,OAAOmB,WAAW,CAAEC,UAASL,cACpC,CAEA,kBAAOM,CAAYP,EAAcQ,GAC1BN,KAAKhB,QAGVgB,KAAKhB,OAAOqB,YAAY,CAAEP,OAAMQ,SAClC,CAEA,YAAOC,GACL,OAAO,IAAIC,SAASC,IACbT,KAAKhB,QAIVgB,KAAKhB,OAAOuB,QACZE,KAJEA,GAIO,GAEb","ignoreList":[]}
@@ -1,2 +1,2 @@
1
- export class UpdateCheckTracker{static instance;operationsInProgress=new Map;operationsLock=Promise.resolve();constructor(){}static getInstance(){return UpdateCheckTracker.instance||(UpdateCheckTracker.instance=new UpdateCheckTracker),UpdateCheckTracker.instance}async withLock(t){const e=this.operationsLock;let s;this.operationsLock=new Promise((t=>s=t));try{return await e,await t()}finally{s()}}async startOperation(t){return await this.withLock((async()=>!this.operationsInProgress.get(t)&&(this.operationsInProgress.set(t,!0),!0)))}async endOperation(t){try{await this.withLock((async()=>{this.operationsInProgress.set(t,!1)}))}catch(t){}}async isOperationInProgress(t){return await this.withLock((async()=>!!this.operationsInProgress.get(t)))}}export const updateCheckTracker=UpdateCheckTracker.getInstance();
1
+ export class UpdateCheckTracker{static instance;operationsInProgress=new Map;operationsLock=Promise.resolve();constructor(){}static getInstance(){return UpdateCheckTracker.instance||(UpdateCheckTracker.instance=new UpdateCheckTracker),UpdateCheckTracker.instance}async withLock(e){const t=this.operationsLock;let r;this.operationsLock=new Promise((e=>r=e));try{return await t,await e()}finally{r()}}async startOperation(e){return await this.withLock((async()=>!this.operationsInProgress.get(e)&&(this.operationsInProgress.set(e,!0),!0)))}async endOperation(e){try{await this.withLock((async()=>{this.operationsInProgress.set(e,!1)}))}catch(t){console.error(`Failed to end operation for key: ${e}`,t)}}async isOperationInProgress(e){return await this.withLock((async()=>!!this.operationsInProgress.get(e)))}}export const updateCheckTracker=UpdateCheckTracker.getInstance();
2
2
  //# sourceMappingURL=UpdateCheckTracker.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["UpdateCheckTracker","static","operationsInProgress","Map","operationsLock","Promise","resolve","constructor","getInstance","instance","withLock","operation","current","this","r","startOperation","key","async","get","set","endOperation","error","isOperationInProgress","updateCheckTracker"],"sources":["../../src/utils/UpdateCheckTracker.ts"],"mappings":"OAIM,MAAOA,mBACDC,gBAGAC,qBAA6C,IAAIC,IAGjDC,eAAgCC,QAAQC,UAEhD,WAAAC,GAAwB,CAKjB,kBAAOC,GAIV,OAHKR,mBAAmBS,WACpBT,mBAAmBS,SAAW,IAAIT,oBAE/BA,mBAAmBS,QAC9B,CAQQ,cAAMC,CAAYC,GACtB,MAAMC,EAAUC,KAAKT,eACrB,IAAIE,EACJO,KAAKT,eAAiB,IAAIC,SAAcS,GAAKR,EAAUQ,IACvD,IAEI,aADMF,QACOD,GACjB,C,QACIL,GACJ,CACJ,CAOA,oBAAMS,CAAeC,GACjB,aAAaH,KAAKH,UAASO,UAClBJ,KAAKX,qBAAqBgB,IAAIF,KAC/BH,KAAKX,qBAAqBiB,IAAIH,GAAK,IAC5B,IAInB,CAMA,kBAAMI,CAAaJ,GACf,UACUH,KAAKH,UAASO,UAChBJ,KAAKX,qBAAqBiB,IAAIH,GAAK,EAAM,GAEjD,CAAE,MAAOK,GAET,CACJ,CAOA,2BAAMC,CAAsBN,GACxB,aAAaH,KAAKH,UAASO,WACdJ,KAAKX,qBAAqBgB,IAAIF,IAE/C,SAIG,MAAMO,mBAAqBvB,mBAAmBQ","ignoreList":[]}
1
+ {"version":3,"names":["UpdateCheckTracker","static","operationsInProgress","Map","operationsLock","Promise","resolve","constructor","getInstance","instance","withLock","operation","current","this","r","startOperation","key","async","get","set","endOperation","error","console","isOperationInProgress","updateCheckTracker"],"sources":["../../src/utils/UpdateCheckTracker.ts"],"mappings":"OAIM,MAAOA,mBACDC,gBAGAC,qBAA6C,IAAIC,IAGjDC,eAAgCC,QAAQC,UAEhD,WAAAC,GAAwB,CAKjB,kBAAOC,GAIV,OAHKR,mBAAmBS,WACpBT,mBAAmBS,SAAW,IAAIT,oBAE/BA,mBAAmBS,QAC9B,CAQQ,cAAMC,CAAYC,GACtB,MAAMC,EAAUC,KAAKT,eACrB,IAAIE,EACJO,KAAKT,eAAiB,IAAIC,SAAcS,GAAKR,EAAUQ,IACvD,IAEI,aADMF,QACOD,GACjB,C,QACIL,GACJ,CACJ,CAOA,oBAAMS,CAAeC,GACjB,aAAaH,KAAKH,UAASO,UAClBJ,KAAKX,qBAAqBgB,IAAIF,KAC/BH,KAAKX,qBAAqBiB,IAAIH,GAAK,IAC5B,IAInB,CAMA,kBAAMI,CAAaJ,GACf,UACUH,KAAKH,UAASO,UAChBJ,KAAKX,qBAAqBiB,IAAIH,GAAK,EAAM,GAEjD,CAAE,MAAOK,GACLC,QAAQD,MAAM,oCAAoCL,IAAOK,EAC7D,CACJ,CAOA,2BAAME,CAAsBP,GACxB,aAAaH,KAAKH,UAASO,WACdJ,KAAKX,qBAAqBgB,IAAIF,IAE/C,SAIG,MAAMQ,mBAAqBxB,mBAAmBQ","ignoreList":[]}
@@ -1,2 +1,2 @@
1
- import{SETTINGS_DIR}from"../core/metadatas/constants.js";import{Logger}from"./logger.js";import{exec}from"child_process";import util from"util";import fs from"fs/promises";import path from"path";const execAsync=util.promisify(exec);async function _setupNpmCredentialProvider(){Logger.debug("Setting up NPM credential provider...");const r="artifacts-npm-credprovider";let e=!1;try{const{stdout:t,stderr:i}=await execAsync(`${r} --help`);Logger.debug(`${r} --help stdout: ${t}`),i&&Logger.debug(`${r} --help stderr: ${i}`),e=!0,Logger.debug(`${r} appears to be installed.`)}catch(e){Logger.debug(`${r} not found or --help failed, attempting installation. Error: ${e}`)}if(!e){Logger.log("Installing @microsoft/artifacts-npm-credprovider...");try{const r="npm install -g @microsoft/artifacts-npm-credprovider --registry https://pkgs.dev.azure.com/mseng/226da8e7-b1c0-4167-9678-53f461e07706/_packaging/AzureArtifacts/npm/registry/",{stdout:e,stderr:t}=await execAsync(r);Logger.debug(`@microsoft/artifacts-npm-credprovider install stdout: ${e}`),t&&Logger.debug(`@microsoft/artifacts-npm-credprovider install stderr: ${t}`),Logger.log("@microsoft/artifacts-npm-credprovider installed successfully.")}catch(r){throw Logger.error("Failed to install @microsoft/artifacts-npm-credprovider",r),new Error(`Failed to install @microsoft/artifacts-npm-credprovider: ${r instanceof Error?r.message:String(r)}`)}}}async function _installPipRequirements(r){Logger.debug(`Installing pip requirements: keyring, artifacts-keyring using ${r}`);try{const e=`${r} -m pip install keyring artifacts-keyring`,{stdout:t,stderr:i}=await execAsync(e);Logger.debug(`pip install keyring artifacts-keyring stdout: ${t}`),i&&Logger.debug(`pip install keyring artifacts-keyring stderr: ${i}`),Logger.log("Successfully installed keyring and artifacts-keyring.")}catch(r){throw Logger.error("Failed to install pip requirements (keyring, artifacts-keyring)",r),new Error(`Failed to install pip requirements: ${r instanceof Error?r.message:String(r)}`)}}async function _configureNpmAdoAuthInDirectory(r,e,t){if(!e||!e.registryUrl||!e.registryName)throw new Error("Registry name and URL are required for NPM ADO auth configuration.");await _setupNpmCredentialProvider();const i=`@${e.registryName}:registry=${e.registryUrl}\nalways-auth=true`,o=path.join(t,".npmrc");await fs.writeFile(o,i.trim()),Logger.debug(`Created/Updated .npmrc file at: ${o}`);const n={...process.env,NUGET_CREDENTIALPROVIDER_VSTS_TOKENTYPE:"SelfDescribing"};Logger.debug(`Running artifacts-npm-credprovider in ${t}`);const{stdout:s,stderr:a}=await r("artifacts-npm-credprovider",{cwd:t,env:n});Logger.debug(`artifacts-npm-credprovider stdout: ${s}`),a&&Logger.debug(`artifacts-npm-credprovider stderr: ${a}`),Logger.log(`Successfully ran artifacts-npm-credprovider in ${t}`)}export async function handleArtifact(r,e,t="python",i){if(!e)throw new Error("Azure DevOps artifacts registry configuration is required.");if(Logger.debug(`Handling ADO artifact for requirement: ${r.name}, type: ${r.type}`),"npm"!==r.type){if("pip"===r.type){if(!e.registryUrl)throw new Error("Registry URL are required for PIP source in Azure DevOps artifacts.");await _installPipRequirements(t);const i=r.version.toLowerCase().includes("latest")?`${r.name} --upgrade`:`${r.name}==${r.version}`;return Logger.log(`Pip requirement ${i} configured with registry ${e.registryUrl}`),{type:"pip",package:i,registryUrl:e.registryUrl,version:r.version}}throw new Error(`Unsupported requirement type for ADO artifact: ${r.type}`)}{if(!e.registryName||!e.registryUrl)throw new Error("Registry name and URL are required for NPM source in Azure DevOps artifacts.");const t=i||path.join(SETTINGS_DIR,"requirements",r.name,r.version);await fs.mkdir(t,{recursive:!0}),Logger.debug(`Ensured directory for npm requirement: ${t}`);try{await _configureNpmAdoAuthInDirectory(execAsync,e,t),Logger.log(`Successfully configured ADO NPM auth for ${r.name} in ${t}`);const i=r.version.includes("latest")?"latest":r.version;return{folderPath:t,type:"npm",package:`@${e.registryName}/${r.name}`,registryUrl:e.registryUrl,version:i}}catch(e){throw Logger.error(`Failed to configure ADO NPM auth for ${r.name} in ${t}`,e),new Error(`ADO NPM auth configuration failed: ${e instanceof Error?e.message:String(e)}`)}}}export async function getArtifactLatestVersion(r,e,t,i){if(e&&e.registryUrl){if(Logger.debug(`Attempting to fetch latest version for ADO artifact: ${r.name} of type ${r.type}`),"npm"===r.type){if(!e.registryName)return void Logger.error("NPM ADO Artifact registry name is missing for fetching latest version.");const t=i||path.join(SETTINGS_DIR,"requirements",r.name,r.version);try{await fs.mkdir(t,{recursive:!0}),Logger.debug(`Ensured directory for NPM ADO version check: ${t}`),await _configureNpmAdoAuthInDirectory(execAsync,e,t),Logger.log(`Successfully configured ADO NPM auth for version check of ${r.name} in ${t}`);const i=`@${e.registryName}/${r.name}`,o=`npm view ${i} version --registry ${e.registryUrl}`;Logger.debug(`Executing for NPM ADO latest version: ${o} in ${t}`);const{stdout:n,stderr:s}=await execAsync(o,{cwd:t});if(s&&!n.trim())return void Logger.error(`Error fetching NPM ADO version for ${i} via npm view: ${s}`);const a=n.trim();return a?(Logger.debug(`Found latest NPM ADO version for ${i}: ${a}`),a):void Logger.log(`Could not parse latest NPM version from ADO for ${i} from output: '${n}'`)}catch(e){return void Logger.error(`Exception fetching latest NPM version from ADO for ${r.name} in ${t}: ${e instanceof Error?e.message:String(e)}`)}}else if("pip"===r.type)try{const i=`${t?.settings?.pythonEnv||"python"} -m pip index versions ${r.name} --extra-index-url ${e.registryUrl}`;Logger.debug(`Executing for Pip ADO latest version: ${i}`);const{stdout:o,stderr:n}=await execAsync(i);if(n&&!o.trim())return void Logger.error(`Error fetching Pip ADO version for ${r.name}: ${n}`);const s=o.match(/(?:LATEST|Latest):\s*([^\s]+)/);if(s&&s[1])return Logger.debug(`Found latest Pip ADO version via LATEST line: ${s[1]}`),s[1];const a=o.match(/(?:Available versions|VERSIONS):\s*([^\n]+)/);if(a&&a[1]){const r=a[1].split(",").map((r=>r.trim())).filter((r=>r));if(r.length>0)return Logger.debug(`Found Pip ADO versions: ${r.join(", ")}. Taking the first one: ${r[0]}`),r[0]}return void Logger.log(`Could not parse latest Pip version from ADO for ${r.name} from output: ${o}`)}catch(e){return void Logger.error(`Exception fetching latest Pip version from ADO for ${r.name}: ${e instanceof Error?e.message:String(e)}`)}Logger.log(`getArtifactLatestVersion not implemented for type '${r.type}' or encountered an issue.`)}else Logger.error("ADO Artifact registry URL is missing for fetching latest version.")}
1
+ import{SETTINGS_DIR}from"../core/metadatas/constants.js";import{Logger}from"./logger.js";import{exec}from"child_process";import util from"util";import fs from"fs/promises";import path from"path";const execAsync=util.promisify(exec);async function _setupNpmCredentialProvider(){Logger.debug("Setting up NPM credential provider...");const r="artifacts-npm-credprovider";let e=!1;try{const{stdout:t,stderr:i}=await execAsync(`${r} --help`);Logger.debug(`${r} --help stdout: ${t}`),i&&Logger.debug(`${r} --help stderr: ${i}`),e=!0,Logger.debug(`${r} appears to be installed.`)}catch(e){Logger.debug(`${r} not found or --help failed, attempting installation. Error: ${e}`)}if(!e){Logger.log("Installing @microsoft/artifacts-npm-credprovider...");try{const r="npm install -g @microsoft/artifacts-npm-credprovider --registry https://pkgs.dev.azure.com/mseng/226da8e7-b1c0-4167-9678-53f461e07706/_packaging/AzureArtifacts/npm/registry/",{stdout:e,stderr:t}=await execAsync(r);Logger.debug(`@microsoft/artifacts-npm-credprovider install stdout: ${e}`),t&&Logger.debug(`@microsoft/artifacts-npm-credprovider install stderr: ${t}`),Logger.log("@microsoft/artifacts-npm-credprovider installed successfully.")}catch(r){throw Logger.error("Failed to install @microsoft/artifacts-npm-credprovider",r),new Error(`Failed to install @microsoft/artifacts-npm-credprovider: ${r instanceof Error?r.message:String(r)}`)}}}async function _installPipRequirements(r){Logger.debug(`Installing pip requirements: keyring, artifacts-keyring using ${r}`);try{const e=`${r} -m pip install keyring artifacts-keyring`,{stdout:t,stderr:i}=await execAsync(e);Logger.debug(`pip install keyring artifacts-keyring stdout: ${t}`),i&&Logger.debug(`pip install keyring artifacts-keyring stderr: ${i}`),Logger.log("Successfully installed keyring and artifacts-keyring.")}catch(r){throw Logger.error("Failed to install pip requirements (keyring, artifacts-keyring)",r),new Error(`Failed to install pip requirements: ${r instanceof Error?r.message:String(r)}`)}}async function _configureNpmAdoAuthInDirectory(r,e,t){if(!e||!e.registryUrl||!e.registryName)throw new Error("Registry name and URL are required for NPM ADO auth configuration.");await _setupNpmCredentialProvider();const i=`@${e.registryName}:registry=${e.registryUrl}\nalways-auth=true`,o=path.join(t,".npmrc");await fs.writeFile(o,i.trim()),Logger.debug(`Created/Updated .npmrc file at: ${o}`);const n={...process.env,NUGET_CREDENTIALPROVIDER_VSTS_TOKENTYPE:"SelfDescribing"};Logger.debug(`Running artifacts-npm-credprovider in ${t}`);const{stdout:s,stderr:a}=await r("artifacts-npm-credprovider",{cwd:t,env:n});Logger.debug(`artifacts-npm-credprovider stdout: ${s}`),a&&Logger.debug(`artifacts-npm-credprovider stderr: ${a}`),Logger.log(`Successfully ran artifacts-npm-credprovider in ${t}`)}export async function handleArtifact(r,e,t="python",i){if(!e)throw new Error("Azure DevOps artifacts registry configuration is required.");if(Logger.debug(`Handling ADO artifact for requirement: ${r.name}, type: ${r.type}`),"npm"!==r.type){if("pip"===r.type){if(!e.registryUrl)throw new Error("Registry URL are required for PIP source in Azure DevOps artifacts.");await _installPipRequirements(t);const i=r.version.toLowerCase().includes("latest")?`${r.name} --upgrade`:`${r.name}==${r.version}`;return Logger.log(`Pip requirement ${i} configured with registry ${e.registryUrl}`),{type:"pip",package:i,registryUrl:e.registryUrl,version:r.version}}throw new Error(`Unsupported requirement type for ADO artifact: ${r.type}`)}{if(!e.registryName||!e.registryUrl)throw new Error("Registry name and URL are required for NPM source in Azure DevOps artifacts.");const t=i||path.join(SETTINGS_DIR,"requirements",r.name,r.version);await fs.mkdir(t,{recursive:!0}),Logger.debug(`Ensured directory for npm requirement: ${t}`);try{await _configureNpmAdoAuthInDirectory(execAsync,e,t),Logger.log(`Successfully configured ADO NPM auth for ${r.name} in ${t}`);const i=r.version.includes("latest")?"latest":r.version;return{folderPath:t,type:"npm",package:`@${e.registryName}/${r.name}`,registryUrl:e.registryUrl,version:i}}catch(e){throw Logger.error(`Failed to configure ADO NPM auth for ${r.name} in ${t}`,e),new Error(`ADO NPM auth configuration failed: ${e instanceof Error?e.message:String(e)}`)}}}export async function getArtifactLatestVersion(r,e,t,i){if(e&&e.registryUrl){if(Logger.debug(`Attempting to fetch latest version for ADO artifact: ${r.name} of type ${r.type}`),"npm"===r.type){if(!e.registryName)return void Logger.error("NPM ADO Artifact registry name is missing for fetching latest version.");const t=i||path.join(SETTINGS_DIR,"requirements",r.name,r.version);try{await fs.mkdir(t,{recursive:!0}),Logger.debug(`Ensured directory for NPM ADO version check: ${t}`),await _configureNpmAdoAuthInDirectory(execAsync,e,t),Logger.log(`Successfully configured ADO NPM auth for version check of ${r.name} in ${t}`);const i=`@${e.registryName}/${r.name}`,o=`npm view ${i} version --registry ${e.registryUrl}`;Logger.debug(`Executing for NPM ADO latest version: ${o} in ${t}`);const{stdout:n,stderr:s}=await execAsync(o,{cwd:t});if(s&&!n.trim())return void Logger.error(`Error fetching NPM ADO version for ${i} via npm view: ${s}`);const a=n.trim();return a?(Logger.debug(`Found latest NPM ADO version for ${i}: ${a}`),a):void Logger.log(`Could not parse latest NPM version from ADO for ${i} from output: '${n}'`)}catch(e){return void Logger.error(`Exception fetching latest NPM version from ADO for ${r.name} in ${t}: ${e instanceof Error?e.message:String(e)}`)}}else if("pip"===r.type)try{const i=`${`${t?.settings?.pythonEnv||"python"} -m pip`} index versions ${r.name} --extra-index-url ${e.registryUrl}`;Logger.debug(`Executing for Pip ADO latest version: ${i}`);const{stdout:o,stderr:n}=await execAsync(i);if(n&&!o.trim())return void Logger.error(`Error fetching Pip ADO version for ${r.name}: ${n}`);const s=o.match(/(?:LATEST|Latest):\s*([^\s]+)/);if(s&&s[1])return Logger.debug(`Found latest Pip ADO version via LATEST line: ${s[1]}`),s[1];const a=o.match(/(?:Available versions|VERSIONS):\s*([^\n]+)/);if(a&&a[1]){const r=a[1].split(",").map((r=>r.trim())).filter((r=>r));if(r.length>0)return Logger.debug(`Found Pip ADO versions: ${r.join(", ")}. Taking the first one: ${r[0]}`),r[0]}return void Logger.log(`Could not parse latest Pip version from ADO for ${r.name} from output: ${o}`)}catch(e){return void Logger.error(`Exception fetching latest Pip version from ADO for ${r.name}: ${e instanceof Error?e.message:String(e)}`)}Logger.log(`getArtifactLatestVersion not implemented for type '${r.type}' or encountered an issue.`)}else Logger.error("ADO Artifact registry URL is missing for fetching latest version.")}
2
2
  //# sourceMappingURL=adoUtils.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["SETTINGS_DIR","Logger","exec","util","fs","path","execAsync","promisify","async","_setupNpmCredentialProvider","debug","credProviderCommand","installed","stdout","stderr","e","log","installCommand","installStdout","installStderr","error","Error","message","String","_installPipRequirements","pythonCommand","command","_configureNpmAdoAuthInDirectory","execPromise","registry","directoryPath","registryUrl","registryName","npmrcContent","npmrcPath","join","writeFile","trim","env","process","NUGET_CREDENTIALPROVIDER_VSTS_TOKENTYPE","credProviderStdout","credProviderStderr","cwd","handleArtifact","requirement","targetDir","name","type","packageName","version","toLowerCase","includes","package","requirementDir","mkdir","recursive","folderPath","getArtifactLatestVersion","options","fullPackageName","settings","pythonEnv","latestMatch","match","versionsMatch","versions","split","map","v","filter","length"],"sources":["../../src/utils/adoUtils.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["SETTINGS_DIR","Logger","exec","util","fs","path","execAsync","promisify","async","_setupNpmCredentialProvider","debug","credProviderCommand","installed","stdout","stderr","e","log","installCommand","installStdout","installStderr","error","Error","message","String","_installPipRequirements","pythonCommand","command","_configureNpmAdoAuthInDirectory","execPromise","registry","directoryPath","registryUrl","registryName","npmrcContent","npmrcPath","join","writeFile","trim","env","process","NUGET_CREDENTIALPROVIDER_VSTS_TOKENTYPE","credProviderStdout","credProviderStderr","cwd","handleArtifact","requirement","targetDir","name","type","packageName","version","toLowerCase","includes","package","requirementDir","mkdir","recursive","folderPath","getArtifactLatestVersion","options","fullPackageName","settings","pythonEnv","latestMatch","match","versionsMatch","versions","split","map","v","filter","length"],"sources":["../../src/utils/adoUtils.ts"],"mappings":"OACSA,iBAAoB,wCACpBC,WAAc,qBACdC,SAAsB,uBACxBC,SAAU,cACVC,OAAQ,qBACRC,SAAU,OAGjB,MAAMC,UAAYH,KAAKI,UAAUL,MAejCM,eAAeC,8BACXR,OAAOS,MAAM,yCACb,MAAMC,EAAsB,6BAI5B,IAAIC,GAAY,EAChB,IAEI,MAAMC,OAAEA,EAAMC,OAAEA,SAAiBR,UAAU,GAAGK,YAC9CV,OAAOS,MAAM,GAAGC,oBAAsCE,KAClDC,GAAQb,OAAOS,MAAM,GAAGC,oBAAsCG,KAClEF,GAAY,EACZX,OAAOS,MAAM,GAAGC,6BACpB,CAAE,MAAOI,GACLd,OAAOS,MAAM,GAAGC,iEAAmFI,IACvG,CAEA,IAAKH,EAAW,CACZX,OAAOe,IAAI,uDACX,IACI,MAAMC,EAAiB,iLACfJ,OAAQK,EAAeJ,OAAQK,SAAwBb,UAAUW,GACzEhB,OAAOS,MAAM,yDAAyDQ,KAClEC,GAAelB,OAAOS,MAAM,yDAAyDS,KACzFlB,OAAOe,IAAI,gEACf,CAAE,MAAOI,GAEL,MADAnB,OAAOmB,MAAM,0DAA2DA,GAClE,IAAIC,MAAM,4DAA4DD,aAAiBC,MAAQD,EAAME,QAAUC,OAAOH,KAChI,CACJ,CACJ,CAOAZ,eAAegB,wBAAwBC,GACnCxB,OAAOS,MAAM,iEAAiEe,KAC9E,IACI,MAAMC,EAAU,GAAGD,8CACbZ,OAAEA,EAAMC,OAAEA,SAAiBR,UAAUoB,GAC3CzB,OAAOS,MAAM,iDAAiDG,KAC1DC,GAAQb,OAAOS,MAAM,iDAAiDI,KAC1Eb,OAAOe,IAAI,wDACf,CAAE,MAAOI,GAEL,MADAnB,OAAOmB,MAAM,kEAAmEA,GAC1E,IAAIC,MAAM,uCAAuCD,aAAiBC,MAAQD,EAAME,QAAUC,OAAOH,KAC3G,CACJ,CAWAZ,eAAemB,gCACXC,EACAC,EACAC,GAEA,IAAKD,IAAaA,EAASE,cAAgBF,EAASG,aAChD,MAAM,IAAIX,MAAM,4EAGdZ,8BAEN,MAAMwB,EAAe,IAAIJ,EAASG,yBAAyBH,EAASE,gCAC9DG,EAAY7B,KAAK8B,KAAKL,EAAe,gBACrC1B,GAAGgC,UAAUF,EAAWD,EAAaI,QAC3CpC,OAAOS,MAAM,mCAAmCwB,KAEhD,MAAMI,EAAM,IAAKC,QAAQD,IAAKE,wCAAyC,kBACvEvC,OAAOS,MAAM,yCAAyCoB,KACtD,MAAQjB,OAAQ4B,EAAoB3B,OAAQ4B,SAA6Bd,EAAY,6BAA8B,CAAEe,IAAKb,EAAeQ,QACzIrC,OAAOS,MAAM,sCAAsC+B,KAC/CC,GAAoBzC,OAAOS,MAAM,sCAAsCgC,KAC3EzC,OAAOe,IAAI,kDAAkDc,IACjE,QAUOtB,eAAeoC,eAClBC,EACAhB,EACAJ,EAAwB,SACxBqB,GAEA,IAAKjB,EACD,MAAM,IAAIR,MAAM,8DAIpB,GAFApB,OAAOS,MAAM,0CAA0CmC,EAAYE,eAAeF,EAAYG,QAErE,QAArBH,EAAYG,KAyBT,IAAyB,QAArBH,EAAYG,KAAgB,CACnC,IAAKnB,EAASE,YACV,MAAM,IAAIV,MAAM,6EAEdG,wBAAwBC,GAE9B,MAAMwB,EAAcJ,EAAYK,QAAQC,cAAcC,SAAS,UACzD,GAAGP,EAAYE,iBACf,GAAGF,EAAYE,SAASF,EAAYK,UAG1C,OADAjD,OAAOe,IAAI,mBAAmBiC,8BAAwCpB,EAASE,eACxE,CACHiB,KAAM,MACNK,QAASJ,EACTlB,YAAaF,EAASE,YACtBmB,QAASL,EAAYK,QAE7B,CACI,MAAM,IAAI7B,MAAM,kDAAkDwB,EAAYG,OAClF,CA5CgC,CAC5B,IAAKnB,EAASG,eAAiBH,EAASE,YACpC,MAAM,IAAIV,MAAM,gFAEpB,MAAMiC,EAAiBR,GAAazC,KAAK8B,KAAKnC,aAAc,eAAgB6C,EAAYE,KAAMF,EAAYK,eACpG9C,GAAGmD,MAAMD,EAAgB,CAAEE,WAAW,IAC5CvD,OAAOS,MAAM,0CAA0C4C,KAEvD,UACU3B,gCAAgCrB,UAAWuB,EAAUyB,GAC3DrD,OAAOe,IAAI,4CAA4C6B,EAAYE,WAAWO,KAE9E,MAAMJ,EAAUL,EAAYK,QAAQE,SAAS,UAAY,SAAWP,EAAYK,QAChF,MAAO,CACHO,WAAYH,EACZN,KAAM,MACNK,QAAS,IAAIxB,EAASG,gBAAgBa,EAAYE,OAClDhB,YAAaF,EAASE,YACtBmB,QAASA,EAEjB,CAAE,MAAO9B,GAEL,MADAnB,OAAOmB,MAAM,wCAAwCyB,EAAYE,WAAWO,IAAkBlC,GACxF,IAAIC,MAAM,sCAAsCD,aAAiBC,MAAQD,EAAME,QAAUC,OAAOH,KAC1G,CAEJ,CAoBJ,QAWOZ,eAAekD,yBAClBb,EACAhB,EACA8B,EACAb,GAEA,GAAKjB,GAAaA,EAASE,YAA3B,CAOA,GAFA9B,OAAOS,MAAM,wDAAwDmC,EAAYE,gBAAgBF,EAAYG,QAEpF,QAArBH,EAAYG,KAAgB,CAC5B,IAAKnB,EAASG,aAEV,YADA/B,OAAOmB,MAAM,0EAIjB,MAAMkC,EAAiBR,GAAazC,KAAK8B,KAAKnC,aAAc,eAAgB6C,EAAYE,KAAMF,EAAYK,SAE1G,UACU9C,GAAGmD,MAAMD,EAAgB,CAAEE,WAAW,IAC5CvD,OAAOS,MAAM,gDAAgD4C,WAGvD3B,gCAAgCrB,UAAWuB,EAAUyB,GAC3DrD,OAAOe,IAAI,6DAA6D6B,EAAYE,WAAWO,KAE/F,MAAMM,EAAkB,IAAI/B,EAASG,gBAAgBa,EAAYE,OAC3DrB,EAAU,YAAYkC,wBAAsC/B,EAASE,cAC3E9B,OAAOS,MAAM,yCAAyCgB,QAAc4B,KAEpE,MAAMzC,OAAEA,EAAMC,OAAEA,SAAiBR,UAAUoB,EAAS,CAAEiB,IAAKW,IAE3D,GAAIxC,IAAWD,EAAOwB,OAElB,YADApC,OAAOmB,MAAM,sCAAsCwC,mBAAiC9C,KAIxF,MAAMoC,EAAUrC,EAAOwB,OACvB,OAAIa,GACAjD,OAAOS,MAAM,oCAAoCkD,MAAoBV,KAC9DA,QAEPjD,OAAOe,IAAI,mDAAmD4C,mBAAiC/C,KAGvG,CAAE,MAAOO,GAEL,YADAnB,OAAOmB,MAAM,sDAAsDyB,EAAYE,WAAWO,MAAmBlC,aAAiBC,MAAQD,EAAME,QAAUC,OAAOH,KAEjK,CACJ,MAAO,GAAyB,QAArByB,EAAYG,KACnB,IACI,MASMtB,EAAU,GARD,GADGiC,GAASE,UAAUC,WAAuB,oCAShBjB,EAAYE,0BAA0BlB,EAASE,cAC3F9B,OAAOS,MAAM,yCAAyCgB,KACtD,MAAMb,OAAEA,EAAMC,OAAEA,SAAiBR,UAAUoB,GAE3C,GAAIZ,IAAWD,EAAOwB,OAElB,YADApC,OAAOmB,MAAM,sCAAsCyB,EAAYE,SAASjC,KAY5E,MAAMiD,EAAclD,EAAOmD,MAAM,iCACjC,GAAID,GAAeA,EAAY,GAE3B,OADA9D,OAAOS,MAAM,iDAAiDqD,EAAY,MACnEA,EAAY,GAIvB,MAAME,EAAgBpD,EAAOmD,MAAM,+CACnC,GAAIC,GAAiBA,EAAc,GAAI,CACnC,MAAMC,EAAWD,EAAc,GAAGE,MAAM,KAAKC,KAAIC,GAAKA,EAAEhC,SAAQiC,QAAOD,GAAKA,IAC5E,GAAIH,EAASK,OAAS,EAIlB,OADAtE,OAAOS,MAAM,2BAA2BwD,EAAS/B,KAAK,gCAAgC+B,EAAS,MACxFA,EAAS,EAExB,CAGA,YADAjE,OAAOe,IAAI,mDAAmD6B,EAAYE,qBAAqBlC,IAEnG,CAAE,MAAOO,GAEL,YADAnB,OAAOmB,MAAM,sDAAsDyB,EAAYE,SAAS3B,aAAiBC,MAAQD,EAAME,QAAUC,OAAOH,KAE5I,CAGJnB,OAAOe,IAAI,sDAAsD6B,EAAYG,iCAjG7E,MAFI/C,OAAOmB,MAAM,oEAqGrB","ignoreList":[]}
@@ -1,2 +1,2 @@
1
- import fs from"fs/promises";import*as path from"path";import extractZipModule from"extract-zip";export async function extractZipFile(r,e){try{if("function"==typeof extractZipModule)return await extractZipModule(r,e);const t=require("fs"),i=require("unzipper");return await t.promises.mkdir(e.dir,{recursive:!0}),new Promise(((o,a)=>{t.createReadStream(r).pipe(i.Extract({path:e.dir})).on("close",o).on("error",a)}))}catch(e){throw new Error(`Failed to extract zip file ${r}: ${e instanceof Error?e.message:"Unknown error"}`)}}import stripJsonComments from"strip-json-comments";export async function readJsonFile(r,e=!1){try{e&&await fs.mkdir(path.dirname(r),{recursive:!0});const t=await fs.readFile(r,"utf8"),i=stripJsonComments(t).replace(/,(\s*[}\]])/g,"$1");return JSON.parse(i)}catch(r){if("ENOENT"===r.code&&e)return{};throw r}}export async function writeJsonFile(r,e){await fs.mkdir(path.dirname(r),{recursive:!0}),await fs.writeFile(r,JSON.stringify(e,null,2),"utf8")}
1
+ import fs from"fs/promises";import*as path from"path";import extractZipModule from"extract-zip";export async function extractZipFile(r,e){try{if("function"==typeof extractZipModule)return await extractZipModule(r,e);const t=require("fs"),i=require("unzipper");return await t.promises.mkdir(e.dir,{recursive:!0}),new Promise(((o,a)=>{t.createReadStream(r).pipe(i.Extract({path:e.dir})).on("close",o).on("error",a)}))}catch(e){throw console.error(`Error extracting zip: ${e instanceof Error?e.message:String(e)}`),new Error(`Failed to extract zip file ${r}: ${e instanceof Error?e.message:"Unknown error"}`)}}import stripJsonComments from"strip-json-comments";export async function readJsonFile(r,e=!1){try{e&&await fs.mkdir(path.dirname(r),{recursive:!0});const t=await fs.readFile(r,"utf8"),i=stripJsonComments(t).replace(/,(\s*[}\]])/g,"$1");return JSON.parse(i)}catch(r){if("ENOENT"===r.code&&e)return{};throw r}}export async function writeJsonFile(r,e){await fs.mkdir(path.dirname(r),{recursive:!0}),await fs.writeFile(r,JSON.stringify(e,null,2),"utf8")}
2
2
  //# sourceMappingURL=clientUtils.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["fs","path","extractZipModule","async","extractZipFile","zipPath","options","require","unzipper","promises","mkdir","dir","recursive","Promise","resolve","reject","createReadStream","pipe","Extract","on","error","Error","message","stripJsonComments","readJsonFile","filePath","createIfNotExist","dirname","content","readFile","sanitizedContent","replace","JSON","parse","code","writeJsonFile","writeFile","stringify"],"sources":["../../src/utils/clientUtils.ts"],"mappings":"OAAOA,OAAQ,wBACHC,SAAU,cACfC,qBAAsB,qBAQtBC,eAAeC,eAAeC,EAAiBC,GAClD,IAEI,GAAgC,mBAArBJ,iBACP,aAAaA,iBAAiBG,EAASC,GAI3C,MAAMN,EAAKO,QAAQ,MACbC,EAAWD,QAAQ,YAIzB,aAFMP,EAAGS,SAASC,MAAMJ,EAAQK,IAAK,CAAEC,WAAW,IAE3C,IAAIC,SAAc,CAACC,EAASC,KAC/Bf,EAAGgB,iBAAiBX,GACfY,KAAKT,EAASU,QAAQ,CAAEjB,KAAMK,EAAQK,OACtCQ,GAAG,QAASL,GACZK,GAAG,QAASJ,EAAO,GAEhC,CAAE,MAAOK,GAEL,MAAM,IAAIC,MAAM,8BAA8BhB,MAAYe,aAAiBC,MAAQD,EAAME,QAAU,kBACvG,CACJ,QASOC,sBAAuB,6BAEvBpB,eAAeqB,aAAaC,EAAkBC,GAAmB,GACpE,IAEQA,SACM1B,GAAGU,MAAMT,KAAK0B,QAAQF,GAAW,CAAEb,WAAW,IAGxD,MAAMgB,QAAgB5B,GAAG6B,SAASJ,EAAU,QAEtCK,EAAmBP,kBAAkBK,GAASG,QAAQ,eAAgB,MAC5E,OAAOC,KAAKC,MAAMH,EACtB,CAAE,MAAOV,GACL,GAA8C,WAAzCA,EAAgCc,MAAqBR,EACtD,MAAO,GAEX,MAAMN,CACV,CACJ,QAOOjB,eAAegC,cAAcV,EAAkBG,SAC5C5B,GAAGU,MAAMT,KAAK0B,QAAQF,GAAW,CAAEb,WAAW,UAC9CZ,GAAGoC,UAAUX,EAAUO,KAAKK,UAAUT,EAAS,KAAM,GAAI,OACnE","ignoreList":[]}
1
+ {"version":3,"names":["fs","path","extractZipModule","async","extractZipFile","zipPath","options","require","unzipper","promises","mkdir","dir","recursive","Promise","resolve","reject","createReadStream","pipe","Extract","on","error","console","Error","message","String","stripJsonComments","readJsonFile","filePath","createIfNotExist","dirname","content","readFile","sanitizedContent","replace","JSON","parse","code","writeJsonFile","writeFile","stringify"],"sources":["../../src/utils/clientUtils.ts"],"mappings":"OAAOA,OAAQ,wBACHC,SAAU,cACfC,qBAAsB,qBAQtBC,eAAeC,eAAeC,EAAiBC,GAClD,IAEI,GAAgC,mBAArBJ,iBACP,aAAaA,iBAAiBG,EAASC,GAI3C,MAAMN,EAAKO,QAAQ,MACbC,EAAWD,QAAQ,YAIzB,aAFMP,EAAGS,SAASC,MAAMJ,EAAQK,IAAK,CAAEC,WAAW,IAE3C,IAAIC,SAAc,CAACC,EAASC,KAC/Bf,EAAGgB,iBAAiBX,GACfY,KAAKT,EAASU,QAAQ,CAAEjB,KAAMK,EAAQK,OACtCQ,GAAG,QAASL,GACZK,GAAG,QAASJ,EAAO,GAEhC,CAAE,MAAOK,GAEL,MADAC,QAAQD,MAAM,yBAAyBA,aAAiBE,MAAQF,EAAMG,QAAUC,OAAOJ,MACjF,IAAIE,MAAM,8BAA8BjB,MAAYe,aAAiBE,MAAQF,EAAMG,QAAU,kBACvG,CACJ,QASOE,sBAAuB,6BAEvBtB,eAAeuB,aAAaC,EAAkBC,GAAmB,GACpE,IAEQA,SACM5B,GAAGU,MAAMT,KAAK4B,QAAQF,GAAW,CAAEf,WAAW,IAGxD,MAAMkB,QAAgB9B,GAAG+B,SAASJ,EAAU,QAEtCK,EAAmBP,kBAAkBK,GAASG,QAAQ,eAAgB,MAC5E,OAAOC,KAAKC,MAAMH,EACtB,CAAE,MAAOZ,GACL,GAA8C,WAAzCA,EAAgCgB,MAAqBR,EACtD,MAAO,GAEX,MAAMR,CACV,CACJ,QAOOjB,eAAekC,cAAcV,EAAkBG,SAC5C9B,GAAGU,MAAMT,KAAK4B,QAAQF,GAAW,CAAEf,WAAW,UAC9CZ,GAAGsC,UAAUX,EAAUO,KAAKK,UAAUT,EAAS,KAAM,GAAI,OACnE","ignoreList":[]}
@@ -1,2 +1,2 @@
1
- import fs from"fs/promises";import{Logger}from"./logger.js";import{LOCAL_FEEDS_DIR}from"../core/metadatas/constants.js";export async function hasLocalFeeds(){try{if(Logger.debug("Checking for local feeds existence"),!await fs.access(LOCAL_FEEDS_DIR).then((()=>!0)).catch((()=>!1)))return Logger.debug("Local feeds directory does not exist"),!1;const e=(await fs.readdir(LOCAL_FEEDS_DIR)).some((e=>e.endsWith(".json")));return Logger.debug(`Local feeds directory ${e?"contains":"does not contain"} JSON files`),e}catch(e){return Logger.error("Error checking local feeds:",e),!1}}
1
+ import fs from"fs/promises";import{Logger}from"./logger.js";import{LOCAL_FEEDS_DIR}from"../core/metadatas/constants.js";export async function hasLocalFeeds(){try{Logger.debug("Checking for local feeds existence");if(!await fs.access(LOCAL_FEEDS_DIR).then((()=>!0)).catch((()=>!1)))return Logger.debug("Local feeds directory does not exist"),!1;const e=(await fs.readdir(LOCAL_FEEDS_DIR)).some((e=>e.endsWith(".json")));return Logger.debug(`Local feeds directory ${e?"contains":"does not contain"} JSON files`),e}catch(e){return Logger.error("Error checking local feeds:",e),!1}}
2
2
  //# sourceMappingURL=feedUtils.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["fs","Logger","LOCAL_FEEDS_DIR","async","hasLocalFeeds","debug","access","then","catch","hasJsonFiles","readdir","some","file","endsWith","error"],"sources":["../../src/utils/feedUtils.ts"],"mappings":"OAAOA,OAAQ,qBACNC,WAAc,qBACdC,oBAAuB,wCAMzBC,eAAeC,gBACpB,IAME,GALAH,OAAOI,MAAM,6CACYL,GAAGM,OAAOJ,iBAChCK,MAAK,KAAM,IACXC,OAAM,KAAM,IAIb,OADAP,OAAOI,MAAM,yCACN,EAIT,MACMI,SADcT,GAAGU,QAAQR,kBACJS,MAAKC,GAAQA,EAAKC,SAAS,WAGtD,OADAZ,OAAOI,MAAM,yBAAyBI,EAAe,WAAa,iCAC3DA,CACT,CAAE,MAAOK,GAEP,OADAb,OAAOa,MAAM,8BAA+BA,IACrC,CACT,CACF","ignoreList":[]}
1
+ {"version":3,"names":["fs","Logger","LOCAL_FEEDS_DIR","async","hasLocalFeeds","debug","access","then","catch","hasJsonFiles","readdir","some","file","endsWith","error"],"sources":["../../src/utils/feedUtils.ts"],"mappings":"OAAOA,OAAQ,qBACNC,WAAc,qBACdC,oBAAuB,wCAMzBC,eAAeC,gBACpB,IACEH,OAAOI,MAAM,sCAKb,UAJyBL,GAAGM,OAAOJ,iBAChCK,MAAK,KAAM,IACXC,OAAM,KAAM,IAIb,OADAP,OAAOI,MAAM,yCACN,EAIT,MACMI,SADcT,GAAGU,QAAQR,kBACJS,MAAKC,GAAQA,EAAKC,SAAS,WAGtD,OADAZ,OAAOI,MAAM,yBAAyBI,EAAe,WAAa,iCAC3DA,CACT,CAAE,MAAOK,GAEP,OADAb,OAAOa,MAAM,8BAA+BA,IACrC,CACT,CACF","ignoreList":[]}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Clone a Git repository to a local directory
3
+ * @param repoUrl Git repository URL to clone
4
+ * @param branch Branch to checkout (defaults to 'main')
5
+ * @param targetDir Target directory to clone into
6
+ * @returns Promise that resolves when clone operation completes
7
+ */
8
+ export declare function cloneGitRepository(repoUrl: string, branch: string | undefined, targetDir: string): Promise<void>;
9
+ /**
10
+ * Fetch the latest changes from a Git repository
11
+ * @param repoDir Local repository directory
12
+ * @param branch Branch to checkout
13
+ * @returns Promise that resolves when fetch operation completes
14
+ */
15
+ export declare function fetchLatestChanges(repoDir: string, branch?: string): Promise<void>;
@@ -0,0 +1,2 @@
1
+ import{exec}from"child_process";import util from"util";import fs from"fs/promises";import path from"path";import{Logger}from"./logger.js";import{isToolInstalled}from"./osUtils.js";const execAsync=util.promisify(exec);export async function cloneGitRepository(t,e="main",o){try{if(Logger.debug(`Cloning repository ${t} branch ${e} to ${o}`),!await isToolInstalled("git"))throw new Error("Git is not installed. Please install Git and try again.");await fs.mkdir(path.dirname(o),{recursive:!0});try{await fs.rm(o,{recursive:!0,force:!0})}catch(t){}const r=`git clone -b ${e} ${t} "${o}"`;Logger.debug(`Executing git command: ${r}`);const{stdout:i,stderr:c}=await execAsync(r);c&&!c.includes("Cloning into")&&Logger.debug(`Git clone stderr: ${c}`),i&&Logger.debug(`Git clone stdout: ${i}`);try{await fs.access(path.join(o,".git")),Logger.log(`Successfully cloned repository ${t} branch ${e}`)}catch(t){throw new Error(`Repository was not cloned properly. No .git directory found in ${o}`)}}catch(t){const e=t instanceof Error?t.message:String(t);throw Logger.error(`Failed to clone repository: ${e}`,t),new Error(`Failed to clone repository: ${e}`)}}export async function fetchLatestChanges(t,e="main"){try{Logger.debug(`Fetching latest changes from branch ${e} in ${t}`);const o=t;await execAsync("git fetch origin",{cwd:o}),await execAsync(`git checkout ${e}`,{cwd:o}),await execAsync(`git reset --hard origin/${e}`,{cwd:o}),Logger.debug(`Successfully fetched latest changes from branch ${e}`)}catch(t){const e=t instanceof Error?t.message:String(t);throw Logger.error(`Failed to fetch latest changes: ${e}`,t),new Error(`Failed to fetch latest changes: ${e}`)}}
2
+ //# sourceMappingURL=gitUtils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["exec","util","fs","path","Logger","isToolInstalled","execAsync","promisify","async","cloneGitRepository","repoUrl","branch","targetDir","debug","Error","mkdir","dirname","recursive","rm","force","err","cloneCommand","stdout","stderr","includes","access","join","log","error","message","String","fetchLatestChanges","repoDir","cwd"],"sources":["../../src/utils/gitUtils.ts"],"mappings":"OAASA,SAAY,uBACdC,SAAU,cACVC,OAAQ,qBACRC,SAAU,cACRC,WAAc,qBACdC,oBAAuB,eAEhC,MAAMC,UAAYL,KAAKM,UAAUP,aAS1BQ,eAAeC,mBACpBC,EACAC,EAAiB,OACjBC,GAEA,IAIE,GAHAR,OAAOS,MAAM,sBAAsBH,YAAkBC,QAAaC,YAGvDP,gBAAgB,OACzB,MAAM,IAAIS,MAAM,iEAIZZ,GAAGa,MAAMZ,KAAKa,QAAQJ,GAAY,CAAEK,WAAW,IAGrD,UACQf,GAAGgB,GAAGN,EAAW,CAAEK,WAAW,EAAME,OAAO,GACnD,CAAE,MAAOC,GAET,CAGA,MAAMC,EAAe,gBAAgBV,KAAUD,MAAYE,KAC3DR,OAAOS,MAAM,0BAA0BQ,KAEvC,MAAMC,OAAEA,EAAMC,OAAEA,SAAiBjB,UAAUe,GAEvCE,IAAWA,EAAOC,SAAS,iBAC7BpB,OAAOS,MAAM,qBAAqBU,KAGhCD,GACFlB,OAAOS,MAAM,qBAAqBS,KAIpC,UACQpB,GAAGuB,OAAOtB,KAAKuB,KAAKd,EAAW,SACrCR,OAAOuB,IAAI,kCAAkCjB,YAAkBC,IACjE,CAAE,MAAOS,GACP,MAAM,IAAIN,MAAM,kEAAkEF,IACpF,CACF,CAAE,MAAOgB,GACP,MAAMC,EAAUD,aAAiBd,MAAQc,EAAMC,QAAUC,OAAOF,GAEhE,MADAxB,OAAOwB,MAAM,+BAA+BC,IAAWD,GACjD,IAAId,MAAM,+BAA+Be,IACjD,CACF,QAQOrB,eAAeuB,mBACpBC,EACArB,EAAiB,QAEjB,IACEP,OAAOS,MAAM,uCAAuCF,QAAaqB,KAGjE,MAAMC,EAAMD,QAGN1B,UAAU,mBAAoB,CAAE2B,cAGhC3B,UAAU,gBAAgBK,IAAU,CAAEsB,cAGtC3B,UAAU,2BAA2BK,IAAU,CAAEsB,QAEvD7B,OAAOS,MAAM,mDAAmDF,IAClE,CAAE,MAAOiB,GACP,MAAMC,EAAUD,aAAiBd,MAAQc,EAAMC,QAAUC,OAAOF,GAEhE,MADAxB,OAAOwB,MAAM,mCAAmCC,IAAWD,GACrD,IAAId,MAAM,mCAAmCe,IACrD,CACF","ignoreList":[]}
@@ -1,2 +1,2 @@
1
- import fs from"fs";import path from"path";import os from"os";import{SETTINGS_DIR,USER_INFO_PATH}from"../core/metadatas/constants.js";import{TelemetryService}from"../services/TelemetryService.js";import{getPackageVersion}from"./versionUtils.js";export var EventType;!function(t){t.IMCP_SERVE="imcp_serve",t.SERVER_INSTALL="server_install",t.SERVER_UNINSTALL="server_uninstall",t.REQUIREMENT_UPDATE="requirement_update",t.FEED_ONBOARD="feed_onboard",t.FEED_VALIDATE="feed_validate"}(EventType||(EventType={}));export var EventStatus;!function(t){t.SUCCESS="success",t.FAILED="failed"}(EventStatus||(EventStatus={}));export class Logger{static verbose=!1;static fileLoggingEnabled=!0;static logsDir=path.join(SETTINGS_DIR,"logs");static isTestEnvironment=!1;static packageVersion=getPackageVersion().packageVersion;static setVerbose(t){this.verbose=t}static setFileLogging(t){this.fileLoggingEnabled=t}static async ensureLogsDirExists(){try{await fs.promises.mkdir(this.logsDir,{recursive:!0})}catch(t){this.fileLoggingEnabled=!1}}static getLogFileName(){const t=new Date;return`${t.getFullYear()}-${String(t.getMonth()+1).padStart(2,"0")}-${String(t.getDate()).padStart(2,"0")}.log`}static getTimestamp(){return(new Date).toISOString()}static async writeToLogFile(t,e){if(this.fileLoggingEnabled)try{await this.ensureLogsDirExists();const s=path.join(this.logsDir,this.getLogFileName()),i=`[${this.getTimestamp()}] [${t}] ${e}\n`;await fs.promises.appendFile(s,i,{encoding:"utf8"})}catch(t){}}static async log(t){await this.writeToLogFile("INFO",t)}static async info(t){await this.writeToLogFile("INFO",t)}static async warn(t){await this.writeToLogFile("WARN",t)}static async debug(t){let e;"object"==typeof t?(e=JSON.stringify(t,null,2),this.verbose):(e=t,this.verbose),this.verbose&&await this.writeToLogFile("DEBUG",e)}static async error(t,e){let s=t;if(this.verbose&&e)if(e instanceof Error){const t={name:e.name,message:e.message,stack:e.stack};s+=`\nError details: ${JSON.stringify(t,null,2)}`}else s+=`\nError details: ${JSON.stringify(e,null,2)}`;await this.writeToLogFile("ERROR",s)}static getUsername(){try{if("win32"===process.platform)return os.userInfo().username;try{const t=USER_INFO_PATH;if(fs.existsSync(t)){const e=JSON.parse(fs.readFileSync(t,"utf8"));if(e.alias)return e.alias}}catch(t){this.error("Failed to get user info from file",t)}return os.userInfo().username}catch(t){return this.error("Failed to get username",t),"unknown"}}static trackEvent(t,e){try{const s={username:this.getUsername(),packageVersion:this.packageVersion,...e};if(this.verbose&&(this.log(`Event: ${t}`),this.log(JSON.stringify(s,null,2))),Logger.isTestEnvironment)return;try{TelemetryService.trackEvent(t,s),TelemetryService.flush()}catch(t){this.error("Failed to track event in Application Insights",t)}}catch(t){this.error("Failed to log event",t)}}}
1
+ import fs from"fs";import path from"path";import os from"os";import{SETTINGS_DIR,USER_INFO_PATH}from"../core/metadatas/constants.js";import{TelemetryService}from"../services/TelemetryService.js";import{getPackageVersion}from"./versionUtils.js";export var EventType;!function(e){e.IMCP_SERVE="imcp_serve",e.SERVER_INSTALL="server_install",e.SERVER_UNINSTALL="server_uninstall",e.REQUIREMENT_UPDATE="requirement_update",e.FEED_ONBOARD="feed_onboard",e.FEED_VALIDATE="feed_validate"}(EventType||(EventType={}));export var EventStatus;!function(e){e.SUCCESS="success",e.FAILED="failed"}(EventStatus||(EventStatus={}));export class Logger{static verbose=!1;static fileLoggingEnabled=!0;static logsDir=path.join(SETTINGS_DIR,"logs");static isTestEnvironment=!1;static packageVersion=getPackageVersion().packageVersion;static setVerbose(e){this.verbose=e}static setFileLogging(e){this.fileLoggingEnabled=e}static async ensureLogsDirExists(){try{await fs.promises.mkdir(this.logsDir,{recursive:!0})}catch(e){console.error(`Failed to create logs directory: ${e instanceof Error?e.message:String(e)}`),this.fileLoggingEnabled=!1}}static getLogFileName(){const e=new Date;return`${e.getFullYear()}-${String(e.getMonth()+1).padStart(2,"0")}-${String(e.getDate()).padStart(2,"0")}.log`}static getTimestamp(){return(new Date).toISOString()}static async writeToLogFile(e,t){if(this.fileLoggingEnabled)try{await this.ensureLogsDirExists();const s=path.join(this.logsDir,this.getLogFileName()),r=`[${this.getTimestamp()}] [${e}] ${t}\n`;await fs.promises.appendFile(s,r,{encoding:"utf8"})}catch(e){console.error(`Failed to write to log file: ${e instanceof Error?e.message:String(e)}`)}}static async log(e){console.log(e),await this.writeToLogFile("INFO",e)}static async info(e){console.info(e),await this.writeToLogFile("INFO",e)}static async warn(e){console.warn(`${e}`),await this.writeToLogFile("WARN",e)}static async debug(e){let t;"object"==typeof e?(t=JSON.stringify(e,null,2),this.verbose&&console.log(t)):(t=e,this.verbose&&console.log(e)),this.verbose&&await this.writeToLogFile("DEBUG",t)}static async error(e,t){console.error(e);let s=e;if(this.verbose&&t)if(t instanceof Error){const e={name:t.name,message:t.message,stack:t.stack};console.error("Error details:",e),s+=`\nError details: ${JSON.stringify(e,null,2)}`}else console.error("Error details:",t),s+=`\nError details: ${JSON.stringify(t,null,2)}`;await this.writeToLogFile("ERROR",s)}static getUsername(){try{if("win32"===process.platform)return os.userInfo().username;try{const e=USER_INFO_PATH;if(fs.existsSync(e)){const t=JSON.parse(fs.readFileSync(e,"utf8"));if(t.alias)return t.alias}}catch(e){this.error("Failed to get user info from file",e)}return os.userInfo().username}catch(e){return this.error("Failed to get username",e),"unknown"}}static trackEvent(e,t){try{const s={username:this.getUsername(),packageVersion:this.packageVersion,...t};if(this.verbose&&(this.log(`Event: ${e}`),this.log(JSON.stringify(s,null,2))),Logger.isTestEnvironment)return;try{TelemetryService.trackEvent(e,s),TelemetryService.flush()}catch(e){this.error("Failed to track event in Application Insights",e)}}catch(e){this.error("Failed to log event",e)}}}
2
2
  //# sourceMappingURL=logger.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["fs","path","os","SETTINGS_DIR","USER_INFO_PATH","TelemetryService","getPackageVersion","EventType","EventStatus","Logger","static","join","packageVersion","setVerbose","isVerbose","this","verbose","setFileLogging","enabled","fileLoggingEnabled","ensureLogsDirExists","promises","mkdir","logsDir","recursive","error","getLogFileName","now","Date","getFullYear","String","getMonth","padStart","getDate","getTimestamp","toISOString","writeToLogFile","level","content","logFile","logEntry","appendFile","encoding","log","message","info","warn","debug","formattedMessage","JSON","stringify","logMessage","Error","errorDetails","name","stack","getUsername","process","platform","userInfo","username","userInfoPath","existsSync","parse","readFileSync","alias","trackEvent","eventType","dimensions","allDimensions","isTestEnvironment","flush","insightsError"],"sources":["../../src/utils/logger.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["fs","path","os","SETTINGS_DIR","USER_INFO_PATH","TelemetryService","getPackageVersion","EventType","EventStatus","Logger","static","join","packageVersion","setVerbose","isVerbose","this","verbose","setFileLogging","enabled","fileLoggingEnabled","ensureLogsDirExists","promises","mkdir","logsDir","recursive","error","console","Error","message","String","getLogFileName","now","Date","getFullYear","getMonth","padStart","getDate","getTimestamp","toISOString","writeToLogFile","level","content","logFile","logEntry","appendFile","encoding","log","info","warn","debug","formattedMessage","JSON","stringify","logMessage","errorDetails","name","stack","getUsername","process","platform","userInfo","username","userInfoPath","existsSync","parse","readFileSync","alias","trackEvent","eventType","dimensions","allDimensions","isTestEnvironment","flush","insightsError"],"sources":["../../src/utils/logger.ts"],"mappings":"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","ignoreList":[]}
@@ -1,2 +1,2 @@
1
- import{Logger}from"./logger.js";import{getPythonPackagePath,getSystemPythonPackageDirectory,getBrowserPath,getGlobalNPMPackagePath}from"./osUtils.js";export const MACRO_EXPRESSIONS={PYTHON_PACKAGE:"${PYTHON_PACKAGE}",NPMPATH:"${NPMPATH}",BROWSER_PATH:"${BROWSER_PATH}"};export const MacroResolverFunctions={[MACRO_EXPRESSIONS.PYTHON_PACKAGE]:resolvePythonPackageMacro,[MACRO_EXPRESSIONS.NPMPATH]:resolveNpmPathMacro,[MACRO_EXPRESSIONS.BROWSER_PATH]:resolveBrowserPathMacro};export async function resolvePythonPackageMacro(e,o){const t=o.settings?.pythonEnv;if(t){Logger.debug(`Python environment specified for ${MACRO_EXPRESSIONS.PYTHON_PACKAGE}: ${t}`);const o=getPythonPackagePath(t);return o?("python"===e.command&&(Logger.debug(`Replacing command 'python' with specified pythonEnv: ${t} due to ${MACRO_EXPRESSIONS.PYTHON_PACKAGE} resolution`),e.command=t),o):void Logger.debug(`Could not determine directory for pythonEnv: ${t}. ${MACRO_EXPRESSIONS.PYTHON_PACKAGE} will not be replaced using this path.`)}Logger.debug(`No Python environment specified. Attempting to find system Python for ${MACRO_EXPRESSIONS.PYTHON_PACKAGE}.`);return await getSystemPythonPackageDirectory()||void Logger.debug(`Could not find system Python directory for ${MACRO_EXPRESSIONS.PYTHON_PACKAGE}.`)}export function resolveNpmModulePath(e){if(e)return`${e}/node_modules`;const o=getGlobalNPMPackagePath();return Logger.debug(`Resolved ${MACRO_EXPRESSIONS.NPMPATH} via global npm to: ${o}`),o}export async function resolveNpmPathMacro(e,o){Logger.debug(`Resolving ${MACRO_EXPRESSIONS.NPMPATH}. Provided npmPath from settings: ${o.settings?.npmPath}`);try{return resolveNpmModulePath(o.settings?.npmPath)}catch(e){return void Logger.error(`Failed to resolve ${MACRO_EXPRESSIONS.NPMPATH}:`,e)}}export async function resolveBrowserPathMacro(){Logger.debug(`Resolving ${MACRO_EXPRESSIONS.BROWSER_PATH}`);try{const e=await getBrowserPath();return Logger.debug(`Resolved ${MACRO_EXPRESSIONS.BROWSER_PATH} to: ${e}`),e}catch(e){return void Logger.error(`Failed to get system browser path for ${MACRO_EXPRESSIONS.BROWSER_PATH}:`,e)}}
1
+ import{Logger}from"./logger.js";import{getPythonPackagePath,getSystemPythonPackageDirectory,getBrowserPath,getGlobalNPMPackagePath}from"./osUtils.js";export const MACRO_EXPRESSIONS={PYTHON_PACKAGE:"${PYTHON_PACKAGE}",NPMPATH:"${NPMPATH}",BROWSER_PATH:"${BROWSER_PATH}"};export const MacroResolverFunctions={[MACRO_EXPRESSIONS.PYTHON_PACKAGE]:resolvePythonPackageMacro,[MACRO_EXPRESSIONS.NPMPATH]:resolveNpmPathMacro,[MACRO_EXPRESSIONS.BROWSER_PATH]:resolveBrowserPathMacro};export async function resolvePythonPackageMacro(e,o){const t=o.settings?.pythonEnv;if(t){Logger.debug(`Python environment specified for ${MACRO_EXPRESSIONS.PYTHON_PACKAGE}: ${t}`);const o=getPythonPackagePath(t);return o?("python"===e.command&&(Logger.debug(`Replacing command 'python' with specified pythonEnv: ${t} due to ${MACRO_EXPRESSIONS.PYTHON_PACKAGE} resolution`),e.command=t),o):void Logger.debug(`Could not determine directory for pythonEnv: ${t}. ${MACRO_EXPRESSIONS.PYTHON_PACKAGE} will not be replaced using this path.`)}{Logger.debug(`No Python environment specified. Attempting to find system Python for ${MACRO_EXPRESSIONS.PYTHON_PACKAGE}.`);const e=await getSystemPythonPackageDirectory();return e||void Logger.debug(`Could not find system Python directory for ${MACRO_EXPRESSIONS.PYTHON_PACKAGE}.`)}}export function resolveNpmModulePath(e){if(e)return`${e}/node_modules`;const o=getGlobalNPMPackagePath();return Logger.debug(`Resolved ${MACRO_EXPRESSIONS.NPMPATH} via global npm to: ${o}`),o}export async function resolveNpmPathMacro(e,o){Logger.debug(`Resolving ${MACRO_EXPRESSIONS.NPMPATH}. Provided npmPath from settings: ${o.settings?.npmPath}`);try{return resolveNpmModulePath(o.settings?.npmPath)}catch(e){return void Logger.error(`Failed to resolve ${MACRO_EXPRESSIONS.NPMPATH}:`,e)}}export async function resolveBrowserPathMacro(){Logger.debug(`Resolving ${MACRO_EXPRESSIONS.BROWSER_PATH}`);try{const e=await getBrowserPath();return Logger.debug(`Resolved ${MACRO_EXPRESSIONS.BROWSER_PATH} to: ${e}`),e}catch(e){return void Logger.error(`Failed to get system browser path for ${MACRO_EXPRESSIONS.BROWSER_PATH}:`,e)}}
2
2
  //# sourceMappingURL=macroExpressionUtils.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["Logger","getPythonPackagePath","getSystemPythonPackageDirectory","getBrowserPath","getGlobalNPMPackagePath","MACRO_EXPRESSIONS","PYTHON_PACKAGE","NPMPATH","BROWSER_PATH","MacroResolverFunctions","resolvePythonPackageMacro","resolveNpmPathMacro","resolveBrowserPathMacro","async","finalConfig","options","pythonEnv","settings","debug","pythonDir","command","resolveNpmModulePath","providedNpmPath","globalNpmPath","_finalConfig","npmPath","error","browserPath"],"sources":["../../src/utils/macroExpressionUtils.ts"],"mappings":"OAASA,WAAc,qBACdC,qBAAsBC,gCAAiCC,eAAgBC,4BAA+B,sBAOxG,MAAMC,kBAAoB,CAC7BC,eAAgB,oBAChBC,QAAS,aACTC,aAAc,0BAIX,MAAMC,uBAET,CACA,CAACJ,kBAAkBC,gBAAiBI,0BACpC,CAACL,kBAAkBE,SAAUI,oBAC7B,CAACN,kBAAkBG,cAAeI,gCAW/BC,eAAeH,0BAA0BI,EAAkBC,GAC9D,MAAMC,EAAYD,EAAQE,UAAUD,UACpC,GAAIA,EAAW,CACXhB,OAAOkB,MAAM,oCAAoCb,kBAAkBC,mBAAmBU,KACtF,MAAMG,EAAYlB,qBAAqBe,GACvC,OAAIG,GAC4B,WAAxBL,EAAYM,UACZpB,OAAOkB,MAAM,wDAAwDF,YAAoBX,kBAAkBC,6BAC3GQ,EAAYM,QAAUJ,GAEnBG,QAEXnB,OAAOkB,MAAM,gDAAgDF,MAAcX,kBAAkBC,uDAEjG,CACIN,OAAOkB,MAAM,yEAAyEb,kBAAkBC,mBAExG,aADwBJ,wCAIxBF,OAAOkB,MAAM,8CAA8Cb,kBAAkBC,kBAGrF,QAQM,SAAUe,qBAAqBC,GACjC,GAAIA,EACA,MAAO,GAAGA,iBAGd,MAAMC,EAAgBnB,0BAEtB,OADAJ,OAAOkB,MAAM,YAAYb,kBAAkBE,8BAA8BgB,KAClEA,CACX,QASOV,eAAeF,oBAAoBa,EAAmBT,GACzDf,OAAOkB,MAAM,aAAab,kBAAkBE,4CAA4CQ,EAAQE,UAAUQ,WAC1G,IACI,OAAOJ,qBAAqBN,EAAQE,UAAUQ,QAClD,CAAE,MAAOC,GAEL,YADA1B,OAAO0B,MAAM,qBAAqBrB,kBAAkBE,WAAYmB,EAEpE,CACJ,QAMOb,eAAeD,0BAClBZ,OAAOkB,MAAM,aAAab,kBAAkBG,gBAC5C,IACI,MAAMmB,QAAoBxB,iBAE1B,OADAH,OAAOkB,MAAM,YAAYb,kBAAkBG,oBAAoBmB,KACxDA,CACX,CAAE,MAAOD,GAEL,YADA1B,OAAO0B,MAAM,yCAAyCrB,kBAAkBG,gBAAiBkB,EAE7F,CACJ","ignoreList":[]}
1
+ {"version":3,"names":["Logger","getPythonPackagePath","getSystemPythonPackageDirectory","getBrowserPath","getGlobalNPMPackagePath","MACRO_EXPRESSIONS","PYTHON_PACKAGE","NPMPATH","BROWSER_PATH","MacroResolverFunctions","resolvePythonPackageMacro","resolveNpmPathMacro","resolveBrowserPathMacro","async","finalConfig","options","pythonEnv","settings","debug","pythonDir","command","resolveNpmModulePath","providedNpmPath","globalNpmPath","_finalConfig","npmPath","error","browserPath"],"sources":["../../src/utils/macroExpressionUtils.ts"],"mappings":"OAASA,WAAc,qBACdC,qBAAsBC,gCAAiCC,eAAgBC,4BAA+B,sBAOxG,MAAMC,kBAAoB,CAC7BC,eAAgB,oBAChBC,QAAS,aACTC,aAAc,0BAIX,MAAMC,uBAET,CACA,CAACJ,kBAAkBC,gBAAiBI,0BACpC,CAACL,kBAAkBE,SAAUI,oBAC7B,CAACN,kBAAkBG,cAAeI,gCAW/BC,eAAeH,0BAA0BI,EAAkBC,GAC9D,MAAMC,EAAYD,EAAQE,UAAUD,UACpC,GAAIA,EAAW,CACXhB,OAAOkB,MAAM,oCAAoCb,kBAAkBC,mBAAmBU,KACtF,MAAMG,EAAYlB,qBAAqBe,GACvC,OAAIG,GAC4B,WAAxBL,EAAYM,UACZpB,OAAOkB,MAAM,wDAAwDF,YAAoBX,kBAAkBC,6BAC3GQ,EAAYM,QAAUJ,GAEnBG,QAEXnB,OAAOkB,MAAM,gDAAgDF,MAAcX,kBAAkBC,uDAEjG,CAAO,CACHN,OAAOkB,MAAM,yEAAyEb,kBAAkBC,mBACxG,MAAMa,QAAkBjB,kCACxB,OAAIiB,QAGJnB,OAAOkB,MAAM,8CAA8Cb,kBAAkBC,kBAEjF,CACJ,QAQM,SAAUe,qBAAqBC,GACjC,GAAIA,EACA,MAAO,GAAGA,iBAGd,MAAMC,EAAgBnB,0BAEtB,OADAJ,OAAOkB,MAAM,YAAYb,kBAAkBE,8BAA8BgB,KAClEA,CACX,QASOV,eAAeF,oBAAoBa,EAAmBT,GACzDf,OAAOkB,MAAM,aAAab,kBAAkBE,4CAA4CQ,EAAQE,UAAUQ,WAC1G,IACI,OAAOJ,qBAAqBN,EAAQE,UAAUQ,QAClD,CAAE,MAAOC,GAEL,YADA1B,OAAO0B,MAAM,qBAAqBrB,kBAAkBE,WAAYmB,EAEpE,CACJ,QAMOb,eAAeD,0BAClBZ,OAAOkB,MAAM,aAAab,kBAAkBG,gBAC5C,IACI,MAAMmB,QAAoBxB,iBAE1B,OADAH,OAAOkB,MAAM,YAAYb,kBAAkBG,oBAAoBmB,KACxDA,CACX,CAAE,MAAOD,GAEL,YADA1B,OAAO0B,MAAM,yCAAyCrB,kBAAkBG,gBAAiBkB,EAE7F,CACJ","ignoreList":[]}
@@ -1,2 +1,2 @@
1
- import{OSType}from"../core/metadatas/types.js";import os from"os";import{exec}from"child_process";import util from"util";import{Logger}from"./logger.js";import fs from"fs";import path from"path";import{execSync}from"child_process";import*as fsSync from"fs";const execAsync=util.promisify(exec);export function getOSType(){const e=os.platform();switch(Logger.debug({action:"get_os_type",platform:e}),e){case"win32":return OSType.Windows;case"darwin":return OSType.MacOS;case"linux":return OSType.Linux;default:const t=`Unsupported operating system: ${e}`;throw Logger.error(t),new Error(t)}}export async function installCLI(e){const t=getOSType();Logger.debug({action:"install_cli",tool:e,osType:t});try{switch(t){case OSType.Windows:"git"===e?await execAsync("winget install --id Git.Git -e --source winget --silent"):await execAsync("winget install --id GitHub.cli --silent"),await refreshPathEnv();break;case OSType.MacOS:"git"===e?await execAsync("brew install git"):await execAsync("brew install gh"),"git"===e&&await execAsync("source ~/.zshrc || source ~/.bash_profile || source ~/.bashrc || true");break;case OSType.Linux:"git"===e?await execAsync("sudo apt-get update && sudo apt-get install -y git"):await execAsync('curl -fsSL https://cli.github.com/packages/githubcli-archive-keyring.gpg | sudo dd of=/usr/share/keyrings/githubcli-archive-keyring.gpg && sudo chmod go+r /usr/share/keyrings/githubcli-archive-keyring.gpg && echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/githubcli-archive-keyring.gpg] https://cli.github.com/packages stable main" | sudo tee /etc/apt/sources.list.d/github-cli.list > /dev/null && sudo apt update && sudo apt install -y gh'),await execAsync("source ~/.bashrc || source ~/.profile || true");break;default:throw new Error(`Unsupported operating system for installing ${e}`)}await new Promise((e=>setTimeout(e,1e3))),Logger.debug({action:"install_cli_success",tool:e,osType:t})}catch(o){throw Logger.error("Failed to install CLI tool",{tool:e,osType:t,error:o}),o}}export async function refreshPathEnv(){const e=getOSType();Logger.debug({action:"refresh_path_env",osType:e});try{switch(e){case OSType.Windows:const{stdout:e}=await execAsync("powershell -command \"[Environment]::GetEnvironmentVariable('Path', 'Machine') + ';' + [Environment]::GetEnvironmentVariable('Path', 'User')\"");e&&(process.env.PATH=e.trim(),Logger.debug("Refreshed PATH from Windows registry"));break;case OSType.MacOS:case OSType.Linux:const t=["/usr/local/bin","/usr/bin","/bin","/usr/sbin","/sbin","/usr/local/git/bin","/opt/homebrew/bin",`${os.homedir()}/.local/bin`];if(process.env.PATH){const e=process.env.PATH.split(":"),o=[...new Set([...e,...t])];process.env.PATH=o.join(":"),Logger.debug("Expanded PATH with common Unix binary locations")}}Logger.debug({action:"refresh_path_env_success",path:process.env.PATH})}catch(e){Logger.error("Failed to refresh PATH environment variable",e)}}export async function isCommandAvailable(e){try{if("darwin"===process.platform&&("code"===e||"code-insiders"===e))try{return await execAsync(`which ${e}`),!0}catch(t){const o="code"===e?"/Applications/Visual Studio Code.app":"/Applications/Visual Studio Code - Insiders.app";try{return await execAsync(`test -d "${o}"`),!0}catch(t){const o=process.env.HOME;if(o){const t="code"===e?`${o}/Applications/Visual Studio Code.app`:`${o}/Applications/Visual Studio Code - Insiders.app`;try{return await execAsync(`test -d "${t}"`),!0}catch(e){return!1}}return!1}}return"win32"===process.platform?(await execAsync(`where ${e}`),!0):(await execAsync(`which ${e}`),!0)}catch(e){return!1}}export async function isToolInstalled(e,t=3){try{Logger.debug({action:"check_tool_installed",tool:e,retries:t});try{return await execAsync(`${e} --version`),Logger.debug({action:"check_tool_installed_success",tool:e,installed:!0}),!0}catch(o){return t>0?(Logger.debug(`${e} not found, refreshing PATH and retrying...`),await refreshPathEnv(),await new Promise((e=>setTimeout(e,500))),isToolInstalled(e,t-1)):(Logger.debug({action:"check_tool_installed_success",tool:e,installed:!1}),!1)}}catch(t){return Logger.error(`Error checking if ${e} is installed`,t),!1}}export async function openBrowser(e){const t=getOSType();Logger.debug({action:"open_browser",url:e,osType:t});try{switch(t){case OSType.Windows:await execAsync(`start ${e}`);break;case OSType.MacOS:await execAsync(`open ${e}`);break;case OSType.Linux:try{await execAsync(`xdg-open ${e}`)}catch(t){try{await execAsync(`sensible-browser ${e}`)}catch(t){await execAsync(`gnome-open ${e}`)}}break;default:throw new Error("Unsupported operating system for opening browser")}Logger.debug({action:"open_browser_success",url:e,osType:t})}catch(o){Logger.error("Failed to open browser",{url:e,osType:t,error:o})}}export function getPythonPackagePath(e){Logger.debug({action:"get_python_package_path",pythonExecutablePath:e});try{const t=path.dirname(e);if("win32"===process.platform){if(t.endsWith("WindowsApps")){const e=fs.readdirSync(t).find((e=>e.startsWith("PythonSoftwareFoundation.Python")));if(e&&e.includes(".")){const t=e.split("."),o=t[2]+t[3].split("_")[0],r=process.env.LOCALAPPDATA;if(r){const t=path.join(r,"Packages",e,"LocalCache","local-packages","Python"+o,"site-packages");return Logger.debug(`Resolved Windows Store Python site-packages path: ${t}`),t}}return Logger.debug("Could not resolve Windows Store Python site-packages path"),path.join(process.env.APPDATA||"","Python","Python3","site-packages")}if(t.endsWith("Scripts")){const e=path.dirname(t);return path.join(e,"Lib","site-packages")}return path.join(t,"Lib","site-packages")}if(t.endsWith("bin")){const e=path.dirname(t),o=path.join(e,"lib");if(fs.existsSync(o)){const e=fs.readdirSync(o).filter((e=>e.startsWith("python")));if(e.length>0)return path.join(o,e[0],"site-packages")}return path.join(e,"lib","python3","site-packages")}if(t.toLowerCase().includes("python")){const e=path.join(t,"lib");if(fs.existsSync(e)){const t=fs.readdirSync(e).filter((e=>e.startsWith("python")));if(t.length>0)return path.join(e,t[0],"site-packages")}return path.join(t,"lib","python3","site-packages")}return Logger.debug("No standard Python directory structure found, using original directory"),t}catch(t){return Logger.error("Error getting Python package path",{pythonExecutablePath:e,error:t}),path.dirname(e)}}export async function getSystemPythonPackageDirectory(){const e="win32"===process.platform?"where python":"which python";Logger.debug({action:"get_system_python_package_directory",command:e});try{const{stdout:t}=await execAsync(e),o=t.split("\n")[0].trim();if(o){const e=getPythonPackagePath(o);return Logger.debug({action:"get_system_python_package_directory_success",pythonPath:o,packagePath:e}),e}return Logger.debug("No Python executable found"),null}catch(t){return Logger.debug(`Could not find system python using "${e}": ${t}`),null}}export async function getSystemPythonExecutablePath(){const e="win32"===process.platform?"where python":"which python";Logger.debug({action:"get_system_python_executable_path",command:e});try{const{stdout:t}=await execAsync(e),o=t.split("\n")[0].trim();return o?(Logger.debug({action:"get_system_python_executable_path_success",pythonPath:o}),o):(Logger.debug("No Python executable found"),null)}catch(t){return Logger.debug(`Could not find system python using "${e}": ${t}`),null}}export async function getBrowserPath(){const e=getOSType();Logger.debug({action:"get_system_browser_path",osType:e});try{switch(e){case OSType.Windows:{const e=[`${process.env["PROGRAMFILES(X86)"]}\\Microsoft\\Edge\\Application\\msedge.exe`,`${process.env.PROGRAMFILES}\\Microsoft\\Edge\\Application\\msedge.exe`];for(const t of e)if(fs.existsSync(t))return t;const t=[`${process.env["PROGRAMFILES(X86)"]}\\Google\\Chrome\\Application\\chrome.exe`,`${process.env.PROGRAMFILES}\\Google\\Chrome\\Application\\chrome.exe`];for(const e of t)if(fs.existsSync(e))return e;break}case OSType.MacOS:{const e="/Applications/Microsoft Edge.app/Contents/MacOS/Microsoft Edge";if(fs.existsSync(e))return e;const t="/Applications/Google Chrome.app/Contents/MacOS/Google Chrome";if(fs.existsSync(t))return t;const o="/Applications/Safari.app/Contents/MacOS/Safari";if(fs.existsSync(o))return o;break}case OSType.Linux:try{const{stdout:e}=await execAsync("which microsoft-edge");if(e.trim())return e.trim()}catch{}try{const{stdout:e}=await execAsync("which google-chrome chromium");if(e.trim())return e.trim()}catch{}}throw new Error("No supported browser found on the system")}catch(e){throw Logger.error("Failed to get browser path",e),e}}export function getGlobalNPMPackagePath(){const e=process.env.NVM_HOME;if(e)try{const t=execSync("node -v").toString().trim(),o=path.join(e,t);try{return fsSync.accessSync(o),o}catch(e){Logger.debug(`NVM controlled path doesn't exist: ${o}, will try global npm`)}}catch(e){Logger.debug(`Error determining Node version for NVM: ${e}, will use global npm`)}return execSync("npm root -g").toString().trim()}export async function getNpmExecutablePath(){try{if("win32"===process.platform){const{stdout:e}=await execAsync('powershell -Command "get-command npm | Select-Object -ExpandProperty Source"');return e.trim().replace(/\\npm\.cmd$/,"")}{const{stdout:e}=await execAsync("which npm");return e.trim().replace(/\/npm$/,"")}}catch(e){return Logger.error("Error getting npm path:",e),"win32"===process.platform?"C:\\Program Files\\nodejs":"/usr/local/bin"}}export async function ensureDotnetToolsInPath(){const e=getOSType();if(Logger.debug({action:"ensure_dotnet_tools_in_path",osType:e}),e!==OSType.Windows){if(e===OSType.MacOS||e===OSType.Linux){const e=getDotnetGlobalToolsPath(),t=`export PATH="${e}:$PATH"`,o=[],r=process.env.SHELL;r&&r.includes("zsh")?o.push(path.join(os.homedir(),".zshrc")):r&&r.includes("bash")?(o.push(path.join(os.homedir(),".bashrc")),o.push(path.join(os.homedir(),".bash_profile"))):(o.push(path.join(os.homedir(),".profile")),o.push(path.join(os.homedir(),".bashrc")),o.push(path.join(os.homedir(),".zshrc")));let s=!1;for(const r of o)try{if(fs.existsSync(r)){const o=await fs.promises.readFile(r,"utf-8"),n=new RegExp(`export\\s+PATH=.*${e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}.*`),i=new RegExp("export\\s+PATH=.*\\$HOME\\/\\.dotnet\\/tools.*");n.test(o)||i.test(o)?Logger.debug(`.NET tools path already configured in ${r}`):(Logger.debug(`Adding .NET tools path to ${r}`),await fs.promises.appendFile(r,`\n# Add .NET Core SDK tools to PATH\n${t}\n`),Logger.log(`Appended '${t}' to ${r}. You may need to source this file or restart your terminal.`),s=!0)}else 1!==o.length&&r!==path.join(os.homedir(),".profile")||(Logger.debug(`${r} does not exist. Creating and adding .NET tools path.`),await fs.promises.writeFile(r,`# Add .NET Core SDK tools to PATH\n${t}\n`),Logger.log(`Created ${r} and added '${t}'. You may need to source this file or restart your terminal.`),s=!0)}catch(e){Logger.error(`Failed to update ${r} for .NET tools PATH: ${e instanceof Error?e.message:String(e)}`)}s&&Logger.log("Dotnet tools path has been added to shell configuration. Please source the relevant file (e.g., 'source ~/.zshrc') or restart your terminal session for changes to take effect."),process.env.PATH&&!process.env.PATH.includes(e)?(process.env.PATH=`${e}:${process.env.PATH}`,Logger.debug(`Updated current process.env.PATH to include: ${e}`)):process.env.PATH||(process.env.PATH=e,Logger.debug(`Set current process.env.PATH to: ${e}`))}}else Logger.debug(".NET tools PATH is usually handled by the installer on Windows. Skipping explicit PATH modification.")}export function getDotnetGlobalToolsPath(){const e=os.homedir();if("win32"===process.platform)return path.join(e,".dotnet","tools");if("darwin"===process.platform||"linux"===process.platform)return path.join(e,".dotnet","tools");throw new Error(`Unsupported platform: ${process.platform}`)}
1
+ import{OSType}from"../core/metadatas/types.js";import os from"os";import{exec}from"child_process";import util from"util";import{Logger}from"./logger.js";import fs from"fs";import path from"path";import{execSync}from"child_process";import*as fsSync from"fs";const execAsync=util.promisify(exec);export function getOSType(){const e=os.platform();switch(Logger.debug({action:"get_os_type",platform:e}),e){case"win32":return OSType.Windows;case"darwin":return OSType.MacOS;case"linux":return OSType.Linux;default:const t=`Unsupported operating system: ${e}`;throw Logger.error(t),new Error(t)}}export async function installCLI(e){const t=getOSType();Logger.debug({action:"install_cli",tool:e,osType:t});try{switch(t){case OSType.Windows:"git"===e?await execAsync("winget install --id Git.Git -e --source winget --silent"):await execAsync("winget install --id GitHub.cli --silent"),await refreshPathEnv();break;case OSType.MacOS:"git"===e?await execAsync("brew install git"):await execAsync("brew install gh"),"git"===e&&await execAsync("source ~/.zshrc || source ~/.bash_profile || source ~/.bashrc || true");break;case OSType.Linux:"git"===e?await execAsync("sudo apt-get update && sudo apt-get install -y git"):await execAsync('curl -fsSL https://cli.github.com/packages/githubcli-archive-keyring.gpg | sudo dd of=/usr/share/keyrings/githubcli-archive-keyring.gpg && sudo chmod go+r /usr/share/keyrings/githubcli-archive-keyring.gpg && echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/githubcli-archive-keyring.gpg] https://cli.github.com/packages stable main" | sudo tee /etc/apt/sources.list.d/github-cli.list > /dev/null && sudo apt update && sudo apt install -y gh'),await execAsync("source ~/.bashrc || source ~/.profile || true");break;default:throw new Error(`Unsupported operating system for installing ${e}`)}await new Promise((e=>setTimeout(e,1e3))),Logger.debug({action:"install_cli_success",tool:e,osType:t})}catch(o){throw Logger.error("Failed to install CLI tool",{tool:e,osType:t,error:o}),o}}export async function refreshPathEnv(){const e=getOSType();Logger.debug({action:"refresh_path_env",osType:e});try{switch(e){case OSType.Windows:const{stdout:e}=await execAsync("powershell -command \"[Environment]::GetEnvironmentVariable('Path', 'Machine') + ';' + [Environment]::GetEnvironmentVariable('Path', 'User')\"");e&&(process.env.PATH=e.trim(),Logger.debug("Refreshed PATH from Windows registry"));break;case OSType.MacOS:case OSType.Linux:const t=["/usr/local/bin","/usr/bin","/bin","/usr/sbin","/sbin","/usr/local/git/bin","/opt/homebrew/bin",`${os.homedir()}/.local/bin`];if(process.env.PATH){const e=process.env.PATH.split(":"),o=[...new Set([...e,...t])];process.env.PATH=o.join(":"),Logger.debug("Expanded PATH with common Unix binary locations")}}Logger.debug({action:"refresh_path_env_success",path:process.env.PATH})}catch(e){Logger.error("Failed to refresh PATH environment variable",e)}}export async function isCommandAvailable(e){try{if("darwin"===process.platform&&("code"===e||"code-insiders"===e))try{return await execAsync(`which ${e}`),!0}catch(t){const o="code"===e?"/Applications/Visual Studio Code.app":"/Applications/Visual Studio Code - Insiders.app";try{return await execAsync(`test -d "${o}"`),!0}catch(t){const o=process.env.HOME;if(o){const t="code"===e?`${o}/Applications/Visual Studio Code.app`:`${o}/Applications/Visual Studio Code - Insiders.app`;try{return await execAsync(`test -d "${t}"`),!0}catch(e){return!1}}return!1}}return"win32"===process.platform?(await execAsync(`where ${e}`),!0):(await execAsync(`which ${e}`),!0)}catch(e){return!1}}export async function isToolInstalled(e,t=3){try{Logger.debug({action:"check_tool_installed",tool:e,retries:t});try{return await execAsync(`${e} --version`),Logger.debug({action:"check_tool_installed_success",tool:e,installed:!0}),!0}catch(o){return t>0?(Logger.debug(`${e} not found, refreshing PATH and retrying...`),await refreshPathEnv(),await new Promise((e=>setTimeout(e,500))),isToolInstalled(e,t-1)):(Logger.debug({action:"check_tool_installed_success",tool:e,installed:!1}),!1)}}catch(t){return Logger.error(`Error checking if ${e} is installed`,t),!1}}export async function openBrowser(e){const t=getOSType();Logger.debug({action:"open_browser",url:e,osType:t});try{switch(t){case OSType.Windows:await execAsync(`start ${e}`);break;case OSType.MacOS:await execAsync(`open ${e}`);break;case OSType.Linux:try{await execAsync(`xdg-open ${e}`)}catch(t){try{await execAsync(`sensible-browser ${e}`)}catch(t){await execAsync(`gnome-open ${e}`)}}break;default:throw new Error("Unsupported operating system for opening browser")}Logger.debug({action:"open_browser_success",url:e,osType:t})}catch(o){Logger.error("Failed to open browser",{url:e,osType:t,error:o})}}export function getPythonPackagePath(e){Logger.debug({action:"get_python_package_path",pythonExecutablePath:e});try{const t=path.dirname(e);if("win32"===process.platform){if(t.endsWith("WindowsApps")){const e=fs.readdirSync(t).find((e=>e.startsWith("PythonSoftwareFoundation.Python")));if(e&&e.includes(".")){const t=e.split("."),o=t[2],r=o+t[3].split("_")[0],s=process.env.LOCALAPPDATA;if(s){const t=path.join(s,"Packages",e,"LocalCache","local-packages","Python"+r,"site-packages");return Logger.debug(`Resolved Windows Store Python site-packages path: ${t}`),t}}return Logger.debug("Could not resolve Windows Store Python site-packages path"),path.join(process.env.APPDATA||"","Python","Python3","site-packages")}if(t.endsWith("Scripts")){const e=path.dirname(t);return path.join(e,"Lib","site-packages")}return path.join(t,"Lib","site-packages")}if(t.endsWith("bin")){const e=path.dirname(t),o=path.join(e,"lib");if(fs.existsSync(o)){const e=fs.readdirSync(o).filter((e=>e.startsWith("python")));if(e.length>0)return path.join(o,e[0],"site-packages")}return path.join(e,"lib","python3","site-packages")}if(t.toLowerCase().includes("python")){const e=path.join(t,"lib");if(fs.existsSync(e)){const t=fs.readdirSync(e).filter((e=>e.startsWith("python")));if(t.length>0)return path.join(e,t[0],"site-packages")}return path.join(t,"lib","python3","site-packages")}return Logger.debug("No standard Python directory structure found, using original directory"),t}catch(t){return Logger.error("Error getting Python package path",{pythonExecutablePath:e,error:t}),path.dirname(e)}}export async function getSystemPythonPackageDirectory(){const e="win32"===process.platform?"where python":"which python";Logger.debug({action:"get_system_python_package_directory",command:e});try{const{stdout:t}=await execAsync(e),o=t.split("\n")[0].trim();if(o){const e=getPythonPackagePath(o);return Logger.debug({action:"get_system_python_package_directory_success",pythonPath:o,packagePath:e}),e}return Logger.debug("No Python executable found"),null}catch(t){return Logger.debug(`Could not find system python using "${e}": ${t}`),null}}export async function getSystemPythonExecutablePath(){const e="win32"===process.platform?"where python":"which python";Logger.debug({action:"get_system_python_executable_path",command:e});try{const{stdout:t}=await execAsync(e),o=t.split("\n")[0].trim();return o?(Logger.debug({action:"get_system_python_executable_path_success",pythonPath:o}),o):(Logger.debug("No Python executable found"),null)}catch(t){return Logger.debug(`Could not find system python using "${e}": ${t}`),null}}export async function getBrowserPath(){const e=getOSType();Logger.debug({action:"get_system_browser_path",osType:e});try{switch(e){case OSType.Windows:{const e=[`${process.env["PROGRAMFILES(X86)"]}\\Microsoft\\Edge\\Application\\msedge.exe`,`${process.env.PROGRAMFILES}\\Microsoft\\Edge\\Application\\msedge.exe`];for(const t of e)if(fs.existsSync(t))return t;const t=[`${process.env["PROGRAMFILES(X86)"]}\\Google\\Chrome\\Application\\chrome.exe`,`${process.env.PROGRAMFILES}\\Google\\Chrome\\Application\\chrome.exe`];for(const e of t)if(fs.existsSync(e))return e;break}case OSType.MacOS:{const e="/Applications/Microsoft Edge.app/Contents/MacOS/Microsoft Edge";if(fs.existsSync(e))return e;const t="/Applications/Google Chrome.app/Contents/MacOS/Google Chrome";if(fs.existsSync(t))return t;const o="/Applications/Safari.app/Contents/MacOS/Safari";if(fs.existsSync(o))return o;break}case OSType.Linux:try{const{stdout:e}=await execAsync("which microsoft-edge");if(e.trim())return e.trim()}catch{}try{const{stdout:e}=await execAsync("which google-chrome chromium");if(e.trim())return e.trim()}catch{}}throw new Error("No supported browser found on the system")}catch(e){throw Logger.error("Failed to get browser path",e),e}}export function getGlobalNPMPackagePath(){const e=process.env.NVM_HOME;if(e)try{const t=execSync("node -v").toString().trim(),o=path.join(e,t);try{return fsSync.accessSync(o),o}catch(e){Logger.debug(`NVM controlled path doesn't exist: ${o}, will try global npm`)}}catch(e){Logger.debug(`Error determining Node version for NVM: ${e}, will use global npm`)}return execSync("npm root -g").toString().trim()}export async function getNpmExecutablePath(){try{if("win32"===process.platform){const{stdout:e}=await execAsync('powershell -Command "get-command npm | Select-Object -ExpandProperty Source"');return e.trim().replace(/\\npm\.cmd$/,"")}{const{stdout:e}=await execAsync("which npm");return e.trim().replace(/\/npm$/,"")}}catch(e){return Logger.error("Error getting npm path:",e),"win32"===process.platform?"C:\\Program Files\\nodejs":"/usr/local/bin"}}export async function ensureDotnetToolsInPath(){const e=getOSType();if(Logger.debug({action:"ensure_dotnet_tools_in_path",osType:e}),e!==OSType.Windows){if(e===OSType.MacOS||e===OSType.Linux){const e=getDotnetGlobalToolsPath(),t=`export PATH="${e}:$PATH"`,o=[],r=process.env.SHELL;r&&r.includes("zsh")?o.push(path.join(os.homedir(),".zshrc")):r&&r.includes("bash")?(o.push(path.join(os.homedir(),".bashrc")),o.push(path.join(os.homedir(),".bash_profile"))):(o.push(path.join(os.homedir(),".profile")),o.push(path.join(os.homedir(),".bashrc")),o.push(path.join(os.homedir(),".zshrc")));let s=!1;for(const r of o)try{if(fs.existsSync(r)){const o=await fs.promises.readFile(r,"utf-8"),n=new RegExp(`export\\s+PATH=.*${e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}.*`),i=new RegExp("export\\s+PATH=.*\\$HOME\\/\\.dotnet\\/tools.*");n.test(o)||i.test(o)?Logger.debug(`.NET tools path already configured in ${r}`):(Logger.debug(`Adding .NET tools path to ${r}`),await fs.promises.appendFile(r,`\n# Add .NET Core SDK tools to PATH\n${t}\n`),Logger.log(`Appended '${t}' to ${r}. You may need to source this file or restart your terminal.`),s=!0)}else 1!==o.length&&r!==path.join(os.homedir(),".profile")||(Logger.debug(`${r} does not exist. Creating and adding .NET tools path.`),await fs.promises.writeFile(r,`# Add .NET Core SDK tools to PATH\n${t}\n`),Logger.log(`Created ${r} and added '${t}'. You may need to source this file or restart your terminal.`),s=!0)}catch(e){Logger.error(`Failed to update ${r} for .NET tools PATH: ${e instanceof Error?e.message:String(e)}`)}s&&Logger.log("Dotnet tools path has been added to shell configuration. Please source the relevant file (e.g., 'source ~/.zshrc') or restart your terminal session for changes to take effect."),process.env.PATH&&!process.env.PATH.includes(e)?(process.env.PATH=`${e}:${process.env.PATH}`,Logger.debug(`Updated current process.env.PATH to include: ${e}`)):process.env.PATH||(process.env.PATH=e,Logger.debug(`Set current process.env.PATH to: ${e}`))}}else Logger.debug(".NET tools PATH is usually handled by the installer on Windows. Skipping explicit PATH modification.")}export function getDotnetGlobalToolsPath(){const e=os.homedir();if("win32"===process.platform)return path.join(e,".dotnet","tools");if("darwin"===process.platform||"linux"===process.platform)return path.join(e,".dotnet","tools");throw new Error(`Unsupported platform: ${process.platform}`)}
2
2
  //# sourceMappingURL=osUtils.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["OSType","os","exec","util","Logger","fs","path","execSync","fsSync","execAsync","promisify","getOSType","platform","debug","action","Windows","MacOS","Linux","error","Error","async","installCLI","tool","osType","refreshPathEnv","Promise","resolve","setTimeout","stdout","winPath","process","env","PATH","trim","commonPaths","homedir","currentPaths","split","newPaths","Set","join","isCommandAvailable","command","systemVSCodePath","HOME","userVSCodePath","isToolInstalled","retries","installed","openBrowser","url","getPythonPackagePath","pythonExecutablePath","dir","dirname","endsWith","pythonDir","readdirSync","find","e","startsWith","includes","parts","version","localAppData","LOCALAPPDATA","sitePkgsPath","APPDATA","venvRoot","libDir","existsSync","pythonDirs","filter","d","length","toLowerCase","getSystemPythonPackageDirectory","pythonPath","packagePath","getSystemPythonExecutablePath","getBrowserPath","edgePaths","chromePaths","edgePath","chromePath","safariPath","getGlobalNPMPackagePath","nvmHome","NVM_HOME","nodeVersion","toString","nvmNodePath","accessSync","getNpmExecutablePath","replace","ensureDotnetToolsInPath","dotnetToolsPath","getDotnetGlobalToolsPath","exportLine","shellConfigFiles","shell","SHELL","push","updatedAnyFile","configFile","content","promises","readFile","pathRegex","RegExp","homePathRegex","test","appendFile","log","writeFile","message","String","homeDir"],"sources":["../../src/utils/osUtils.ts"],"mappings":"OAASA,WAAc,oCAChBC,OAAQ,YACNC,SAAY,uBACdC,SAAU,cACRC,WAAc,qBAChBC,OAAQ,YACRC,SAAU,cACRC,aAAgB,0BACbC,WAAY,KAExB,MAAMC,UAAYN,KAAKO,UAAUR,aAE3B,SAAUS,YACd,MAAMC,EAAWX,GAAGW,WAMpB,OALAR,OAAOS,MAAM,CACXC,OAAQ,cACRF,aAGMA,GACN,IAAK,QACH,OAAOZ,OAAOe,QAChB,IAAK,SACH,OAAOf,OAAOgB,MAChB,IAAK,QACH,OAAOhB,OAAOiB,MAChB,QACE,MAAMC,EAAQ,iCAAiCN,IAE/C,MADAR,OAAOc,MAAMA,GACP,IAAIC,MAAMD,GAEtB,QAEOE,eAAeC,WAAWC,GAC/B,MAAMC,EAASZ,YACfP,OAAOS,MAAM,CACXC,OAAQ,cACRQ,OACAC,WAGF,IACE,OAAQA,GACN,KAAKvB,OAAOe,QACG,QAATO,QACIb,UAAU,iEAEVA,UAAU,iDAGZe,iBACN,MAEF,KAAKxB,OAAOgB,MACG,QAATM,QACIb,UAAU,0BAEVA,UAAU,mBAGL,QAATa,SACIb,UAAU,yEAElB,MAEF,KAAKT,OAAOiB,MACG,QAATK,QACIb,UAAU,4DAEVA,UAAU,4dAGZA,UAAU,iDAChB,MAEF,QACE,MAAM,IAAIU,MAAM,+CAA+CG,WAI7D,IAAIG,SAAQC,GAAWC,WAAWD,EAAS,OAEjDtB,OAAOS,MAAM,CACXC,OAAQ,sBACRQ,OACAC,UAEJ,CAAE,MAAOL,GAMP,MALAd,OAAOc,MAAM,6BAA8B,CACzCI,OACAC,SACAL,UAEIA,CACR,CACF,QAKOE,eAAeI,iBACpB,MAAMD,EAASZ,YACfP,OAAOS,MAAM,CACXC,OAAQ,mBACRS,WAGF,IACE,OAAQA,GACN,KAAKvB,OAAOe,QAEV,MAAQa,OAAQC,SAAkBpB,UAAU,kJACxCoB,IACFC,QAAQC,IAAIC,KAAOH,EAAQI,OAC3B7B,OAAOS,MAAM,yCAEf,MAEF,KAAKb,OAAOgB,MACZ,KAAKhB,OAAOiB,MAEV,MAAMiB,EAAc,CAClB,iBACA,WACA,OACA,YACA,QACA,qBACA,oBACA,GAAGjC,GAAGkC,wBAIR,GAAIL,QAAQC,IAAIC,KAAM,CACpB,MAAMI,EAAeN,QAAQC,IAAIC,KAAKK,MAAM,KACtCC,EAAW,IAAI,IAAIC,IAAI,IAAIH,KAAiBF,KAClDJ,QAAQC,IAAIC,KAAOM,EAASE,KAAK,KACjCpC,OAAOS,MAAM,kDACf,EAIJT,OAAOS,MAAM,CACXC,OAAQ,2BACRR,KAAMwB,QAAQC,IAAIC,MAEtB,CAAE,MAAOd,GACPd,OAAOc,MAAM,8CAA+CA,EAE9D,CACF,QAMOE,eAAeqB,mBAAmBC,GACvC,IAEE,GAAyB,WAArBZ,QAAQlB,WAAsC,SAAZ8B,GAAkC,kBAAZA,GAC1D,IAGE,aADMjC,UAAU,SAASiC,MAClB,CACT,CAAE,MAAOxB,GAEP,MAAMyB,EAA+B,SAAZD,EACvB,uCACA,kDAEF,IAGE,aADMjC,UAAU,YAAYkC,OACrB,CACT,CAAE,MAAOzB,GAEP,MAAMiB,EAAUL,QAAQC,IAAIa,KAC5B,GAAIT,EAAS,CACX,MAAMU,EAA6B,SAAZH,EACrB,GAAGP,wCACH,GAAGA,mDAEL,IAEE,aADM1B,UAAU,YAAYoC,OACrB,CACT,CAAE,MAAO3B,GACP,OAAO,CACT,CACF,CACA,OAAO,CACT,CACF,CAIF,MAAyB,UAArBY,QAAQlB,gBACJH,UAAU,SAASiC,MAClB,UAIHjC,UAAU,SAASiC,MAClB,EACT,CAAE,MAAOxB,GACP,OAAO,CACT,CACF,QAEOE,eAAe0B,gBAAgBxB,EAAoByB,EAAU,GAClE,IACE3C,OAAOS,MAAM,CACXC,OAAQ,uBACRQ,OACAyB,YAIF,IAOE,aANMtC,UAAU,GAAGa,eACnBlB,OAAOS,MAAM,CACXC,OAAQ,+BACRQ,OACA0B,WAAW,KAEN,CACT,CAAE,MAAO9B,GAEP,OAAI6B,EAAU,GACZ3C,OAAOS,MAAM,GAAGS,sDAGVE,uBAGA,IAAIC,SAAQC,GAAWC,WAAWD,EAAS,OAG1CoB,gBAAgBxB,EAAMyB,EAAU,KAIzC3C,OAAOS,MAAM,CACXC,OAAQ,+BACRQ,OACA0B,WAAW,KAEN,EACT,CACF,CAAE,MAAO9B,GAEP,OADAd,OAAOc,MAAM,qBAAqBI,iBAAqBJ,IAChD,CACT,CACF,QAEOE,eAAe6B,YAAYC,GAChC,MAAM3B,EAASZ,YACfP,OAAOS,MAAM,CACXC,OAAQ,eACRoC,MACA3B,WAGF,IACE,OAAQA,GACN,KAAKvB,OAAOe,cACJN,UAAU,SAASyC,KACzB,MACF,KAAKlD,OAAOgB,YACJP,UAAU,QAAQyC,KACxB,MACF,KAAKlD,OAAOiB,MAEV,UACQR,UAAU,YAAYyC,IAC9B,CAAE,MAAOhC,GAEP,UACQT,UAAU,oBAAoByC,IACtC,CAAE,MAAOhC,SACDT,UAAU,cAAcyC,IAChC,CACF,CACA,MACF,QACE,MAAM,IAAI/B,MAAM,oDAGpBf,OAAOS,MAAM,CACXC,OAAQ,uBACRoC,MACA3B,UAEJ,CAAE,MAAOL,GACPd,OAAOc,MAAM,yBAA0B,CACrCgC,MACA3B,SACAL,SAGJ,CACF,QAEM,SAAUiC,qBAAqBC,GACnChD,OAAOS,MAAM,CACXC,OAAQ,0BACRsC,yBAGF,IACE,MAAMC,EAAM/C,KAAKgD,QAAQF,GAIzB,GAHuC,UAArBtB,QAAQlB,SAGX,CAEb,GAAIyC,EAAIE,SAAS,eAAgB,CAE/B,MACMC,EADUnD,GAAGoD,YAAYJ,GACLK,MAAKC,GAAKA,EAAEC,WAAW,qCACjD,GAAIJ,GAAaA,EAAUK,SAAS,KAAM,CAExC,MAAMC,EAAQN,EAAUnB,MAAM,KAGxB0B,EAFWD,EAAM,GACNA,EAAM,GAAGzB,MAAM,KAAK,GAE/B2B,EAAelC,QAAQC,IAAIkC,aAEjC,GAAID,EAAc,CAChB,MAAME,EAAe5D,KAAKkC,KACxBwB,EACA,WACAR,EACA,aACA,iBACA,SAAWO,EACX,iBAIF,OADA3D,OAAOS,MAAM,qDAAqDqD,KAC3DA,CACT,CACF,CAIA,OAFA9D,OAAOS,MAAM,6DAENP,KAAKkC,KAAKV,QAAQC,IAAIoC,SAAW,GAAI,SAAU,UAAW,gBACnE,CAAO,GAAId,EAAIE,SAAS,WAAY,CAElC,MAAMa,EAAW9D,KAAKgD,QAAQD,GAC9B,OAAO/C,KAAKkC,KAAK4B,EAAU,MAAO,gBACpC,CAEE,OAAO9D,KAAKkC,KAAKa,EAAK,MAAO,gBAEjC,CAEE,GAAIA,EAAIE,SAAS,OAAQ,CAEvB,MAAMa,EAAW9D,KAAKgD,QAAQD,GAExBgB,EAAS/D,KAAKkC,KAAK4B,EAAU,OACnC,GAAI/D,GAAGiE,WAAWD,GAAS,CACzB,MAAME,EAAalE,GAAGoD,YAAYY,GAAQG,QAAOC,GAAKA,EAAEb,WAAW,YACnE,GAAIW,EAAWG,OAAS,EAEtB,OAAOpE,KAAKkC,KAAK6B,EAAQE,EAAW,GAAI,gBAE5C,CAEA,OAAOjE,KAAKkC,KAAK4B,EAAU,MAAO,UAAW,gBAC/C,CAAO,GAAIf,EAAIsB,cAAcd,SAAS,UAAW,CAE/C,MAAMQ,EAAS/D,KAAKkC,KAAKa,EAAK,OAC9B,GAAIhD,GAAGiE,WAAWD,GAAS,CACzB,MAAME,EAAalE,GAAGoD,YAAYY,GAAQG,QAAOC,GAAKA,EAAEb,WAAW,YACnE,GAAIW,EAAWG,OAAS,EAEtB,OAAOpE,KAAKkC,KAAK6B,EAAQE,EAAW,GAAI,gBAE5C,CAEA,OAAOjE,KAAKkC,KAAKa,EAAK,MAAO,UAAW,gBAC1C,CAKF,OADAjD,OAAOS,MAAM,0EACNwC,CACT,CAAE,MAAOnC,GAKP,OAJAd,OAAOc,MAAM,oCAAqC,CAChDkC,uBACAlC,UAEKZ,KAAKgD,QAAQF,EACtB,CACF,QAEOhC,eAAewD,kCACpB,MAAMlC,EAA+B,UAArBZ,QAAQlB,SAAuB,eAAiB,eAEhER,OAAOS,MAAM,CACXC,OAAQ,sCACR4B,YAGF,IACE,MAAMd,OAAEA,SAAiBnB,UAAUiC,GAE7BmC,EAAajD,EAAOS,MAAM,MAAM,GAAGJ,OACzC,GAAI4C,EAAY,CACd,MAAMC,EAAc3B,qBAAqB0B,GAMzC,OALAzE,OAAOS,MAAM,CACXC,OAAQ,8CACR+D,aACAC,gBAEKA,CACT,CAEA,OADA1E,OAAOS,MAAM,8BACN,IACT,CAAE,MAAOK,GAEP,OADAd,OAAOS,MAAM,uCAAuC6B,OAAaxB,KAC1D,IACT,CACF,QAOOE,eAAe2D,gCACpB,MAAMrC,EAA+B,UAArBZ,QAAQlB,SAAuB,eAAiB,eAEhER,OAAOS,MAAM,CACXC,OAAQ,oCACR4B,YAGF,IACE,MAAMd,OAAEA,SAAiBnB,UAAUiC,GAE7BmC,EAAajD,EAAOS,MAAM,MAAM,GAAGJ,OACzC,OAAI4C,GACFzE,OAAOS,MAAM,CACXC,OAAQ,4CACR+D,eAEKA,IAETzE,OAAOS,MAAM,8BACN,KACT,CAAE,MAAOK,GAEP,OADAd,OAAOS,MAAM,uCAAuC6B,OAAaxB,KAC1D,IACT,CACF,QAEOE,eAAe4D,iBACpB,MAAMzD,EAASZ,YACfP,OAAOS,MAAM,CACXC,OAAQ,0BACRS,WAGF,IACE,OAAQA,GACN,KAAKvB,OAAOe,QAAS,CAEnB,MAAMkE,EAAY,CAChB,GAAGnD,QAAQC,IAAI,iEACf,GAAGD,QAAQC,IAAkB,0DAE/B,IAAK,MAAMzB,KAAQ2E,EACjB,GAAI5E,GAAGiE,WAAWhE,GAChB,OAAOA,EAKX,MAAM4E,EAAc,CAClB,GAAGpD,QAAQC,IAAI,gEACf,GAAGD,QAAQC,IAAkB,yDAE/B,IAAK,MAAMzB,KAAQ4E,EACjB,GAAI7E,GAAGiE,WAAWhE,GAChB,OAAOA,EAGX,KACF,CAEA,KAAKN,OAAOgB,MAAO,CAEjB,MAAMmE,EAAW,iEACjB,GAAI9E,GAAGiE,WAAWa,GAChB,OAAOA,EAIT,MAAMC,EAAa,+DACnB,GAAI/E,GAAGiE,WAAWc,GAChB,OAAOA,EAIT,MAAMC,EAAa,iDACnB,GAAIhF,GAAGiE,WAAWe,GAChB,OAAOA,EAET,KACF,CAEA,KAAKrF,OAAOiB,MAEV,IACE,MAAQW,OAAQuD,SAAmB1E,UAAU,wBAC7C,GAAI0E,EAASlD,OACX,OAAOkD,EAASlD,MAEpB,CAAE,MAAQ,CAGV,IACE,MAAQL,OAAQwD,SAAqB3E,UAAU,gCAC/C,GAAI2E,EAAWnD,OACb,OAAOmD,EAAWnD,MAEtB,CAAE,MAAQ,EAMd,MAAM,IAAId,MAAM,2CAClB,CAAE,MAAOD,GAEP,MADAd,OAAOc,MAAM,6BAA8BA,GACrCA,CACR,CACF,QASM,SAAUoE,0BACd,MAAMC,EAAUzD,QAAQC,IAAIyD,SAC5B,GAAID,EACF,IACE,MAAME,EAAclF,SAAS,WAAWmF,WAAWzD,OAC7C0D,EAAcrF,KAAKkC,KAAK+C,EAASE,GAEvC,IAEE,OADAjF,OAAOoF,WAAWD,GACXA,CACT,CAAE,MAAOzE,GACPd,OAAOS,MAAM,sCAAsC8E,yBACrD,CACF,CAAE,MAAOzE,GACPd,OAAOS,MAAM,2CAA2CK,yBAC1D,CAIF,OADsBX,SAAS,eAAemF,WAAWzD,MAE3D,QAQOb,eAAeyE,uBACpB,IACE,GAAyB,UAArB/D,QAAQlB,SAAsB,CAChC,MAAMgB,OAAEA,SAAiBnB,UAAU,gFACnC,OAAOmB,EAAOK,OAAO6D,QAAQ,cAAe,GAC9C,CAAO,CAEL,MAAMlE,OAAEA,SAAiBnB,UAAU,aAEnC,OAAOmB,EAAOK,OAAO6D,QAAQ,SAAU,GACzC,CACF,CAAE,MAAO5E,GAEP,OADAd,OAAOc,MAAM,0BAA2BA,GACf,UAArBY,QAAQlB,SACH,4BAGA,gBAEX,CACF,QAOOQ,eAAe2E,0BACpB,MAAMxE,EAASZ,YAMf,GALAP,OAAOS,MAAM,CACXC,OAAQ,8BACRS,WAGEA,IAAWvB,OAAOe,SAKtB,GAAIQ,IAAWvB,OAAOgB,OAASO,IAAWvB,OAAOiB,MAAO,CACtD,MAAM+E,EAAkBC,2BAClBC,EAAa,gBAAgBF,WAG7BG,EAA6B,GAC7BC,EAAQtE,QAAQC,IAAIsE,MAEtBD,GAASA,EAAMvC,SAAS,OAC1BsC,EAAiBG,KAAKhG,KAAKkC,KAAKvC,GAAGkC,UAAW,WACrCiE,GAASA,EAAMvC,SAAS,SACjCsC,EAAiBG,KAAKhG,KAAKkC,KAAKvC,GAAGkC,UAAW,YAE9CgE,EAAiBG,KAAKhG,KAAKkC,KAAKvC,GAAGkC,UAAW,oBAG9CgE,EAAiBG,KAAKhG,KAAKkC,KAAKvC,GAAGkC,UAAW,aAC9CgE,EAAiBG,KAAKhG,KAAKkC,KAAKvC,GAAGkC,UAAW,YAC9CgE,EAAiBG,KAAKhG,KAAKkC,KAAKvC,GAAGkC,UAAW,YAGhD,IAAIoE,GAAiB,EAErB,IAAK,MAAMC,KAAcL,EACvB,IACE,GAAI9F,GAAGiE,WAAWkC,GAAa,CAC7B,MAAMC,QAAgBpG,GAAGqG,SAASC,SAASH,EAAY,SAKjDI,EAAY,IAAIC,OAAO,oBAAoBb,EAAgBF,QAAQ,sBAAuB,aAC1FgB,EAAgB,IAAID,OAAO,kDAE5BD,EAAUG,KAAKN,IAAaK,EAAcC,KAAKN,GAMlDrG,OAAOS,MAAM,yCAAyC2F,MALtDpG,OAAOS,MAAM,6BAA6B2F,WACpCnG,GAAGqG,SAASM,WAAWR,EAAY,wCAAwCN,OACjF9F,OAAO6G,IAAI,aAAaf,SAAkBM,iEAC1CD,GAAiB,EAIrB,MAAuC,IAA5BJ,EAAiBzB,QAAgB8B,IAAelG,KAAKkC,KAAKvC,GAAGkC,UAAW,cAEjF/B,OAAOS,MAAM,GAAG2F,gEACVnG,GAAGqG,SAASQ,UAAUV,EAAY,sCAAsCN,OAC9E9F,OAAO6G,IAAI,WAAWT,gBAAyBN,kEAC/CK,GAAiB,EAErB,CAAE,MAAOrF,GACPd,OAAOc,MAAM,oBAAoBsF,0BAAmCtF,aAAiBC,MAAQD,EAAMiG,QAAUC,OAAOlG,KACtH,CAEEqF,GACAnG,OAAO6G,IAAI,mLAIXnF,QAAQC,IAAIC,OAASF,QAAQC,IAAIC,KAAK6B,SAASmC,IACjDlE,QAAQC,IAAIC,KAAO,GAAGgE,KAAmBlE,QAAQC,IAAIC,OACrD5B,OAAOS,MAAM,gDAAgDmF,MACnDlE,QAAQC,IAAIC,OACtBF,QAAQC,IAAIC,KAAOgE,EACnB5F,OAAOS,MAAM,oCAAoCmF,KAErD,OArEE5F,OAAOS,MAAM,uGAsEjB,QAKM,SAAUoF,2BACd,MAAMoB,EAAUpH,GAAGkC,UAEnB,GAAyB,UAArBL,QAAQlB,SAEV,OAAON,KAAKkC,KAAK6E,EAAS,UAAW,SAChC,GAAyB,WAArBvF,QAAQlB,UAA8C,UAArBkB,QAAQlB,SAElD,OAAON,KAAKkC,KAAK6E,EAAS,UAAW,SAErC,MAAM,IAAIlG,MAAM,yBAAyBW,QAAQlB,WAErD","ignoreList":[]}
1
+ {"version":3,"names":["OSType","os","exec","util","Logger","fs","path","execSync","fsSync","execAsync","promisify","getOSType","platform","debug","action","Windows","MacOS","Linux","error","Error","async","installCLI","tool","osType","refreshPathEnv","Promise","resolve","setTimeout","stdout","winPath","process","env","PATH","trim","commonPaths","homedir","currentPaths","split","newPaths","Set","join","isCommandAvailable","command","systemVSCodePath","HOME","userVSCodePath","isToolInstalled","retries","installed","openBrowser","url","getPythonPackagePath","pythonExecutablePath","dir","dirname","endsWith","pythonDir","readdirSync","find","e","startsWith","includes","parts","majorVer","version","localAppData","LOCALAPPDATA","sitePkgsPath","APPDATA","venvRoot","libDir","existsSync","pythonDirs","filter","d","length","toLowerCase","getSystemPythonPackageDirectory","pythonPath","packagePath","getSystemPythonExecutablePath","getBrowserPath","edgePaths","chromePaths","edgePath","chromePath","safariPath","getGlobalNPMPackagePath","nvmHome","NVM_HOME","nodeVersion","toString","nvmNodePath","accessSync","getNpmExecutablePath","replace","ensureDotnetToolsInPath","dotnetToolsPath","getDotnetGlobalToolsPath","exportLine","shellConfigFiles","shell","SHELL","push","updatedAnyFile","configFile","content","promises","readFile","pathRegex","RegExp","homePathRegex","test","appendFile","log","writeFile","message","String","homeDir"],"sources":["../../src/utils/osUtils.ts"],"mappings":"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","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{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{(await getAppVersion()).availableUpdate}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";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}}
2
2
  //# sourceMappingURL=versionUtils.js.map