mlgym-deploy 3.3.40 → 3.3.41

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. package/index.js +81 -0
  2. package/package.json +1 -1
package/index.js CHANGED
@@ -1949,6 +1949,42 @@ async function detectMissingNodeDependencies(projectPath) {
1949
1949
  return null;
1950
1950
  }
1951
1951
 
1952
+ /**
1953
+ * Detect invalid path alias dependencies in package.json
1954
+ * Path aliases like "@/components" should only exist in tsconfig.json, not as npm packages
1955
+ */
1956
+ function detectInvalidPathAliasDependencies(packageJsonPath) {
1957
+ try {
1958
+ const packageJsonContent = fsSync.readFileSync(packageJsonPath, 'utf-8');
1959
+ const packageJson = JSON.parse(packageJsonContent);
1960
+
1961
+ const invalidDeps = [];
1962
+ const allDeps = {
1963
+ ...packageJson.dependencies || {},
1964
+ ...packageJson.devDependencies || {}
1965
+ };
1966
+
1967
+ // Check for path alias patterns like "@/something"
1968
+ for (const [depName, depVersion] of Object.entries(allDeps)) {
1969
+ if (depName.startsWith('@/')) {
1970
+ invalidDeps.push(depName);
1971
+ }
1972
+ }
1973
+
1974
+ if (invalidDeps.length > 0) {
1975
+ return {
1976
+ invalid: true,
1977
+ packages: invalidDeps,
1978
+ autofix: 'remove_path_aliases'
1979
+ };
1980
+ }
1981
+ } catch (err) {
1982
+ log.warning(`MCP >>> Path alias validation failed: ${err.message}`);
1983
+ }
1984
+
1985
+ return null;
1986
+ }
1987
+
1952
1988
  // Validate Dockerfile for Coolify compliance
1953
1989
  function validateDockerfile(content) {
1954
1990
  const lines = content.split('\n');
@@ -3299,6 +3335,51 @@ async function deployProject(args) {
3299
3335
  fsSync.writeFileSync(packageJsonPath, JSON.stringify(packageJson, null, 2));
3300
3336
  log.success(`MCP >>> Added missing dependencies: ${missingDeps.packages.join(', ')}`);
3301
3337
  }
3338
+
3339
+ // Step 4.6: Check for invalid path alias dependencies
3340
+ log.info('MCP >>> Checking for invalid path alias dependencies...');
3341
+ const invalidDeps = detectInvalidPathAliasDependencies(packageJsonPath);
3342
+ if (invalidDeps && invalidDeps.invalid && invalidDeps.packages.length > 0) {
3343
+ log.warning(`MCP >>> ⚠️ CRITICAL: Invalid path alias dependencies detected!`);
3344
+ log.warning(`MCP >>> The following entries should NOT be in package.json:`);
3345
+ invalidDeps.packages.forEach(pkg => log.warning(`MCP >>> - ${pkg}`));
3346
+ log.warning(`MCP >>> `);
3347
+ log.warning(`MCP >>> ❌ ERROR: npm cannot install packages with names like "@/components"`);
3348
+ log.warning(`MCP >>> These are TypeScript/JavaScript path aliases, not npm packages!`);
3349
+ log.warning(`MCP >>> `);
3350
+ log.warning(`MCP >>> ✅ HOW TO FIX:`);
3351
+ log.warning(`MCP >>> 1. Remove these entries from package.json dependencies/devDependencies`);
3352
+ log.warning(`MCP >>> 2. Keep them ONLY in tsconfig.json or jsconfig.json under "paths":`);
3353
+ log.warning(`MCP >>> {`);
3354
+ log.warning(`MCP >>> "compilerOptions": {`);
3355
+ log.warning(`MCP >>> "paths": { "@/*": ["./*"] }`);
3356
+ log.warning(`MCP >>> }`);
3357
+ log.warning(`MCP >>> }`);
3358
+ log.warning(`MCP >>> `);
3359
+ log.info('MCP >>> Auto-fixing: Removing invalid path alias dependencies from package.json');
3360
+
3361
+ const packageJsonContent = fsSync.readFileSync(packageJsonPath, 'utf-8');
3362
+ const packageJson = JSON.parse(packageJsonContent);
3363
+
3364
+ // Remove invalid dependencies
3365
+ let removedCount = 0;
3366
+ for (const pkg of invalidDeps.packages) {
3367
+ if (packageJson.dependencies && packageJson.dependencies[pkg]) {
3368
+ delete packageJson.dependencies[pkg];
3369
+ removedCount++;
3370
+ }
3371
+ if (packageJson.devDependencies && packageJson.devDependencies[pkg]) {
3372
+ delete packageJson.devDependencies[pkg];
3373
+ removedCount++;
3374
+ }
3375
+ }
3376
+
3377
+ // Create backup and save fixed version
3378
+ fsSync.writeFileSync(packageJsonPath + '.backup', packageJsonContent);
3379
+ fsSync.writeFileSync(packageJsonPath, JSON.stringify(packageJson, null, 2));
3380
+ log.success(`MCP >>> ✅ Removed ${removedCount} invalid path alias dependencies`);
3381
+ log.info(`MCP >>> Backup saved to: package.json.backup`);
3382
+ }
3302
3383
  }
3303
3384
 
3304
3385
  // Step 5: Create GitLab project and deploy
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "mlgym-deploy",
3
- "version": "3.3.40",
3
+ "version": "3.3.41",
4
4
  "description": "MCP server for MLGym - Complete deployment management: deploy, configure, monitor, and rollback applications",
5
5
  "main": "index.js",
6
6
  "type": "module",