@roxybrowser/openapi 1.0.3 → 1.0.4-beta.1

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.
@@ -3,19 +3,19 @@
3
3
  *
4
4
  * HTTP client for RoxyBrowser REST API with authentication and error handling
5
5
  */
6
- import { RoxyApiError, ConfigError, } from './types.js';
6
+ import { RoxyApiError, ConfigError, } from "./types.js";
7
7
  export class RoxyClient {
8
8
  config;
9
9
  constructor(config) {
10
10
  // Validate required configuration
11
11
  if (!config.apiKey?.trim()) {
12
- throw new ConfigError('API key is required');
12
+ throw new ConfigError("API key is required");
13
13
  }
14
14
  if (!config.apiHost?.trim()) {
15
- throw new ConfigError('API host is required');
15
+ throw new ConfigError("API host is required");
16
16
  }
17
17
  this.config = {
18
- apiHost: config.apiHost.replace(/\/$/, ''), // Remove trailing slash
18
+ apiHost: config.apiHost.replace(/\/$/, ""), // Remove trailing slash
19
19
  apiKey: config.apiKey,
20
20
  timeout: config.timeout ?? 30000,
21
21
  };
@@ -31,20 +31,30 @@ export class RoxyClient {
31
31
  const response = await fetch(url, {
32
32
  ...options,
33
33
  headers: {
34
- 'Content-Type': 'application/json',
35
- 'token': this.config.apiKey, // RoxyBrowser uses 'token' header
34
+ "Content-Type": "application/json",
35
+ token: this.config.apiKey, // RoxyBrowser uses 'token' header
36
36
  ...options.headers,
37
37
  },
38
38
  signal: controller.signal,
39
39
  });
40
40
  clearTimeout(timeoutId);
41
41
  if (!response.ok) {
42
- throw new RoxyApiError(`HTTP ${response.status}: ${response.statusText}`, response.status, await response.text().catch(() => 'Unknown error'));
42
+ const responseText = await response.text().catch(() => "Unknown error");
43
+ throw new RoxyApiError(`HTTP ${response.status}: ${response.statusText}`, response.status, responseText, undefined // originalError
44
+ );
43
45
  }
44
46
  const data = await response.json();
45
47
  // Check API response code
46
48
  if (data.code !== 0) {
47
- throw new RoxyApiError(data.msg || 'API request failed', data.code, data);
49
+ // Enhanced error message with both Chinese and English
50
+ let errorMessage = data.msg || "API request failed";
51
+ // Special handling for code 409 with quota error
52
+ if (data.code === 409 && data.msg && data.msg.includes('额度不足')) {
53
+ const remainingQuota = typeof data.data === 'number' ? data.data : 0;
54
+ errorMessage = `窗口额度不足 / Insufficient profiles quota. 剩余额度 / Remaining: ${remainingQuota}. 请前往 RoxyBrowser 购买窗口套餐 / Please purchase more profiles in RoxyBrowser.`;
55
+ }
56
+ throw new RoxyApiError(errorMessage, data.code, data, undefined // originalError
57
+ );
48
58
  }
49
59
  return data.data;
50
60
  }
@@ -54,12 +64,15 @@ export class RoxyClient {
54
64
  throw error;
55
65
  }
56
66
  if (error instanceof Error) {
57
- if (error.name === 'AbortError') {
58
- throw new RoxyApiError(`Request timeout after ${this.config.timeout}ms`, 408);
67
+ if (error.name === "AbortError") {
68
+ throw new RoxyApiError(`Request timeout after ${this.config.timeout}ms`, 408, undefined, error // originalError
69
+ );
59
70
  }
60
- throw new RoxyApiError(`Network error: ${error.message}`, 0, error);
71
+ // Enhanced network error handling with pattern detection
72
+ throw new RoxyApiError(`Network error: ${error.message}`, 0, undefined, error // originalError for pattern analysis
73
+ );
61
74
  }
62
- throw new RoxyApiError('Unknown error occurred', 0, error);
75
+ throw new RoxyApiError("Unknown error occurred", 0, error, error instanceof Error ? error : undefined);
63
76
  }
64
77
  }
65
78
  /**
@@ -71,7 +84,7 @@ export class RoxyClient {
71
84
  page_size: pageSize.toString(),
72
85
  });
73
86
  return this.makeRequest(`/browser/workspace?${params}`, {
74
- method: 'GET',
87
+ method: "GET",
75
88
  });
76
89
  }
77
90
  /**
@@ -79,77 +92,117 @@ export class RoxyClient {
79
92
  */
80
93
  async getBrowsers(params) {
81
94
  const searchParams = new URLSearchParams();
82
- searchParams.append('workspaceId', params.workspaceId.toString());
95
+ searchParams.append("workspaceId", params.workspaceId.toString());
83
96
  if (params.dirIds)
84
- searchParams.append('dirIds', params.dirIds);
97
+ searchParams.append("dirIds", params.dirIds);
85
98
  if (params.windowName)
86
- searchParams.append('windowName', params.windowName);
99
+ searchParams.append("windowName", params.windowName);
87
100
  if (params.sortNums)
88
- searchParams.append('sortNums', params.sortNums);
101
+ searchParams.append("sortNums", params.sortNums);
89
102
  if (params.os)
90
- searchParams.append('os', params.os);
103
+ searchParams.append("os", params.os);
91
104
  if (params.projectIds)
92
- searchParams.append('projectIds', params.projectIds);
105
+ searchParams.append("projectIds", params.projectIds);
93
106
  if (params.windowRemark)
94
- searchParams.append('windowRemark', params.windowRemark);
107
+ searchParams.append("windowRemark", params.windowRemark);
95
108
  if (params.page_index)
96
- searchParams.append('page_index', params.page_index.toString());
109
+ searchParams.append("page_index", params.page_index.toString());
97
110
  if (params.page_size)
98
- searchParams.append('page_size', params.page_size.toString());
111
+ searchParams.append("page_size", params.page_size.toString());
99
112
  return this.makeRequest(`/browser/list_v3?${searchParams}`, {
100
- method: 'GET',
113
+ method: "GET",
101
114
  });
102
115
  }
103
116
  /**
104
117
  * Open a single browser
105
118
  */
106
119
  async openBrowser(params) {
107
- return this.makeRequest('/browser/open', {
108
- method: 'POST',
120
+ return this.makeRequest("/browser/open", {
121
+ method: "POST",
109
122
  body: JSON.stringify(params),
110
123
  });
111
124
  }
112
125
  /**
113
- * Open multiple browsers in batch
126
+ * Open multiple browsers in batch with enhanced error handling and retry logic
114
127
  */
115
- async openBrowsers(workspaceId, dirIds, args) {
116
- const results = [];
117
- const errors = [];
128
+ async openBrowsers(workspaceId, dirIds, args, options = {}) {
129
+ const { maxRetries = 2, retryDelay = 1000 } = options;
130
+ const successes = [];
131
+ const failures = [];
118
132
  // Open browsers in parallel with reasonable concurrency
119
133
  const BATCH_SIZE = 5;
120
134
  for (let i = 0; i < dirIds.length; i += BATCH_SIZE) {
121
135
  const batch = dirIds.slice(i, i + BATCH_SIZE);
122
136
  const batchPromises = batch.map(async (dirId) => {
123
- try {
124
- const result = await this.openBrowser({ workspaceId, dirId, args });
125
- return { dirId, result };
126
- }
127
- catch (error) {
128
- const errorMsg = error instanceof Error ? error.message : 'Unknown error';
129
- return { dirId, error: errorMsg };
137
+ let lastError = null;
138
+ let lastErrorCode = undefined;
139
+ // Retry logic for each browser
140
+ for (let attempt = 0; attempt <= maxRetries; attempt++) {
141
+ try {
142
+ const result = await this.openBrowser({ workspaceId, dirId, args });
143
+ return { dirId, result };
144
+ }
145
+ catch (error) {
146
+ lastError =
147
+ error instanceof Error ? error : new Error("Unknown error");
148
+ // Capture error code if available
149
+ if (error instanceof RoxyApiError) {
150
+ lastErrorCode = error.code;
151
+ // Don't retry non-retryable errors
152
+ if (!error.isRetryable()) {
153
+ break;
154
+ }
155
+ }
156
+ // Don't wait after the last attempt
157
+ if (attempt < maxRetries) {
158
+ await new Promise((resolve) => setTimeout(resolve, retryDelay * (attempt + 1)));
159
+ }
160
+ }
130
161
  }
162
+ // All attempts failed
163
+ const isRetryable = lastError instanceof RoxyApiError ? lastError.isRetryable() : true;
164
+ return {
165
+ dirId,
166
+ error: lastError?.message || "Unknown error",
167
+ errorCode: lastErrorCode,
168
+ retryable: isRetryable,
169
+ };
131
170
  });
132
171
  const batchResults = await Promise.all(batchPromises);
133
172
  for (const item of batchResults) {
134
- if ('result' in item && item.result) {
135
- results.push(item.result);
173
+ if ("result" in item && item.result) {
174
+ successes.push(item.result);
136
175
  }
137
- else if ('error' in item) {
138
- errors.push({ dirId: item.dirId, error: item.error });
176
+ else if ("error" in item) {
177
+ failures.push({
178
+ dirId: item.dirId,
179
+ error: item.error,
180
+ errorCode: item.errorCode,
181
+ retryable: "retryable" in item ? item.retryable : true,
182
+ });
139
183
  }
140
184
  }
141
185
  }
142
- if (errors.length > 0) {
143
- console.warn('Some browsers failed to open:', errors);
186
+ // Enhanced error reporting
187
+ if (failures.length > 0) {
188
+ const retryableErrors = failures.filter((e) => e.retryable);
189
+ const nonRetryableErrors = failures.filter((e) => !e.retryable);
190
+ console.warn(`Browser opening completed with ${failures.length} errors:`);
191
+ if (retryableErrors.length > 0) {
192
+ console.warn(` - ${retryableErrors.length} retryable errors (could retry later)`);
193
+ }
194
+ if (nonRetryableErrors.length > 0) {
195
+ console.warn(` - ${nonRetryableErrors.length} non-retryable errors (require intervention)`);
196
+ }
144
197
  }
145
- return results;
198
+ return { successes, failures };
146
199
  }
147
200
  /**
148
201
  * Close a single browser
149
202
  */
150
203
  async closeBrowser(params) {
151
- await this.makeRequest('/browser/close', {
152
- method: 'POST',
204
+ await this.makeRequest("/browser/close", {
205
+ method: "POST",
153
206
  body: JSON.stringify(params),
154
207
  });
155
208
  }
@@ -165,7 +218,7 @@ export class RoxyClient {
165
218
  return { dirId, success: true };
166
219
  }
167
220
  catch (error) {
168
- const errorMsg = error instanceof Error ? error.message : 'Unknown error';
221
+ const errorMsg = error instanceof Error ? error.message : "Unknown error";
169
222
  return { dirId, success: false, error: errorMsg };
170
223
  }
171
224
  });
@@ -177,8 +230,8 @@ export class RoxyClient {
177
230
  * Create a single browser
178
231
  */
179
232
  async createBrowser(config) {
180
- return this.makeRequest('/browser/create', {
181
- method: 'POST',
233
+ return this.makeRequest("/browser/create", {
234
+ method: "POST",
182
235
  body: JSON.stringify(config),
183
236
  });
184
237
  }
@@ -202,10 +255,10 @@ export class RoxyClient {
202
255
  };
203
256
  }
204
257
  catch (error) {
205
- const errorMsg = error instanceof Error ? error.message : 'Unknown error';
258
+ const errorMsg = error instanceof Error ? error.message : "Unknown error";
206
259
  errors.push({ config, error: errorMsg });
207
260
  return {
208
- dirId: '',
261
+ dirId: "",
209
262
  windowName: config.windowName || `Browser-${i + batchIndex + 1}`,
210
263
  success: false,
211
264
  error: errorMsg,
@@ -216,11 +269,11 @@ export class RoxyClient {
216
269
  results.push(...batchResults);
217
270
  // Add small delay between batches to avoid overwhelming the API
218
271
  if (i + BATCH_SIZE < configs.length) {
219
- await new Promise(resolve => setTimeout(resolve, 1000));
272
+ await new Promise((resolve) => setTimeout(resolve, 1000));
220
273
  }
221
274
  }
222
- const successCount = results.filter(r => r.success).length;
223
- const failureCount = results.filter(r => !r.success).length;
275
+ const successCount = results.filter((r) => r.success).length;
276
+ const failureCount = results.filter((r) => !r.success).length;
224
277
  // If there were errors and some successes, log warnings
225
278
  if (errors.length > 0) {
226
279
  console.warn(`${errors.length} browser creation(s) failed:`, errors);
@@ -240,16 +293,21 @@ export class RoxyClient {
240
293
  workspaceId: workspaceId.toString(),
241
294
  dirId,
242
295
  });
243
- return this.makeRequest(`/browser/detail?${params}`, {
244
- method: 'GET',
296
+ const response = await this.makeRequest(`/browser/detail?${params}`, {
297
+ method: "GET",
245
298
  });
299
+ // API returns { rows: [browser object], total: 1 }, extract first browser
300
+ if (response.rows && response.rows.length > 0) {
301
+ return response.rows[0];
302
+ }
303
+ throw new Error('Browser not found or no data returned');
246
304
  }
247
305
  /**
248
306
  * Update/modify existing browser
249
307
  */
250
308
  async updateBrowser(config) {
251
- await this.makeRequest('/browser/mdf', {
252
- method: 'POST',
309
+ await this.makeRequest("/browser/mdf", {
310
+ method: "POST",
253
311
  body: JSON.stringify(config),
254
312
  });
255
313
  }
@@ -257,8 +315,8 @@ export class RoxyClient {
257
315
  * Delete browsers
258
316
  */
259
317
  async deleteBrowsers(workspaceId, dirIds) {
260
- await this.makeRequest('/browser/delete', {
261
- method: 'POST',
318
+ await this.makeRequest("/browser/delete", {
319
+ method: "POST",
262
320
  body: JSON.stringify({ workspaceId, dirIds }),
263
321
  });
264
322
  }
@@ -266,8 +324,8 @@ export class RoxyClient {
266
324
  * Random fingerprint for browser
267
325
  */
268
326
  async randomBrowserFingerprint(workspaceId, dirId) {
269
- await this.makeRequest('/browser/random_env', {
270
- method: 'POST',
327
+ await this.makeRequest("/browser/random_env", {
328
+ method: "POST",
271
329
  body: JSON.stringify({ workspaceId, dirId }),
272
330
  });
273
331
  }
@@ -275,8 +333,8 @@ export class RoxyClient {
275
333
  * Clear browser local cache
276
334
  */
277
335
  async clearBrowserLocalCache(dirIds) {
278
- await this.makeRequest('/browser/clear_local_cache', {
279
- method: 'POST',
336
+ await this.makeRequest("/browser/clear_local_cache", {
337
+ method: "POST",
280
338
  body: JSON.stringify({ dirIds }),
281
339
  });
282
340
  }
@@ -284,23 +342,126 @@ export class RoxyClient {
284
342
  * Clear browser server cache
285
343
  */
286
344
  async clearBrowserServerCache(workspaceId, dirIds) {
287
- await this.makeRequest('/browser/clear_server_cache', {
288
- method: 'POST',
345
+ await this.makeRequest("/browser/clear_server_cache", {
346
+ method: "POST",
289
347
  body: JSON.stringify({ workspaceId, dirIds }),
290
348
  });
291
349
  }
292
350
  /**
293
- * Test API connectivity
351
+ * Get account list
352
+ */
353
+ async getAccounts(params) {
354
+ const searchParams = new URLSearchParams();
355
+ searchParams.append("workspaceId", params.workspaceId.toString());
356
+ if (params.accountId)
357
+ searchParams.append("accountId", params.accountId.toString());
358
+ if (params.page_index)
359
+ searchParams.append("page_index", params.page_index.toString());
360
+ if (params.page_size)
361
+ searchParams.append("page_size", params.page_size.toString());
362
+ return this.makeRequest(`/browser/account?${searchParams}`, {
363
+ method: "GET",
364
+ });
365
+ }
366
+ /**
367
+ * Get label list
368
+ */
369
+ async getLabels(workspaceId) {
370
+ const params = new URLSearchParams({
371
+ workspaceId: workspaceId.toString(),
372
+ });
373
+ return this.makeRequest(`/browser/label?${params}`, {
374
+ method: "GET",
375
+ });
376
+ }
377
+ /**
378
+ * Get connection info for opened browsers
379
+ */
380
+ async getConnectionInfo(dirIds) {
381
+ const params = new URLSearchParams();
382
+ if (dirIds && dirIds.length > 0) {
383
+ params.append("dirIds", dirIds.join(","));
384
+ }
385
+ const queryString = params.toString();
386
+ const endpoint = queryString
387
+ ? `/browser/connection_info?${queryString}`
388
+ : "/browser/connection_info";
389
+ return this.makeRequest(endpoint, {
390
+ method: "GET",
391
+ });
392
+ }
393
+ /**
394
+ * Test API connectivity with detailed diagnostics
294
395
  */
295
396
  async testConnection() {
296
397
  try {
297
- await this.makeRequest('/health');
398
+ await this.makeRequest("/health");
298
399
  return true;
299
400
  }
300
401
  catch (error) {
301
- console.error('Connection test failed:', error);
402
+ console.error("Connection test failed:", error);
302
403
  return false;
303
404
  }
304
405
  }
406
+ /**
407
+ * Perform comprehensive API diagnostics
408
+ */
409
+ async performDiagnostics() {
410
+ const result = {
411
+ connected: false,
412
+ authentication: false,
413
+ workspaceAccess: false,
414
+ errors: [],
415
+ recommendations: [],
416
+ };
417
+ // Test 1: Basic connectivity
418
+ try {
419
+ await this.makeRequest("/health");
420
+ result.connected = true;
421
+ }
422
+ catch (error) {
423
+ result.connected = false;
424
+ if (error instanceof RoxyApiError) {
425
+ result.errors.push(`Connection failed: ${error.getExplanation()}`);
426
+ result.recommendations.push(...error.getTroubleshootingSteps());
427
+ }
428
+ else {
429
+ result.errors.push(`Network error: ${error instanceof Error ? error.message : "Unknown error"}`);
430
+ result.recommendations.push("Check if RoxyBrowser is running", "Verify API host configuration", "Check network connectivity");
431
+ }
432
+ }
433
+ // Test 2: Authentication (if connected)
434
+ if (result.connected) {
435
+ try {
436
+ await this.getWorkspaces(1, 1);
437
+ result.authentication = true;
438
+ result.workspaceAccess = true;
439
+ }
440
+ catch (error) {
441
+ if (error instanceof RoxyApiError) {
442
+ if (error.code === 401) {
443
+ result.authentication = false;
444
+ result.errors.push("Authentication failed: Invalid API key");
445
+ result.recommendations.push("Check ROXY_API_KEY environment variable", "Verify API key in RoxyBrowser settings", "Ensure API is enabled in RoxyBrowser");
446
+ }
447
+ else if (error.code === 403) {
448
+ result.authentication = true;
449
+ result.workspaceAccess = false;
450
+ result.errors.push("Access denied: Insufficient permissions");
451
+ result.recommendations.push("Check API key permissions", "Verify workspace access rights");
452
+ }
453
+ else {
454
+ result.authentication = true;
455
+ result.errors.push(`API error: ${error.getExplanation()}`);
456
+ result.recommendations.push(...error.getTroubleshootingSteps());
457
+ }
458
+ }
459
+ else {
460
+ result.errors.push(`Unexpected error: ${error instanceof Error ? error.message : "Unknown error"}`);
461
+ }
462
+ }
463
+ }
464
+ return result;
465
+ }
305
466
  }
306
467
  //# sourceMappingURL=roxy-client.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"roxy-client.js","sourceRoot":"","sources":["../src/roxy-client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"roxy-client.js","sourceRoot":"","sources":["../src/roxy-client.ts"],"names":[],"mappings":"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"}