mcp-prompt-optimizer 1.3.2 โ 1.3.3
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/CHANGELOG.md +85 -0
- package/README.md +286 -130
- package/index.js +1092 -724
- package/lib/api-key-manager.js +538 -46
- package/lib/check-status.js +356 -111
- package/lib/clear-cache.js +113 -79
- package/lib/diagnose.js +252 -0
- package/lib/diagnose.js file.txt +252 -0
- package/lib/test-integration.js +250 -0
- package/lib/validate-key.js +171 -54
- package/package.json +224 -28
|
@@ -0,0 +1,252 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Diagnostic Command for MCP Prompt Optimizer
|
|
5
|
+
* Enhanced with comprehensive network analysis and development mode support
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
const CloudApiKeyManager = require('./api-key-manager');
|
|
9
|
+
const packageJson = require('../package.json');
|
|
10
|
+
|
|
11
|
+
async function runDiagnostic() {
|
|
12
|
+
const developmentMode = process.env.NODE_ENV === 'development' || process.env.OPTIMIZER_DEV_MODE === 'true';
|
|
13
|
+
const modeText = developmentMode ? ' (Development Mode)' : '';
|
|
14
|
+
|
|
15
|
+
console.log(`๐ฌ MCP Prompt Optimizer v${packageJson.version} - Comprehensive Diagnostic${modeText}\n`);
|
|
16
|
+
|
|
17
|
+
try {
|
|
18
|
+
const apiKey = process.env.OPTIMIZER_API_KEY;
|
|
19
|
+
|
|
20
|
+
if (!apiKey) {
|
|
21
|
+
console.log('โ ๏ธ No API key found, running partial diagnostic');
|
|
22
|
+
console.log('Set OPTIMIZER_API_KEY for complete analysis\n');
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
const manager = new CloudApiKeyManager(apiKey || 'dummy-key-for-diagnostic', {
|
|
26
|
+
developmentMode
|
|
27
|
+
});
|
|
28
|
+
const diagnostic = await manager.getDiagnosticInfo();
|
|
29
|
+
|
|
30
|
+
console.log('๐ Diagnostic Information:');
|
|
31
|
+
console.log('=' .repeat(60));
|
|
32
|
+
|
|
33
|
+
// Basic system information
|
|
34
|
+
console.log(`๐ API Key: ${diagnostic.apiKey}`);
|
|
35
|
+
console.log(`๐ Backend URL: ${diagnostic.backendUrl}`);
|
|
36
|
+
console.log(`๐พ Cache File: ${diagnostic.cacheFile}`);
|
|
37
|
+
console.log(`๐ฅ Health File: ${diagnostic.healthFile}`);
|
|
38
|
+
console.log(`โฐ Cache Expiry: ${diagnostic.cacheExpiry / 1000 / 60} minutes`);
|
|
39
|
+
console.log(`โฐ Fallback Cache Expiry: ${diagnostic.fallbackCacheExpiry / 1000 / 60 / 60} hours`);
|
|
40
|
+
console.log(`๐ฑ Offline Mode: ${diagnostic.offlineMode}`);
|
|
41
|
+
console.log(`๐งช Development Mode: ${diagnostic.developmentMode}`);
|
|
42
|
+
console.log(`๐ Max Retries: ${diagnostic.maxRetries}`);
|
|
43
|
+
console.log(`โฑ๏ธ Request Timeout: ${diagnostic.requestTimeout}ms`);
|
|
44
|
+
console.log(`๐ง Node Environment: ${diagnostic.nodeEnv || 'not set'}`);
|
|
45
|
+
console.log(`๐ฆ Package Version: ${diagnostic.packageVersion}`);
|
|
46
|
+
|
|
47
|
+
// Network health section
|
|
48
|
+
console.log('\n๐ Network Health:');
|
|
49
|
+
const health = diagnostic.networkHealth;
|
|
50
|
+
console.log(` ๐ Consecutive Failures: ${health.consecutiveFailures}`);
|
|
51
|
+
console.log(` โ
Last Successful: ${health.lastSuccessful ? new Date(health.lastSuccessful).toLocaleString() : 'Never'}`);
|
|
52
|
+
console.log(` โก Avg Response Time: ${health.avgResponseTime ? health.avgResponseTime + 'ms' : 'Unknown'}`);
|
|
53
|
+
console.log(` โ Last Error Type: ${health.lastErrorType || 'None'}`);
|
|
54
|
+
|
|
55
|
+
// Cache status
|
|
56
|
+
console.log('\n๐ Cache Status:');
|
|
57
|
+
if (diagnostic.cache.error) {
|
|
58
|
+
console.log(` โ Error: ${diagnostic.cache.error}`);
|
|
59
|
+
} else {
|
|
60
|
+
console.log(` ๐ Exists: ${diagnostic.cache.exists}`);
|
|
61
|
+
console.log(` โณ Normal Cache Expired: ${diagnostic.cache.expired}`);
|
|
62
|
+
console.log(` ๐ Fallback Cache Expired: ${diagnostic.cache.fallbackExpired}`);
|
|
63
|
+
console.log(` ๐
Age: ${diagnostic.cache.age} minutes`);
|
|
64
|
+
|
|
65
|
+
if (diagnostic.cache.backendUrl) {
|
|
66
|
+
console.log(` ๐ Cached Backend: ${diagnostic.cache.backendUrl}`);
|
|
67
|
+
}
|
|
68
|
+
if (diagnostic.cache.packageVersion) {
|
|
69
|
+
console.log(` ๐ฆ Cached Version: ${diagnostic.cache.packageVersion}`);
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
// API key format check
|
|
74
|
+
console.log('\n๐ API Key Format Check:');
|
|
75
|
+
if (diagnostic.keyFormat.valid) {
|
|
76
|
+
console.log(` โ
Valid: ${diagnostic.keyFormat.keyType}`);
|
|
77
|
+
} else {
|
|
78
|
+
console.log(` โ Invalid: ${diagnostic.keyFormat.error}`);
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
// Backend connectivity analysis
|
|
82
|
+
console.log('\n๐ Backend Connectivity Analysis:');
|
|
83
|
+
const connectivity = diagnostic.backendConnectivity;
|
|
84
|
+
if (connectivity.status === 'success') {
|
|
85
|
+
console.log(' โ
Connection successful');
|
|
86
|
+
if (connectivity.responseTime) {
|
|
87
|
+
console.log(` โก Response time: ${connectivity.responseTime}ms`);
|
|
88
|
+
}
|
|
89
|
+
} else {
|
|
90
|
+
console.log(` โ Connection failed: ${connectivity.error}`);
|
|
91
|
+
|
|
92
|
+
// Enhanced error analysis
|
|
93
|
+
if (connectivity.dns) {
|
|
94
|
+
console.log(' ๐ Issue Type: DNS Resolution Failure');
|
|
95
|
+
console.log(' ๐ก Likely Causes:');
|
|
96
|
+
console.log(' - Internet connection issues');
|
|
97
|
+
console.log(' - DNS server problems');
|
|
98
|
+
console.log(' - Corporate firewall blocking DNS');
|
|
99
|
+
console.log(' - VPN/proxy configuration issues');
|
|
100
|
+
} else if (connectivity.connection) {
|
|
101
|
+
console.log(' ๐ Issue Type: Connection Refused/Reset');
|
|
102
|
+
console.log(' ๐ก Likely Causes:');
|
|
103
|
+
console.log(' - Backend server is down');
|
|
104
|
+
console.log(' - Port blocking by firewall');
|
|
105
|
+
console.log(' - Network routing issues');
|
|
106
|
+
console.log(' - Load balancer problems');
|
|
107
|
+
} else if (connectivity.timeout) {
|
|
108
|
+
console.log(' ๐ Issue Type: Connection Timeout');
|
|
109
|
+
console.log(' ๐ก Likely Causes:');
|
|
110
|
+
console.log(' - Slow network connection');
|
|
111
|
+
console.log(' - Backend server overload');
|
|
112
|
+
console.log(' - Proxy/firewall delays');
|
|
113
|
+
console.log(' - Geographic distance');
|
|
114
|
+
} else if (connectivity.network) {
|
|
115
|
+
console.log(' ๐ Issue Type: General Network Error');
|
|
116
|
+
console.log(' ๐ก Likely Causes:');
|
|
117
|
+
console.log(' - Network instability');
|
|
118
|
+
console.log(' - ISP issues');
|
|
119
|
+
console.log(' - WiFi connectivity problems');
|
|
120
|
+
console.log(' - Mobile data limitations');
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
// Development mode specific information
|
|
125
|
+
if (developmentMode) {
|
|
126
|
+
console.log('\n๐งช Development Mode Analysis:');
|
|
127
|
+
console.log(' โ
Development mode active');
|
|
128
|
+
console.log(' ๐ Mock responses available');
|
|
129
|
+
console.log(' ๐ด Offline operation supported');
|
|
130
|
+
console.log(' ๐งช No backend dependency required');
|
|
131
|
+
|
|
132
|
+
if (apiKey && (apiKey.startsWith('sk-dev-') || apiKey.startsWith('sk-local-'))) {
|
|
133
|
+
console.log(' โ
Development API key detected');
|
|
134
|
+
} else {
|
|
135
|
+
console.log(' โ ๏ธ Consider using development API key (sk-dev-* or sk-local-*)');
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
// Recommendations section
|
|
140
|
+
console.log('\n๐ก Recommendations:');
|
|
141
|
+
|
|
142
|
+
if (!apiKey) {
|
|
143
|
+
console.log(' ๐ Set API key: export OPTIMIZER_API_KEY=sk-opt-your-key');
|
|
144
|
+
console.log(' ๐ Get free trial: https://promptoptimizer-blog.vercel.app/pricing');
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
if (health.consecutiveFailures > 0) {
|
|
148
|
+
console.log(` ๐ ${health.consecutiveFailures} consecutive network failures detected`);
|
|
149
|
+
console.log(' ๐งช Consider development mode: export OPTIMIZER_DEV_MODE=true');
|
|
150
|
+
console.log(' ๐ก Check network connectivity and firewall settings');
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
if (diagnostic.cache.exists && diagnostic.cache.expired && !diagnostic.cache.fallbackExpired) {
|
|
154
|
+
console.log(' ๐พ Cache available for fallback mode');
|
|
155
|
+
console.log(' ๐ Package can operate with reduced functionality');
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
if (!developmentMode && connectivity.status === 'failed') {
|
|
159
|
+
console.log(' ๐งช Try development mode for offline testing:');
|
|
160
|
+
console.log(' export OPTIMIZER_DEV_MODE=true');
|
|
161
|
+
console.log(' export OPTIMIZER_API_KEY=sk-dev-test-key');
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
if (connectivity.status === 'success' && health.avgResponseTime > 5000) {
|
|
165
|
+
console.log(' โก Network latency is high (>5s)');
|
|
166
|
+
console.log(' ๐ Consider checking network quality or VPN settings');
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
// Action items
|
|
170
|
+
console.log('\n๐ฏ Suggested Actions:');
|
|
171
|
+
|
|
172
|
+
if (connectivity.status === 'failed') {
|
|
173
|
+
console.log(' 1. ๐ Test basic internet: ping google.com');
|
|
174
|
+
console.log(' 2. ๐ Check DNS: nslookup p01--project-optimizer--fvrdk8m9k9j.code.run');
|
|
175
|
+
console.log(' 3. ๐ก๏ธ Verify firewall allows HTTPS traffic');
|
|
176
|
+
console.log(' 4. ๐ Try again in a few minutes');
|
|
177
|
+
console.log(' 5. ๐งช Use development mode for immediate testing');
|
|
178
|
+
} else {
|
|
179
|
+
console.log(' 1. โ
Network connectivity is working well');
|
|
180
|
+
console.log(' 2. ๐ Ready for production use');
|
|
181
|
+
|
|
182
|
+
if (!apiKey || !diagnostic.keyFormat.valid) {
|
|
183
|
+
console.log(' 3. ๐ Set up proper API key for full functionality');
|
|
184
|
+
} else {
|
|
185
|
+
console.log(' 3. ๐ฏ All systems operational');
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
|
|
189
|
+
// Network environment detection
|
|
190
|
+
console.log('\n๐ Network Environment:');
|
|
191
|
+
const userAgent = `mcp-prompt-optimizer/${diagnostic.packageVersion}`;
|
|
192
|
+
console.log(` ๐ฑ User Agent: ${userAgent}`);
|
|
193
|
+
console.log(` ๐ข Corporate Network: ${connectivity.timeout || connectivity.dns ? 'Likely' : 'Unlikely'}`);
|
|
194
|
+
console.log(` ๐ Firewall/Proxy: ${connectivity.timeout ? 'Possible' : 'Unlikely'}`);
|
|
195
|
+
console.log(` ๐ถ Connection Quality: ${health.avgResponseTime ?
|
|
196
|
+
(health.avgResponseTime < 1000 ? 'Excellent' :
|
|
197
|
+
health.avgResponseTime < 3000 ? 'Good' :
|
|
198
|
+
health.avgResponseTime < 5000 ? 'Fair' : 'Poor') : 'Unknown'}`);
|
|
199
|
+
|
|
200
|
+
console.log(`\n๐ Generated: ${diagnostic.timestamp}`);
|
|
201
|
+
|
|
202
|
+
// Final status summary
|
|
203
|
+
console.log('\n' + '='.repeat(60));
|
|
204
|
+
console.log('๐ DIAGNOSTIC SUMMARY:');
|
|
205
|
+
|
|
206
|
+
const issues = [];
|
|
207
|
+
const working = [];
|
|
208
|
+
|
|
209
|
+
if (!apiKey) issues.push('No API key configured');
|
|
210
|
+
else working.push('API key present');
|
|
211
|
+
|
|
212
|
+
if (!diagnostic.keyFormat.valid) issues.push('Invalid API key format');
|
|
213
|
+
else working.push('API key format valid');
|
|
214
|
+
|
|
215
|
+
if (connectivity.status === 'failed') issues.push('Backend connectivity failed');
|
|
216
|
+
else working.push('Backend connectivity working');
|
|
217
|
+
|
|
218
|
+
if (diagnostic.cache.error) issues.push('Cache system error');
|
|
219
|
+
else working.push('Cache system working');
|
|
220
|
+
|
|
221
|
+
if (health.consecutiveFailures > 3) issues.push('Multiple network failures');
|
|
222
|
+
else working.push('Network stability good');
|
|
223
|
+
|
|
224
|
+
console.log(`โ
Working (${working.length}): ${working.join(', ')}`);
|
|
225
|
+
if (issues.length > 0) {
|
|
226
|
+
console.log(`โ ๏ธ Issues (${issues.length}): ${issues.join(', ')}`);
|
|
227
|
+
}
|
|
228
|
+
|
|
229
|
+
const overallStatus = issues.length === 0 ? 'EXCELLENT' :
|
|
230
|
+
issues.length <= 2 ? 'GOOD' : 'NEEDS ATTENTION';
|
|
231
|
+
console.log(`\n๐ฏ Overall Status: ${overallStatus}`);
|
|
232
|
+
|
|
233
|
+
if (developmentMode) {
|
|
234
|
+
console.log('๐งช Development mode provides full offline functionality');
|
|
235
|
+
}
|
|
236
|
+
|
|
237
|
+
} catch (error) {
|
|
238
|
+
console.error('โ Diagnostic failed:', error.message);
|
|
239
|
+
console.log('\n๐ Emergency Diagnostic:');
|
|
240
|
+
console.log(' - Package installation may be corrupted');
|
|
241
|
+
console.log(' - Try: npm install --force');
|
|
242
|
+
console.log(' - Ensure Node.js version >= 16.0.0');
|
|
243
|
+
console.log(' - Contact support: support@promptoptimizer.help');
|
|
244
|
+
process.exit(1);
|
|
245
|
+
}
|
|
246
|
+
}
|
|
247
|
+
|
|
248
|
+
if (require.main === module) {
|
|
249
|
+
runDiagnostic();
|
|
250
|
+
}
|
|
251
|
+
|
|
252
|
+
module.exports = runDiagnostic;
|
|
@@ -0,0 +1,250 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Test Integration Command for MCP Prompt Optimizer
|
|
5
|
+
* Enhanced with development mode support and comprehensive network testing
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
const CloudApiKeyManager = require('./api-key-manager');
|
|
9
|
+
const packageJson = require('../package.json');
|
|
10
|
+
|
|
11
|
+
async function testIntegration() {
|
|
12
|
+
const developmentMode = process.env.NODE_ENV === 'development' || process.env.OPTIMIZER_DEV_MODE === 'true';
|
|
13
|
+
const modeText = developmentMode ? ' (Development Mode)' : '';
|
|
14
|
+
|
|
15
|
+
console.log(`๐งช MCP Prompt Optimizer v${packageJson.version} - Integration Test${modeText}\n`);
|
|
16
|
+
|
|
17
|
+
try {
|
|
18
|
+
const apiKey = process.env.OPTIMIZER_API_KEY;
|
|
19
|
+
|
|
20
|
+
if (!apiKey) {
|
|
21
|
+
console.error('โ No API key found for testing');
|
|
22
|
+
console.log('๐ Set API key for complete testing:');
|
|
23
|
+
console.log(' export OPTIMIZER_API_KEY=sk-opt-your-key');
|
|
24
|
+
|
|
25
|
+
if (developmentMode) {
|
|
26
|
+
console.log('\n๐งช Development Mode Options:');
|
|
27
|
+
console.log(' export OPTIMIZER_API_KEY=sk-dev-test-key');
|
|
28
|
+
console.log(' export OPTIMIZER_API_KEY=sk-local-test-key');
|
|
29
|
+
console.log(' Features: Offline testing, mock responses');
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
process.exit(1);
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
const manager = new CloudApiKeyManager(apiKey, { developmentMode });
|
|
36
|
+
|
|
37
|
+
console.log('๐ฌ Running comprehensive integration tests...\n');
|
|
38
|
+
console.log('๐ Test Configuration:');
|
|
39
|
+
console.log(` ๐ API Key: ${apiKey.substring(0, 16)}...`);
|
|
40
|
+
console.log(` ๐งช Development Mode: ${developmentMode}`);
|
|
41
|
+
console.log(` ๐ Backend URL: ${manager.backendUrl}`);
|
|
42
|
+
console.log(` ๐ Max Retries: ${manager.maxRetries}`);
|
|
43
|
+
console.log(` โฑ๏ธ Timeout: ${manager.requestTimeout}ms`);
|
|
44
|
+
console.log('');
|
|
45
|
+
|
|
46
|
+
const results = await manager.testIntegration();
|
|
47
|
+
|
|
48
|
+
console.log('๐ Integration Test Results:');
|
|
49
|
+
console.log('=' .repeat(60));
|
|
50
|
+
|
|
51
|
+
let totalTests = 0;
|
|
52
|
+
let passedTests = 0;
|
|
53
|
+
|
|
54
|
+
Object.entries(results).forEach(([testName, result]) => {
|
|
55
|
+
if (testName === 'generalError') {
|
|
56
|
+
console.log(`โ General Error: ${result}`);
|
|
57
|
+
return;
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
if (testName === 'networkHealth') {
|
|
61
|
+
console.log(`๐ Network Health: ${JSON.stringify(result, null, 2)}`);
|
|
62
|
+
return;
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
totalTests++;
|
|
66
|
+
const status = result.passed ? 'โ
PASS' : 'โ FAIL';
|
|
67
|
+
const displayName = testName.replace(/([A-Z])/g, ' $1').trim()
|
|
68
|
+
.replace(/^\w/, c => c.toUpperCase());
|
|
69
|
+
|
|
70
|
+
console.log(`${status} ${displayName}`);
|
|
71
|
+
|
|
72
|
+
if (result.passed) {
|
|
73
|
+
passedTests++;
|
|
74
|
+
|
|
75
|
+
// Show additional success details
|
|
76
|
+
if (result.keyType) {
|
|
77
|
+
console.log(` โ Key Type: ${result.keyType}`);
|
|
78
|
+
}
|
|
79
|
+
if (result.tier) {
|
|
80
|
+
console.log(` โ Tier: ${result.tier}`);
|
|
81
|
+
}
|
|
82
|
+
if (result.responseStructure) {
|
|
83
|
+
console.log(` โ Response Fields: ${result.responseStructure.join(', ')}`);
|
|
84
|
+
}
|
|
85
|
+
if (result.avgResponseTime) {
|
|
86
|
+
console.log(` โ Avg Response Time: ${result.avgResponseTime}ms`);
|
|
87
|
+
}
|
|
88
|
+
if (result.cacheAge !== undefined) {
|
|
89
|
+
console.log(` โ Cache Age: ${result.cacheAge}s`);
|
|
90
|
+
}
|
|
91
|
+
if (result.mode) {
|
|
92
|
+
const modes = [];
|
|
93
|
+
if (result.mode.development) modes.push('Development');
|
|
94
|
+
if (result.mode.mock) modes.push('Mock');
|
|
95
|
+
if (result.mode.fallback) modes.push('Fallback');
|
|
96
|
+
if (result.mode.offline) modes.push('Offline');
|
|
97
|
+
|
|
98
|
+
if (modes.length > 0) {
|
|
99
|
+
console.log(` โ Mode: ${modes.join(', ')}`);
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
} else {
|
|
103
|
+
// Show failure details
|
|
104
|
+
if (result.error) {
|
|
105
|
+
console.log(` โ Error: ${result.error}`);
|
|
106
|
+
}
|
|
107
|
+
if (result.consecutiveFailures) {
|
|
108
|
+
console.log(` โ Consecutive Failures: ${result.consecutiveFailures}`);
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
});
|
|
112
|
+
|
|
113
|
+
// Network health analysis
|
|
114
|
+
if (results.networkHealth) {
|
|
115
|
+
console.log('\n๐ Network Health Analysis:');
|
|
116
|
+
const health = results.networkHealth;
|
|
117
|
+
|
|
118
|
+
console.log(` ๐ Consecutive Failures: ${health.consecutiveFailures}`);
|
|
119
|
+
console.log(` โ
Last Successful: ${health.lastSuccessful ? new Date(health.lastSuccessful).toLocaleString() : 'Never'}`);
|
|
120
|
+
console.log(` โก Avg Response Time: ${health.avgResponseTime ? health.avgResponseTime + 'ms' : 'Unknown'}`);
|
|
121
|
+
console.log(` โ Last Error: ${health.lastErrorType || 'None'}`);
|
|
122
|
+
|
|
123
|
+
// Network quality assessment
|
|
124
|
+
if (health.avgResponseTime) {
|
|
125
|
+
const quality = health.avgResponseTime < 1000 ? 'Excellent' :
|
|
126
|
+
health.avgResponseTime < 3000 ? 'Good' :
|
|
127
|
+
health.avgResponseTime < 5000 ? 'Fair' : 'Poor';
|
|
128
|
+
console.log(` ๐ถ Connection Quality: ${quality}`);
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
if (health.consecutiveFailures > 0) {
|
|
132
|
+
console.log(` โ ๏ธ Network instability detected`);
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
console.log('\n' + '='.repeat(60));
|
|
137
|
+
console.log(`๐ Integration Test Summary: ${passedTests}/${totalTests} tests passed`);
|
|
138
|
+
|
|
139
|
+
if (passedTests === totalTests) {
|
|
140
|
+
console.log('๐ All integration tests passed! System is working correctly.');
|
|
141
|
+
|
|
142
|
+
if (developmentMode) {
|
|
143
|
+
console.log('\n๐งช Development Mode Features Verified:');
|
|
144
|
+
console.log(' โ
Mock validation working');
|
|
145
|
+
console.log(' โ
Offline operation capability');
|
|
146
|
+
console.log(' โ
Development key support');
|
|
147
|
+
console.log(' โ
Enhanced debugging available');
|
|
148
|
+
} else {
|
|
149
|
+
console.log('\n๐ Production Features Verified:');
|
|
150
|
+
console.log(' โ
Backend connectivity established');
|
|
151
|
+
console.log(' โ
API key validation working');
|
|
152
|
+
console.log(' โ
Network resilience active');
|
|
153
|
+
console.log(' โ
Caching system operational');
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
console.log('\n๐ Performance Metrics:');
|
|
157
|
+
if (results.backendConnectivity?.avgResponseTime) {
|
|
158
|
+
const responseTime = results.backendConnectivity.avgResponseTime;
|
|
159
|
+
console.log(` โก Backend Response: ${responseTime}ms`);
|
|
160
|
+
|
|
161
|
+
if (responseTime < 1000) {
|
|
162
|
+
console.log(' ๐ Excellent response time');
|
|
163
|
+
} else if (responseTime < 3000) {
|
|
164
|
+
console.log(' โ
Good response time');
|
|
165
|
+
} else {
|
|
166
|
+
console.log(' โ ๏ธ Consider checking network quality');
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
console.log('\n๐ฏ Ready for:');
|
|
171
|
+
console.log(' โ
MCP client integration');
|
|
172
|
+
console.log(' โ
Production optimization workloads');
|
|
173
|
+
console.log(' โ
Team collaboration');
|
|
174
|
+
console.log(' โ
Enterprise deployment');
|
|
175
|
+
|
|
176
|
+
} else {
|
|
177
|
+
console.log('โ ๏ธ Some integration tests failed. Review issues above.');
|
|
178
|
+
|
|
179
|
+
const failedTests = totalTests - passedTests;
|
|
180
|
+
|
|
181
|
+
if (results.backendConnectivity && !results.backendConnectivity.passed) {
|
|
182
|
+
console.log('\n๐ Backend Connectivity Issues:');
|
|
183
|
+
console.log(' - Check internet connection');
|
|
184
|
+
console.log(' - Verify firewall/proxy settings');
|
|
185
|
+
console.log(' - Backend may be temporarily unavailable');
|
|
186
|
+
|
|
187
|
+
if (!developmentMode) {
|
|
188
|
+
console.log(' - Try development mode: export OPTIMIZER_DEV_MODE=true');
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
|
|
192
|
+
if (results.formatValidation && !results.formatValidation.passed) {
|
|
193
|
+
console.log('\n๐ API Key Format Issues:');
|
|
194
|
+
console.log(' - Check API key format (sk-opt-*, sk-team-*, sk-dev-*, sk-local-*)');
|
|
195
|
+
console.log(' - Get new key: https://promptoptimizer-blog.vercel.app/pricing');
|
|
196
|
+
}
|
|
197
|
+
|
|
198
|
+
if (results.cacheOperations && !results.cacheOperations.passed) {
|
|
199
|
+
console.log('\n๐พ Cache System Issues:');
|
|
200
|
+
console.log(' - Clear cache: mcp-prompt-optimizer clear-cache');
|
|
201
|
+
console.log(' - Check file system permissions');
|
|
202
|
+
}
|
|
203
|
+
|
|
204
|
+
console.log('\n๐ ๏ธ Recommended Actions:');
|
|
205
|
+
console.log(' 1. Run diagnostic: mcp-prompt-optimizer diagnose');
|
|
206
|
+
console.log(' 2. Clear cache: mcp-prompt-optimizer clear-cache');
|
|
207
|
+
console.log(' 3. Validate key: mcp-prompt-optimizer validate-key');
|
|
208
|
+
|
|
209
|
+
if (failedTests > 2) {
|
|
210
|
+
console.log(' 4. Check system requirements');
|
|
211
|
+
console.log(' 5. Contact support: support@promptoptimizer.help');
|
|
212
|
+
}
|
|
213
|
+
|
|
214
|
+
if (!developmentMode && results.backendConnectivity && !results.backendConnectivity.passed) {
|
|
215
|
+
console.log('\n๐งช Alternative: Try Development Mode');
|
|
216
|
+
console.log(' export OPTIMIZER_DEV_MODE=true');
|
|
217
|
+
console.log(' export OPTIMIZER_API_KEY=sk-dev-test-key');
|
|
218
|
+
console.log(' mcp-prompt-optimizer test');
|
|
219
|
+
console.log(' Features: Offline operation, mock responses, no backend required');
|
|
220
|
+
}
|
|
221
|
+
|
|
222
|
+
process.exit(1);
|
|
223
|
+
}
|
|
224
|
+
|
|
225
|
+
console.log('\n๐ก Integration Complete. System ready for MCP client connections.');
|
|
226
|
+
|
|
227
|
+
} catch (error) {
|
|
228
|
+
console.error('โ Integration test failed:', error.message);
|
|
229
|
+
|
|
230
|
+
console.log('\n๐ ๏ธ Emergency Troubleshooting:');
|
|
231
|
+
console.log(' 1. Check Node.js version: node --version (>= 16.0.0)');
|
|
232
|
+
console.log(' 2. Reinstall dependencies: npm install');
|
|
233
|
+
console.log(' 3. Clear all cache: mcp-prompt-optimizer clear-cache');
|
|
234
|
+
console.log(' 4. Run diagnostic: mcp-prompt-optimizer diagnose');
|
|
235
|
+
|
|
236
|
+
if (!developmentMode) {
|
|
237
|
+
console.log(' 5. Try development mode: export OPTIMIZER_DEV_MODE=true');
|
|
238
|
+
}
|
|
239
|
+
|
|
240
|
+
console.log(' 6. Contact support: support@promptoptimizer.help');
|
|
241
|
+
|
|
242
|
+
process.exit(1);
|
|
243
|
+
}
|
|
244
|
+
}
|
|
245
|
+
|
|
246
|
+
if (require.main === module) {
|
|
247
|
+
testIntegration();
|
|
248
|
+
}
|
|
249
|
+
|
|
250
|
+
module.exports = testIntegration;
|