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.
- package/index.js +81 -0
- 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