imcp 0.1.8 → 0.1.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +9 -4
- package/dist/cli/commands/list.js +1 -1
- package/dist/cli/commands/list.js.map +1 -1
- package/dist/cli/commands/pull.js +1 -1
- package/dist/cli/commands/pull.js.map +1 -1
- package/dist/cli/commands/serve.js +1 -1
- package/dist/cli/commands/serve.js.map +1 -1
- package/dist/cli/commands/uninstall.js +1 -1
- package/dist/cli/commands/uninstall.js.map +1 -1
- package/dist/cli/index.js +1 -1
- package/dist/cli/index.js.map +1 -1
- package/dist/core/installers/clients/BaseClientInstaller.js +1 -1
- package/dist/core/installers/clients/BaseClientInstaller.js.map +1 -1
- package/dist/core/installers/clients/ClientInstaller.js +1 -1
- package/dist/core/installers/clients/ClientInstaller.js.map +1 -1
- package/dist/core/installers/requirements/CommandInstaller.js +1 -1
- package/dist/core/installers/requirements/CommandInstaller.js.map +1 -1
- package/dist/core/installers/requirements/GeneralInstaller.js +1 -1
- package/dist/core/installers/requirements/GeneralInstaller.js.map +1 -1
- package/dist/core/installers/requirements/NugetInstaller.js +1 -1
- package/dist/core/installers/requirements/NugetInstaller.js.map +1 -1
- package/dist/core/installers/requirements/PipInstaller.js +1 -1
- package/dist/core/installers/requirements/PipInstaller.js.map +1 -1
- package/dist/core/loaders/ConfigurationLoader.js +1 -1
- package/dist/core/loaders/ConfigurationLoader.js.map +1 -1
- package/dist/core/loaders/ConfigurationProvider.d.ts +1 -1
- package/dist/core/loaders/ConfigurationProvider.js +1 -1
- package/dist/core/loaders/ConfigurationProvider.js.map +1 -1
- package/dist/core/loaders/InstallOperationManager.js +1 -1
- package/dist/core/loaders/InstallOperationManager.js.map +1 -1
- package/dist/core/loaders/SystemSettingsManager.js +1 -1
- package/dist/core/loaders/SystemSettingsManager.js.map +1 -1
- package/dist/core/onboard/FeedOnboardService.js +1 -1
- package/dist/core/onboard/FeedOnboardService.js.map +1 -1
- package/dist/core/onboard/OnboardStatusManager.js +1 -1
- package/dist/core/onboard/OnboardStatusManager.js.map +1 -1
- package/dist/core/validators/StdioServerValidator.js +1 -1
- package/dist/core/validators/StdioServerValidator.js.map +1 -1
- package/dist/services/InstallationService.js +1 -1
- package/dist/services/InstallationService.js.map +1 -1
- package/dist/services/MCPManager.d.ts +1 -1
- package/dist/services/MCPManager.js +1 -1
- package/dist/services/MCPManager.js.map +1 -1
- package/dist/services/RequirementService.js +1 -1
- package/dist/services/RequirementService.js.map +1 -1
- package/dist/services/ServerService.js +1 -1
- package/dist/services/ServerService.js.map +1 -1
- package/dist/services/TelemetryService.js +1 -1
- package/dist/services/TelemetryService.js.map +1 -1
- package/dist/utils/UpdateCheckTracker.js +1 -1
- package/dist/utils/UpdateCheckTracker.js.map +1 -1
- package/dist/utils/adoUtils.js +1 -1
- package/dist/utils/adoUtils.js.map +1 -1
- package/dist/utils/clientUtils.js +1 -1
- package/dist/utils/clientUtils.js.map +1 -1
- package/dist/utils/feedUtils.js +1 -1
- package/dist/utils/feedUtils.js.map +1 -1
- package/dist/utils/gitUtils.d.ts +15 -0
- package/dist/utils/gitUtils.js +2 -0
- package/dist/utils/gitUtils.js.map +1 -0
- package/dist/utils/logger.js +1 -1
- package/dist/utils/logger.js.map +1 -1
- package/dist/utils/macroExpressionUtils.js +1 -1
- package/dist/utils/macroExpressionUtils.js.map +1 -1
- package/dist/utils/osUtils.js +1 -1
- package/dist/utils/osUtils.js.map +1 -1
- package/dist/utils/versionUtils.js +1 -1
- package/dist/utils/versionUtils.js.map +1 -1
- package/dist/web/public/js/api.js +1 -1
- package/dist/web/public/js/detailsWidget.js +1 -1
- package/dist/web/public/js/flights/flights.js +1 -1
- package/dist/web/public/js/modal/installModal.js +1 -1
- package/dist/web/public/js/modal/installation.js +1 -1
- package/dist/web/public/js/modal/loadingModal.js +1 -1
- package/dist/web/public/js/modal/modalSetup.js +1 -1
- package/dist/web/public/js/modal.js +1 -1
- package/dist/web/public/js/notifications.js +1 -1
- package/dist/web/public/js/onboard/formProcessor.js +1 -1
- package/dist/web/public/js/onboard/index.js +1 -1
- package/dist/web/public/js/onboard/publishHandler.js +1 -1
- package/dist/web/public/js/onboard/uiHandlers.js +1 -1
- package/dist/web/public/js/onboard/validationHandlers.js +1 -1
- package/dist/web/public/js/serverCategoryDetails.js +1 -1
- package/dist/web/public/js/serverCategoryList.js +1 -1
- package/dist/web/public/js/settings.js +1 -1
- package/dist/web/server.js +1 -1
- package/dist/web/server.js.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["fs","path","exec","promisify","fileURLToPath","GITHUB_REPO","LOCAL_FEEDS_DIR","SETTINGS_DIR","SUPPORTED_CLIENTS","Logger","checkGithubAuth","ConfigurationLoader","execAsync","__dirname","dirname","url","ConfigurationProvider","static","configPath","configuration","configLock","Promise","resolve","tempDir","constructor","this","join","localServerCategories","feeds","clientMCPSettings","getInstance","instance","withLock","operation","current","r","initialize","feedFile","settings","async","configDir","mkdir","recursive","rm","force","error","code","config","JSON","parse","readFile","saveConfiguration","loadFeedsIntoConfiguration","loadClientMCPSettings","writeFile","stringify","getServerCategories","getServerCategory","categoryName","find","s","name","getClientMcpSettings","getFeedConfiguration","getServerMcpConfig","serverName","mcpServers","getInstallationStatus","category","installationStatus","getServerStatus","status","serversStatus","getRequirementStatus","requirementName","requirementsStatus","updateInstallationStatus","requirementStatus","serverStatus","lastUpdated","Date","toISOString","updateRequirementStatus","updateRequirementOperationStatus","operationStatus","updateServerStatus","updateServerOperationStatus","clientName","installedStatus","isRequirementsReady","feedConfiguration","serverConfig","dependencies","requirements","requirementNames","map","every","reqStatus","installed","GetServerRequirementStatus","filter","x","undefined","isServerReady","clients","clientStatus","syncFeeds","log","debug","action","paths","localFeeds","
|
|
1
|
+
{"version":3,"names":["fs","path","exec","promisify","fileURLToPath","GITHUB_REPO","LOCAL_FEEDS_DIR","SETTINGS_DIR","SUPPORTED_CLIENTS","Logger","checkGithubAuth","ConfigurationLoader","execAsync","__dirname","dirname","url","ConfigurationProvider","static","configPath","configuration","configLock","Promise","resolve","tempDir","constructor","this","join","localServerCategories","feeds","clientMCPSettings","getInstance","instance","withLock","operation","current","r","initialize","feedFile","settings","async","configDir","mkdir","recursive","rm","force","error","code","config","JSON","parse","readFile","saveConfiguration","loadFeedsIntoConfiguration","loadClientMCPSettings","writeFile","stringify","getServerCategories","getServerCategory","categoryName","find","s","name","getClientMcpSettings","getFeedConfiguration","getServerMcpConfig","serverName","mcpServers","getInstallationStatus","category","installationStatus","getServerStatus","status","serversStatus","getRequirementStatus","requirementName","requirementsStatus","updateInstallationStatus","requirementStatus","serverStatus","lastUpdated","Date","toISOString","updateRequirementStatus","updateRequirementOperationStatus","operationStatus","updateServerStatus","updateServerOperationStatus","clientName","installedStatus","isRequirementsReady","feedConfiguration","serverConfig","dependencies","requirements","requirementNames","map","every","reqStatus","installed","GetServerRequirementStatus","filter","x","undefined","isServerReady","clients","clientStatus","syncFeeds","repo","branch","log","debug","action","paths","localFeeds","repoUrl","repoBranch","cloneGitRepository","import","clonePath","sourceFeedsDir","feedsPath","access","err","Error","cp","downloadGithubRelease","version","downloadPath","repoName","feedAssetsName","reloadClientMCPSettings","removeServerFromClientMCPSettings","target","readJsonFile","writeJsonFile","clientEntries","Object","entries","targetClients","clientSettings","settingPath","process","env","CODE_INSIDERS","codeInsiderSettingPath","codeSettingPath","content","modified","mcp","servers","values","configProvider"],"sources":["../../../src/core/loaders/ConfigurationProvider.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import fs from"fs/promises";import path from"path";import{SETTINGS_DIR}from"../metadatas/constants.js";import{Logger}from"../../utils/logger.js";const INSTALL_STATUS_DIR=path.join(SETTINGS_DIR,"InstallOperationStatus");export class InstallOperationManager{installOperationStatus={};statusLock=Promise.resolve();categoryName;serverName;statusFilePath;constructor(t,e){this.categoryName=t,this.serverName=e,this.statusFilePath=path.join(INSTALL_STATUS_DIR,this.categoryName,`${this.serverName}.json`),this.loadStatuses().catch((t=>Logger.error("Failed to initialize InstallOperationManager:",t)))}static instanceMap=new Map;static getInstance(t,e){const s=`${t}::${e}`;return this.instanceMap.has(s)||this.instanceMap.set(s,new InstallOperationManager(t,e)),this.instanceMap.get(s)}async withLock(t){const e=this.statusLock;let s;this.statusLock=new Promise((t=>s=t));try{return await e,await t()}finally{s()}}async loadStatuses(){await this.withLock((async()=>{try{await fs.mkdir(path.dirname(this.statusFilePath),{recursive:!0});const t=await fs.readFile(this.statusFilePath,"utf-8");this.installOperationStatus=JSON.parse(t)}catch(t){"ENOENT"===t.code?(this.installOperationStatus={},await this.saveStatuses()):(Logger.error("Failed to load install operation statuses:",t),this.installOperationStatus={})}}))}async saveStatuses(){await fs.mkdir(path.dirname(this.statusFilePath),{recursive:!0}),await fs.writeFile(this.statusFilePath,JSON.stringify(this.installOperationStatus,null,2))}get operationKey(){return`${this.categoryName}-${this.serverName}`}async recordStep(t,e,s){return await this.withLock((async()=>{let a=this.installOperationStatus[this.operationKey];const i={name:t,status:e,message:s,timestamp:(new Date).toISOString()};if(a){const r=a.steps.findIndex((e=>e.name===t&&"completed"!==e.status&&"failed"!==e.status));if(-1!==r?a.steps[r]=i:a.steps.push(i),a.currentStep=t,a.lastUpdated=(new Date).toISOString(),"failed"===e)a.overallStatus="failed",a.error||(a.error=s),a.steps=a.steps.map((t=>"in-progress"===t.status?{...t,status:"canceled",message:(t.message?t.message+" ":"")+"[Canceled due to failure]",timestamp:(new Date).toISOString()}:t));else if("completed"===e&&t.toLowerCase().includes("completed")){const s=a.steps.every((s=>"completed"===s.status||s.name===t&&"completed"===e));a.overallStatus=s?"completed":"in-progress",s&&(a.error=void 0)}else"failed"!==a.overallStatus&&(a.overallStatus="in-progress")}else a={currentStep:t,steps:[i],lastUpdated:(new Date).toISOString(),error:"failed"===e?s:void 0,overallStatus:"failed"===e?"failed":"in-progress"};return"InstallCompleted"===t&&(a.overallStatus="completed"===e?"completed":"failed","completed"===e&&(a.error=void 0)),this.installOperationStatus[this.operationKey]=a,await this.saveStatuses(),a}))}async resetOperation(){return await this.withLock((async()=>{this.installOperationStatus[this.operationKey]&&(delete this.installOperationStatus[this.operationKey],Logger.info(`Reset installation operation status for ${this.operationKey}`),await this.saveStatuses())})),this}async getDetails(){return await this.loadStatuses(),this.installOperationStatus[this.operationKey]}async getAllDetails(){return await this.loadStatuses(),this.installOperationStatus}async markOverallStatus(t,e){return await this.withLock((async()=>{const s=this.installOperationStatus[this.operationKey];if(s)return s.overallStatus=t,s.lastUpdated=(new Date).toISOString(),"failed"===t&&(e&&(s.error=e),s.steps=s.steps.map((t=>"in-progress"===t.status?{...t,status:"canceled",message:(t.message?t.message+" ":"")+"[Canceled due to failure]",timestamp:(new Date).toISOString()}:t))),"completed"===t&&(s.error=void 0),await this.saveStatuses(),s}))}async recording(t,e){const{stepName:s,inProgressMessage:a="Step in progress",endMessage:i,onResult:r=()=>!0,onError:o}=e||{},n=s??(t.name||"unnamedStep");await this.recordStep(n,"in-progress",a);try{const e=await Promise.resolve(t()),s=r(e);return await this.recordStep(n,s?"completed":"failed",(l=e,p=s?"Step completed successfully":"Step failed","function"==typeof i?i(l)||"Step completed":i??p)),e}catch(t){if(!o)throw await this.recordStep(n,"failed",t?.message||String(t)),t;try{const{result:e,message:s}=await o(t);return await this.recordStep(n,"failed",s),e}catch(t){throw await this.recordStep(n,"failed",t?.message||String(t)),t}}var l,p}recordingAsync(t,e){const{stepName:s,inProgressMessage:a="Step in progress",endMessage:i,onResult:r=()=>!0,onError:o,onComplete:n}=e||{},l=s??(t.name||"unnamedStep"),
|
|
1
|
+
import fs from"fs/promises";import path from"path";import{SETTINGS_DIR}from"../metadatas/constants.js";import{Logger}from"../../utils/logger.js";const INSTALL_STATUS_DIR=path.join(SETTINGS_DIR,"InstallOperationStatus");export class InstallOperationManager{installOperationStatus={};statusLock=Promise.resolve();categoryName;serverName;statusFilePath;constructor(t,e){this.categoryName=t,this.serverName=e,this.statusFilePath=path.join(INSTALL_STATUS_DIR,this.categoryName,`${this.serverName}.json`),this.loadStatuses().catch((t=>Logger.error("Failed to initialize InstallOperationManager:",t)))}static instanceMap=new Map;static getInstance(t,e){const s=`${t}::${e}`;return this.instanceMap.has(s)||this.instanceMap.set(s,new InstallOperationManager(t,e)),this.instanceMap.get(s)}async withLock(t){const e=this.statusLock;let s;this.statusLock=new Promise((t=>s=t));try{return await e,await t()}finally{s()}}async loadStatuses(){await this.withLock((async()=>{try{await fs.mkdir(path.dirname(this.statusFilePath),{recursive:!0});const t=await fs.readFile(this.statusFilePath,"utf-8");this.installOperationStatus=JSON.parse(t)}catch(t){"ENOENT"===t.code?(this.installOperationStatus={},await this.saveStatuses()):(Logger.error("Failed to load install operation statuses:",t),this.installOperationStatus={})}}))}async saveStatuses(){await fs.mkdir(path.dirname(this.statusFilePath),{recursive:!0}),await fs.writeFile(this.statusFilePath,JSON.stringify(this.installOperationStatus,null,2))}get operationKey(){return`${this.categoryName}-${this.serverName}`}async recordStep(t,e,s){return await this.withLock((async()=>{let a=this.installOperationStatus[this.operationKey];const i={name:t,status:e,message:s,timestamp:(new Date).toISOString()};if(a){const r=a.steps.findIndex((e=>e.name===t&&"completed"!==e.status&&"failed"!==e.status));if(-1!==r?a.steps[r]=i:a.steps.push(i),a.currentStep=t,a.lastUpdated=(new Date).toISOString(),"failed"===e)a.overallStatus="failed",a.error||(a.error=s),a.steps=a.steps.map((t=>"in-progress"===t.status?{...t,status:"canceled",message:(t.message?t.message+" ":"")+"[Canceled due to failure]",timestamp:(new Date).toISOString()}:t));else if("completed"===e&&t.toLowerCase().includes("completed")){const s=a.steps.every((s=>"completed"===s.status||s.name===t&&"completed"===e));a.overallStatus=s?"completed":"in-progress",s&&(a.error=void 0)}else"failed"!==a.overallStatus&&(a.overallStatus="in-progress")}else a={currentStep:t,steps:[i],lastUpdated:(new Date).toISOString(),error:"failed"===e?s:void 0,overallStatus:"failed"===e?"failed":"in-progress"};return"InstallCompleted"===t&&(a.overallStatus="completed"===e?"completed":"failed","completed"===e&&(a.error=void 0)),this.installOperationStatus[this.operationKey]=a,await this.saveStatuses(),a}))}async resetOperation(){return await this.withLock((async()=>{this.installOperationStatus[this.operationKey]&&(delete this.installOperationStatus[this.operationKey],Logger.info(`Reset installation operation status for ${this.operationKey}`),await this.saveStatuses())})),this}async getDetails(){return await this.loadStatuses(),this.installOperationStatus[this.operationKey]}async getAllDetails(){return await this.loadStatuses(),this.installOperationStatus}async markOverallStatus(t,e){return await this.withLock((async()=>{const s=this.installOperationStatus[this.operationKey];if(s)return s.overallStatus=t,s.lastUpdated=(new Date).toISOString(),"failed"===t&&(e&&(s.error=e),s.steps=s.steps.map((t=>"in-progress"===t.status?{...t,status:"canceled",message:(t.message?t.message+" ":"")+"[Canceled due to failure]",timestamp:(new Date).toISOString()}:t))),"completed"===t&&(s.error=void 0),await this.saveStatuses(),s}))}async recording(t,e){const{stepName:s,inProgressMessage:a="Step in progress",endMessage:i,onResult:r=()=>!0,onError:o}=e||{},n=s??(t.name||"unnamedStep");await this.recordStep(n,"in-progress",a);try{const e=await Promise.resolve(t()),s=r(e);return await this.recordStep(n,s?"completed":"failed",(l=e,p=s?"Step completed successfully":"Step failed","function"==typeof i?i(l)||"Step completed":i??p)),e}catch(t){if(!o)throw await this.recordStep(n,"failed",t?.message||String(t)),t;try{const{result:e,message:s}=await o(t);return await this.recordStep(n,"failed",s),e}catch(t){throw await this.recordStep(n,"failed",t?.message||String(t)),t}}var l,p}recordingAsync(t,e){const{stepName:s,inProgressMessage:a="Step in progress",endMessage:i,onResult:r=()=>!0,onError:o,onComplete:n}=e||{},l=s??(t.name||"unnamedStep"),getMessage=(t,e)=>"function"==typeof i?i(t):i??e;this.recordStep(l,"in-progress",a).then((()=>{t().then((t=>{const e=r(t),s=getMessage(t,e?"Step completed successfully":"Step failed");this.recordStep(l,e?"completed":"failed",s).then(n).catch()})).catch((async t=>{if(o)try{const e=await o(t);await this.recordStep(l,"failed",e)}catch(t){throw await this.recordStep(l,"failed",t?.message||String(t)),t}else{const e=getMessage(t,t?.message||String(t));await this.recordStep(l,"failed",e)}}))}))}}
|
|
2
2
|
//# sourceMappingURL=InstallOperationManager.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["fs","path","SETTINGS_DIR","Logger","INSTALL_STATUS_DIR","join","InstallOperationManager","installOperationStatus","statusLock","Promise","resolve","categoryName","serverName","statusFilePath","constructor","this","loadStatuses","catch","error","static","Map","getInstance","key","instanceMap","has","set","get","withLock","operation","current","r","async","mkdir","dirname","recursive","data","readFile","JSON","parse","code","saveStatuses","writeFile","stringify","operationKey","recordStep","stepName","status","message","operationDetails","newStep","name","timestamp","Date","toISOString","existingStepIndex","steps","findIndex","s","push","currentStep","lastUpdated","overallStatus","map","toLowerCase","includes","allStepsCompleted","every","undefined","resetOperation","info","getDetails","getAllDetails","markOverallStatus","recording","fn","options","inProgressMessage","endMessage","onResult","onError","resolvedStepName","result","isSuccess","fallback","err","String","onErrorThrown","recordingAsync","onComplete","getMessage","then","errorMessage"],"sources":["../../../src/core/loaders/InstallOperationManager.ts"],"mappings":"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
|
|
1
|
+
{"version":3,"names":["fs","path","SETTINGS_DIR","Logger","INSTALL_STATUS_DIR","join","InstallOperationManager","installOperationStatus","statusLock","Promise","resolve","categoryName","serverName","statusFilePath","constructor","this","loadStatuses","catch","error","static","Map","getInstance","key","instanceMap","has","set","get","withLock","operation","current","r","async","mkdir","dirname","recursive","data","readFile","JSON","parse","code","saveStatuses","writeFile","stringify","operationKey","recordStep","stepName","status","message","operationDetails","newStep","name","timestamp","Date","toISOString","existingStepIndex","steps","findIndex","s","push","currentStep","lastUpdated","overallStatus","map","toLowerCase","includes","allStepsCompleted","every","undefined","resetOperation","info","getDetails","getAllDetails","markOverallStatus","recording","fn","options","inProgressMessage","endMessage","onResult","onError","resolvedStepName","result","isSuccess","fallback","err","String","onErrorThrown","recordingAsync","onComplete","getMessage","then","errorMessage"],"sources":["../../../src/core/loaders/InstallOperationManager.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import fs from"fs/promises";import path from"path";import{SETTINGS_DIR}from"../metadatas/constants.js";import{Logger}from"../../utils/logger.js";import{getSystemPythonExecutablePath,getNpmExecutablePath,getBrowserPath}from"../../utils/osUtils.js";const SETTINGS_FILE_NAME="system_settings.json",SETTINGS_FILE_PATH=path.join(SETTINGS_DIR,"settings",SETTINGS_FILE_NAME);export class SystemSettingsManager{static instance;settings;settingsFilePath;settingsLock=Promise.resolve();constructor(){this.settingsFilePath=SETTINGS_FILE_PATH,this.settings={},this.loadSettings().catch((t=>{Logger.error("Failed to initialize SystemSettingsManager during construction:",t),this.settings={}}))}static getInstance(){return SystemSettingsManager.instance||(SystemSettingsManager.instance=new SystemSettingsManager),SystemSettingsManager.instance}async withLock(t){const s=this.settingsLock;let e;this.settingsLock=new Promise((t=>e=t));try{return await s,await t()}finally{e()}}async _loadSettingsInternal(){try{await fs.mkdir(path.dirname(this.settingsFilePath),{recursive:!0});const t=await fs.readFile(this.settingsFilePath,"utf-8");this.settings=JSON.parse(t),await this._applyDefaultsIfNeededInternal()}catch(t){"ENOENT"===t.code?(Logger.info(`Settings file not found at ${this.settingsFilePath}. Initializing with defaults.`),this.settings={},await this._applyDefaultsIfNeededInternal()):(Logger.error(`Error loading settings from ${this.settingsFilePath}:`,t),this.settings={},await this._applyDefaultsIfNeededInternal())}}async loadSettings(){return this.withLock((()=>this._loadSettingsInternal()))}async _applyDefaultsIfNeededInternal(){let t=!1;const
|
|
1
|
+
import fs from"fs/promises";import path from"path";import{SETTINGS_DIR}from"../metadatas/constants.js";import{Logger}from"../../utils/logger.js";import{getSystemPythonExecutablePath,getNpmExecutablePath,getBrowserPath}from"../../utils/osUtils.js";const SETTINGS_FILE_NAME="system_settings.json",SETTINGS_FILE_PATH=path.join(SETTINGS_DIR,"settings",SETTINGS_FILE_NAME);export class SystemSettingsManager{static instance;settings;settingsFilePath;settingsLock=Promise.resolve();constructor(){this.settingsFilePath=SETTINGS_FILE_PATH,this.settings={},this.loadSettings().catch((t=>{Logger.error("Failed to initialize SystemSettingsManager during construction:",t),this.settings={}}))}static getInstance(){return SystemSettingsManager.instance||(SystemSettingsManager.instance=new SystemSettingsManager),SystemSettingsManager.instance}async withLock(t){const s=this.settingsLock;let e;this.settingsLock=new Promise((t=>e=t));try{return await s,await t()}finally{e()}}async _loadSettingsInternal(){try{await fs.mkdir(path.dirname(this.settingsFilePath),{recursive:!0});const t=await fs.readFile(this.settingsFilePath,"utf-8");this.settings=JSON.parse(t),await this._applyDefaultsIfNeededInternal()}catch(t){"ENOENT"===t.code?(Logger.info(`Settings file not found at ${this.settingsFilePath}. Initializing with defaults.`),this.settings={},await this._applyDefaultsIfNeededInternal()):(Logger.error(`Error loading settings from ${this.settingsFilePath}:`,t),this.settings={},await this._applyDefaultsIfNeededInternal())}}async loadSettings(){return this.withLock((()=>this._loadSettingsInternal()))}async _applyDefaultsIfNeededInternal(){let t=!1;const normalizePath=t=>t?t.replace(/\\/g,"/"):void 0;if(this.settings.pythonEnvs||(this.settings.pythonEnvs={},t=!0),!this.settings.pythonEnvs.system)try{const s=normalizePath(await getSystemPythonExecutablePath()||void 0);s&&(this.settings.pythonEnvs.system=s,t=!0)}catch(t){Logger.warn(`Could not get default pythonEnv: ${t}`)}if(this.settings.nodePath)this.settings.nodePath=normalizePath(this.settings.nodePath);else try{const s=await getNpmExecutablePath();let e="win32"===process.platform?"node.exe":"node";const n="win32"===process.platform?path.join(s||"",e):path.join(s||"","bin",e);this.settings.nodePath=s?normalizePath(n):void 0,this.settings.nodePath&&(t=!0)}catch(t){Logger.warn(`Could not get default nodePath: ${t}`)}if(this.settings.browserPath)this.settings.browserPath=normalizePath(this.settings.browserPath);else try{this.settings.browserPath=normalizePath(await getBrowserPath()||void 0),this.settings.browserPath&&(t=!0)}catch(t){Logger.warn(`Could not get default browserPath: ${t}`)}this.settings.systemEnvironments||(this.settings.systemEnvironments={...process.env},t=!0),void 0===this.settings.userConfigurations&&(this.settings.userConfigurations={},t=!0),t&&await this._saveSettingsInternal()}async applyDefaultsIfNeeded(){return this.withLock((()=>this._applyDefaultsIfNeededInternal()))}async getSystemSettings(){0===Object.keys(this.settings).length&&await this.loadSettings();const t={...JSON.parse(JSON.stringify(this.settings))};if(t.pythonEnvs){const s={};Object.keys(t.pythonEnvs).forEach((e=>{s[e]=t.pythonEnvs?.[e]?.replace(/\\/g,"/")||""})),t.pythonEnvs=s}return t.nodePath=t.nodePath?.replace(/\\/g,"/"),t.browserPath=t.browserPath?.replace(/\\/g,"/"),t}async createOrUpdateSystemSettings(t){return this.withLock((async()=>{0===Object.keys(this.settings).length&&await this._loadSettingsInternal();const normalizePath=t=>t?t.replace(/\\/g,"/"):void 0;this.settings.pythonEnvs||(this.settings.pythonEnvs={});const s={...this.settings,...t,nodePath:normalizePath(void 0!==t.nodePath?t.nodePath:this.settings.nodePath),browserPath:normalizePath(void 0!==t.browserPath?t.browserPath:this.settings.browserPath),systemEnvironments:void 0!==t.systemEnvironments?t.systemEnvironments:this.settings.systemEnvironments,userConfigurations:void 0!==t.userConfigurations?t.userConfigurations:this.settings.userConfigurations||{}};return this.settings=s,await this._applyDefaultsIfNeededInternal(),await this._saveSettingsInternal(),Logger.info("System settings updated."),this.getSystemSettings()}))}async _saveSettingsInternal(){try{const t={...this.settings};if(t.nodePath=t.nodePath?.replace(/\\/g,"/"),t.browserPath=t.browserPath?.replace(/\\/g,"/"),t.pythonEnvs){const s={};Object.keys(t.pythonEnvs).forEach((e=>{s[e]=t.pythonEnvs?.[e]?.replace(/\\/g,"/")||""})),t.pythonEnvs=s}await fs.mkdir(path.dirname(this.settingsFilePath),{recursive:!0}),await fs.writeFile(this.settingsFilePath,JSON.stringify(t,null,2)),Logger.info(`System settings saved to ${this.settingsFilePath}`)}catch(t){throw Logger.error(`Error saving settings to ${this.settingsFilePath}:`,t),t}}async saveSettings(){await this.withLock((async()=>{await this._saveSettingsInternal()}))}}export const systemSettingsManager=SystemSettingsManager.getInstance();
|
|
2
2
|
//# sourceMappingURL=SystemSettingsManager.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["fs","path","SETTINGS_DIR","Logger","getSystemPythonExecutablePath","getNpmExecutablePath","getBrowserPath","SETTINGS_FILE_NAME","SETTINGS_FILE_PATH","join","SystemSettingsManager","static","settings","settingsFilePath","settingsLock","Promise","resolve","constructor","this","loadSettings","catch","error","getInstance","instance","withLock","operation","currentLock","releaseLock","_loadSettingsInternal","mkdir","dirname","recursive","data","readFile","JSON","parse","_applyDefaultsIfNeededInternal","code","info","updated","normalizePath","p","replace","undefined","pythonEnvs","pythonPath","e","warn","nodePath","npmExecDir","nodeExecutable","process","platform","platformNodePath","browserPath","systemEnvironments","env","userConfigurations","_saveSettingsInternal","applyDefaultsIfNeeded","getSystemSettings","Object","keys","length","normalizedSettings","stringify","normalizedPythonEnvs","forEach","key","createOrUpdateSystemSettings","newSettings","async","updatedSettings","settingsToSave","writeFile","saveSettings","systemSettingsManager"],"sources":["../../../src/core/loaders/SystemSettingsManager.ts"],"mappings":"OAAOA,OAAQ,qBACRC,SAAU,cACRC,iBAAoB,mCAEpBC,WAAc,+BACdC,8BAA+BC,qBAAsBC,mBAAsB,yBAEpF,MAAMC,mBAAqB,uBACrBC,mBAAqBP,KAAKQ,KAAKP,aAAc,WAAYK,2BAEzD,MAAOG,sBACDC,gBACAC,SACAC,iBACAC,aAA8BC,QAAQC,UAE9C,WAAAC,GACIC,KAAKL,iBAAmBL,mBACxBU,KAAKN,SAAW,GAEhBM,KAAKC,eAAeC,OAAMC,IACtBlB,OAAOkB,MAAM,kEAAmEA,GAEhFH,KAAKN,SAAW,EAAE,GAE1B,CAEO,kBAAOU,GAIV,OAHKZ,sBAAsBa,WACvBb,sBAAsBa,SAAW,IAAIb,uBAElCA,sBAAsBa,QACjC,CAEQ,cAAMC,CAAYC,GACtB,MAAMC,EAAcR,KAAKJ,aACzB,IAAIa,EACJT,KAAKJ,aAAe,IAAIC,SAAcC,GAAWW,EAAcX,IAC/D,IAEI,aADMU,QACOD,GACjB,C,QACIE,GACJ,CACJ,CAGQ,2BAAMC,GACV,UACU5B,GAAG6B,MAAM5B,KAAK6B,QAAQZ,KAAKL,kBAAmB,CAAEkB,WAAW,IACjE,MAAMC,QAAahC,GAAGiC,SAASf,KAAKL,iBAAkB,SACtDK,KAAKN,SAAWsB,KAAKC,MAAMH,SACrBd,KAAKkB,gCACf,CAAE,MAAOf,GACyC,WAAzCA,EAAgCgB,MACjClC,OAAOmC,KAAK,8BAA8BpB,KAAKL,iDAC/CK,KAAKN,SAAW,SACVM,KAAKkB,mCAEXjC,OAAOkB,MAAM,+BAA+BH,KAAKL,oBAAqBQ,GACtEH,KAAKN,SAAW,SACVM,KAAKkB,iCAEnB,CACJ,CAOO,kBAAMjB,GACT,OAAOD,KAAKM,UAAS,IAAMN,KAAKU,yBACpC,CAGQ,oCAAMQ,GACV,IAAIG,GAAU,EACd,MAAMC,
|
|
1
|
+
{"version":3,"names":["fs","path","SETTINGS_DIR","Logger","getSystemPythonExecutablePath","getNpmExecutablePath","getBrowserPath","SETTINGS_FILE_NAME","SETTINGS_FILE_PATH","join","SystemSettingsManager","static","settings","settingsFilePath","settingsLock","Promise","resolve","constructor","this","loadSettings","catch","error","getInstance","instance","withLock","operation","currentLock","releaseLock","_loadSettingsInternal","mkdir","dirname","recursive","data","readFile","JSON","parse","_applyDefaultsIfNeededInternal","code","info","updated","normalizePath","p","replace","undefined","pythonEnvs","pythonPath","e","warn","nodePath","npmExecDir","nodeExecutable","process","platform","platformNodePath","browserPath","systemEnvironments","env","userConfigurations","_saveSettingsInternal","applyDefaultsIfNeeded","getSystemSettings","Object","keys","length","normalizedSettings","stringify","normalizedPythonEnvs","forEach","key","createOrUpdateSystemSettings","newSettings","async","updatedSettings","settingsToSave","writeFile","saveSettings","systemSettingsManager"],"sources":["../../../src/core/loaders/SystemSettingsManager.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{configProvider}from"../loaders/ConfigurationProvider.js";import{ServerSchemaProvider}from"../loaders/ServerSchemaProvider.js";import{feedValidator}from"../validators/FeedValidator.js";import{Logger,EventType,EventStatus}from"../../utils/logger.js";import{OnboardingProcessStatus}from"./OnboardStatus.js";import{onboardStatusManager}from"./OnboardStatusManager.js";import{onboardProcessor}from"./OnboardProcessor.js";export class FeedOnboardService{constructor(){}createOperationId(e,a){return`${e}_${a}`}async onboardFeed(e,a){const r=await this.validateStaticConfig(e,a);if(!await onboardStatusManager.findSucceededOperation(e.name,"VALIDATION_ONLY",e)){Logger.log(`Feed ${e.name} has not been successfully validated with the current configuration. Publishing requires prior successful validation.`);const a=this.createOperationId(e.name,"FULL_ONBOARDING"),r=`No prior successful validation found for feed: ${e.name}. Please validate the configuration before publishing.`;return Logger.trackEvent(EventType.FEED_ONBOARD,{status:EventStatus.FAILED,feedName:e.name,errorMessage:r,onboardingId:a,feedConfiguration:e}),{onboardingId:a,status:OnboardingProcessStatus.FAILED,message:r,lastQueried:(new Date).toISOString(),feedConfiguration:e}}return Logger.log(`Found existing successful validation for feed: ${e.name}. Proceeding with full onboarding.`),{...await this._initiateOperation(e,"FULL_ONBOARDING",r,a),feedConfiguration:e}}async validateFeed(e,a){const r=await this.validateStaticConfig(e,a);return{...await this._initiateOperation(e,"VALIDATION_ONLY",r,a),feedConfiguration:e}}async _initiateOperation(e,a,r,t){const o=await onboardStatusManager.findSucceededOperation(e.name,a,e);if(o){Logger.log(`[${o.onboardingId}] Found existing successful ${a} operation for feed: ${e.name} with matching configuration.`);const r={onboardingId:o.onboardingId,status:o.status,message:`A successful ${a} already exists for this feed with identical configuration.`,lastQueried:(new Date).toISOString()};return e&&(r.feedConfiguration=e),r}const n=this.createOperationId(e.name,a);return await onboardStatusManager.createInitialStatus(e.name,a),await onboardStatusManager.saveFeedConfiguration(e.name,a,e),"FULL_ONBOARDING"===a?this.processFullOnboarding(n,e,a,r).catch((async r=>{Logger.error(`[${n}] Full feed onboarding process failed:`,r),await onboardStatusManager.recordStep(e.name,a,"Failed during full onboarding process",void 0,OnboardingProcessStatus.FAILED,r instanceof Error?r.message:String(r))})):"VALIDATION_ONLY"===a&&this.processValidationOnly(n,e,a,r).catch((async r=>{Logger.error(`[${n}] Feed validation process failed:`,r),await onboardStatusManager.recordStep(e.name,a,"Failed during validation process",void 0,OnboardingProcessStatus.FAILED,r instanceof Error?r.message:String(r))})),{onboardingId:n,status:OnboardingProcessStatus.PENDING,message:`New ${a} process started with ID: ${n}.`,lastQueried:(new Date).toISOString()}}async validateStaticConfig(e,a){if(!e||"object"!=typeof e)throw new Error("Invalid configuration: Input must be a valid object.");if("string"!=typeof e.name||!e.name.trim())throw new Error('Invalid configuration: "name" must be a non-empty string.');if(!Array.isArray(e.requirements))throw new Error('Invalid configuration: "requirements" must be an array.');if(!Array.isArray(e.mcpServers))throw new Error('Invalid configuration: "mcpServers" must be an array.');const r=await configProvider.getFeedConfiguration(e.name);let t;if(a){if(!r)throw new Error(`Cannot update non-existent category: ${e.name}. Please ensure the category name is correct or create it as a new category.`);if(!e.mcpServers||0===e.mcpServers.length)throw new Error('For an existing category, "mcpServers" must be provided and non-empty in the payload.');const a=new Set(r.mcpServers.map((e=>e.name))),o=e.mcpServers.filter((e=>{const r=!a.has(e.name),t="true"===e.systemTags?.adhoc;return r||a.has(e.name)&&t}));if(0===o.length)throw new Error(`No new or adhoc (editable) servers provided for the existing category "${e.name}". Ensure the "mcpServers" list in your payload contains at least one server not already in this category or an existing server marked with adhoc:true.`);t=o.map((e=>e.name))}else{if(r)throw new Error(`Category "${e.name}" already exists. To modify an existing category, please set 'forExistingCategory' to true.`);if(!e.mcpServers||0===e.mcpServers.length)throw new Error('Server configuration ("mcpServers") must be provided and non-empty for new categories.');t=e.mcpServers.map((e=>e.name))}return e.mcpServers&&Array.isArray(e.mcpServers)&&e.mcpServers.forEach((e=>{e.systemTags&&delete e.systemTags})),e.systemTags&&delete e.systemTags,e.PullRequest&&delete e.PullRequest,t}async _validateFeedConfiguration(e,a,r,t){await onboardStatusManager.recordStep(a.name,r,"Validating feed configuration",void 0,OnboardingProcessStatus.VALIDATING);let o={isValid:!0,serverResults:[]};try{await feedValidator.validate(a,a.name,r);for(const n of a.mcpServers)if(t.includes(n.name))try{await feedValidator.validateServer(n,a,a.name,r),o.serverResults?.push({serverName:n.name,isValid:!0}),await onboardStatusManager.recordStep(a.name,r,`Validated server: ${n.name}`,n.name,OnboardingProcessStatus.VALIDATING),await onboardStatusManager.updateStatus(a.name,r,{validationStatus:o})}catch(e){throw o.isValid=!1,o.serverResults?.push({serverName:n.name,isValid:!1,message:e.message||String(e)}),await onboardStatusManager.recordStep(a.name,r,`Validation failed for server: ${n.name}`,n.name,OnboardingProcessStatus.FAILED,`Server ${n.name}: ${e.message||String(e)}`),await onboardStatusManager.updateStatus(a.name,r,{validationStatus:o}),e}else Logger.log(`[${e}] Skipping validation for server ${n.name} as it's not in the specified list for this operation.`),o.serverResults?.push({serverName:n.name,isValid:!0,message:"Skipped (existed)"});await onboardStatusManager.recordStep(a.name,r,"All servers in feed configuration validated successfully",void 0,OnboardingProcessStatus.VALIDATED),await onboardStatusManager.updateStatus(a.name,r,{validationStatus:o})}catch(e){const t=e;throw await onboardStatusManager.recordStep(a.name,r,"Feed configuration validation failed",void 0,OnboardingProcessStatus.FAILED,t.message||String(e)),await onboardStatusManager.updateStatus(a.name,r,{validationStatus:{isValid:!1,message:t.message||String(e),serverResults:o.serverResults}}),e}}async processValidationOnly(e,a,r,t){try{await this._validateFeedConfiguration(e,a,r,t);const o=await onboardStatusManager.getStatus(a.name,r),n={validationStatus:o?.validationStatus||{isValid:!0,serverResults:[]},feedConfiguration:a};await onboardStatusManager.recordStep(a.name,r,"Feed configuration validated successfully",void 0,OnboardingProcessStatus.SUCCEEDED),await onboardStatusManager.updateStatus(a.name,r,{errorMessage:void 0,prInfo:void 0,result:n,validationStatus:n.validationStatus}),Logger.log(`[${e}] Successfully validated feed: ${a.name}`),Logger.trackEvent(EventType.FEED_VALIDATE,{status:EventStatus.SUCCESS,feedName:a.name,operationType:"VALIDATION_ONLY",onboardingId:e,feedConfiguration:a})}catch(r){const t=r instanceof Error?r.message:String(r);Logger.error(`[${e}] Feed validation process failed for ${a.name} (already handled):`,r),Logger.trackEvent(EventType.FEED_VALIDATE,{status:EventStatus.FAILED,feedName:a.name,operationType:"VALIDATION_ONLY",errorMessage:t,onboardingId:e,feedConfiguration:a})}}async processFullOnboarding(e,a,r,t){const{tempDir:o,repoDir:n}=onboardProcessor.createDirectories(e);try{await onboardStatusManager.recordStep(a.name,r,"Starting PR creation process (validation confirmed)",void 0,OnboardingProcessStatus.PR_CREATING),await onboardStatusManager.recordStep(a.name,r,"Forking repository",void 0,OnboardingProcessStatus.PR_CREATING),await onboardProcessor.forkRepo(e,n),await onboardStatusManager.recordStep(a.name,r,"Cloning repository",void 0,OnboardingProcessStatus.PR_CREATING),await onboardProcessor.cloneRepo(e,o,n),await onboardStatusManager.recordStep(a.name,r,"Setting up branch",void 0,OnboardingProcessStatus.PR_CREATING);const i=await onboardProcessor.setupBranch(e,a,n);await onboardStatusManager.recordStep(a.name,r,"Saving feed configuration to repository",void 0,OnboardingProcessStatus.PR_CREATING);const{feedFilePath:s,categorySchemasPath:d}=await onboardProcessor.saveFeedConfigToRepo(e,a,n,t);await onboardStatusManager.recordStep(a.name,r,"Creating pull request",void 0,OnboardingProcessStatus.PR_CREATING);const g=await onboardProcessor.createPullRequest(e,a,n,i);await onboardStatusManager.recordStep(a.name,r,g.prExists?"Successfully updated to existing pull request":"Successfully created pull request",void 0,OnboardingProcessStatus.SUCCEEDED),await onboardStatusManager.updateStatus(a.name,r,{errorMessage:void 0,prInfo:g,result:g.url}),Logger.log(`[${e}] Successfully created/updated PR for feed: ${a.name}. PR URL: ${g.url}`);try{await onboardStatusManager.recordStep(a.name,r,"Reloading server schemas",void 0,OnboardingProcessStatus.SUCCEEDED),Logger.log(`[${e}] Initializing ServerSchemaProvider with new schemas at ${d}`),await ServerSchemaProvider.getInstance().initialize(d),Logger.log(`[${e}] ServerSchemaProvider re-initialized.`),await onboardStatusManager.recordStep(a.name,r,"Reloading configurations",void 0,OnboardingProcessStatus.SUCCEEDED),Logger.log(`[${e}] Initializing ConfigurationProvider with new feed file at ${s}`),await configProvider.initialize(s,{prLink:g.url,adhocServers:t}),Logger.log(`[${e}] ConfigurationProvider re-initialized.`),Logger.log(`[${e}] Successfully completed full onboarding for feed: ${a.name}`),Logger.trackEvent(EventType.FEED_ONBOARD,{status:EventStatus.SUCCESS,feedName:a.name,onboardingId:e,prUrl:g.url,feedConfiguration:a})}catch(r){Logger.warn(`[${e}] Failed to re-initialize providers after PR creation for feed ${a.name}:`),Logger.warn(`Skipping re-initialization of providers due to error: ${r}`)}}catch(t){Logger.error(`[${e}] Full feed onboarding process failed:`,t);const o=t instanceof Error?t.message:String(t);Logger.trackEvent(EventType.FEED_ONBOARD,{status:EventStatus.FAILED,feedName:a.name,onboardingId:e,errorMessage:o,feedConfiguration:a});const n=await onboardStatusManager.getStatus(a.name,r);if(n?.status!==OnboardingProcessStatus.FAILED){let e="Failed during full onboarding process";t instanceof Error&&"step"in t&&"string"==typeof t.step?e=`Failed at step: ${t.step}`:n?.steps&&n.steps.length>0&&(e=`Failed after step: ${n.steps[n.steps.length-1].stepName}`),await onboardStatusManager.recordStep(a.name,r,e,void 0,OnboardingProcessStatus.FAILED,o)}else Logger.log(`[${e}] Process was already marked as FAILED. Additional context - Current error: ${o}. Initial error from status: ${n.errorMessage}`);throw t}}}export const feedOnboardService=new FeedOnboardService;
|
|
1
|
+
import{configProvider}from"../loaders/ConfigurationProvider.js";import{ServerSchemaProvider}from"../loaders/ServerSchemaProvider.js";import{feedValidator}from"../validators/FeedValidator.js";import{Logger,EventType,EventStatus}from"../../utils/logger.js";import{OnboardingProcessStatus}from"./OnboardStatus.js";import{onboardStatusManager}from"./OnboardStatusManager.js";import{onboardProcessor}from"./OnboardProcessor.js";export class FeedOnboardService{constructor(){}createOperationId(e,a){return`${e}_${a}`}async onboardFeed(e,a){const r=await this.validateStaticConfig(e,a);if(!await onboardStatusManager.findSucceededOperation(e.name,"VALIDATION_ONLY",e)){Logger.log(`Feed ${e.name} has not been successfully validated with the current configuration. Publishing requires prior successful validation.`);const a=this.createOperationId(e.name,"FULL_ONBOARDING"),r=`No prior successful validation found for feed: ${e.name}. Please validate the configuration before publishing.`;return Logger.trackEvent(EventType.FEED_ONBOARD,{status:EventStatus.FAILED,feedName:e.name,errorMessage:r,onboardingId:a,feedConfiguration:e}),{onboardingId:a,status:OnboardingProcessStatus.FAILED,message:r,lastQueried:(new Date).toISOString(),feedConfiguration:e}}Logger.log(`Found existing successful validation for feed: ${e.name}. Proceeding with full onboarding.`);return{...await this._initiateOperation(e,"FULL_ONBOARDING",r,a),feedConfiguration:e}}async validateFeed(e,a){const r=await this.validateStaticConfig(e,a);return{...await this._initiateOperation(e,"VALIDATION_ONLY",r,a),feedConfiguration:e}}async _initiateOperation(e,a,r,t){const o=await onboardStatusManager.findSucceededOperation(e.name,a,e);if(o){Logger.log(`[${o.onboardingId}] Found existing successful ${a} operation for feed: ${e.name} with matching configuration.`);const r={onboardingId:o.onboardingId,status:o.status,message:`A successful ${a} already exists for this feed with identical configuration.`,lastQueried:(new Date).toISOString()};return e&&(r.feedConfiguration=e),r}const n=this.createOperationId(e.name,a);await onboardStatusManager.createInitialStatus(e.name,a);return await onboardStatusManager.saveFeedConfiguration(e.name,a,e),"FULL_ONBOARDING"===a?this.processFullOnboarding(n,e,a,r).catch((async r=>{Logger.error(`[${n}] Full feed onboarding process failed:`,r),await onboardStatusManager.recordStep(e.name,a,"Failed during full onboarding process",void 0,OnboardingProcessStatus.FAILED,r instanceof Error?r.message:String(r))})):"VALIDATION_ONLY"===a&&this.processValidationOnly(n,e,a,r).catch((async r=>{Logger.error(`[${n}] Feed validation process failed:`,r),await onboardStatusManager.recordStep(e.name,a,"Failed during validation process",void 0,OnboardingProcessStatus.FAILED,r instanceof Error?r.message:String(r))})),{onboardingId:n,status:OnboardingProcessStatus.PENDING,message:`New ${a} process started with ID: ${n}.`,lastQueried:(new Date).toISOString()}}async validateStaticConfig(e,a){if(!e||"object"!=typeof e)throw new Error("Invalid configuration: Input must be a valid object.");if("string"!=typeof e.name||!e.name.trim())throw new Error('Invalid configuration: "name" must be a non-empty string.');if(!Array.isArray(e.requirements))throw new Error('Invalid configuration: "requirements" must be an array.');if(!Array.isArray(e.mcpServers))throw new Error('Invalid configuration: "mcpServers" must be an array.');const r=await configProvider.getFeedConfiguration(e.name);let t;if(a){if(!r)throw new Error(`Cannot update non-existent category: ${e.name}. Please ensure the category name is correct or create it as a new category.`);if(!e.mcpServers||0===e.mcpServers.length)throw new Error('For an existing category, "mcpServers" must be provided and non-empty in the payload.');const a=new Set(r.mcpServers.map((e=>e.name))),o=e.mcpServers.filter((e=>{const r=!a.has(e.name),t="true"===e.systemTags?.adhoc;return r||a.has(e.name)&&t}));if(0===o.length)throw new Error(`No new or adhoc (editable) servers provided for the existing category "${e.name}". Ensure the "mcpServers" list in your payload contains at least one server not already in this category or an existing server marked with adhoc:true.`);t=o.map((e=>e.name))}else{if(r)throw new Error(`Category "${e.name}" already exists. To modify an existing category, please set 'forExistingCategory' to true.`);if(!e.mcpServers||0===e.mcpServers.length)throw new Error('Server configuration ("mcpServers") must be provided and non-empty for new categories.');t=e.mcpServers.map((e=>e.name))}return e.mcpServers&&Array.isArray(e.mcpServers)&&e.mcpServers.forEach((e=>{e.systemTags&&delete e.systemTags})),e.systemTags&&delete e.systemTags,e.PullRequest&&delete e.PullRequest,t}async _validateFeedConfiguration(e,a,r,t){await onboardStatusManager.recordStep(a.name,r,"Validating feed configuration",void 0,OnboardingProcessStatus.VALIDATING);let o={isValid:!0,serverResults:[]};try{await feedValidator.validate(a,a.name,r);for(const n of a.mcpServers)if(t.includes(n.name))try{await feedValidator.validateServer(n,a,a.name,r),o.serverResults?.push({serverName:n.name,isValid:!0}),await onboardStatusManager.recordStep(a.name,r,`Validated server: ${n.name}`,n.name,OnboardingProcessStatus.VALIDATING),await onboardStatusManager.updateStatus(a.name,r,{validationStatus:o})}catch(e){throw o.isValid=!1,o.serverResults?.push({serverName:n.name,isValid:!1,message:e.message||String(e)}),await onboardStatusManager.recordStep(a.name,r,`Validation failed for server: ${n.name}`,n.name,OnboardingProcessStatus.FAILED,`Server ${n.name}: ${e.message||String(e)}`),await onboardStatusManager.updateStatus(a.name,r,{validationStatus:o}),e}else Logger.log(`[${e}] Skipping validation for server ${n.name} as it's not in the specified list for this operation.`),o.serverResults?.push({serverName:n.name,isValid:!0,message:"Skipped (existed)"});await onboardStatusManager.recordStep(a.name,r,"All servers in feed configuration validated successfully",void 0,OnboardingProcessStatus.VALIDATED),await onboardStatusManager.updateStatus(a.name,r,{validationStatus:o})}catch(e){const t=e;throw await onboardStatusManager.recordStep(a.name,r,"Feed configuration validation failed",void 0,OnboardingProcessStatus.FAILED,t.message||String(e)),await onboardStatusManager.updateStatus(a.name,r,{validationStatus:{isValid:!1,message:t.message||String(e),serverResults:o.serverResults}}),e}}async processValidationOnly(e,a,r,t){try{await this._validateFeedConfiguration(e,a,r,t);const o=await onboardStatusManager.getStatus(a.name,r),n={validationStatus:o?.validationStatus||{isValid:!0,serverResults:[]},feedConfiguration:a};await onboardStatusManager.recordStep(a.name,r,"Feed configuration validated successfully",void 0,OnboardingProcessStatus.SUCCEEDED),await onboardStatusManager.updateStatus(a.name,r,{errorMessage:void 0,prInfo:void 0,result:n,validationStatus:n.validationStatus}),Logger.log(`[${e}] Successfully validated feed: ${a.name}`),Logger.trackEvent(EventType.FEED_VALIDATE,{status:EventStatus.SUCCESS,feedName:a.name,operationType:"VALIDATION_ONLY",onboardingId:e,feedConfiguration:a})}catch(r){const t=r instanceof Error?r.message:String(r);Logger.error(`[${e}] Feed validation process failed for ${a.name} (already handled):`,r),Logger.trackEvent(EventType.FEED_VALIDATE,{status:EventStatus.FAILED,feedName:a.name,operationType:"VALIDATION_ONLY",errorMessage:t,onboardingId:e,feedConfiguration:a})}}async processFullOnboarding(e,a,r,t){const{tempDir:o,repoDir:n}=onboardProcessor.createDirectories(e);try{await onboardStatusManager.recordStep(a.name,r,"Starting PR creation process (validation confirmed)",void 0,OnboardingProcessStatus.PR_CREATING),await onboardStatusManager.recordStep(a.name,r,"Forking repository",void 0,OnboardingProcessStatus.PR_CREATING),await onboardProcessor.forkRepo(e,n),await onboardStatusManager.recordStep(a.name,r,"Cloning repository",void 0,OnboardingProcessStatus.PR_CREATING),await onboardProcessor.cloneRepo(e,o,n),await onboardStatusManager.recordStep(a.name,r,"Setting up branch",void 0,OnboardingProcessStatus.PR_CREATING);const i=await onboardProcessor.setupBranch(e,a,n);await onboardStatusManager.recordStep(a.name,r,"Saving feed configuration to repository",void 0,OnboardingProcessStatus.PR_CREATING);const{feedFilePath:s,categorySchemasPath:d}=await onboardProcessor.saveFeedConfigToRepo(e,a,n,t);await onboardStatusManager.recordStep(a.name,r,"Creating pull request",void 0,OnboardingProcessStatus.PR_CREATING);const g=await onboardProcessor.createPullRequest(e,a,n,i);await onboardStatusManager.recordStep(a.name,r,g.prExists?"Successfully updated to existing pull request":"Successfully created pull request",void 0,OnboardingProcessStatus.SUCCEEDED),await onboardStatusManager.updateStatus(a.name,r,{errorMessage:void 0,prInfo:g,result:g.url}),Logger.log(`[${e}] Successfully created/updated PR for feed: ${a.name}. PR URL: ${g.url}`);try{await onboardStatusManager.recordStep(a.name,r,"Reloading server schemas",void 0,OnboardingProcessStatus.SUCCEEDED),Logger.log(`[${e}] Initializing ServerSchemaProvider with new schemas at ${d}`),await ServerSchemaProvider.getInstance().initialize(d),Logger.log(`[${e}] ServerSchemaProvider re-initialized.`),await onboardStatusManager.recordStep(a.name,r,"Reloading configurations",void 0,OnboardingProcessStatus.SUCCEEDED),Logger.log(`[${e}] Initializing ConfigurationProvider with new feed file at ${s}`),await configProvider.initialize(s,{prLink:g.url,adhocServers:t}),Logger.log(`[${e}] ConfigurationProvider re-initialized.`),Logger.log(`[${e}] Successfully completed full onboarding for feed: ${a.name}`),Logger.trackEvent(EventType.FEED_ONBOARD,{status:EventStatus.SUCCESS,feedName:a.name,onboardingId:e,prUrl:g.url,feedConfiguration:a})}catch(r){Logger.warn(`[${e}] Failed to re-initialize providers after PR creation for feed ${a.name}:`),Logger.warn(`Skipping re-initialization of providers due to error: ${r}`)}}catch(t){Logger.error(`[${e}] Full feed onboarding process failed:`,t);const o=t instanceof Error?t.message:String(t);Logger.trackEvent(EventType.FEED_ONBOARD,{status:EventStatus.FAILED,feedName:a.name,onboardingId:e,errorMessage:o,feedConfiguration:a});const n=await onboardStatusManager.getStatus(a.name,r);if(n?.status!==OnboardingProcessStatus.FAILED){let e="Failed during full onboarding process";t instanceof Error&&"step"in t&&"string"==typeof t.step?e=`Failed at step: ${t.step}`:n?.steps&&n.steps.length>0&&(e=`Failed after step: ${n.steps[n.steps.length-1].stepName}`),await onboardStatusManager.recordStep(a.name,r,e,void 0,OnboardingProcessStatus.FAILED,o)}else Logger.log(`[${e}] Process was already marked as FAILED. Additional context - Current error: ${o}. Initial error from status: ${n.errorMessage}`);throw t}}}export const feedOnboardService=new FeedOnboardService;
|
|
2
2
|
//# sourceMappingURL=FeedOnboardService.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["configProvider","ServerSchemaProvider","feedValidator","Logger","EventType","EventStatus","OnboardingProcessStatus","onboardStatusManager","onboardProcessor","FeedOnboardService","constructor","createOperationId","feedName","operationType","onboardFeed","config","forExistingCategory","serverList","this","validateStaticConfig","findSucceededOperation","name","log","onboardingId","errorMessage","trackEvent","FEED_ONBOARD","status","FAILED","feedConfiguration","message","lastQueried","Date","toISOString","_initiateOperation","validateFeed","succeededOperation","operationStatus","createInitialStatus","saveFeedConfiguration","processFullOnboarding","catch","async","error","recordStep","undefined","Error","String","processValidationOnly","PENDING","trim","Array","isArray","requirements","mcpServers","existingConfig","getFeedConfiguration","serverListToProcess","length","existingServerNames","Set","map","s","serversToProcessInPayload","filter","payloadServer","isNew","has","isAdhocInPayload","systemTags","adhoc","forEach","server","PullRequest","_validateFeedConfiguration","VALIDATING","overallValidationStatus","isValid","serverResults","validate","serverConfig","includes","validateServer","push","serverName","updateStatus","validationStatus","serverValidationError","VALIDATED","validationError","finalStatus","getStatus","result","SUCCEEDED","prInfo","FEED_VALIDATE","SUCCESS","tempDir","repoDir","createDirectories","PR_CREATING","forkRepo","cloneRepo","branchName","setupBranch","feedFilePath","categorySchemasPath","saveFeedConfigToRepo","createPullRequest","prExists","url","getInstance","initialize","prLink","adhocServers","prUrl","reinitError","warn","currentStatus","stepName","step","steps","feedOnboardService"],"sources":["../../../src/core/onboard/FeedOnboardService.ts"],"mappings":"OACSA,mBAAsB,6CACtBC,yBAA4B,4CAC5BC,kBAAqB,wCACrBC,OAAQC,UAAWC,gBAAmB,+BACtCC,4BAA0F,4BAC1FC,yBAA4B,mCAC5BC,qBAAwB,+BAK3B,MAAOC,mBAGX,WAAAC,GAEA,CAQQ,iBAAAC,CAAkBC,EAAkBC,GAC1C,MAAO,GAAGD,KAAYC,GACxB,CAQO,iBAAMC,CAAYC,EAA2BC,GAElD,MAAMC,QAAmBC,KAAKC,qBAAqBJ,EAAQC,GAK3D,UAF0CT,qBAAqBa,uBAAuBL,EAAOM,KAAM,kBAAmBN,GAEpF,CAEhCZ,OAAOmB,IAAI,QAAQP,EAAOM,6HAM1B,MAAME,EAAeL,KAAKP,kBAAkBI,EAAOM,KAAM,mBACnDG,EAAe,kDAAkDT,EAAOM,6DAW9E,OARAlB,OAAOsB,WAAWrB,UAAUsB,aAAc,CACxCC,OAAQtB,YAAYuB,OACpBhB,SAAUG,EAAOM,KACjBG,eACAD,aAAcA,EACdM,kBAAmBd,IAGd,CACLQ,aAAcA,EACdI,OAAQrB,wBAAwBsB,OAChCE,QAASN,EACTO,aAAa,IAAIC,MAAOC,cACxBJ,kBAAmBd,EAEvB,
|
|
1
|
+
{"version":3,"names":["configProvider","ServerSchemaProvider","feedValidator","Logger","EventType","EventStatus","OnboardingProcessStatus","onboardStatusManager","onboardProcessor","FeedOnboardService","constructor","createOperationId","feedName","operationType","onboardFeed","config","forExistingCategory","serverList","this","validateStaticConfig","findSucceededOperation","name","log","onboardingId","errorMessage","trackEvent","FEED_ONBOARD","status","FAILED","feedConfiguration","message","lastQueried","Date","toISOString","_initiateOperation","validateFeed","succeededOperation","operationStatus","createInitialStatus","saveFeedConfiguration","processFullOnboarding","catch","async","error","recordStep","undefined","Error","String","processValidationOnly","PENDING","trim","Array","isArray","requirements","mcpServers","existingConfig","getFeedConfiguration","serverListToProcess","length","existingServerNames","Set","map","s","serversToProcessInPayload","filter","payloadServer","isNew","has","isAdhocInPayload","systemTags","adhoc","forEach","server","PullRequest","_validateFeedConfiguration","VALIDATING","overallValidationStatus","isValid","serverResults","validate","serverConfig","includes","validateServer","push","serverName","updateStatus","validationStatus","serverValidationError","VALIDATED","validationError","finalStatus","getStatus","result","SUCCEEDED","prInfo","FEED_VALIDATE","SUCCESS","tempDir","repoDir","createDirectories","PR_CREATING","forkRepo","cloneRepo","branchName","setupBranch","feedFilePath","categorySchemasPath","saveFeedConfigToRepo","createPullRequest","prExists","url","getInstance","initialize","prLink","adhocServers","prUrl","reinitError","warn","currentStatus","stepName","step","steps","feedOnboardService"],"sources":["../../../src/core/onboard/FeedOnboardService.ts"],"mappings":"OACSA,mBAAsB,6CACtBC,yBAA4B,4CAC5BC,kBAAqB,wCACrBC,OAAQC,UAAWC,gBAAmB,+BACtCC,4BAA0F,4BAC1FC,yBAA4B,mCAC5BC,qBAAwB,+BAK3B,MAAOC,mBAGX,WAAAC,GAEA,CAQQ,iBAAAC,CAAkBC,EAAkBC,GAC1C,MAAO,GAAGD,KAAYC,GACxB,CAQO,iBAAMC,CAAYC,EAA2BC,GAElD,MAAMC,QAAmBC,KAAKC,qBAAqBJ,EAAQC,GAK3D,UAF0CT,qBAAqBa,uBAAuBL,EAAOM,KAAM,kBAAmBN,GAEpF,CAEhCZ,OAAOmB,IAAI,QAAQP,EAAOM,6HAM1B,MAAME,EAAeL,KAAKP,kBAAkBI,EAAOM,KAAM,mBACnDG,EAAe,kDAAkDT,EAAOM,6DAW9E,OARAlB,OAAOsB,WAAWrB,UAAUsB,aAAc,CACxCC,OAAQtB,YAAYuB,OACpBhB,SAAUG,EAAOM,KACjBG,eACAD,aAAcA,EACdM,kBAAmBd,IAGd,CACLQ,aAAcA,EACdI,OAAQrB,wBAAwBsB,OAChCE,QAASN,EACTO,aAAa,IAAIC,MAAOC,cACxBJ,kBAAmBd,EAEvB,CAEAZ,OAAOmB,IAAI,kDAAkDP,EAAOM,0CAKpE,MAAO,UAFuBH,KAAKgB,mBAAmBnB,EAAQ,kBAAmBE,EAAYD,GAI3Fa,kBAAmBd,EAEvB,CASO,kBAAMoB,CAAapB,EAA2BC,GAEnD,MAAMC,QAAmBC,KAAKC,qBAAqBJ,EAAQC,GAI3D,MAAO,UAFuBE,KAAKgB,mBAAmBnB,EAAQ,kBAAmBE,EAAYD,GAEhEa,kBAAmBd,EAClD,CAWQ,wBAAMmB,CAAmBnB,EAA2BF,EAA8BI,EAAsBD,GAE9G,MAAMoB,QAA2B7B,qBAAqBa,uBAAuBL,EAAOM,KAAMR,EAAeE,GACzG,GAAIqB,EAAoB,CACtBjC,OAAOmB,IAAI,IAAIc,EAAmBb,2CAA2CV,yBAAqCE,EAAOM,qCACzH,MAAMgB,EAA+E,CACnFd,aAAca,EAAmBb,aACjCI,OAAQS,EAAmBT,OAC3BG,QAAS,gBAAgBjB,+DACzBkB,aAAa,IAAIC,MAAOC,eAO1B,OAJIlB,IACFsB,EAAgBR,kBAAoBd,GAG/BsB,CACT,CAGA,MAAMd,EAAeL,KAAKP,kBAAkBI,EAAOM,KAAMR,SAC7BN,qBAAqB+B,oBAAoBvB,EAAOM,KAAMR,GAmClF,aAhCMN,qBAAqBgC,sBAAsBxB,EAAOM,KAAMR,EAAeE,GAEvD,oBAAlBF,EAIFK,KAAKsB,sBAAsBjB,EAAcR,EAAQF,EAAeI,GAAYwB,OAAMC,MAAOC,IACvFxC,OAAOwC,MAAM,IAAIpB,0CAAsDoB,SACjEpC,qBAAqBqC,WACzB7B,EAAOM,KACPR,EACA,6CACAgC,EACAvC,wBAAwBsB,OACxBe,aAAiBG,MAAQH,EAAMb,QAAUiB,OAAOJ,GACjD,IAEwB,oBAAlB9B,GACTK,KAAK8B,sBAAsBzB,EAAcR,EAAQF,EAAeI,GAAYwB,OAAMC,MAAOC,IACvFxC,OAAOwC,MAAM,IAAIpB,qCAAiDoB,SAC5DpC,qBAAqBqC,WACzB7B,EAAOM,KACPR,EACA,wCACAgC,EACAvC,wBAAwBsB,OACxBe,aAAiBG,MAAQH,EAAMb,QAAUiB,OAAOJ,GAEjD,IAIE,CACLpB,eACAI,OAAQrB,wBAAwB2C,QAChCnB,QAAS,OAAOjB,8BAA0CU,KAC1DQ,aAAa,IAAIC,MAAOC,cAE5B,CASQ,0BAAMd,CAAqBJ,EAA2BC,GAE5D,IAAKD,GAA4B,iBAAXA,EACpB,MAAM,IAAI+B,MAAM,wDAElB,GAA2B,iBAAhB/B,EAAOM,OAAsBN,EAAOM,KAAK6B,OAClD,MAAM,IAAIJ,MAAM,6DAElB,IAAKK,MAAMC,QAAQrC,EAAOsC,cACxB,MAAM,IAAIP,MAAM,2DAElB,IAAKK,MAAMC,QAAQrC,EAAOuC,YACxB,MAAM,IAAIR,MAAM,yDAIlB,MAAMS,QAAuBvD,eAAewD,qBAAqBzC,EAAOM,MAGxE,IAAIoC,EAEJ,GAAIzC,EAAqB,CACvB,IAAKuC,EACH,MAAM,IAAIT,MAAM,wCAAwC/B,EAAOM,oFAGjE,IAAKN,EAAOuC,YAA2C,IAA7BvC,EAAOuC,WAAWI,OAC1C,MAAM,IAAIZ,MAAM,yFAGlB,MAAMa,EAAsB,IAAIC,IAAIL,EAAeD,WAAWO,KAAKC,GAAiBA,EAAEzC,QAEhF0C,EAA4BhD,EAAOuC,WAAWU,QAAOC,IACzD,MAAMC,GAASP,EAAoBQ,IAAIF,EAAc5C,MAC/C+C,EAAuD,SAApCH,EAAcI,YAAYC,MACnD,OAAOJ,GAAUP,EAAoBQ,IAAIF,EAAc5C,OAAS+C,CAAiB,IAGnF,GAAyC,IAArCL,EAA0BL,OAE5B,MAAM,IAAIZ,MAAM,0EAA0E/B,EAAOM,+JAEnGoC,EAAsBM,EAA0BF,KAAIC,GAAKA,EAAEzC,MAC7D,KAAO,CACL,GAAIkC,EAGF,MAAM,IAAIT,MAAM,aAAa/B,EAAOM,mGAGtC,IAAKN,EAAOuC,YAA2C,IAA7BvC,EAAOuC,WAAWI,OAC1C,MAAM,IAAIZ,MAAM,0FAGlBW,EAAsB1C,EAAOuC,WAAWO,KAAIC,GAAKA,EAAEzC,MACrD,CAkBA,OAhBIN,EAAOuC,YAAcH,MAAMC,QAAQrC,EAAOuC,aAC5CvC,EAAOuC,WAAWiB,SAAQC,IACpBA,EAAOH,mBACFG,EAAOH,UAChB,IAKAtD,EAAOsD,mBACFtD,EAAOsD,WAEZtD,EAAO0D,oBACF1D,EAAO0D,YAGThB,CACT,CAWQ,gCAAMiB,CAA2BnD,EAAsBR,EAA2BF,EAA8BI,SAChHV,qBAAqBqC,WAAW7B,EAAOM,KAAMR,EAAe,qCAAiCgC,EAAWvC,wBAAwBqE,YACtI,IAAIC,EAAyE,CAAEC,SAAS,EAAMC,cAAe,IAC7G,UACQ5E,cAAc6E,SAAShE,EAAQA,EAAOM,KAAMR,GAGlD,IAAK,MAAMmE,KAAgBjE,EAAOuC,WAChC,GAAKrC,EAAWgE,SAASD,EAAa3D,MAMtC,UACQnB,cAAcgF,eAAeF,EAAcjE,EAAQA,EAAOM,KAAMR,GACtE+D,EAAwBE,eAAeK,KAAK,CAAEC,WAAYJ,EAAa3D,KAAMwD,SAAS,UAChFtE,qBAAqBqC,WAAW7B,EAAOM,KAAMR,EAAe,qBAAqBmE,EAAa3D,OAAQ2D,EAAa3D,KAAMf,wBAAwBqE,kBACjJpE,qBAAqB8E,aAAatE,EAAOM,KAAMR,EAAe,CAAEyE,iBAAkBV,GAC1F,CAAE,MAAOW,GAgBP,MAfAX,EAAwBC,SAAU,EAClCD,EAAwBE,eAAeK,KAAK,CAC1CC,WAAYJ,EAAa3D,KACzBwD,SAAS,EACT/C,QAASyD,EAAsBzD,SAAWiB,OAAOwC,WAE7ChF,qBAAqBqC,WACzB7B,EAAOM,KACPR,EACA,iCAAiCmE,EAAa3D,OAC9C2D,EAAa3D,KACbf,wBAAwBsB,OACxB,UAAUoD,EAAa3D,SAASkE,EAAsBzD,SAAWiB,OAAOwC,YAEpEhF,qBAAqB8E,aAAatE,EAAOM,KAAMR,EAAe,CAAEyE,iBAAkBV,IAClFW,CACR,MA3BEpF,OAAOmB,IAAI,IAAIC,qCAAgDyD,EAAa3D,8DAE5EuD,EAAwBE,eAAeK,KAAK,CAAEC,WAAYJ,EAAa3D,KAAMwD,SAAS,EAAM/C,QAAS,4BA6BnGvB,qBAAqBqC,WAAW7B,EAAOM,KAAMR,EAAe,gEAA4DgC,EAAWvC,wBAAwBkF,iBAC3JjF,qBAAqB8E,aAAatE,EAAOM,KAAMR,EAAe,CAAEyE,iBAAkBV,GAC1F,CAAE,MAAOjC,GACP,MAAM8C,EAAkB9C,EAgBxB,YAfMpC,qBAAqBqC,WACzB7B,EAAOM,KACPR,EACA,4CACAgC,EACAvC,wBAAwBsB,OACxB6D,EAAgB3D,SAAWiB,OAAOJ,UAE9BpC,qBAAqB8E,aAAatE,EAAOM,KAAMR,EAAe,CAClEyE,iBAAkB,CAChBT,SAAS,EACT/C,QAAS2D,EAAgB3D,SAAWiB,OAAOJ,GAC3CmC,cAAeF,EAAwBE,iBAGrCnC,CACR,CACF,CAWQ,2BAAMK,CAAsBzB,EAAsBR,EAA2BF,EAA8BI,GACjH,UAEQC,KAAKwD,2BAA2BnD,EAAcR,EAAQF,EAAeI,GAE3E,MAAMyE,QAAoBnF,qBAAqBoF,UAAU5E,EAAOM,KAAMR,GAChE+E,EAAoC,CACxCN,iBAAkBI,GAAaJ,kBAAoB,CAAET,SAAS,EAAMC,cAAe,IACnFjD,kBAAmBd,SAGfR,qBAAqBqC,WACzB7B,EAAOM,KACPR,EACA,iDACAgC,EACAvC,wBAAwBuF,iBAEpBtF,qBAAqB8E,aAAatE,EAAOM,KAAMR,EAAe,CAClEW,kBAAcqB,EACdiD,YAAQjD,EACR+C,OAAQA,EACRN,iBAAkBM,EAAON,mBAE3BnF,OAAOmB,IAAI,IAAIC,mCAA8CR,EAAOM,QAGpElB,OAAOsB,WAAWrB,UAAU2F,cAAe,CACzCpE,OAAQtB,YAAY2F,QACpBpF,SAAUG,EAAOM,KACjBR,cAAe,kBACfU,aAAcA,EACdM,kBAAmBd,GAEvB,CAAE,MAAO4B,GACP,MAAMnB,EAAemB,aAAiBG,MAAQH,EAAMb,QAAUiB,OAAOJ,GAErExC,OAAOwC,MAAM,IAAIpB,yCAAoDR,EAAOM,0BAA2BsB,GAGvGxC,OAAOsB,WAAWrB,UAAU2F,cAAe,CACzCpE,OAAQtB,YAAYuB,OACpBhB,SAAUG,EAAOM,KACjBR,cAAe,kBACfW,aAAcA,EACdD,aAAcA,EACdM,kBAAmBd,GAEvB,CACF,CAYQ,2BAAMyB,CAAsBjB,EAAsBR,EAA2BF,EAA8BI,GACjH,MAAMgF,QAAEA,EAAOC,QAAEA,GAAY1F,iBAAiB2F,kBAAkB5E,GAChE,UAMQhB,qBAAqBqC,WAAW7B,EAAOM,KAAMR,EAAe,2DAAuDgC,EAAWvC,wBAAwB8F,mBAEtJ7F,qBAAqBqC,WAAW7B,EAAOM,KAAMR,EAAe,0BAAsBgC,EAAWvC,wBAAwB8F,mBACrH5F,iBAAiB6F,SAAS9E,EAAc2E,SAExC3F,qBAAqBqC,WAAW7B,EAAOM,KAAMR,EAAe,0BAAsBgC,EAAWvC,wBAAwB8F,mBACrH5F,iBAAiB8F,UAAU/E,EAAc0E,EAASC,SAElD3F,qBAAqBqC,WAAW7B,EAAOM,KAAMR,EAAe,yBAAqBgC,EAAWvC,wBAAwB8F,aAC1H,MAAMG,QAAmB/F,iBAAiBgG,YAAYjF,EAAcR,EAAQmF,SAEtE3F,qBAAqBqC,WAAW7B,EAAOM,KAAMR,EAAe,+CAA2CgC,EAAWvC,wBAAwB8F,aAChJ,MAAMK,aAAEA,EAAYC,oBAAEA,SAA8BlG,iBAAiBmG,qBAAqBpF,EAAcR,EAAQmF,EAASjF,SAEnHV,qBAAqBqC,WAAW7B,EAAOM,KAAMR,EAAe,6BAAyBgC,EAAWvC,wBAAwB8F,aAC9H,MAAMN,QAAetF,iBAAiBoG,kBAAkBrF,EAAcR,EAAQmF,EAASK,SAGjFhG,qBAAqBqC,WAAW7B,EAAOM,KAAMR,EAAeiF,EAAOe,SAAW,gDAAkD,yCAAqChE,EAAWvC,wBAAwBuF,iBACxMtF,qBAAqB8E,aAAatE,EAAOM,KAAMR,EAAe,CAClEW,kBAAcqB,EACdiD,OAAQA,EACRF,OAAQE,EAAOgB,MAEjB3G,OAAOmB,IAAI,IAAIC,gDAA2DR,EAAOM,iBAAiByE,EAAOgB,OAGzG,UACQvG,qBAAqBqC,WAAW7B,EAAOM,KAAMR,EAAe,gCAA4BgC,EAAWvC,wBAAwBuF,WACjI1F,OAAOmB,IAAI,IAAIC,4DAAuEmF,WAChFzG,qBAAqB8G,cAAcC,WAAWN,GACpDvG,OAAOmB,IAAI,IAAIC,iDAEThB,qBAAqBqC,WAAW7B,EAAOM,KAAMR,EAAe,gCAA4BgC,EAAWvC,wBAAwBuF,WACjI1F,OAAOmB,IAAI,IAAIC,+DAA0EkF,WACnFzG,eAAegH,WAAWP,EAAc,CAAEQ,OAAQnB,EAAOgB,IAAKI,aAAcjG,IAClFd,OAAOmB,IAAI,IAAIC,4CAEfpB,OAAOmB,IAAI,IAAIC,uDAAkER,EAAOM,QAGxFlB,OAAOsB,WAAWrB,UAAUsB,aAAc,CACxCC,OAAQtB,YAAY2F,QACpBpF,SAAUG,EAAOM,KACjBE,aAAcA,EACd4F,MAAOrB,EAAOgB,IACdjF,kBAAmBd,GAEvB,CAAE,MAAOqG,GACPjH,OAAOkH,KAAK,IAAI9F,mEAA8ER,EAAOM,SACrGlB,OAAOkH,KAAK,yDAAyDD,IACvE,CAEF,CAAE,MAAOzE,GACPxC,OAAOwC,MAAM,IAAIpB,0CAAsDoB,GACvE,MAAMnB,EAAemB,aAAiBG,MAAQH,EAAMb,QAAUiB,OAAOJ,GAGrExC,OAAOsB,WAAWrB,UAAUsB,aAAc,CACxCC,OAAQtB,YAAYuB,OACpBhB,SAAUG,EAAOM,KACjBE,aAAcA,EACdC,eACAK,kBAAmBd,IAKrB,MAAMuG,QAAsB/G,qBAAqBoF,UAAU5E,EAAOM,KAAMR,GACxE,GAAIyG,GAAe3F,SAAWrB,wBAAwBsB,OAAQ,CAC5D,IAAI2F,EAAW,wCACX5E,aAAiBG,OAAS,SAAUH,GAA+B,iBAAfA,EAAM6E,KAC5DD,EAAW,mBAAmB5E,EAAM6E,OAC3BF,GAAeG,OAASH,EAAcG,MAAM/D,OAAS,IAE9D6D,EAAW,sBAAsBD,EAAcG,MAAMH,EAAcG,MAAM/D,OAAS,GAAG6D,kBAEjFhH,qBAAqBqC,WACzB7B,EAAOM,KACPR,EACA0G,OACA1E,EACAvC,wBAAwBsB,OACxBJ,EAEJ,MAGErB,OAAOmB,IAAI,IAAIC,gFAA2FC,iCAA4C8F,EAAc9F,gBAEtK,MAAMmB,CACR,CACF,SAIK,MAAM+E,mBAAqB,IAAIjH","ignoreList":[]}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import fs from"fs/promises";import path from"path";import{SETTINGS_DIR}from"../metadatas/constants.js";import{OnboardingProcessStatus}from"./OnboardStatus.js";import{Logger}from"../../utils/logger.js";import*as RecordingConstants from"../metadatas/recordingConstants.js";const ONBOARD_STATUS_DIR=path.join(SETTINGS_DIR,"onboard"),CATEGORY_OPERATIONS_STATUS_FILE=path.join(ONBOARD_STATUS_DIR,"OnboardStatus.json"),FEED_CONFIG_DIR=path.join(ONBOARD_STATUS_DIR,"feed_configs"),NON_COMPLETED_ONBOARDING_STATUSES=[OnboardingProcessStatus.PENDING,OnboardingProcessStatus.VALIDATING,OnboardingProcessStatus.VALIDATED,OnboardingProcessStatus.PR_CREATING];export class OnboardStatusManager{static instance;activeCategoryOperations={};statusLock=Promise.resolve();constructor(){this.loadStatuses().catch((t=>Logger.error("Failed to initialize OnboardStatusManager:",t)))}static getInstance(){return OnboardStatusManager.instance||(OnboardStatusManager.instance=new OnboardStatusManager),OnboardStatusManager.instance}async withLock(t){const a=this.statusLock;let e;this.statusLock=new Promise((t=>e=t));try{return await a,await t()}finally{e()}}async loadStatuses(){await this.withLock((async()=>{try{await fs.mkdir(ONBOARD_STATUS_DIR,{recursive:!0}),await fs.mkdir(FEED_CONFIG_DIR,{recursive:!0});const t=await fs.readFile(CATEGORY_OPERATIONS_STATUS_FILE,"utf-8");this.activeCategoryOperations=JSON.parse(t)}catch(t){"ENOENT"===t.code?(this.activeCategoryOperations={},await this.saveStatuses()):(Logger.error("Failed to load onboarding statuses:",t),this.activeCategoryOperations={})}}))}async saveStatuses(){await fs.mkdir(ONBOARD_STATUS_DIR,{recursive:!0}),await fs.writeFile(CATEGORY_OPERATIONS_STATUS_FILE,JSON.stringify(this.activeCategoryOperations,null,2))}async saveFeedConfiguration(t,a,e){await this.withLock((async()=>{try{await fs.mkdir(FEED_CONFIG_DIR,{recursive:!0});const s=this.createOperationId(t,a),r=path.join(FEED_CONFIG_DIR,`${s}_feed.json`);await fs.writeFile(r,JSON.stringify(e,null,2)),Logger.debug(`Saved feed configuration for category ${t} to ${r}`)}catch(a){throw Logger.error(`Failed to save feed configuration for category ${t}:`,a),a}}))}async getFeedConfiguration(t,a){return await this.withLock((async()=>{try{const e=this.createOperationId(t,a),s=path.join(FEED_CONFIG_DIR,`${e}_feed.json`),r=await fs.readFile(s,"utf-8");return JSON.parse(r)}catch(a){if("ENOENT"===a.code)return;return void Logger.error(`Failed to read feed configuration for category ${t}:`,a)}}))}async getStatus(t,a){return await this.loadStatuses(),this.activeCategoryOperations[t]?.[a]}async getAllStatuses(){return await this.loadStatuses(),this.activeCategoryOperations}async updateStatus(t,a,e,s,r,i){return await this.withLock((async()=>{const o=this.createOperationId(t,a),n=this.activeCategoryOperations[t]||{};let c=n[a];c||(c={onboardingId:o,feedName:t,status:e.status||OnboardingProcessStatus.PENDING,lastUpdated:(new Date).toISOString(),operationType:a,steps:[]});let u={...c,...e,onboardingId:o,feedName:t,operationType:a,lastUpdated:(new Date).toISOString()};if(s){const t={stepName:s,timestamp:(new Date).toISOString(),status:r??e.status??c.status,errorMessage:i??e.errorMessage};u.steps=[...c.steps||[],t],t.status&&t.status!==u.status&&(u.status=t.status),t.errorMessage&&!u.errorMessage&&(u.errorMessage=t.errorMessage)}return n[a]=u,this.activeCategoryOperations[t]=n,await this.saveStatuses(),u}))}async recordStep(t,a,e,s,r,i){return await this.withLock((async()=>{this.createOperationId(t,a);const o=this.activeCategoryOperations[t]||{};let n=o[a];n||(n=await this.createInitialStatus(t,a,s));const c={stepName:e,timestamp:(new Date).toISOString(),status:r??(i?OnboardingProcessStatus.FAILED:n.status),errorMessage:i,...s&&{serverName:s}},u={steps:[...n.steps||[],c],lastUpdated:(new Date).toISOString()};r?u.status=r:i&&n.status!==OnboardingProcessStatus.FAILED&&(u.status=OnboardingProcessStatus.FAILED),i&&!n.errorMessage&&(u.errorMessage=i),s&&!n.serverName&&(u.serverName=s);const g={...n,...u};return o[a]=g,this.activeCategoryOperations[t]=o,await this.saveStatuses(),g}))}createOperationId(t,a){return`${t}_${a}`}async createInitialStatus(t,a,e){const s={onboardingId:this.createOperationId(t,a),feedName:t,serverName:e,status:OnboardingProcessStatus.PENDING,steps:[{stepName:RecordingConstants.STEP_INITIATED,timestamp:(new Date).toISOString()}],lastUpdated:(new Date).toISOString(),operationType:a,errorMessage:void 0,prInfo:void 0};return await this.withLock((async()=>{const e=this.activeCategoryOperations[t]||{};e[a]=s,this.activeCategoryOperations[t]=e,await this.saveStatuses()})),s}async findSucceededOperation(t,a,e){return await this.withLock((async()=>{for(const s in this.activeCategoryOperations){const r=this.activeCategoryOperations[s];if(r){const s=r[a];if(s&&s.feedName===t&&s.status===OnboardingProcessStatus.SUCCEEDED){const t=s.result?.feedConfiguration;if(t&&this.isFeedConfigurationEqual(t,e))return s}}}}))}isFeedConfigurationEqual(t,a){if(t.name!==a.name)return!1;const
|
|
1
|
+
import fs from"fs/promises";import path from"path";import{SETTINGS_DIR}from"../metadatas/constants.js";import{OnboardingProcessStatus}from"./OnboardStatus.js";import{Logger}from"../../utils/logger.js";import*as RecordingConstants from"../metadatas/recordingConstants.js";const ONBOARD_STATUS_DIR=path.join(SETTINGS_DIR,"onboard"),CATEGORY_OPERATIONS_STATUS_FILE=path.join(ONBOARD_STATUS_DIR,"OnboardStatus.json"),FEED_CONFIG_DIR=path.join(ONBOARD_STATUS_DIR,"feed_configs"),NON_COMPLETED_ONBOARDING_STATUSES=[OnboardingProcessStatus.PENDING,OnboardingProcessStatus.VALIDATING,OnboardingProcessStatus.VALIDATED,OnboardingProcessStatus.PR_CREATING];export class OnboardStatusManager{static instance;activeCategoryOperations={};statusLock=Promise.resolve();constructor(){this.loadStatuses().catch((t=>Logger.error("Failed to initialize OnboardStatusManager:",t)))}static getInstance(){return OnboardStatusManager.instance||(OnboardStatusManager.instance=new OnboardStatusManager),OnboardStatusManager.instance}async withLock(t){const a=this.statusLock;let e;this.statusLock=new Promise((t=>e=t));try{return await a,await t()}finally{e()}}async loadStatuses(){await this.withLock((async()=>{try{await fs.mkdir(ONBOARD_STATUS_DIR,{recursive:!0}),await fs.mkdir(FEED_CONFIG_DIR,{recursive:!0});const t=await fs.readFile(CATEGORY_OPERATIONS_STATUS_FILE,"utf-8");this.activeCategoryOperations=JSON.parse(t)}catch(t){"ENOENT"===t.code?(this.activeCategoryOperations={},await this.saveStatuses()):(Logger.error("Failed to load onboarding statuses:",t),this.activeCategoryOperations={})}}))}async saveStatuses(){await fs.mkdir(ONBOARD_STATUS_DIR,{recursive:!0}),await fs.writeFile(CATEGORY_OPERATIONS_STATUS_FILE,JSON.stringify(this.activeCategoryOperations,null,2))}async saveFeedConfiguration(t,a,e){await this.withLock((async()=>{try{await fs.mkdir(FEED_CONFIG_DIR,{recursive:!0});const s=this.createOperationId(t,a),r=path.join(FEED_CONFIG_DIR,`${s}_feed.json`);await fs.writeFile(r,JSON.stringify(e,null,2)),Logger.debug(`Saved feed configuration for category ${t} to ${r}`)}catch(a){throw Logger.error(`Failed to save feed configuration for category ${t}:`,a),a}}))}async getFeedConfiguration(t,a){return await this.withLock((async()=>{try{const e=this.createOperationId(t,a),s=path.join(FEED_CONFIG_DIR,`${e}_feed.json`),r=await fs.readFile(s,"utf-8");return JSON.parse(r)}catch(a){if("ENOENT"===a.code)return;return void Logger.error(`Failed to read feed configuration for category ${t}:`,a)}}))}async getStatus(t,a){return await this.loadStatuses(),this.activeCategoryOperations[t]?.[a]}async getAllStatuses(){return await this.loadStatuses(),this.activeCategoryOperations}async updateStatus(t,a,e,s,r,i){return await this.withLock((async()=>{const o=this.createOperationId(t,a),n=this.activeCategoryOperations[t]||{};let c=n[a];c||(c={onboardingId:o,feedName:t,status:e.status||OnboardingProcessStatus.PENDING,lastUpdated:(new Date).toISOString(),operationType:a,steps:[]});let u={...c,...e,onboardingId:o,feedName:t,operationType:a,lastUpdated:(new Date).toISOString()};if(s){const t={stepName:s,timestamp:(new Date).toISOString(),status:r??e.status??c.status,errorMessage:i??e.errorMessage};u.steps=[...c.steps||[],t],t.status&&t.status!==u.status&&(u.status=t.status),t.errorMessage&&!u.errorMessage&&(u.errorMessage=t.errorMessage)}return n[a]=u,this.activeCategoryOperations[t]=n,await this.saveStatuses(),u}))}async recordStep(t,a,e,s,r,i){return await this.withLock((async()=>{this.createOperationId(t,a);const o=this.activeCategoryOperations[t]||{};let n=o[a];n||(n=await this.createInitialStatus(t,a,s));const c={stepName:e,timestamp:(new Date).toISOString(),status:r??(i?OnboardingProcessStatus.FAILED:n.status),errorMessage:i,...s&&{serverName:s}},u={steps:[...n.steps||[],c],lastUpdated:(new Date).toISOString()};r?u.status=r:i&&n.status!==OnboardingProcessStatus.FAILED&&(u.status=OnboardingProcessStatus.FAILED),i&&!n.errorMessage&&(u.errorMessage=i),s&&!n.serverName&&(u.serverName=s);const g={...n,...u};return o[a]=g,this.activeCategoryOperations[t]=o,await this.saveStatuses(),g}))}createOperationId(t,a){return`${t}_${a}`}async createInitialStatus(t,a,e){const s={onboardingId:this.createOperationId(t,a),feedName:t,serverName:e,status:OnboardingProcessStatus.PENDING,steps:[{stepName:RecordingConstants.STEP_INITIATED,timestamp:(new Date).toISOString()}],lastUpdated:(new Date).toISOString(),operationType:a,errorMessage:void 0,prInfo:void 0};return await this.withLock((async()=>{const e=this.activeCategoryOperations[t]||{};e[a]=s,this.activeCategoryOperations[t]=e,await this.saveStatuses()})),s}async findSucceededOperation(t,a,e){return await this.withLock((async()=>{for(const s in this.activeCategoryOperations){const r=this.activeCategoryOperations[s];if(r){const s=r[a];if(s&&s.feedName===t&&s.status===OnboardingProcessStatus.SUCCEEDED){const t=s.result?.feedConfiguration;if(t&&this.isFeedConfigurationEqual(t,e))return s}}}}))}isFeedConfigurationEqual(t,a){if(t.name!==a.name)return!1;const compareArrays=(t,a,e)=>{if(t.length!==a.length)return!1;const s=e?[...t].sort(e):t,r=e?[...a].sort(e):a;return JSON.stringify(s)===JSON.stringify(r)};if(!compareArrays(t.requirements||[],a.requirements||[]))return!1;return!!compareArrays(t.mcpServers||[],a.mcpServers||[],((t,a)=>(t.name||"").localeCompare(a.name||"")))}async _findExistingNonCompletedOperation(t,a){const e=(await this.getAllStatuses())[t];if(e){const t=e[a];if(t&&NON_COMPLETED_ONBOARDING_STATUSES.includes(t.status))return t}}}export const onboardStatusManager=OnboardStatusManager.getInstance();
|
|
2
2
|
//# sourceMappingURL=OnboardStatusManager.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["fs","path","SETTINGS_DIR","OnboardingProcessStatus","Logger","RecordingConstants","ONBOARD_STATUS_DIR","join","CATEGORY_OPERATIONS_STATUS_FILE","FEED_CONFIG_DIR","NON_COMPLETED_ONBOARDING_STATUSES","PENDING","VALIDATING","VALIDATED","PR_CREATING","OnboardStatusManager","static","activeCategoryOperations","statusLock","Promise","resolve","constructor","this","loadStatuses","catch","error","getInstance","instance","withLock","operation","current","r","async","mkdir","recursive","data","readFile","JSON","parse","code","saveStatuses","writeFile","stringify","saveFeedConfiguration","categoryName","operationType","config","operationId","createOperationId","configPath","debug","getFeedConfiguration","getStatus","getAllStatuses","updateStatus","updates","stepName","stepStatus","errorMessage","categoryOps","existingStatus","onboardingId","feedName","status","lastUpdated","Date","toISOString","steps","updatedStatus","newStep","timestamp","recordStep","serverName","newStatus","currentStatus","createInitialStatus","stepToAdd","FAILED","statusUpdatePayload","initialStatus","STEP_INITIATED","undefined","prInfo","findSucceededOperation","currentConfig","operations","specificOperationStatus","SUCCEEDED","savedConfig","result","feedConfiguration","isFeedConfigurationEqual","config1","config2","name","compareArrays","arr1","arr2","sortFn","length","sorted1","sort","sorted2","requirements","mcpServers","a","b","localeCompare","_findExistingNonCompletedOperation","categoryOperations","includes","onboardStatusManager"],"sources":["../../../src/core/onboard/OnboardStatusManager.ts"],"mappings":"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
|
|
1
|
+
{"version":3,"names":["fs","path","SETTINGS_DIR","OnboardingProcessStatus","Logger","RecordingConstants","ONBOARD_STATUS_DIR","join","CATEGORY_OPERATIONS_STATUS_FILE","FEED_CONFIG_DIR","NON_COMPLETED_ONBOARDING_STATUSES","PENDING","VALIDATING","VALIDATED","PR_CREATING","OnboardStatusManager","static","activeCategoryOperations","statusLock","Promise","resolve","constructor","this","loadStatuses","catch","error","getInstance","instance","withLock","operation","current","r","async","mkdir","recursive","data","readFile","JSON","parse","code","saveStatuses","writeFile","stringify","saveFeedConfiguration","categoryName","operationType","config","operationId","createOperationId","configPath","debug","getFeedConfiguration","getStatus","getAllStatuses","updateStatus","updates","stepName","stepStatus","errorMessage","categoryOps","existingStatus","onboardingId","feedName","status","lastUpdated","Date","toISOString","steps","updatedStatus","newStep","timestamp","recordStep","serverName","newStatus","currentStatus","createInitialStatus","stepToAdd","FAILED","statusUpdatePayload","initialStatus","STEP_INITIATED","undefined","prInfo","findSucceededOperation","currentConfig","operations","specificOperationStatus","SUCCEEDED","savedConfig","result","feedConfiguration","isFeedConfigurationEqual","config1","config2","name","compareArrays","arr1","arr2","sortFn","length","sorted1","sort","sorted2","requirements","mcpServers","a","b","localeCompare","_findExistingNonCompletedOperation","categoryOperations","includes","onboardStatusManager"],"sources":["../../../src/core/onboard/OnboardStatusManager.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{Logger}from"../../utils/logger.js";import{createInstallerFactory}from"../installers/index.js";import{exec,spawn}from"child_process";import util from"util";import{MACRO_EXPRESSIONS,resolveNpmModulePath}from"../../utils/macroExpressionUtils.js";import{getSystemPythonPackageDirectory}from"../../utils/osUtils.js";import{SETTINGS_DIR}from"../metadatas/constants.js";import path from"path";import{InstallOperationManager}from"../loaders/InstallOperationManager.js";const execPromise=util.promisify(exec);export class StdioServerValidator{installerFactory=createInstallerFactory();async isCommandExecutable(e){try{Logger.debug(`Testing if command is executable: ${e}`);const r="win32"===process.platform?`where ${e}`:`command -v ${e}`;return await execPromise(r),!0}catch(r){return Logger.debug(`Command not found: ${e}`),!1}}_getRequirementFolderPath(e){return path.join(SETTINGS_DIR,"onboard","npm_requirements",e.name,e.version.includes("latest")?"latest":e.version)}async validateRequirement(e,r){try{Logger.debug(`Validating/installing requirement: ${e.name}`);const t=this.installerFactory.getInstaller(e);if(!t){const r=`No installer found for requirement type: ${e.type}`;throw Logger.error(r),new Error(r)}const o=this._getRequirementFolderPath(e),n=await t.install(e,r,{settings:{folderName:o}});if(!n.installed){const r=`Failed to install requirement ${e.name}: ${n.error||"Unknown error"}`;throw Logger.error(r),new Error(r)}return Logger.debug(`Requirement ${e.name} is valid and installed`),!0}catch(r){const t=`Error validating/installing requirement ${e.name}: ${r instanceof Error?r.message:String(r)}`;throw Logger.error(t),r instanceof Error?r:new Error(t)}}async testServerStartup(e,r,t){try{Logger.debug(`Testing server startup with command: ${e}`),Logger.debug(`Original arguments: ${r.join(" ")}`);let o=[...r];if("node"===e){Logger.debug("Resolving npm module paths in arguments");const e=t?this._getRequirementFolderPath(t):void 0;o=r.map((r=>r.replace(MACRO_EXPRESSIONS.NPMPATH,resolveNpmModulePath(e)).replace(/\\/g,"/"))),Logger.debug(`Resolved npm arguments: ${o.join(" ")}`)}else if("python"===e||"python3"===e){Logger.debug("Resolving Python package paths in arguments");const e=await getSystemPythonPackageDirectory();if(!e){const e="Could not resolve system Python package directory";throw Logger.error(e),new Error(e)}o=r.map((r=>r.includes("${PYTHON_PACKAGE}")?r.replace("${PYTHON_PACKAGE}",e):r)),Logger.debug(`Resolved Python arguments: ${o.join(" ")}`)}return await new Promise(((r,t)=>{Logger.debug(`Starting process for server test with command: ${e} ${o.join(" ")}`);const n=spawn(e,o,{stdio:["ignore","pipe","pipe"],shell:!0});let i="",s="",a=!1;const
|
|
1
|
+
import{Logger}from"../../utils/logger.js";import{createInstallerFactory}from"../installers/index.js";import{exec,spawn}from"child_process";import util from"util";import{MACRO_EXPRESSIONS,resolveNpmModulePath}from"../../utils/macroExpressionUtils.js";import{getSystemPythonPackageDirectory}from"../../utils/osUtils.js";import{SETTINGS_DIR}from"../metadatas/constants.js";import path from"path";import{InstallOperationManager}from"../loaders/InstallOperationManager.js";const execPromise=util.promisify(exec);export class StdioServerValidator{installerFactory=createInstallerFactory();async isCommandExecutable(e){try{Logger.debug(`Testing if command is executable: ${e}`);const r="win32"===process.platform?`where ${e}`:`command -v ${e}`;return await execPromise(r),!0}catch(r){return Logger.debug(`Command not found: ${e}`),!1}}_getRequirementFolderPath(e){return path.join(SETTINGS_DIR,"onboard","npm_requirements",e.name,e.version.includes("latest")?"latest":e.version)}async validateRequirement(e,r){try{Logger.debug(`Validating/installing requirement: ${e.name}`);const t=this.installerFactory.getInstaller(e);if(!t){const r=`No installer found for requirement type: ${e.type}`;throw Logger.error(r),new Error(r)}const o=this._getRequirementFolderPath(e),n=await t.install(e,r,{settings:{folderName:o}});if(!n.installed){const r=`Failed to install requirement ${e.name}: ${n.error||"Unknown error"}`;throw Logger.error(r),new Error(r)}return Logger.debug(`Requirement ${e.name} is valid and installed`),!0}catch(r){const t=`Error validating/installing requirement ${e.name}: ${r instanceof Error?r.message:String(r)}`;throw Logger.error(t),r instanceof Error?r:new Error(t)}}async testServerStartup(e,r,t){try{Logger.debug(`Testing server startup with command: ${e}`),Logger.debug(`Original arguments: ${r.join(" ")}`);let o=[...r];if("node"===e){Logger.debug("Resolving npm module paths in arguments");const e=t?this._getRequirementFolderPath(t):void 0;o=r.map((r=>r.replace(MACRO_EXPRESSIONS.NPMPATH,resolveNpmModulePath(e)).replace(/\\/g,"/"))),Logger.debug(`Resolved npm arguments: ${o.join(" ")}`)}else if("python"===e||"python3"===e){Logger.debug("Resolving Python package paths in arguments");const e=await getSystemPythonPackageDirectory();if(!e){const e="Could not resolve system Python package directory";throw Logger.error(e),new Error(e)}o=r.map((r=>r.includes("${PYTHON_PACKAGE}")?r.replace("${PYTHON_PACKAGE}",e):r)),Logger.debug(`Resolved Python arguments: ${o.join(" ")}`)}return await new Promise(((r,t)=>{Logger.debug(`Starting process for server test with command: ${e} ${o.join(" ")}`);const n=spawn(e,o,{stdio:["ignore","pipe","pipe"],shell:!0});let i="",s="",a=!1;const cleanupAndResolve=e=>{a||(a=!0,clearTimeout(l),n.stdout.removeAllListeners(),n.stderr.removeAllListeners(),n.removeAllListeners("exit"),n.removeAllListeners("error"),null!==n.exitCode||n.killed||n.kill(),r(e))},cleanupAndReject=e=>{a||(a=!0,clearTimeout(l),n.stdout.removeAllListeners(),n.stderr.removeAllListeners(),n.removeAllListeners("exit"),n.removeAllListeners("error"),null!==n.exitCode||n.killed||n.kill(),t(e))},l=setTimeout((()=>{if(!a)if(null===n.exitCode)Logger.debug("Server startup test: Process still running after 20 seconds. Considering it successful."),Logger.debug(`Collected stdout:\n${i}`),Logger.debug(`Collected stderr:\n${s}`),cleanupAndResolve(!0);else{const e=`Server startup test: Process exited with code ${n.exitCode} before timeout completed.`;Logger.error(e),Logger.debug(`Collected stdout:\n${i}`),Logger.error(`Collected stderr:\n${s}`),cleanupAndReject(new Error(e+` Stderr: ${s}`))}}),2e4);n.stdout.on("data",(e=>{const r=e.toString();i+=r,Logger.debug(`Server stdout: ${r.trim()}`)})),n.stderr.on("data",(e=>{const r=e.toString();s+=r,Logger.debug(`Server stderr: ${r.trim()}`)})),n.on("exit",((e,r)=>{if(!a)if(Logger.debug(`Server process exited with code ${e}, signal: ${r}.`),Logger.debug(`Final stdout:\n${i}`),Logger.debug(`Final stderr:\n${s}`),0===e)cleanupAndResolve(!0);else{const t=`Server process exited with non-zero code ${e} or signal ${r}. Stderr: ${s.trim()}`;Logger.error(t),cleanupAndReject(new Error(t))}})),n.on("error",(e=>{if(a)return;const r=`Server process failed to start or encountered an error: ${e.message}.`;Logger.error(r),Logger.debug(`Stdout at error:\n${i}`),Logger.error(`Stderr at error:\n${s}`),cleanupAndReject(new Error(`${r} Stderr: ${s.trim()}`))}))}))}catch(e){const r=`Failed to test server startup (outer catch): ${e instanceof Error?e.message:String(e)}`;throw Logger.error(r),e instanceof Error?e:new Error(r)}}async validateServer(e,r){try{if(Logger.debug(`Validating stdio server configuration: ${e.name}`),!e.installation?.command)throw new Error("Server command is required in installation configuration");if("stdio"!==e.mode)throw new Error(`Invalid server mode for stdio validator: ${e.mode}`);const t=e.installation.command,[o,...n]=t.split(" "),i=[...n,...e.installation.args||[]],s=e.installation.env;if(s)for(const[e,r]of Object.entries(s))if(r.Required&&!r.Default&&!process.env[e])throw new Error(`Required environment variable not set: ${e}`);if(e.dependencies?.requirements){Logger.debug(`Validating ${e.dependencies.requirements.length} requirements`);for(const t of e.dependencies.requirements){const o=r.requirements?.find((e=>e.name===t.name))||{name:t.name,version:t.version,type:"npm"};if(!await this.validateRequirement(o,InstallOperationManager.getInstance(r.name,e.name)))throw new Error(`Dependency validation failed for: ${t.name}`)}}if(!await this.isCommandExecutable(o))throw new Error(`Command not found or not executable: ${o}`);if(!await this.testServerStartup(o,i,r.requirements?.find((e=>"npm"===e.type))))throw new Error(`Failed to start server with command: ${t} ${i.join(" ")}`);return Logger.debug(`Stdio server validation successful: ${e.name}`),!0}catch(e){const r=`Server validation failed: ${e instanceof Error?e.message:String(e)}`;throw Logger.error(r),new Error(r)}}}
|
|
2
2
|
//# sourceMappingURL=StdioServerValidator.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["Logger","createInstallerFactory","exec","spawn","util","MACRO_EXPRESSIONS","resolveNpmModulePath","getSystemPythonPackageDirectory","SETTINGS_DIR","path","InstallOperationManager","execPromise","promisify","StdioServerValidator","installerFactory","isCommandExecutable","command","debug","testCmd","process","platform","error","_getRequirementFolderPath","requirement","join","name","version","includes","validateRequirement","recorder","installer","this","getInstaller","msg","type","Error","targetDir","status","install","settings","folderName","installed","errorMsg","message","String","testServerStartup","args","finalArgs","npmPath","undefined","map","arg","replace","NPMPATH","pythonDir","Promise","resolve","reject","serverProcess","stdio","shell","stdoutData","stderrData","settled","cleanupAndResolve","value","clearTimeout","timeoutId","stdout","removeAllListeners","stderr","exitCode","killed","kill","cleanupAndReject","err","setTimeout","on","data","messageChunk","toString","trim","code","signal","validateServer","server","config","installation","mode","fullCommand","baseCommand","defaultArgs","split","envVars","env","varConfig","Object","entries","Required","Default","dependencies","requirements","length","req","reqConfig","find","r","getInstance"],"sources":["../../../src/core/validators/StdioServerValidator.ts"],"mappings":"OAESA,WAAc,+BACdC,2BAA8B,gCAC9BC,KAAMC,UAAa,uBACrBC,SAAU,cACRC,kBAAmBC,yBAA4B,6CAC/CC,oCAAuC,gCACvCC,iBAAoB,mCACtBC,SAAU,cACRC,4BAA+B,wCAExC,MAAMC,YAAcP,KAAKQ,UAAUV,aAK7B,MAAOW,qBACHC,iBAAmBb,yBAOnB,yBAAMc,CAAoBC,GAChC,IACEhB,OAAOiB,MAAM,qCAAqCD,KAClD,MAAME,EAA+B,UAArBC,QAAQC,SACtB,SAASJ,IACT,cAAcA,IAGhB,aADML,YAAYO,IACX,CACT,CAAE,MAAOG,GAEP,OADArB,OAAOiB,MAAM,sBAAsBD,MAC5B,CACT,CACF,CAQQ,yBAAAM,CAA0BC,GAChC,OAAOd,KAAKe,KACVhB,aACA,UACA,mBACAe,EAAYE,KACZF,EAAYG,QAAQC,SAAS,UAAY,SAAWJ,EAAYG,QACpE,CAOQ,yBAAME,CAAoBL,EAAgCM,GAChE,IACE7B,OAAOiB,MAAM,sCAAsCM,EAAYE,QAC/D,MAAMK,EAAYC,KAAKjB,iBAAiBkB,aAAaT,GAErD,IAAKO,EAAW,CACd,MAAMG,EAAM,4CAA4CV,EAAYW,OAEpE,MADAlC,OAAOqB,MAAMY,GACP,IAAIE,MAAMF,EAClB,CAEA,MAAMG,EAAYL,KAAKT,0BAA0BC,GAC3Cc,QAAeP,EAAUQ,QAAQf,EAAaM,EAAU,CAAEU,SAAU,CAAEC,WAAYJ,KACxF,IAAKC,EAAOI,UAAW,CACrB,MAAMR,EAAM,iCAAiCV,EAAYE,SAASY,EAAOhB,OAAS,kBAElF,MADArB,OAAOqB,MAAMY,GACP,IAAIE,MAAMF,EAClB,CAGA,OADAjC,OAAOiB,MAAM,eAAeM,EAAYE,gCACjC,CACT,CAAE,MAAOJ,GACP,MAAMqB,EAAW,2CAA2CnB,EAAYE,SAASJ,aAAiBc,MAAQd,EAAMsB,QAAUC,OAAOvB,KAEjI,MADArB,OAAOqB,MAAMqB,GACPrB,aAAiBc,MAAQd,EAAQ,IAAIc,MAAMO,EACnD,CACF,CAYQ,uBAAMG,CAAkB7B,EAAiB8B,EAAgBvB,GAC/D,IAEEvB,OAAOiB,MAAM,wCAAwCD,KACrDhB,OAAOiB,MAAM,uBAAuB6B,EAAKtB,KAAK,QAG9C,IAAIuB,EAAY,IAAID,GAEpB,GAAgB,SAAZ9B,EAAoB,CAEtBhB,OAAOiB,MAAM,2CACb,MAAM+B,EAAUzB,EAAcQ,KAAKT,0BAA0BC,QAAe0B,EAC5EF,EAAYD,EAAKI,KAAIC,GAAOA,EACzBC,QAAQ/C,kBAAkBgD,QAAS/C,qBAAqB0C,IACxDI,QAAQ,MAAO,OAElBpD,OAAOiB,MAAM,2BAA2B8B,EAAUvB,KAAK,OACzD,MAAO,GAAgB,WAAZR,GAAoC,YAAZA,EAAuB,CAExDhB,OAAOiB,MAAM,+CACb,MAAMqC,QAAkB/C,kCACxB,IAAI+C,EAGG,CACL,MAAMrB,EAAM,oDAEZ,MADAjC,OAAOqB,MAAMY,GACP,IAAIE,MAAMF,EAClB,CANEc,EAAYD,EAAKI,KAAIC,GAAOA,EAAIxB,SAAS,qBAAuBwB,EAAIC,QAAQ,oBAAqBE,GAAaH,IAC9GnD,OAAOiB,MAAM,8BAA8B8B,EAAUvB,KAAK,OAM9D,CAEA,aAAa,IAAI+B,SAAiB,CAACC,EAASC,KAC1CzD,OAAOiB,MAAM,kDAAkDD,KAAW+B,EAAUvB,KAAK,QAEzF,MAEMkC,EAAgBvD,MAAMa,EAAS+B,EAAW,CAC9CY,MAAO,CAAC,SAAU,OAAQ,QAC1BC,OAAO,IAGT,IAAIC,EAAa,GACbC,EAAa,GACbC,GAAU,EAEd,MAAMC,
|
|
1
|
+
{"version":3,"names":["Logger","createInstallerFactory","exec","spawn","util","MACRO_EXPRESSIONS","resolveNpmModulePath","getSystemPythonPackageDirectory","SETTINGS_DIR","path","InstallOperationManager","execPromise","promisify","StdioServerValidator","installerFactory","isCommandExecutable","command","debug","testCmd","process","platform","error","_getRequirementFolderPath","requirement","join","name","version","includes","validateRequirement","recorder","installer","this","getInstaller","msg","type","Error","targetDir","status","install","settings","folderName","installed","errorMsg","message","String","testServerStartup","args","finalArgs","npmPath","undefined","map","arg","replace","NPMPATH","pythonDir","Promise","resolve","reject","serverProcess","stdio","shell","stdoutData","stderrData","settled","cleanupAndResolve","value","clearTimeout","timeoutId","stdout","removeAllListeners","stderr","exitCode","killed","kill","cleanupAndReject","err","setTimeout","on","data","messageChunk","toString","trim","code","signal","validateServer","server","config","installation","mode","fullCommand","baseCommand","defaultArgs","split","envVars","env","varConfig","Object","entries","Required","Default","dependencies","requirements","length","req","reqConfig","find","r","getInstance"],"sources":["../../../src/core/validators/StdioServerValidator.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{ClientInstaller}from"../core/installers/clients/ClientInstaller.js";import{ConfigurationProvider}from"../core/loaders/ConfigurationProvider.js";import{Logger}from"../utils/logger.js";import{requirementService}from"./RequirementService.js";import{InstallOperationManager}from"../core/loaders/InstallOperationManager.js";import*as RecordingConstants from"../core/metadatas/recordingConstants.js";export class InstallationService{constructor(){}async install(e,r,t){const n=await InstallOperationManager.getInstance(e,r).resetOperation(),s=ConfigurationProvider.getInstance(),a=t.targetClients||[];if(t.requirements&&t.requirements.length>0&&n.recordingAsync((()=>requirementService.processRequirementUpdates(e,r,t)),{stepName:RecordingConstants.STEP_PROCESS_REQUIREMENT_UPDATES_SERVICE,onError:e=>{const r=`Error in background requirement updates: ${e instanceof Error?e.message:String(e)}`;return Logger.error(r),r},onComplete:()=>{0===a.length&&n.markOverallStatus("completed","Requirement updates completed.")}}),!a||0===a.length)return{success:!0,message:"No clients specified for installation."}
|
|
1
|
+
import{ClientInstaller}from"../core/installers/clients/ClientInstaller.js";import{ConfigurationProvider}from"../core/loaders/ConfigurationProvider.js";import{Logger}from"../utils/logger.js";import{requirementService}from"./RequirementService.js";import{InstallOperationManager}from"../core/loaders/InstallOperationManager.js";import*as RecordingConstants from"../core/metadatas/recordingConstants.js";export class InstallationService{constructor(){}async install(e,r,t){const n=await InstallOperationManager.getInstance(e,r).resetOperation(),s=ConfigurationProvider.getInstance(),a=t.targetClients||[];if(t.requirements&&t.requirements.length>0&&n.recordingAsync((()=>requirementService.processRequirementUpdates(e,r,t)),{stepName:RecordingConstants.STEP_PROCESS_REQUIREMENT_UPDATES_SERVICE,onError:e=>{const r=`Error in background requirement updates: ${e instanceof Error?e.message:String(e)}`;return Logger.error(r),r},onComplete:()=>{0===a.length&&n.markOverallStatus("completed","Requirement updates completed.")}}),!a||0===a.length){return{success:!0,message:"No clients specified for installation."}}const i="Server and clients are already installed and ready";if(await n.recording((()=>s.isServerReady(e,r,a)),{stepName:RecordingConstants.STEP_CHECK_SERVER_READINESS,inProgressMessage:"Checking if server is already ready.",endMessage:e=>e?"Server and clients are already installed and ready":"Server is not ready. Proceeding with installation."}))return{success:!0,message:i,status:[{status:"completed",type:"install",target:"server",message:i}]};const o=new ClientInstaller(e,r,a),l=await requirementService.checkAndInstallRequirements(e,r,t);return await requirementService.checkServerRequirementForUpdateAsync(e,r).then((()=>{Logger.info(`Requirement check for ${e}:${r} completed successfully.`)})).catch((t=>{Logger.error(`Requirement check for ${e}:${r} failed: ${t instanceof Error?t.message:String(t)}`)})),l&&!l.success?(await n.recordStep("RequirementInstallationCheck","failed",l.error?.message||l.message||"Requirement installation failed."),l):await o.install(t)}}
|
|
2
2
|
//# sourceMappingURL=InstallationService.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["ClientInstaller","ConfigurationProvider","Logger","requirementService","InstallOperationManager","RecordingConstants","InstallationService","constructor","install","categoryName","serverName","options","recoder","getInstance","resetOperation","configProvider","clients","targetClients","requirements","length","recordingAsync","processRequirementUpdates","stepName","STEP_PROCESS_REQUIREMENT_UPDATES_SERVICE","onError","error","errorMsg","Error","message","String","onComplete","markOverallStatus","success","readyMessage","recording","isServerReady","STEP_CHECK_SERVER_READINESS","inProgressMessage","endMessage","ready","status","type","target","clientInstaller","requirementsResult","checkAndInstallRequirements","checkServerRequirementForUpdateAsync","then","info","catch","recordStep"],"sources":["../../src/services/InstallationService.ts"],"mappings":"OAISA,oBAAuB,uDACvBC,0BAA6B,kDAC7BC,WAAc,4BACdC,uBAA0B,iCAC1BC,4BAA+B,uDAC5BC,uBAAwB,iDAK9B,MAAOC,oBAEX,WAAAC,GAEA,CASA,aAAMC,CAAQC,EAAsBC,EAAoBC,GAEtD,MAAMC,QAAgBR,wBAAwBS,YAAYJ,EAAcC,GAAYI,iBAC9EC,EAAiBd,sBAAsBY,cAEvCG,EAAUL,EAAQM,eAAiB,GAoBzC,GAjBIN,EAAQO,cAAgBP,EAAQO,aAAaC,OAAS,GACxDP,EAAQQ,gBACN,IAAMjB,mBAAmBkB,0BAA0BZ,EAAcC,EAAYC,IAC7E,CACEW,SAAUjB,mBAAmBkB,yCAC7BC,QAAUC,IACR,MAAMC,EAAW,4CAA4CD,aAAiBE,MAAQF,EAAMG,QAAUC,OAAOJ,KAE7G,OADAvB,OAAOuB,MAAMC,GACNA,CAAQ,EAEjBI,WAAY,KACa,IAAnBd,EAAQG,QAAcP,EAAQmB,kBAAkB,YAAa,iCAAiC,KAMrGf,GAA8B,IAAnBA,EAAQG,
|
|
1
|
+
{"version":3,"names":["ClientInstaller","ConfigurationProvider","Logger","requirementService","InstallOperationManager","RecordingConstants","InstallationService","constructor","install","categoryName","serverName","options","recoder","getInstance","resetOperation","configProvider","clients","targetClients","requirements","length","recordingAsync","processRequirementUpdates","stepName","STEP_PROCESS_REQUIREMENT_UPDATES_SERVICE","onError","error","errorMsg","Error","message","String","onComplete","markOverallStatus","success","readyMessage","recording","isServerReady","STEP_CHECK_SERVER_READINESS","inProgressMessage","endMessage","ready","status","type","target","clientInstaller","requirementsResult","checkAndInstallRequirements","checkServerRequirementForUpdateAsync","then","info","catch","recordStep"],"sources":["../../src/services/InstallationService.ts"],"mappings":"OAISA,oBAAuB,uDACvBC,0BAA6B,kDAC7BC,WAAc,4BACdC,uBAA0B,iCAC1BC,4BAA+B,uDAC5BC,uBAAwB,iDAK9B,MAAOC,oBAEX,WAAAC,GAEA,CASA,aAAMC,CAAQC,EAAsBC,EAAoBC,GAEtD,MAAMC,QAAgBR,wBAAwBS,YAAYJ,EAAcC,GAAYI,iBAC9EC,EAAiBd,sBAAsBY,cAEvCG,EAAUL,EAAQM,eAAiB,GAoBzC,GAjBIN,EAAQO,cAAgBP,EAAQO,aAAaC,OAAS,GACxDP,EAAQQ,gBACN,IAAMjB,mBAAmBkB,0BAA0BZ,EAAcC,EAAYC,IAC7E,CACEW,SAAUjB,mBAAmBkB,yCAC7BC,QAAUC,IACR,MAAMC,EAAW,4CAA4CD,aAAiBE,MAAQF,EAAMG,QAAUC,OAAOJ,KAE7G,OADAvB,OAAOuB,MAAMC,GACNA,CAAQ,EAEjBI,WAAY,KACa,IAAnBd,EAAQG,QAAcP,EAAQmB,kBAAkB,YAAa,iCAAiC,KAMrGf,GAA8B,IAAnBA,EAAQG,OAAc,CAEpC,MAAO,CAAEa,SAAS,EAAMJ,QADR,yCAElB,CAGA,MAAMK,EAAe,qDASrB,SARsBrB,EAAQsB,WAC5B,IAAMnB,EAAeoB,cAAc1B,EAAcC,EAAYM,IAC7D,CACEM,SAAUjB,mBAAmB+B,4BAC7BC,kBAAmB,uCACnBC,WAAaC,GAAmBA,EAAQ,qDAAuD,uDAIjG,MAAO,CACLP,SAAS,EAAMJ,QAASK,EACxBO,OAAQ,CAAC,CACPA,OAAQ,YACRC,KAAM,UACNC,OAAQ,SACRd,QAASK,KAMf,MAAMU,EAAkB,IAAI3C,gBAAgBS,EAAcC,EAAYM,GAGhE4B,QAA2BzC,mBAAmB0C,4BAA4BpC,EAAcC,EAAYC,GAW1G,aARMR,mBAAmB2C,qCAAqCrC,EAAcC,GACzEqC,MAAK,KACJ7C,OAAO8C,KAAK,yBAAyBvC,KAAgBC,4BAAqC,IAE3FuC,OAAOxB,IACNvB,OAAOuB,MAAM,yBAAyBhB,KAAgBC,aAAsBe,aAAiBE,MAAQF,EAAMG,QAAUC,OAAOJ,KAAS,IAGrImB,IAAuBA,EAAmBZ,eACtCpB,EAAQsC,WAAW,+BAAgC,SAAUN,EAAmBnB,OAAOG,SAAWgB,EAAmBhB,SAAW,oCAC/HgB,SAGID,EAAgBnC,QAAQG,EACvC","ignoreList":[]}
|
|
@@ -8,7 +8,7 @@ export declare class MCPManager extends EventEmitter {
|
|
|
8
8
|
private schemaProvider;
|
|
9
9
|
private requirementsService;
|
|
10
10
|
constructor();
|
|
11
|
-
syncFeeds(): Promise<void>;
|
|
11
|
+
syncFeeds(repo?: string, branch?: string): Promise<void>;
|
|
12
12
|
initialize(feedFile?: string, schemasDirectory?: string): Promise<void>;
|
|
13
13
|
listServerCategories(options?: ServerCategoryListOptions): Promise<MCPServerCategory[]>;
|
|
14
14
|
getFeedConfiguration(categoryName: string): Promise<FeedConfiguration | undefined>;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{EventEmitter}from"events";import{ConfigurationProvider}from"../core/loaders/ConfigurationProvider.js";import{ServerSchemaProvider}from"../core/loaders/ServerSchemaProvider.js";import{InstallationService}from"./InstallationService.js";import{MCPEvent}from"../core/metadatas/types.js";import{OnboardingProcessStatus}from"../core/onboard/OnboardStatus.js";import{Logger,EventType,EventStatus}from"../utils/logger.js";import{FeedOnboardService}from"../core/onboard/FeedOnboardService.js";import{RequirementService}from"./RequirementService.js";export class MCPManager extends EventEmitter{installationService;configProvider;feedOnboardService;schemaProvider;requirementsService;constructor(){super(),this.configProvider=ConfigurationProvider.getInstance(),this.schemaProvider=ServerSchemaProvider.getInstance(),this.installationService=new InstallationService,this.feedOnboardService=new FeedOnboardService,this.requirementsService=RequirementService.getInstance()}async syncFeeds(){await this.configProvider.syncFeeds()}async initialize(e,r){try{await this.configProvider.initialize(e),await this.schemaProvider.initialize(r),await this.requirementsService.checkRequirementForUpdateAsync()}catch(e){throw e}}async listServerCategories(e={}){const{local:r=!0}=e;return r?await this.configProvider.getServerCategories():[]}async getFeedConfiguration(e){return this.configProvider.getFeedConfiguration(e)}async getServerMcpConfig(e,r){return this.configProvider.getServerMcpConfig(e,r)}async installServer(e,r,t={}){try{const s=await this.configProvider.getServerCategory(e);if(!s)return{success:!1,message:`Server category ${e} is not onboarded`};const a=await this.installationService.install(e,r,t);return Logger.trackEvent(EventType.SERVER_INSTALL,{status:a.success?EventStatus.SUCCESS:EventStatus.FAILED,errorMessage:a.success?void 0:a.message,categoryName:e,serverName:r,...
|
|
1
|
+
import{EventEmitter}from"events";import{ConfigurationProvider}from"../core/loaders/ConfigurationProvider.js";import{ServerSchemaProvider}from"../core/loaders/ServerSchemaProvider.js";import{InstallationService}from"./InstallationService.js";import{MCPEvent}from"../core/metadatas/types.js";import{OnboardingProcessStatus}from"../core/onboard/OnboardStatus.js";import{Logger,EventType,EventStatus}from"../utils/logger.js";import{FeedOnboardService}from"../core/onboard/FeedOnboardService.js";import{RequirementService}from"./RequirementService.js";export class MCPManager extends EventEmitter{installationService;configProvider;feedOnboardService;schemaProvider;requirementsService;constructor(){super(),this.configProvider=ConfigurationProvider.getInstance(),this.schemaProvider=ServerSchemaProvider.getInstance(),this.installationService=new InstallationService,this.feedOnboardService=new FeedOnboardService,this.requirementsService=RequirementService.getInstance()}async syncFeeds(e,r){await this.configProvider.syncFeeds(e,r)}async initialize(e,r){try{await this.configProvider.initialize(e),await this.schemaProvider.initialize(r),await this.requirementsService.checkRequirementForUpdateAsync()}catch(e){throw console.error("Error during MCPManager initialization:",e),e}}async listServerCategories(e={}){const{local:r=!0}=e;return r?await this.configProvider.getServerCategories():[]}async getFeedConfiguration(e){return this.configProvider.getFeedConfiguration(e)}async getServerMcpConfig(e,r){return this.configProvider.getServerMcpConfig(e,r)}async installServer(e,r,t={}){try{const s=await this.configProvider.getServerCategory(e);if(!s)return{success:!1,message:`Server category ${e} is not onboarded`};const a=await this.installationService.install(e,r,t),n={...t,env:{}};return Logger.trackEvent(EventType.SERVER_INSTALL,{status:a.success?EventStatus.SUCCESS:EventStatus.FAILED,errorMessage:a.success?void 0:a.message,categoryName:e,serverName:r,...n}),a.success?(this.emit(MCPEvent.SERVER_INSTALLED,{server:s}),a):a}catch(s){const a=`Failed to install ${r}: ${s instanceof Error?s.message:String(s)}`;Logger.error(a,s);const n={...t,env:{}};return Logger.trackEvent(EventType.SERVER_INSTALL,{status:EventStatus.FAILED,errorMessage:a,categoryName:e,serverName:r,...n}),{success:!1,message:a,error:s instanceof Error?s:new Error(String(s))}}}async uninstallServer(e,r,t={}){const{targets:s=[],removeData:a=!1}=t;try{const t=await this.configProvider.getServerCategory(e);if(!t)return{success:!1,message:`Server category ${e} is not onboarded`};const n=t.installationStatus||{requirementsStatus:{},serversStatus:{},lastUpdated:(new Date).toISOString()},o=n.serversStatus||{},i=o[r]||{installedStatus:{},name:r};for(const e of s)i.installedStatus&&delete i.installedStatus[e];if(a)for(const e of s)await this.configProvider.removeServerFromClientMCPSettings(r,e);return o[r]=i,await this.configProvider.updateInstallationStatus(e,n.requirementsStatus||{},o),Logger.trackEvent(EventType.SERVER_UNINSTALL,{status:EventStatus.SUCCESS,categoryName:e,serverName:r,targets:s,removeData:a}),this.emit(MCPEvent.SERVER_UNINSTALLED,{serverName:r,targets:s}),{success:!0,message:`Successfully uninstalled ${r} from ${s.join(", ")}`}}catch(t){const n=`Failed to uninstall ${r}: ${t instanceof Error?t.message:String(t)}`;return Logger.trackEvent(EventType.SERVER_UNINSTALL,{status:EventStatus.FAILED,errorMessage:n,categoryName:e,serverName:r,targets:s||[],removeData:a||!1}),{success:!1,message:n,error:t}}}async onboardFeed(e){try{const r=await this.feedOnboardService.onboardFeed(e);return Logger.trackEvent(EventType.FEED_ONBOARD,{status:r.status===OnboardingProcessStatus.SUCCEEDED?EventStatus.SUCCESS:EventStatus.FAILED,errorMessage:r.message,feedConfig:e}),await this.syncFeeds(),r}catch(r){const t=r instanceof Error?r.message:String(r);throw Logger.error("Failed to onboard feed in MCPManager:",r),Logger.trackEvent(EventType.FEED_ONBOARD,{status:EventStatus.FAILED,errorMessage:t,feedName:e.name}),r}}emit(e,r){return super.emit(e,r)}on(e,r){return super.on(e,r)}off(e,r){return super.off(e,r)}}export const mcpManager=new MCPManager;
|
|
2
2
|
//# sourceMappingURL=MCPManager.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["EventEmitter","ConfigurationProvider","ServerSchemaProvider","InstallationService","MCPEvent","OnboardingProcessStatus","Logger","EventType","EventStatus","FeedOnboardService","RequirementService","MCPManager","installationService","configProvider","feedOnboardService","schemaProvider","requirementsService","constructor","super","this","getInstance","syncFeeds","initialize","feedFile","schemasDirectory","checkRequirementForUpdateAsync","error","listServerCategories","options","local","getServerCategories","getFeedConfiguration","categoryName","getServerMcpConfig","serverName","installServer","requestOptions","server","getServerCategory","success","message","installResult","install","trackEvent","SERVER_INSTALL","status","SUCCESS","FAILED","errorMessage","undefined","emit","SERVER_INSTALLED","Error","String","uninstallServer","targets","removeData","serverCategory","currentStatus","installationStatus","requirementsStatus","serversStatus","lastUpdated","Date","toISOString","serverStatus","installedStatus","name","target","removeServerFromClientMCPSettings","updateInstallationStatus","SERVER_UNINSTALL","SERVER_UNINSTALLED","join","onboardFeed","config","result","FEED_ONBOARD","SUCCEEDED","feedConfig","feedName","event","data","on","listener","off","mcpManager"],"sources":["../../src/services/MCPManager.ts"],"mappings":"OAASA,iBAAoB,gBACpBC,0BAA6B,kDAC7BC,yBAA4B,iDAC5BC,wBAA2B,kCAElCC,aASK,oCACEC,4BAAgD,0CAChDC,OAAQC,UAAWC,gBAAmB,4BACtCC,uBAA0B,+CAG1BC,uBAA0B,iCAE7B,MAAOC,mBAAmBX,aACtBY,oBACAC,eACAC,mBACAC,eACAC,oBAER,WAAAC,GACEC,QACAC,KAAKN,eAAiBZ,sBAAsBmB,cAC5CD,KAAKJ,eAAiBb,qBAAqBkB,cAC3CD,KAAKP,oBAAsB,IAAIT,oBAC/BgB,KAAKL,mBAAqB,IAAIL,mBAC9BU,KAAKH,oBAAsBN,mBAAmBU,aAChD,CAEA,eAAMC,
|
|
1
|
+
{"version":3,"names":["EventEmitter","ConfigurationProvider","ServerSchemaProvider","InstallationService","MCPEvent","OnboardingProcessStatus","Logger","EventType","EventStatus","FeedOnboardService","RequirementService","MCPManager","installationService","configProvider","feedOnboardService","schemaProvider","requirementsService","constructor","super","this","getInstance","syncFeeds","repo","branch","initialize","feedFile","schemasDirectory","checkRequirementForUpdateAsync","error","console","listServerCategories","options","local","getServerCategories","getFeedConfiguration","categoryName","getServerMcpConfig","serverName","installServer","requestOptions","server","getServerCategory","success","message","installResult","install","eventRequestOptions","env","trackEvent","SERVER_INSTALL","status","SUCCESS","FAILED","errorMessage","undefined","emit","SERVER_INSTALLED","Error","String","uninstallServer","targets","removeData","serverCategory","currentStatus","installationStatus","requirementsStatus","serversStatus","lastUpdated","Date","toISOString","serverStatus","installedStatus","name","target","removeServerFromClientMCPSettings","updateInstallationStatus","SERVER_UNINSTALL","SERVER_UNINSTALLED","join","onboardFeed","config","result","FEED_ONBOARD","SUCCEEDED","feedConfig","feedName","event","data","on","listener","off","mcpManager"],"sources":["../../src/services/MCPManager.ts"],"mappings":"OAASA,iBAAoB,gBACpBC,0BAA6B,kDAC7BC,yBAA4B,iDAC5BC,wBAA2B,kCAElCC,aASK,oCACEC,4BAAgD,0CAChDC,OAAQC,UAAWC,gBAAmB,4BACtCC,uBAA0B,+CAG1BC,uBAA0B,iCAE7B,MAAOC,mBAAmBX,aACtBY,oBACAC,eACAC,mBACAC,eACAC,oBAER,WAAAC,GACEC,QACAC,KAAKN,eAAiBZ,sBAAsBmB,cAC5CD,KAAKJ,eAAiBb,qBAAqBkB,cAC3CD,KAAKP,oBAAsB,IAAIT,oBAC/BgB,KAAKL,mBAAqB,IAAIL,mBAC9BU,KAAKH,oBAAsBN,mBAAmBU,aAChD,CAEA,eAAMC,CAAUC,EAAeC,SACvBJ,KAAKN,eAAeQ,UAAUC,EAAMC,EAC5C,CAEA,gBAAMC,CAAWC,EAAmBC,GAClC,UACQP,KAAKN,eAAeW,WAAWC,SAC/BN,KAAKJ,eAAeS,WAAWE,SAC/BP,KAAKH,oBAAoBW,gCACjC,CAAE,MAAOC,GAEP,MADAC,QAAQD,MAAM,0CAA2CA,GACnDA,CACR,CACF,CAEA,0BAAME,CAAqBC,EAAqC,IAC9D,MAAMC,MAAEA,GAAQ,GAASD,EACzB,OAAIC,QACWb,KAAKN,eAAeoB,sBAE5B,EACT,CAEA,0BAAMC,CAAqBC,GACzB,OAAOhB,KAAKN,eAAeqB,qBAAqBC,EAClD,CAEA,wBAAMC,CAAmBD,EAAsBE,GAC7C,OAAOlB,KAAKN,eAAeuB,mBAAmBD,EAAcE,EAC9D,CAEA,mBAAMC,CACJH,EACAE,EACAE,EAAuC,IAEvC,IACE,MAAMC,QAAerB,KAAKN,eAAe4B,kBAAkBN,GAC3D,IAAKK,EACH,MAAO,CACLE,SAAS,EACTC,QAAS,mBAAmBR,sBAGhC,MAAMS,QAAsBzB,KAAKP,oBAAoBiC,QAAQV,EAAcE,EAAYE,GAGjFO,EAAsB,IAAKP,EAAgBQ,IAAK,IAStD,OARAzC,OAAO0C,WAAWzC,UAAU0C,eAAgB,CAC1CC,OAAQN,EAAcF,QAAUlC,YAAY2C,QAAU3C,YAAY4C,OAClEC,aAAeT,EAAcF,aAAkCY,EAAxBV,EAAcD,QACrDR,eACAE,gBACGS,IAGAF,EAAcF,SAInBvB,KAAKoC,KAAKnD,SAASoD,iBAAkB,CAAEhB,WAChCI,GAJEA,CAMX,CAAE,MAAOhB,GACP,MAAMyB,EAAe,qBAAqBhB,MAAeT,aAAiB6B,MAAQ7B,EAAMe,QAAUe,OAAO9B,KACzGtB,OAAOsB,MAAMyB,EAAczB,GAC3B,MAAMkB,EAAsB,IAAKP,EAAgBQ,IAAK,IAStD,OARAzC,OAAO0C,WAAWzC,UAAU0C,eAAgB,CAC1CC,OAAQ1C,YAAY4C,OACpBC,eACAlB,eACAE,gBACGS,IAGE,CACLJ,SAAS,EACTC,QAASU,EACTzB,MAAOA,aAAiB6B,MAAQ7B,EAAQ,IAAI6B,MAAMC,OAAO9B,IAE7D,CACF,CAEA,qBAAM+B,CACJxB,EACAE,EACAN,EAAkC,IAElC,MAAM6B,QAAEA,EAAU,GAAEC,WAAEA,GAAa,GAAU9B,EAE7C,IACE,MAAM+B,QAAuB3C,KAAKN,eAAe4B,kBAAkBN,GACnE,IAAK2B,EACH,MAAO,CACLpB,SAAS,EACTC,QAAS,mBAAmBR,sBAKhC,MAAM4B,EAAoCD,EAAeE,oBAAsB,CAC7EC,mBAAoB,GACpBC,cAAe,GACfC,aAAa,IAAIC,MAAOC,eAEpBH,EAAgBH,EAAcG,eAAiB,GAC/CI,EAAeJ,EAAc7B,IAAe,CAAEkC,gBAAiB,GAAIC,KAAMnC,GAG/E,IAAK,MAAMoC,KAAUb,EACfU,EAAaC,wBACRD,EAAaC,gBAAgBE,GAGxC,GAAIZ,EACF,IAAK,MAAMY,KAAUb,QACbzC,KAAKN,eAAe6D,kCAAkCrC,EAAYoC,GAuB5E,OAlBAP,EAAc7B,GAAciC,QAGtBnD,KAAKN,eAAe8D,yBACxBxC,EACA4B,EAAcE,oBAAsB,GACpCC,GAEF5D,OAAO0C,WAAWzC,UAAUqE,iBAAkB,CAC5C1B,OAAQ1C,YAAY2C,QACpBhB,eACAE,aACAuB,UACAC,eAGF1C,KAAKoC,KAAKnD,SAASyE,mBAAoB,CAAExC,aAAYuB,YAE9C,CACLlB,SAAS,EACTC,QAAS,4BAA4BN,UAAmBuB,EAAQkB,KAAK,QAEzE,CAAE,MAAOlD,GACP,MAAMyB,EAAe,uBAAuBhB,MAAeT,aAAiB6B,MAAQ7B,EAAMe,QAAUe,OAAO9B,KAW3G,OATAtB,OAAO0C,WAAWzC,UAAUqE,iBAAkB,CAC5C1B,OAAQ1C,YAAY4C,OACpBC,eACAlB,eACAE,aACAuB,QAASA,GAAW,GACpBC,WAAYA,IAAc,IAGrB,CACLnB,SAAS,EACTC,QAASU,EACTzB,MAAOA,EAEX,CACF,CAMA,iBAAMmD,CAAYC,GAChB,IACE,MAAMC,QAAe9D,KAAKL,mBAAmBiE,YAAYC,GAazD,OAXA1E,OAAO0C,WAAWzC,UAAU2E,aAAc,CACxChC,OAAQ+B,EAAO/B,SAAW7C,wBAAwB8E,UAAY3E,YAAY2C,QAAU3C,YAAY4C,OAChGC,aAAc4B,EAAOtC,QACrByC,WAAYJ,UAOR7D,KAAKE,YACJ4D,CACT,CAAE,MAAOrD,GACP,MAAMyB,EAAezB,aAAiB6B,MAAQ7B,EAAMe,QAAUe,OAAO9B,GASrE,MARAtB,OAAOsB,MAAM,wCAAyCA,GAEtDtB,OAAO0C,WAAWzC,UAAU2E,aAAc,CACxChC,OAAQ1C,YAAY4C,OACpBC,eACAgC,SAAUL,EAAOR,OAGb5C,CACR,CACF,CAGA,IAAA2B,CAAyB+B,EAAUC,GACjC,OAAOrE,MAAMqC,KAAK+B,EAAOC,EAC3B,CAEA,EAAAC,CAAuBF,EAAUG,GAC/B,OAAOvE,MAAMsE,GAAGF,EAAOG,EACzB,CAEA,GAAAC,CAAwBJ,EAAUG,GAChC,OAAOvE,MAAMwE,IAAIJ,EAAOG,EAC1B,SAIK,MAAME,WAAa,IAAIhF","ignoreList":[]}
|