@roxybrowser/openapi 1.0.5-beta.1 → 1.0.8

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 (48) hide show
  1. package/README.md +222 -228
  2. package/lib/index.js +97 -1674
  3. package/lib/index.js.map +1 -1
  4. package/lib/modules/account.d.ts +491 -0
  5. package/lib/modules/account.d.ts.map +1 -0
  6. package/lib/modules/account.js +442 -0
  7. package/lib/modules/account.js.map +1 -0
  8. package/lib/modules/browser.d.ts +3011 -0
  9. package/lib/modules/browser.d.ts.map +1 -0
  10. package/lib/modules/browser.js +1501 -0
  11. package/lib/modules/browser.js.map +1 -0
  12. package/lib/modules/other.d.ts +102 -0
  13. package/lib/modules/other.d.ts.map +1 -0
  14. package/lib/modules/other.js +194 -0
  15. package/lib/modules/other.js.map +1 -0
  16. package/lib/modules/proxy.d.ts +576 -0
  17. package/lib/modules/proxy.d.ts.map +1 -0
  18. package/lib/modules/proxy.js +724 -0
  19. package/lib/modules/proxy.js.map +1 -0
  20. package/lib/types.d.ts +860 -155
  21. package/lib/types.d.ts.map +1 -1
  22. package/lib/types.js +4 -4
  23. package/lib/types.js.map +1 -1
  24. package/lib/utils/index.d.ts +24 -0
  25. package/lib/utils/index.d.ts.map +1 -0
  26. package/lib/utils/index.js +45 -0
  27. package/lib/utils/index.js.map +1 -0
  28. package/package.json +50 -50
  29. package/lib/browser/browser-creator.d.ts +0 -54
  30. package/lib/browser/browser-creator.d.ts.map +0 -1
  31. package/lib/browser/browser-creator.js +0 -263
  32. package/lib/browser/browser-creator.js.map +0 -1
  33. package/lib/proxy/proxy-manager.d.ts +0 -67
  34. package/lib/proxy/proxy-manager.d.ts.map +0 -1
  35. package/lib/proxy/proxy-manager.js +0 -278
  36. package/lib/proxy/proxy-manager.js.map +0 -1
  37. package/lib/proxy/proxy-validator.d.ts +0 -66
  38. package/lib/proxy/proxy-validator.d.ts.map +0 -1
  39. package/lib/proxy/proxy-validator.js +0 -273
  40. package/lib/proxy/proxy-validator.js.map +0 -1
  41. package/lib/roxy-client.d.ts +0 -117
  42. package/lib/roxy-client.d.ts.map +0 -1
  43. package/lib/roxy-client.js +0 -467
  44. package/lib/roxy-client.js.map +0 -1
  45. package/lib/utils/error-analyzer.d.ts +0 -84
  46. package/lib/utils/error-analyzer.d.ts.map +0 -1
  47. package/lib/utils/error-analyzer.js +0 -387
  48. package/lib/utils/error-analyzer.js.map +0 -1
