@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.
- package/README.md +105 -257
- package/lib/browser/browser-creator.d.ts +1 -5
- package/lib/browser/browser-creator.d.ts.map +1 -1
- package/lib/browser/browser-creator.js +2 -25
- package/lib/browser/browser-creator.js.map +1 -1
- package/lib/index.js +1075 -275
- package/lib/index.js.map +1 -1
- package/lib/roxy-client.d.ts +40 -6
- package/lib/roxy-client.d.ts.map +1 -1
- package/lib/roxy-client.js +229 -68
- package/lib/roxy-client.js.map +1 -1
- package/lib/types.d.ts +132 -29
- package/lib/types.d.ts.map +1 -1
- package/lib/types.js +332 -2
- package/lib/types.js.map +1 -1
- package/lib/utils/error-analyzer.d.ts +84 -0
- package/lib/utils/error-analyzer.d.ts.map +1 -0
- package/lib/utils/error-analyzer.js +387 -0
- package/lib/utils/error-analyzer.js.map +1 -0
- package/package.json +4 -3
- package/lib/browser/template-manager.d.ts +0 -48
- package/lib/browser/template-manager.d.ts.map +0 -1
- package/lib/browser/template-manager.js +0 -324
- package/lib/browser/template-manager.js.map +0 -1
package/lib/roxy-client.js
CHANGED
|
@@ -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
|
|
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(
|
|
12
|
+
throw new ConfigError("API key is required");
|
|
13
13
|
}
|
|
14
14
|
if (!config.apiHost?.trim()) {
|
|
15
|
-
throw new ConfigError(
|
|
15
|
+
throw new ConfigError("API host is required");
|
|
16
16
|
}
|
|
17
17
|
this.config = {
|
|
18
|
-
apiHost: config.apiHost.replace(/\/$/,
|
|
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
|
-
|
|
35
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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 ===
|
|
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
|
-
|
|
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(
|
|
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:
|
|
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(
|
|
95
|
+
searchParams.append("workspaceId", params.workspaceId.toString());
|
|
83
96
|
if (params.dirIds)
|
|
84
|
-
searchParams.append(
|
|
97
|
+
searchParams.append("dirIds", params.dirIds);
|
|
85
98
|
if (params.windowName)
|
|
86
|
-
searchParams.append(
|
|
99
|
+
searchParams.append("windowName", params.windowName);
|
|
87
100
|
if (params.sortNums)
|
|
88
|
-
searchParams.append(
|
|
101
|
+
searchParams.append("sortNums", params.sortNums);
|
|
89
102
|
if (params.os)
|
|
90
|
-
searchParams.append(
|
|
103
|
+
searchParams.append("os", params.os);
|
|
91
104
|
if (params.projectIds)
|
|
92
|
-
searchParams.append(
|
|
105
|
+
searchParams.append("projectIds", params.projectIds);
|
|
93
106
|
if (params.windowRemark)
|
|
94
|
-
searchParams.append(
|
|
107
|
+
searchParams.append("windowRemark", params.windowRemark);
|
|
95
108
|
if (params.page_index)
|
|
96
|
-
searchParams.append(
|
|
109
|
+
searchParams.append("page_index", params.page_index.toString());
|
|
97
110
|
if (params.page_size)
|
|
98
|
-
searchParams.append(
|
|
111
|
+
searchParams.append("page_size", params.page_size.toString());
|
|
99
112
|
return this.makeRequest(`/browser/list_v3?${searchParams}`, {
|
|
100
|
-
method:
|
|
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(
|
|
108
|
-
method:
|
|
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
|
|
117
|
-
const
|
|
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
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
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 (
|
|
135
|
-
|
|
173
|
+
if ("result" in item && item.result) {
|
|
174
|
+
successes.push(item.result);
|
|
136
175
|
}
|
|
137
|
-
else if (
|
|
138
|
-
|
|
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
|
-
|
|
143
|
-
|
|
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
|
|
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(
|
|
152
|
-
method:
|
|
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 :
|
|
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(
|
|
181
|
-
method:
|
|
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 :
|
|
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
|
-
|
|
244
|
-
method:
|
|
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(
|
|
252
|
-
method:
|
|
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(
|
|
261
|
-
method:
|
|
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(
|
|
270
|
-
method:
|
|
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(
|
|
279
|
-
method:
|
|
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(
|
|
288
|
-
method:
|
|
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
|
-
*
|
|
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(
|
|
398
|
+
await this.makeRequest("/health");
|
|
298
399
|
return true;
|
|
299
400
|
}
|
|
300
401
|
catch (error) {
|
|
301
|
-
console.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
|
package/lib/roxy-client.js.map
CHANGED
|
@@ -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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"}
|