mcpize 1.0.5 → 1.0.6
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/dist/commands/deploy.d.ts.map +1 -1
- package/dist/commands/deploy.js +53 -5
- package/dist/commands/deploy.js.map +1 -1
- package/dist/commands/status.d.ts.map +1 -1
- package/dist/commands/status.js +3 -3
- package/dist/commands/status.js.map +1 -1
- package/dist/index.js +0 -0
- package/dist/lib/cache.js +1 -1
- package/dist/lib/cache.js.map +1 -1
- package/dist/lib/error-analyzers/base.d.ts +47 -0
- package/dist/lib/error-analyzers/base.d.ts.map +1 -0
- package/dist/lib/error-analyzers/base.js +39 -0
- package/dist/lib/error-analyzers/base.js.map +1 -0
- package/dist/lib/error-analyzers/common.d.ts +11 -0
- package/dist/lib/error-analyzers/common.d.ts.map +1 -0
- package/dist/lib/error-analyzers/common.js +109 -0
- package/dist/lib/error-analyzers/common.js.map +1 -0
- package/dist/lib/error-analyzers/index.d.ts +38 -0
- package/dist/lib/error-analyzers/index.d.ts.map +1 -0
- package/dist/lib/error-analyzers/index.js +164 -0
- package/dist/lib/error-analyzers/index.js.map +1 -0
- package/dist/lib/error-analyzers/nodejs.d.ts +7 -0
- package/dist/lib/error-analyzers/nodejs.d.ts.map +1 -0
- package/dist/lib/error-analyzers/nodejs.js +149 -0
- package/dist/lib/error-analyzers/nodejs.js.map +1 -0
- package/dist/lib/error-analyzers/python.d.ts +6 -0
- package/dist/lib/error-analyzers/python.d.ts.map +1 -0
- package/dist/lib/error-analyzers/python.js +160 -0
- package/dist/lib/error-analyzers/python.js.map +1 -0
- package/dist/lib/validation.d.ts +22 -1
- package/dist/lib/validation.d.ts.map +1 -1
- package/dist/lib/validation.js +233 -2
- package/dist/lib/validation.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,164 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Error Analyzers - Runtime-specific log analysis for deployment failures
|
|
3
|
+
*
|
|
4
|
+
* Architecture:
|
|
5
|
+
* - base.ts: Interfaces and utility functions
|
|
6
|
+
* - common.ts: Patterns shared across all runtimes (container, port, memory)
|
|
7
|
+
* - nodejs.ts: Node.js/TypeScript specific patterns
|
|
8
|
+
* - python.ts: Python specific patterns
|
|
9
|
+
* - (future) php.ts: PHP specific patterns
|
|
10
|
+
*/
|
|
11
|
+
import { applyPatterns } from "./base.js";
|
|
12
|
+
import { commonPatterns, envVarPatterns } from "./common.js";
|
|
13
|
+
import { nodejsAnalyzer, typescriptAnalyzer } from "./nodejs.js";
|
|
14
|
+
import { pythonAnalyzer } from "./python.js";
|
|
15
|
+
// Registry of all runtime analyzers
|
|
16
|
+
const analyzers = {
|
|
17
|
+
nodejs: nodejsAnalyzer,
|
|
18
|
+
typescript: typescriptAnalyzer,
|
|
19
|
+
python: pythonAnalyzer,
|
|
20
|
+
// Add more runtimes here as needed
|
|
21
|
+
};
|
|
22
|
+
/**
|
|
23
|
+
* Get the appropriate analyzer for a runtime
|
|
24
|
+
*/
|
|
25
|
+
export function getAnalyzer(runtime) {
|
|
26
|
+
const normalizedRuntime = runtime.toLowerCase();
|
|
27
|
+
return analyzers[normalizedRuntime] || nodejsAnalyzer;
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Get summary message based on error category
|
|
31
|
+
*/
|
|
32
|
+
function getSummary(category, runtime) {
|
|
33
|
+
const analyzer = getAnalyzer(runtime);
|
|
34
|
+
switch (category) {
|
|
35
|
+
case "runtime":
|
|
36
|
+
return `Runtime error: ${analyzer.displayName} server crashed on startup`;
|
|
37
|
+
case "startup":
|
|
38
|
+
return "Startup failed: Container didn't respond to health check";
|
|
39
|
+
case "build":
|
|
40
|
+
return `Build error: ${analyzer.displayName} compilation failed`;
|
|
41
|
+
case "config":
|
|
42
|
+
return "Configuration error: Missing required settings";
|
|
43
|
+
default:
|
|
44
|
+
return "Deployment failed";
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Get default suggestions based on error category and runtime
|
|
49
|
+
*/
|
|
50
|
+
function getDefaultSuggestions(category, runtime) {
|
|
51
|
+
const suggestions = [];
|
|
52
|
+
switch (category) {
|
|
53
|
+
case "runtime":
|
|
54
|
+
suggestions.push("Check your code for uncaught exceptions");
|
|
55
|
+
if (runtime === "python") {
|
|
56
|
+
suggestions.push("Test locally with: python main.py");
|
|
57
|
+
}
|
|
58
|
+
else {
|
|
59
|
+
suggestions.push("Test locally with: npm run start");
|
|
60
|
+
}
|
|
61
|
+
break;
|
|
62
|
+
case "startup":
|
|
63
|
+
suggestions.push("Ensure server starts within 60 seconds");
|
|
64
|
+
suggestions.push("Verify server listens on $PORT (default 8080)");
|
|
65
|
+
if (runtime === "python") {
|
|
66
|
+
suggestions.push("Test locally with: PORT=8080 python main.py");
|
|
67
|
+
}
|
|
68
|
+
else {
|
|
69
|
+
suggestions.push("Test locally with: PORT=8080 npm run start");
|
|
70
|
+
}
|
|
71
|
+
break;
|
|
72
|
+
case "build":
|
|
73
|
+
if (runtime === "python") {
|
|
74
|
+
suggestions.push("Check requirements.txt for errors");
|
|
75
|
+
suggestions.push("Run: pip install -r requirements.txt");
|
|
76
|
+
}
|
|
77
|
+
else {
|
|
78
|
+
suggestions.push("Run: npm run build");
|
|
79
|
+
suggestions.push("Fix compilation errors and redeploy");
|
|
80
|
+
}
|
|
81
|
+
break;
|
|
82
|
+
case "config":
|
|
83
|
+
suggestions.push("Check mcpize.yaml configuration");
|
|
84
|
+
suggestions.push("Verify all required secrets are set: mcpize secrets list");
|
|
85
|
+
break;
|
|
86
|
+
}
|
|
87
|
+
return suggestions;
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Analyze deployment failure logs and return structured error information
|
|
91
|
+
*
|
|
92
|
+
* @param logs - Array of log entries from Cloud Logging
|
|
93
|
+
* @param runtime - The runtime of the server (nodejs, python, etc.)
|
|
94
|
+
* @param errorMessage - Optional error message from deployment status
|
|
95
|
+
* @returns Structured error analysis with details and suggestions
|
|
96
|
+
*/
|
|
97
|
+
export function analyzeDeploymentLogs(logs, runtime, errorMessage) {
|
|
98
|
+
const analyzer = getAnalyzer(runtime);
|
|
99
|
+
// Combine all patterns: common + env vars + runtime-specific
|
|
100
|
+
const allPatterns = [
|
|
101
|
+
...commonPatterns,
|
|
102
|
+
...envVarPatterns,
|
|
103
|
+
...analyzer.patterns,
|
|
104
|
+
];
|
|
105
|
+
// Apply patterns to logs
|
|
106
|
+
const { details, suggestions, category } = applyPatterns(logs, allPatterns);
|
|
107
|
+
// Build final analysis
|
|
108
|
+
const analysis = {
|
|
109
|
+
category,
|
|
110
|
+
summary: getSummary(category, runtime),
|
|
111
|
+
details,
|
|
112
|
+
suggestions,
|
|
113
|
+
};
|
|
114
|
+
// Add default suggestions if none were found
|
|
115
|
+
if (analysis.suggestions.length === 0) {
|
|
116
|
+
analysis.suggestions = getDefaultSuggestions(category, runtime);
|
|
117
|
+
}
|
|
118
|
+
// If no details found, add raw error excerpts
|
|
119
|
+
if (analysis.details.length === 0 && logs.length > 0) {
|
|
120
|
+
for (const log of logs.slice(0, 5)) {
|
|
121
|
+
if (log.severity === "ERROR") {
|
|
122
|
+
const truncated = log.message.length > 300
|
|
123
|
+
? log.message.substring(0, 300) + "..."
|
|
124
|
+
: log.message;
|
|
125
|
+
analysis.details.push(truncated);
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
// Override summary with error message if we couldn't determine category
|
|
130
|
+
if (category === "unknown" && errorMessage) {
|
|
131
|
+
analysis.summary = errorMessage;
|
|
132
|
+
}
|
|
133
|
+
return analysis;
|
|
134
|
+
}
|
|
135
|
+
/**
|
|
136
|
+
* Format error analysis for console output
|
|
137
|
+
*/
|
|
138
|
+
export function formatErrorAnalysis(analysis, chalk) {
|
|
139
|
+
const lines = [];
|
|
140
|
+
lines.push("");
|
|
141
|
+
lines.push(chalk.red.bold(`✖ ${analysis.summary}`));
|
|
142
|
+
lines.push("");
|
|
143
|
+
if (analysis.details.length > 0) {
|
|
144
|
+
lines.push(chalk.yellow("Error details:"));
|
|
145
|
+
for (const detail of analysis.details) {
|
|
146
|
+
// Handle multi-line details
|
|
147
|
+
const detailLines = detail.split("\n").filter((l) => l.trim());
|
|
148
|
+
for (const line of detailLines.slice(0, 5)) {
|
|
149
|
+
lines.push(chalk.dim(` ${line}`));
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
lines.push("");
|
|
153
|
+
}
|
|
154
|
+
if (analysis.suggestions.length > 0) {
|
|
155
|
+
lines.push(chalk.cyan("Suggestions:"));
|
|
156
|
+
for (const suggestion of analysis.suggestions) {
|
|
157
|
+
lines.push(chalk.white(` → ${suggestion}`));
|
|
158
|
+
}
|
|
159
|
+
lines.push("");
|
|
160
|
+
}
|
|
161
|
+
lines.push(chalk.dim("For full logs: mcpize logs"));
|
|
162
|
+
return lines.join("\n");
|
|
163
|
+
}
|
|
164
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/lib/error-analyzers/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"nodejs.d.ts","sourceRoot":"","sources":["../../../src/lib/error-analyzers/nodejs.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAgB,eAAe,EAAE,MAAM,WAAW,CAAC;AAqJ/D,eAAO,MAAM,cAAc,EAAE,eAI5B,CAAC;AAGF,eAAO,MAAM,kBAAkB,EAAE,eAIhC,CAAC"}
|
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Node.js / TypeScript specific error patterns
|
|
3
|
+
*/
|
|
4
|
+
const nodejsPatterns = [
|
|
5
|
+
// JavaScript runtime errors with stack trace
|
|
6
|
+
{
|
|
7
|
+
name: "js-runtime-error",
|
|
8
|
+
match: (msg) => msg.includes("Error:") &&
|
|
9
|
+
(msg.includes("at file://") || msg.includes("at Module")),
|
|
10
|
+
extract: (msg) => {
|
|
11
|
+
const errorMatch = msg.match(/Error: ([^\n]+)/);
|
|
12
|
+
const fileMatch = msg.match(/at file:\/\/([^\s]+):(\d+):(\d+)/);
|
|
13
|
+
const details = [];
|
|
14
|
+
if (errorMatch) {
|
|
15
|
+
details.push(`Runtime Error: ${errorMatch[1]}`);
|
|
16
|
+
}
|
|
17
|
+
if (fileMatch) {
|
|
18
|
+
details.push(`Location: ${fileMatch[1]}:${fileMatch[2]}`);
|
|
19
|
+
}
|
|
20
|
+
return {
|
|
21
|
+
detail: details.join("\n"),
|
|
22
|
+
category: "runtime",
|
|
23
|
+
};
|
|
24
|
+
},
|
|
25
|
+
},
|
|
26
|
+
// Module not found
|
|
27
|
+
{
|
|
28
|
+
name: "module-not-found",
|
|
29
|
+
match: (msg) => msg.includes("Cannot find module") || msg.includes("Module not found"),
|
|
30
|
+
extract: (msg) => {
|
|
31
|
+
const moduleMatch = msg.match(/Cannot find module '([^']+)'/);
|
|
32
|
+
if (moduleMatch) {
|
|
33
|
+
const moduleName = moduleMatch[1];
|
|
34
|
+
// Check if it's a local file or npm package
|
|
35
|
+
if (moduleName.startsWith(".") || moduleName.startsWith("/")) {
|
|
36
|
+
return {
|
|
37
|
+
detail: `Missing file: ${moduleName}`,
|
|
38
|
+
suggestion: "Check if the file exists and path is correct",
|
|
39
|
+
category: "runtime",
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
return {
|
|
43
|
+
detail: `Missing module: ${moduleName}`,
|
|
44
|
+
suggestion: `Run: npm install ${moduleName}`,
|
|
45
|
+
category: "runtime",
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
return null;
|
|
49
|
+
},
|
|
50
|
+
},
|
|
51
|
+
// TypeScript compilation errors
|
|
52
|
+
{
|
|
53
|
+
name: "typescript-error",
|
|
54
|
+
match: (msg) => msg.includes("TS") && /TS\d+:/.test(msg),
|
|
55
|
+
extract: (msg) => {
|
|
56
|
+
const tsMatch = msg.match(/(TS\d+):\s*(.+)/);
|
|
57
|
+
return {
|
|
58
|
+
detail: tsMatch ? `TypeScript ${tsMatch[1]}: ${tsMatch[2]}` : msg.substring(0, 200),
|
|
59
|
+
suggestion: "Run: npm run build",
|
|
60
|
+
category: "build",
|
|
61
|
+
};
|
|
62
|
+
},
|
|
63
|
+
},
|
|
64
|
+
// Syntax errors
|
|
65
|
+
{
|
|
66
|
+
name: "syntax-error",
|
|
67
|
+
match: (msg) => msg.includes("SyntaxError"),
|
|
68
|
+
extract: (msg) => {
|
|
69
|
+
const syntaxMatch = msg.match(/SyntaxError: ([^\n]+)/);
|
|
70
|
+
return {
|
|
71
|
+
detail: syntaxMatch ? `Syntax Error: ${syntaxMatch[1]}` : "JavaScript syntax error",
|
|
72
|
+
suggestion: "Check your code for syntax errors",
|
|
73
|
+
category: "runtime",
|
|
74
|
+
};
|
|
75
|
+
},
|
|
76
|
+
},
|
|
77
|
+
// TypeError
|
|
78
|
+
{
|
|
79
|
+
name: "type-error",
|
|
80
|
+
match: (msg) => msg.includes("TypeError:"),
|
|
81
|
+
extract: (msg) => {
|
|
82
|
+
const typeMatch = msg.match(/TypeError: ([^\n]+)/);
|
|
83
|
+
return {
|
|
84
|
+
detail: typeMatch ? `Type Error: ${typeMatch[1]}` : "Type error in code",
|
|
85
|
+
category: "runtime",
|
|
86
|
+
};
|
|
87
|
+
},
|
|
88
|
+
},
|
|
89
|
+
// ReferenceError (undefined variable)
|
|
90
|
+
{
|
|
91
|
+
name: "reference-error",
|
|
92
|
+
match: (msg) => msg.includes("ReferenceError:"),
|
|
93
|
+
extract: (msg) => {
|
|
94
|
+
const refMatch = msg.match(/ReferenceError: ([^\n]+)/);
|
|
95
|
+
return {
|
|
96
|
+
detail: refMatch ? `Reference Error: ${refMatch[1]}` : "Undefined variable error",
|
|
97
|
+
category: "runtime",
|
|
98
|
+
};
|
|
99
|
+
},
|
|
100
|
+
},
|
|
101
|
+
// npm install failures
|
|
102
|
+
{
|
|
103
|
+
name: "npm-install-failed",
|
|
104
|
+
match: (msg) => msg.includes("npm ERR!") || msg.includes("npm error"),
|
|
105
|
+
extract: (msg) => {
|
|
106
|
+
if (msg.includes("ERESOLVE")) {
|
|
107
|
+
return {
|
|
108
|
+
detail: "npm dependency resolution failed",
|
|
109
|
+
suggestion: "Try: npm install --legacy-peer-deps",
|
|
110
|
+
category: "build",
|
|
111
|
+
};
|
|
112
|
+
}
|
|
113
|
+
if (msg.includes("ENOENT")) {
|
|
114
|
+
return {
|
|
115
|
+
detail: "npm package not found",
|
|
116
|
+
suggestion: "Check package name in package.json",
|
|
117
|
+
category: "build",
|
|
118
|
+
};
|
|
119
|
+
}
|
|
120
|
+
return {
|
|
121
|
+
detail: "npm install failed",
|
|
122
|
+
suggestion: "Check package.json and try: npm install",
|
|
123
|
+
category: "build",
|
|
124
|
+
};
|
|
125
|
+
},
|
|
126
|
+
},
|
|
127
|
+
// Unhandled promise rejection
|
|
128
|
+
{
|
|
129
|
+
name: "unhandled-rejection",
|
|
130
|
+
match: (msg) => msg.includes("UnhandledPromiseRejection") || msg.includes("unhandled promise"),
|
|
131
|
+
extract: () => ({
|
|
132
|
+
detail: "Unhandled Promise rejection",
|
|
133
|
+
suggestion: "Add error handling to async operations",
|
|
134
|
+
category: "runtime",
|
|
135
|
+
}),
|
|
136
|
+
},
|
|
137
|
+
];
|
|
138
|
+
export const nodejsAnalyzer = {
|
|
139
|
+
runtime: "nodejs",
|
|
140
|
+
displayName: "Node.js",
|
|
141
|
+
patterns: nodejsPatterns,
|
|
142
|
+
};
|
|
143
|
+
// Also export for TypeScript runtime (same patterns)
|
|
144
|
+
export const typescriptAnalyzer = {
|
|
145
|
+
runtime: "typescript",
|
|
146
|
+
displayName: "TypeScript",
|
|
147
|
+
patterns: nodejsPatterns,
|
|
148
|
+
};
|
|
149
|
+
//# sourceMappingURL=nodejs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"nodejs.js","sourceRoot":"","sources":["../../../src/lib/error-analyzers/nodejs.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"python.d.ts","sourceRoot":"","sources":["../../../src/lib/error-analyzers/python.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAgB,eAAe,EAAE,MAAM,WAAW,CAAC;AAqK/D,eAAO,MAAM,cAAc,EAAE,eAI5B,CAAC"}
|
|
@@ -0,0 +1,160 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Python specific error patterns
|
|
3
|
+
*/
|
|
4
|
+
const pythonPatterns = [
|
|
5
|
+
// ModuleNotFoundError
|
|
6
|
+
{
|
|
7
|
+
name: "module-not-found",
|
|
8
|
+
match: (msg) => msg.includes("ModuleNotFoundError") || msg.includes("No module named"),
|
|
9
|
+
extract: (msg) => {
|
|
10
|
+
const moduleMatch = msg.match(/No module named '([^']+)'/);
|
|
11
|
+
if (moduleMatch) {
|
|
12
|
+
const moduleName = moduleMatch[1].split(".")[0]; // Get base module name
|
|
13
|
+
return {
|
|
14
|
+
detail: `Missing module: ${moduleName}`,
|
|
15
|
+
suggestion: `Run: pip install ${moduleName}`,
|
|
16
|
+
category: "runtime",
|
|
17
|
+
};
|
|
18
|
+
}
|
|
19
|
+
return {
|
|
20
|
+
detail: "Python module not found",
|
|
21
|
+
suggestion: "Check requirements.txt and run: pip install -r requirements.txt",
|
|
22
|
+
category: "runtime",
|
|
23
|
+
};
|
|
24
|
+
},
|
|
25
|
+
},
|
|
26
|
+
// ImportError
|
|
27
|
+
{
|
|
28
|
+
name: "import-error",
|
|
29
|
+
match: (msg) => msg.includes("ImportError:"),
|
|
30
|
+
extract: (msg) => {
|
|
31
|
+
const importMatch = msg.match(/ImportError: ([^\n]+)/);
|
|
32
|
+
return {
|
|
33
|
+
detail: importMatch ? `Import Error: ${importMatch[1]}` : "Python import error",
|
|
34
|
+
suggestion: "Check your imports and installed packages",
|
|
35
|
+
category: "runtime",
|
|
36
|
+
};
|
|
37
|
+
},
|
|
38
|
+
},
|
|
39
|
+
// SyntaxError
|
|
40
|
+
{
|
|
41
|
+
name: "syntax-error",
|
|
42
|
+
match: (msg) => msg.includes("SyntaxError:"),
|
|
43
|
+
extract: (msg) => {
|
|
44
|
+
const syntaxMatch = msg.match(/SyntaxError: ([^\n]+)/);
|
|
45
|
+
const fileMatch = msg.match(/File "([^"]+)", line (\d+)/);
|
|
46
|
+
const details = [];
|
|
47
|
+
if (syntaxMatch) {
|
|
48
|
+
details.push(`Syntax Error: ${syntaxMatch[1]}`);
|
|
49
|
+
}
|
|
50
|
+
if (fileMatch) {
|
|
51
|
+
details.push(`Location: ${fileMatch[1]}:${fileMatch[2]}`);
|
|
52
|
+
}
|
|
53
|
+
return {
|
|
54
|
+
detail: details.join("\n") || "Python syntax error",
|
|
55
|
+
suggestion: "Check your Python code for syntax errors",
|
|
56
|
+
category: "runtime",
|
|
57
|
+
};
|
|
58
|
+
},
|
|
59
|
+
},
|
|
60
|
+
// IndentationError
|
|
61
|
+
{
|
|
62
|
+
name: "indentation-error",
|
|
63
|
+
match: (msg) => msg.includes("IndentationError:"),
|
|
64
|
+
extract: (msg) => {
|
|
65
|
+
const fileMatch = msg.match(/File "([^"]+)", line (\d+)/);
|
|
66
|
+
return {
|
|
67
|
+
detail: fileMatch
|
|
68
|
+
? `Indentation Error at ${fileMatch[1]}:${fileMatch[2]}`
|
|
69
|
+
: "Python indentation error",
|
|
70
|
+
suggestion: "Check indentation (use consistent spaces or tabs)",
|
|
71
|
+
category: "runtime",
|
|
72
|
+
};
|
|
73
|
+
},
|
|
74
|
+
},
|
|
75
|
+
// TypeError
|
|
76
|
+
{
|
|
77
|
+
name: "type-error",
|
|
78
|
+
match: (msg) => msg.includes("TypeError:") && !msg.includes("JavaScript"),
|
|
79
|
+
extract: (msg) => {
|
|
80
|
+
const typeMatch = msg.match(/TypeError: ([^\n]+)/);
|
|
81
|
+
return {
|
|
82
|
+
detail: typeMatch ? `Type Error: ${typeMatch[1]}` : "Python type error",
|
|
83
|
+
category: "runtime",
|
|
84
|
+
};
|
|
85
|
+
},
|
|
86
|
+
},
|
|
87
|
+
// NameError (undefined variable)
|
|
88
|
+
{
|
|
89
|
+
name: "name-error",
|
|
90
|
+
match: (msg) => msg.includes("NameError:"),
|
|
91
|
+
extract: (msg) => {
|
|
92
|
+
const nameMatch = msg.match(/NameError: name '([^']+)' is not defined/);
|
|
93
|
+
return {
|
|
94
|
+
detail: nameMatch
|
|
95
|
+
? `Undefined variable: ${nameMatch[1]}`
|
|
96
|
+
: "Python name error - undefined variable",
|
|
97
|
+
category: "runtime",
|
|
98
|
+
};
|
|
99
|
+
},
|
|
100
|
+
},
|
|
101
|
+
// AttributeError
|
|
102
|
+
{
|
|
103
|
+
name: "attribute-error",
|
|
104
|
+
match: (msg) => msg.includes("AttributeError:"),
|
|
105
|
+
extract: (msg) => {
|
|
106
|
+
const attrMatch = msg.match(/AttributeError: ([^\n]+)/);
|
|
107
|
+
return {
|
|
108
|
+
detail: attrMatch ? `Attribute Error: ${attrMatch[1]}` : "Python attribute error",
|
|
109
|
+
category: "runtime",
|
|
110
|
+
};
|
|
111
|
+
},
|
|
112
|
+
},
|
|
113
|
+
// KeyError
|
|
114
|
+
{
|
|
115
|
+
name: "key-error",
|
|
116
|
+
match: (msg) => msg.includes("KeyError:"),
|
|
117
|
+
extract: (msg) => {
|
|
118
|
+
const keyMatch = msg.match(/KeyError: '?([^'\n]+)'?/);
|
|
119
|
+
return {
|
|
120
|
+
detail: keyMatch ? `Missing key: ${keyMatch[1]}` : "Python key error",
|
|
121
|
+
category: "runtime",
|
|
122
|
+
};
|
|
123
|
+
},
|
|
124
|
+
},
|
|
125
|
+
// pip install failures
|
|
126
|
+
{
|
|
127
|
+
name: "pip-install-failed",
|
|
128
|
+
match: (msg) => msg.includes("pip") && msg.includes("error"),
|
|
129
|
+
extract: (msg) => {
|
|
130
|
+
if (msg.includes("Could not find a version")) {
|
|
131
|
+
const pkgMatch = msg.match(/Could not find a version that satisfies the requirement ([^\s]+)/);
|
|
132
|
+
return {
|
|
133
|
+
detail: pkgMatch ? `Package not found: ${pkgMatch[1]}` : "pip package not found",
|
|
134
|
+
suggestion: "Check package name in requirements.txt",
|
|
135
|
+
category: "build",
|
|
136
|
+
};
|
|
137
|
+
}
|
|
138
|
+
return {
|
|
139
|
+
detail: "pip install failed",
|
|
140
|
+
suggestion: "Check requirements.txt",
|
|
141
|
+
category: "build",
|
|
142
|
+
};
|
|
143
|
+
},
|
|
144
|
+
},
|
|
145
|
+
// Traceback indicator
|
|
146
|
+
{
|
|
147
|
+
name: "traceback",
|
|
148
|
+
match: (msg) => msg.includes("Traceback (most recent call last)"),
|
|
149
|
+
extract: () => ({
|
|
150
|
+
category: "runtime",
|
|
151
|
+
// Don't add detail here, let other patterns handle specific errors
|
|
152
|
+
}),
|
|
153
|
+
},
|
|
154
|
+
];
|
|
155
|
+
export const pythonAnalyzer = {
|
|
156
|
+
runtime: "python",
|
|
157
|
+
displayName: "Python",
|
|
158
|
+
patterns: pythonPatterns,
|
|
159
|
+
};
|
|
160
|
+
//# sourceMappingURL=python.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"python.js","sourceRoot":"","sources":["../../../src/lib/error-analyzers/python.ts"],"names":[],"mappings":"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"}
|
package/dist/lib/validation.d.ts
CHANGED
|
@@ -20,6 +20,25 @@ export interface SizeCheckResult {
|
|
|
20
20
|
error?: string;
|
|
21
21
|
}
|
|
22
22
|
export declare function checkTarballSize(sizeBytes: number): SizeCheckResult;
|
|
23
|
+
export interface PortCheckResult {
|
|
24
|
+
valid: boolean;
|
|
25
|
+
warning?: string;
|
|
26
|
+
details?: string;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Check if server is configured to use PORT environment variable
|
|
30
|
+
* instead of hardcoded port numbers
|
|
31
|
+
*/
|
|
32
|
+
export declare function checkPortConfiguration(cwd: string, runtime: McpizeManifest["runtime"]): PortCheckResult;
|
|
33
|
+
export interface SecretsCheckResult {
|
|
34
|
+
valid: boolean;
|
|
35
|
+
missingSecrets: string[];
|
|
36
|
+
warning?: string;
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Check for environment variables used in code that might need to be configured as secrets
|
|
40
|
+
*/
|
|
41
|
+
export declare function checkRequiredSecrets(cwd: string, runtime: McpizeManifest["runtime"], configuredSecrets?: string[]): SecretsCheckResult;
|
|
23
42
|
export interface HealthCheckResult {
|
|
24
43
|
httpOk: boolean;
|
|
25
44
|
mcpOk: boolean;
|
|
@@ -34,9 +53,11 @@ export interface PreDeployCheckResult {
|
|
|
34
53
|
manifestValid: boolean;
|
|
35
54
|
dependenciesOk: boolean;
|
|
36
55
|
buildOk: boolean;
|
|
56
|
+
portConfigOk: boolean;
|
|
57
|
+
secretsOk: boolean;
|
|
37
58
|
errors: string[];
|
|
38
59
|
warnings: string[];
|
|
39
60
|
}
|
|
40
|
-
export declare function runPreDeployChecks(cwd: string, manifest: McpizeManifest): Promise<PreDeployCheckResult>;
|
|
61
|
+
export declare function runPreDeployChecks(cwd: string, manifest: McpizeManifest, configuredSecrets?: string[]): Promise<PreDeployCheckResult>;
|
|
41
62
|
export declare function displayHealthCheckResult(result: HealthCheckResult): void;
|
|
42
63
|
//# sourceMappingURL=validation.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../../src/lib/validation.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AA+BnD,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAED,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,OAAO,GAAG,gBAAgB,CAkBpE;AAMD,wBAAgB,iBAAiB,CAC/B,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,cAAc,CAAC,SAAS,CAAC,GACjC,gBAAgB,CAsClB;AAMD,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,wBAAgB,gBAAgB,CAC9B,GAAG,EAAE,MAAM,EACX,QAAQ,EAAE,cAAc,GACvB,gBAAgB,CAmGlB;AAMD,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;IACtB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAKD,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,eAAe,CAWnE;AAYD,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,OAAO,CAAC;IAChB,KAAK,EAAE,OAAO,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;CAClB;AAED,wBAAsB,cAAc,CAClC,IAAI,EAAE,MAAM,EACZ,UAAU,SAAI,EACd,YAAY,SAAO,GAClB,OAAO,CAAC,iBAAiB,CAAC,CAgE5B;AAMD,MAAM,WAAW,oBAAoB;IACnC,MAAM,EAAE,OAAO,CAAC;IAChB,aAAa,EAAE,OAAO,CAAC;IACvB,cAAc,EAAE,OAAO,CAAC;IACxB,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAED,wBAAsB,kBAAkB,CACtC,GAAG,EAAE,MAAM,EACX,QAAQ,EAAE,cAAc,
|
|
1
|
+
{"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../../src/lib/validation.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AA+BnD,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAED,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,OAAO,GAAG,gBAAgB,CAkBpE;AAMD,wBAAgB,iBAAiB,CAC/B,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,cAAc,CAAC,SAAS,CAAC,GACjC,gBAAgB,CAsClB;AAMD,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,wBAAgB,gBAAgB,CAC9B,GAAG,EAAE,MAAM,EACX,QAAQ,EAAE,cAAc,GACvB,gBAAgB,CAmGlB;AAMD,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;IACtB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAKD,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,eAAe,CAWnE;AAYD,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,OAAO,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CACpC,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,cAAc,CAAC,SAAS,CAAC,GACjC,eAAe,CAsFjB;AAqCD,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,OAAO,CAAC;IACf,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAuBD;;GAEG;AACH,wBAAgB,oBAAoB,CAClC,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,cAAc,CAAC,SAAS,CAAC,EAClC,iBAAiB,GAAE,MAAM,EAAO,GAC/B,kBAAkB,CA0FpB;AAMD,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,OAAO,CAAC;IAChB,KAAK,EAAE,OAAO,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;CAClB;AAED,wBAAsB,cAAc,CAClC,IAAI,EAAE,MAAM,EACZ,UAAU,SAAI,EACd,YAAY,SAAO,GAClB,OAAO,CAAC,iBAAiB,CAAC,CAgE5B;AAMD,MAAM,WAAW,oBAAoB;IACnC,MAAM,EAAE,OAAO,CAAC;IAChB,aAAa,EAAE,OAAO,CAAC;IACvB,cAAc,EAAE,OAAO,CAAC;IACxB,OAAO,EAAE,OAAO,CAAC;IACjB,YAAY,EAAE,OAAO,CAAC;IACtB,SAAS,EAAE,OAAO,CAAC;IACnB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAED,wBAAsB,kBAAkB,CACtC,GAAG,EAAE,MAAM,EACX,QAAQ,EAAE,cAAc,EACxB,iBAAiB,GAAE,MAAM,EAAO,GAC/B,OAAO,CAAC,oBAAoB,CAAC,CA2F/B;AAMD,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,iBAAiB,GAAG,IAAI,CA2BxE"}
|