@@ -1,387 +0,0 @@
1
- /**
2
- * Error Analysis Utility
3
- *
4
- * Provides intelligent error analysis, categorization, and troubleshooting guidance
5
- */
6
- import { RoxyApiError, ROXY_ERROR_MAP, NETWORK_ERROR_PATTERNS, ConfigError, BrowserCreationError, } from '../types.js';
7
- export class ErrorAnalyzer {
8
- /**
9
- * Analyze a single error and provide detailed insights
10
- */
11
- static analyzeError(error) {
12
- if (error instanceof RoxyApiError) {
13
- return this.analyzeRoxyApiError(error);
14
- }
15
- if (error instanceof ConfigError) {
16
- return this.analyzeConfigError(error);
17
- }
18
- if (error instanceof BrowserCreationError) {
19
- return this.analyzeBrowserCreationError(error);
20
- }
21
- // Generic error analysis
22
- return this.analyzeGenericError(error);
23
- }
24
- /**
25
- * Analyze RoxyBrowser API errors
26
- */
27
- static analyzeRoxyApiError(error) {
28
- const baseResult = {
29
- category: error.category,
30
- severity: error.severity,
31
- description: error.errorInfo?.description || error.message,
32
- chineseDescription: error.errorInfo?.chineseMsg || '未知错误',
33
- troubleshooting: error.getTroubleshootingSteps(),
34
- retryable: error.isRetryable(),
35
- suggestedActions: [],
36
- relatedErrors: [],
37
- };
38
- if (error.isRetryable()) {
39
- baseResult.retryStrategy = error.getRetryStrategy();
40
- }
41
- // Add specific suggestions based on error type
42
- baseResult.suggestedActions = this.generateSuggestedActions(error);
43
- baseResult.relatedErrors = this.findRelatedErrors(error.code);
44
- return baseResult;
45
- }
46
- /**
47
- * Analyze configuration errors
48
- */
49
- static analyzeConfigError(error) {
50
- return {
51
- category: 'configuration',
52
- severity: 'high',
53
- description: 'Configuration error - invalid or missing settings',
54
- chineseDescription: '配置错误 - 配置无效或缺失',
55
- troubleshooting: [
56
- 'Check environment variables (ROXY_API_KEY, ROXY_API_HOST)',
57
- 'Verify RoxyBrowser application settings',
58
- 'Ensure all required configuration is provided',
59
- 'Check configuration file syntax and format',
60
- ],
61
- retryable: false,
62
- suggestedActions: [
63
- 'Review configuration setup',
64
- 'Check environment variable spelling',
65
- 'Restart application after fixing configuration',
66
- ],
67
- };
68
- }
69
- /**
70
- * Analyze browser creation errors
71
- */
72
- static analyzeBrowserCreationError(error) {
73
- const hasPartialResults = error.partialResults && error.partialResults.length > 0;
74
- return {
75
- category: 'browser',
76
- severity: hasPartialResults ? 'medium' : 'high',
77
- description: 'Browser creation failed - configuration or resource issue',
78
- chineseDescription: '浏览器创建失败 - 配置或资源问题',
79
- troubleshooting: [
80
- 'Verify workspace and project IDs exist',
81
- 'Check browser configuration parameters',
82
- 'Ensure sufficient system resources',
83
- 'Validate proxy settings if used',
84
- 'Check for conflicting browser instances',
85
- ],
86
- retryable: true,
87
- retryStrategy: {
88
- shouldRetry: true,
89
- delayMs: 2000,
90
- maxRetries: 2,
91
- },
92
- suggestedActions: hasPartialResults ? [
93
- 'Retry with failed configurations only',
94
- 'Reduce batch size',
95
- 'Check specific error details for each failure',
96
- ] : [
97
- 'Validate all configuration parameters',
98
- 'Check system resources',
99
- 'Try creating browsers one at a time',
100
- ],
101
- };
102
- }
103
- /**
104
- * Analyze generic errors
105
- */
106
- static analyzeGenericError(error) {
107
- // Check for network error patterns
108
- const networkPattern = NETWORK_ERROR_PATTERNS.find(pattern => pattern.pattern.test(error.message));
109
- if (networkPattern) {
110
- return {
111
- category: 'network',
112
- severity: 'high',
113
- description: networkPattern.description,
114
- chineseDescription: '网络连接错误',
115
- troubleshooting: networkPattern.troubleshooting,
116
- retryable: true,
117
- retryStrategy: {
118
- shouldRetry: true,
119
- delayMs: 3000,
120
- maxRetries: 3,
121
- },
122
- suggestedActions: [
123
- 'Check network connectivity',
124
- 'Verify service availability',
125
- 'Try again after a brief wait',
126
- ],
127
- };
128
- }
129
- return {
130
- category: 'unknown',
131
- severity: 'medium',
132
- description: error.message || 'Unknown error occurred',
133
- chineseDescription: '未知错误',
134
- troubleshooting: [
135
- 'Check application logs for more details',
136
- 'Verify system status',
137
- 'Try the operation again',
138
- ],
139
- retryable: true,
140
- retryStrategy: {
141
- shouldRetry: true,
142
- delayMs: 1000,
143
- maxRetries: 1,
144
- },
145
- suggestedActions: [
146
- 'Review error message for clues',
147
- 'Check system resources',
148
- 'Contact support if issue persists',
149
- ],
150
- };
151
- }
152
- /**
153
- * Generate context-specific suggested actions
154
- */
155
- static generateSuggestedActions(error) {
156
- const actions = [];
157
- switch (error.code) {
158
- case 401:
159
- actions.push('Copy API key from RoxyBrowser settings', 'Set ROXY_API_KEY environment variable', 'Restart the MCP server');
160
- break;
161
- case 404:
162
- actions.push('Use roxy_list_workspaces to find valid workspace IDs', 'Use roxy_list_browsers to find valid browser IDs', 'Check if resources were deleted');
163
- break;
164
- case 409:
165
- // Check if it's quota error
166
- if (error.message.includes('额度不足') || error.message.includes('quota')) {
167
- actions.push('打开 RoxyBrowser 应用 / Open RoxyBrowser app', '前往费用中心 / Go to Billing Center', '购买或升级窗口套餐 / Purchase or upgrade profiles plan', '等待充值生效后重试创建 / Retry creation after quota is added');
168
- }
169
- else {
170
- // Profile conflict case
171
- actions.push('Close conflicting profile instances', 'Use roxy_close_browsers tool', 'Wait a moment and try again');
172
- }
173
- break;
174
- case 500:
175
- actions.push('Check RoxyBrowser application status', 'Restart RoxyBrowser if needed', 'Check system resources');
176
- break;
177
- case 408:
178
- case 504:
179
- actions.push('Increase timeout settings', 'Reduce batch operation size', 'Check network connectivity');
180
- break;
181
- }
182
- return actions;
183
- }
184
- /**
185
- * Find related error codes that might have similar causes
186
- */
187
- static findRelatedErrors(errorCode) {
188
- const related = [];
189
- // Group related errors
190
- const authErrors = [401, 403];
191
- const networkErrors = [408, 502, 503, 504];
192
- const resourceErrors = [404, 409];
193
- if (authErrors.includes(errorCode)) {
194
- related.push(...authErrors.filter(code => code !== errorCode).map(code => `Error ${code}`));
195
- }
196
- else if (networkErrors.includes(errorCode)) {
197
- related.push(...networkErrors.filter(code => code !== errorCode).map(code => `Error ${code}`));
198
- }
199
- else if (resourceErrors.includes(errorCode)) {
200
- related.push(...resourceErrors.filter(code => code !== errorCode).map(code => `Error ${code}`));
201
- }
202
- return related;
203
- }
204
- /**
205
- * Analyze multiple errors to find patterns and provide batch insights
206
- */
207
- static analyzeBatchErrors(errors) {
208
- const analysis = {
209
- totalErrors: errors.length,
210
- errorsByCategory: {},
211
- errorsBySeverity: {},
212
- commonPatterns: [],
213
- recommendations: [],
214
- retryableCount: 0,
215
- criticalCount: 0,
216
- };
217
- const errorMessages = [];
218
- const errorCodes = [];
219
- // Analyze each error
220
- for (const error of errors) {
221
- const result = this.analyzeError(error);
222
- // Count by category
223
- analysis.errorsByCategory[result.category] = (analysis.errorsByCategory[result.category] || 0) + 1;
224
- // Count by severity
225
- analysis.errorsBySeverity[result.severity] = (analysis.errorsBySeverity[result.severity] || 0) + 1;
226
- // Track retryable and critical errors
227
- if (result.retryable)
228
- analysis.retryableCount++;
229
- if (result.severity === 'critical')
230
- analysis.criticalCount++;
231
- errorMessages.push(error.message);
232
- if (error instanceof RoxyApiError) {
233
- errorCodes.push(error.code);
234
- }
235
- }
236
- // Find common patterns
237
- analysis.commonPatterns = this.findCommonPatterns(errorMessages, errorCodes);
238
- // Generate recommendations
239
- analysis.recommendations = this.generateBatchRecommendations(analysis);
240
- return analysis;
241
- }
242
- /**
243
- * Find common patterns in error messages and codes
244
- */
245
- static findCommonPatterns(messages, codes) {
246
- const patterns = [];
247
- // Count error codes
248
- const codeCount = {};
249
- const codeMessages = {};
250
- codes.forEach((code, index) => {
251
- codeCount[code] = (codeCount[code] || 0) + 1;
252
- if (!codeMessages[code])
253
- codeMessages[code] = [];
254
- codeMessages[code].push(messages[index]);
255
- });
256
- // Add significant error code patterns
257
- Object.entries(codeCount).forEach(([code, count]) => {
258
- if (count >= 2) {
259
- const errorInfo = ROXY_ERROR_MAP[parseInt(code)];
260
- patterns.push({
261
- pattern: errorInfo ? `${errorInfo.name} (${code})` : `Error Code ${code}`,
262
- count,
263
- affectedItems: codeMessages[parseInt(code)].slice(0, 3), // Show first 3 examples
264
- });
265
- }
266
- });
267
- // Look for common message patterns
268
- const commonKeywords = ['timeout', 'connection', 'authentication', 'not found', 'conflict'];
269
- commonKeywords.forEach(keyword => {
270
- const matchingMessages = messages.filter(msg => msg.toLowerCase().includes(keyword.toLowerCase()));
271
- if (matchingMessages.length >= 2) {
272
- patterns.push({
273
- pattern: `Messages containing "${keyword}"`,
274
- count: matchingMessages.length,
275
- affectedItems: matchingMessages.slice(0, 3),
276
- });
277
- }
278
- });
279
- return patterns.sort((a, b) => b.count - a.count);
280
- }
281
- /**
282
- * Generate batch-level recommendations
283
- */
284
- static generateBatchRecommendations(analysis) {
285
- const recommendations = [];
286
- // Critical errors
287
- if (analysis.criticalCount > 0) {
288
- recommendations.push('🚨 Critical errors detected - immediate attention required');
289
- }
290
- // Authentication issues
291
- if (analysis.errorsByCategory.authentication > 0) {
292
- recommendations.push('🔑 Authentication issues detected - check API key and permissions');
293
- }
294
- // Network issues
295
- if (analysis.errorsByCategory.network > 0) {
296
- recommendations.push('🌐 Network issues detected - check connectivity and proxy settings');
297
- }
298
- // High retry rate
299
- if (analysis.retryableCount > analysis.totalErrors * 0.7) {
300
- recommendations.push('🔄 Many errors are retryable - consider implementing automatic retry');
301
- }
302
- // Browser conflicts
303
- if (analysis.errorsByCategory.browser > 0) {
304
- recommendations.push('🖥️ Browser-related issues detected - check resource availability and conflicts');
305
- }
306
- // Configuration issues
307
- if (analysis.errorsByCategory.configuration > 0) {
308
- recommendations.push('⚙️ Configuration issues detected - review settings and parameters');
309
- }
310
- return recommendations;
311
- }
312
- /**
313
- * Format error analysis for display to user/AI
314
- */
315
- static formatErrorForDisplay(error) {
316
- const analysis = this.analyzeError(error);
317
- let formatted = `## 错误分析 / Error Analysis\n\n`;
318
- formatted += `**错误类型 / Category**: ${analysis.category}\n`;
319
- formatted += `**严重程度 / Severity**: ${analysis.severity}\n`;
320
- formatted += `**描述 / Description**: ${analysis.description}\n`;
321
- formatted += `**中文说明**: ${analysis.chineseDescription}\n\n`;
322
- if (analysis.troubleshooting.length > 0) {
323
- formatted += `### 故障排除步骤 / Troubleshooting Steps\n`;
324
- analysis.troubleshooting.forEach((step, index) => {
325
- formatted += `${index + 1}. ${step}\n`;
326
- });
327
- formatted += '\n';
328
- }
329
- if (analysis.suggestedActions.length > 0) {
330
- formatted += `### 建议操作 / Suggested Actions\n`;
331
- analysis.suggestedActions.forEach((action, index) => {
332
- formatted += `${index + 1}. ${action}\n`;
333
- });
334
- formatted += '\n';
335
- }
336
- if (analysis.retryable && analysis.retryStrategy) {
337
- formatted += `### 重试策略 / Retry Strategy\n`;
338
- formatted += `- **可重试 / Retryable**: ✅ Yes\n`;
339
- formatted += `- **延迟 / Delay**: ${analysis.retryStrategy.delayMs}ms\n`;
340
- formatted += `- **最大重试次数 / Max Retries**: ${analysis.retryStrategy.maxRetries}\n\n`;
341
- }
342
- else {
343
- formatted += `### 重试策略 / Retry Strategy\n`;
344
- formatted += `- **可重试 / Retryable**: ❌ No\n\n`;
345
- }
346
- if (analysis.relatedErrors && analysis.relatedErrors.length > 0) {
347
- formatted += `### 相关错误 / Related Errors\n`;
348
- formatted += `${analysis.relatedErrors.join(', ')}\n\n`;
349
- }
350
- return formatted;
351
- }
352
- /**
353
- * Format batch analysis for display
354
- */
355
- static formatBatchAnalysisForDisplay(analysis) {
356
- let formatted = `## 批量错误分析 / Batch Error Analysis\n\n`;
357
- formatted += `**总错误数 / Total Errors**: ${analysis.totalErrors}\n`;
358
- formatted += `**可重试错误 / Retryable Errors**: ${analysis.retryableCount}\n`;
359
- formatted += `**严重错误 / Critical Errors**: ${analysis.criticalCount}\n\n`;
360
- if (Object.keys(analysis.errorsByCategory).length > 0) {
361
- formatted += `### 错误分类统计 / Error Categories\n`;
362
- Object.entries(analysis.errorsByCategory).forEach(([category, count]) => {
363
- formatted += `- **${category}**: ${count}\n`;
364
- });
365
- formatted += '\n';
366
- }
367
- if (analysis.commonPatterns.length > 0) {
368
- formatted += `### 常见错误模式 / Common Patterns\n`;
369
- analysis.commonPatterns.forEach((pattern, index) => {
370
- formatted += `${index + 1}. **${pattern.pattern}** (${pattern.count} occurrences)\n`;
371
- if (pattern.affectedItems.length > 0) {
372
- formatted += ` Examples: ${pattern.affectedItems.slice(0, 2).join(', ')}\n`;
373
- }
374
- });
375
- formatted += '\n';
376
- }
377
- if (analysis.recommendations.length > 0) {
378
- formatted += `### 建议 / Recommendations\n`;
379
- analysis.recommendations.forEach((rec, index) => {
380
- formatted += `${index + 1}. ${rec}\n`;
381
- });
382
- formatted += '\n';
383
- }
384
- return formatted;
385
- }
386
- }
387
- //# sourceMappingURL=error-analyzer.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"error-analyzer.js","sourceRoot":"","sources":["../../src/utils/error-analyzer.ts"],"names":[],"mappings":"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"}