sphereai-cli 1.0.15 → 1.0.17
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/.env +1 -1
- package/dist/services/api-client.d.ts +0 -1
- package/dist/services/api-client.d.ts.map +1 -1
- package/dist/services/api-client.js +7 -67
- package/dist/services/api-client.js.map +1 -1
- package/dist/services/auth-service.d.ts +0 -5
- package/dist/services/auth-service.d.ts.map +1 -1
- package/dist/services/auth-service.js +0 -5
- package/dist/services/auth-service.js.map +1 -1
- package/dist/services/cli-api-client.d.ts +0 -13
- package/dist/services/cli-api-client.d.ts.map +1 -1
- package/dist/services/cli-api-client.js +3 -76
- package/dist/services/cli-api-client.js.map +1 -1
- package/dist/utils/axios-debug.d.ts +15 -0
- package/dist/utils/axios-debug.d.ts.map +1 -0
- package/dist/utils/axios-debug.js +53 -0
- package/dist/utils/axios-debug.js.map +1 -0
- package/dist/utils/errors.d.ts +3 -0
- package/dist/utils/errors.d.ts.map +1 -1
- package/dist/utils/errors.js +43 -10
- package/dist/utils/errors.js.map +1 -1
- package/package.json +1 -1
package/.env
CHANGED
|
@@ -3,7 +3,6 @@ import { User, PromptResponse, PaginatedResponse } from '../types/api-types';
|
|
|
3
3
|
export declare class ApiClient {
|
|
4
4
|
private client;
|
|
5
5
|
constructor(baseURL?: string, token?: string);
|
|
6
|
-
private handleError;
|
|
7
6
|
setAuthToken(token: string): void;
|
|
8
7
|
clearAuthToken(): void;
|
|
9
8
|
getCurrentUser(): User;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api-client.d.ts","sourceRoot":"","sources":["../../src/services/api-client.ts"],"names":[],"mappings":"AAAA,OAAc,
|
|
1
|
+
{"version":3,"file":"api-client.d.ts","sourceRoot":"","sources":["../../src/services/api-client.ts"],"names":[],"mappings":"AAAA,OAAc,EAAiB,kBAAkB,EAAE,MAAM,OAAO,CAAC;AAEjE,OAAO,EACL,IAAI,EAEJ,cAAc,EACd,iBAAiB,EAElB,MAAM,oBAAoB,CAAC;AAG5B,qBAAa,SAAS;IACpB,OAAO,CAAC,MAAM,CAAgB;gBAElB,OAAO,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM;IA8B5C,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAIjC,cAAc,IAAI,IAAI;IAItB,cAAc,IAAI,IAAI;IAsChB,OAAO,CAAC,CAAC,EAAE,MAAM,EAAE,kBAAkB,GAAG,OAAO,CAAC,CAAC,CAAC;IAMlD,UAAU,IAAI,OAAO,CAAC,iBAAiB,CAAC,cAAc,CAAC,CAAC;IASxD,aAAa,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC;CAIzD;AAGD,eAAO,MAAM,SAAS,WAAkB,CAAC;AAGzC,eAAe,SAAS,CAAC"}
|
|
@@ -6,6 +6,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
6
6
|
exports.apiClient = exports.ApiClient = void 0;
|
|
7
7
|
const axios_1 = __importDefault(require("axios"));
|
|
8
8
|
const config_service_1 = require("./config-service");
|
|
9
|
+
const axios_debug_1 = require("../utils/axios-debug");
|
|
9
10
|
class ApiClient {
|
|
10
11
|
constructor(baseURL, token) {
|
|
11
12
|
const apiUrl = baseURL || config_service_1.configService.getApiUrl();
|
|
@@ -22,73 +23,9 @@ class ApiClient {
|
|
|
22
23
|
this.setAuthToken(authToken);
|
|
23
24
|
}
|
|
24
25
|
// Request interceptor for debug logging
|
|
25
|
-
this.client.interceptors.request.use((
|
|
26
|
-
if (config_service_1.configService.getDebugMode()) {
|
|
27
|
-
console.log('\n[DEBUG] API Request:');
|
|
28
|
-
console.log('URL:', `${config.baseURL}${config.url}`);
|
|
29
|
-
console.log('Method:', config.method?.toUpperCase());
|
|
30
|
-
console.log('Headers:', JSON.stringify(config.headers, null, 2));
|
|
31
|
-
if (config.data) {
|
|
32
|
-
console.log('Body:', JSON.stringify(config.data, null, 2));
|
|
33
|
-
}
|
|
34
|
-
console.log('---\n');
|
|
35
|
-
}
|
|
36
|
-
return config;
|
|
37
|
-
}, (error) => Promise.reject(error));
|
|
26
|
+
this.client.interceptors.request.use(axios_debug_1.debugRequestInterceptor, (error) => Promise.reject(error));
|
|
38
27
|
// Response interceptor for debug logging and error handling
|
|
39
|
-
this.client.interceptors.response.use(
|
|
40
|
-
if (config_service_1.configService.getDebugMode()) {
|
|
41
|
-
console.log('\n[DEBUG] API Response:');
|
|
42
|
-
console.log('URL:', response.config.url);
|
|
43
|
-
console.log('Status:', response.status, response.statusText);
|
|
44
|
-
console.log('Headers:', JSON.stringify(response.headers, null, 2));
|
|
45
|
-
console.log('Data:', JSON.stringify(response.data, null, 2));
|
|
46
|
-
console.log('---\n');
|
|
47
|
-
}
|
|
48
|
-
return response;
|
|
49
|
-
}, (error) => {
|
|
50
|
-
if (config_service_1.configService.getDebugMode()) {
|
|
51
|
-
console.log('\n[DEBUG] API Error:');
|
|
52
|
-
console.log('URL:', error.config?.url);
|
|
53
|
-
console.log('Status:', error.response?.status);
|
|
54
|
-
console.log('Headers:', JSON.stringify(error.response?.headers, null, 2));
|
|
55
|
-
console.log('Data:', JSON.stringify(error.response?.data, null, 2));
|
|
56
|
-
console.log('---\n');
|
|
57
|
-
}
|
|
58
|
-
return Promise.reject(this.handleError(error));
|
|
59
|
-
});
|
|
60
|
-
}
|
|
61
|
-
handleError(error) {
|
|
62
|
-
if (error.response) {
|
|
63
|
-
const { status, data } = error.response;
|
|
64
|
-
// Handle specific status codes
|
|
65
|
-
switch (status) {
|
|
66
|
-
case 401:
|
|
67
|
-
return new Error('Authentication failed. Please login again using "sphereai login"');
|
|
68
|
-
case 403:
|
|
69
|
-
return new Error('Access denied. You do not have permission to perform this action.');
|
|
70
|
-
case 404:
|
|
71
|
-
return new Error(data?.detail || 'Resource not found');
|
|
72
|
-
case 400:
|
|
73
|
-
if (data?.errors) {
|
|
74
|
-
const errorMessages = Object.entries(data.errors)
|
|
75
|
-
.map(([field, messages]) => `${field}: ${messages.join(', ')}`)
|
|
76
|
-
.join('\n');
|
|
77
|
-
return new Error(`Validation failed:\n${errorMessages}`);
|
|
78
|
-
}
|
|
79
|
-
return new Error(data?.detail || 'Bad request');
|
|
80
|
-
case 500:
|
|
81
|
-
return new Error('Internal server error. Please try again later.');
|
|
82
|
-
default:
|
|
83
|
-
return new Error(data?.detail || `Request failed with status ${status}`);
|
|
84
|
-
}
|
|
85
|
-
}
|
|
86
|
-
else if (error.request) {
|
|
87
|
-
return new Error('No response from server. Please check your internet connection.');
|
|
88
|
-
}
|
|
89
|
-
else {
|
|
90
|
-
return new Error(error.message || 'An unexpected error occurred');
|
|
91
|
-
}
|
|
28
|
+
this.client.interceptors.response.use(axios_debug_1.debugResponseInterceptor, axios_debug_1.debugErrorInterceptor);
|
|
92
29
|
}
|
|
93
30
|
setAuthToken(token) {
|
|
94
31
|
this.client.defaults.headers.common['Authorization'] = `Bearer ${token}`;
|
|
@@ -136,7 +73,10 @@ class ApiClient {
|
|
|
136
73
|
}
|
|
137
74
|
// Prompts API
|
|
138
75
|
async getPrompts() {
|
|
139
|
-
|
|
76
|
+
var params = {
|
|
77
|
+
_size: 100
|
|
78
|
+
};
|
|
79
|
+
const response = await this.client.get('/api/v1/Prompts', { params });
|
|
140
80
|
return response.data;
|
|
141
81
|
}
|
|
142
82
|
async getPromptById(id) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api-client.js","sourceRoot":"","sources":["../../src/services/api-client.ts"],"names":[],"mappings":";;;;;;AAAA,
|
|
1
|
+
{"version":3,"file":"api-client.js","sourceRoot":"","sources":["../../src/services/api-client.ts"],"names":[],"mappings":"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"}
|
|
@@ -13,11 +13,6 @@ export declare class AuthService {
|
|
|
13
13
|
* For Authorization Code Flow, this would need to exchange the code
|
|
14
14
|
*/
|
|
15
15
|
exchangeCodeForToken(codeOrToken: string): Promise<string>;
|
|
16
|
-
/**
|
|
17
|
-
* Authenticate using UserChannelKey (from swagger.cli.json)
|
|
18
|
-
* This is the key-based authentication method specified in the API
|
|
19
|
-
* Uses the CLI API endpoint (SPHEREAI_CLI_API_URL)
|
|
20
|
-
*/
|
|
21
16
|
authenticateWithKey(key: string): Promise<AuthResponse>;
|
|
22
17
|
/**
|
|
23
18
|
* Stop the OAuth callback server
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth-service.d.ts","sourceRoot":"","sources":["../../src/services/auth-service.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAElD,qBAAa,WAAW;IACtB,OAAO,CAAC,MAAM,CAAuB;IACrC,OAAO,CAAC,GAAG,CAAwB;IAEnC;;;OAGG;IACG,eAAe,CAAC,gBAAgB,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IA2HhE;;;;OAIG;IACG,oBAAoB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"auth-service.d.ts","sourceRoot":"","sources":["../../src/services/auth-service.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAElD,qBAAa,WAAW;IACtB,OAAO,CAAC,MAAM,CAAuB;IACrC,OAAO,CAAC,GAAG,CAAwB;IAEnC;;;OAGG;IACG,eAAe,CAAC,gBAAgB,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IA2HhE;;;;OAIG;IACG,oBAAoB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAe1D,mBAAmB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;IAK7D;;OAEG;IACH,OAAO,CAAC,UAAU;CAOnB;AAED,eAAO,MAAM,WAAW,aAAoB,CAAC"}
|
|
@@ -146,11 +146,6 @@ class AuthService {
|
|
|
146
146
|
// For Implicit Flow, return the token directly
|
|
147
147
|
return codeOrToken;
|
|
148
148
|
}
|
|
149
|
-
/**
|
|
150
|
-
* Authenticate using UserChannelKey (from swagger.cli.json)
|
|
151
|
-
* This is the key-based authentication method specified in the API
|
|
152
|
-
* Uses the CLI API endpoint (SPHEREAI_CLI_API_URL)
|
|
153
|
-
*/
|
|
154
149
|
async authenticateWithKey(key) {
|
|
155
150
|
const response = await cli_api_client_1.cliApiClient.authenticate(key);
|
|
156
151
|
return response;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth-service.js","sourceRoot":"","sources":["../../src/services/auth-service.ts"],"names":[],"mappings":";;;;;;AAAA,sDAA8D;AAE9D,gDAAwB;AACxB,qDAAiD;AACjD,qDAAgD;AAGhD,MAAa,WAAW;IAAxB;QACU,WAAM,GAAkB,IAAI,CAAC;QAC7B,QAAG,GAAmB,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"auth-service.js","sourceRoot":"","sources":["../../src/services/auth-service.ts"],"names":[],"mappings":"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"}
|
|
@@ -8,21 +8,8 @@ export declare class CliApiClient {
|
|
|
8
8
|
private client;
|
|
9
9
|
private authToken?;
|
|
10
10
|
constructor(baseURL?: string);
|
|
11
|
-
/**
|
|
12
|
-
* Set authentication token for authenticated requests
|
|
13
|
-
*/
|
|
14
11
|
setAuthToken(token: string): void;
|
|
15
|
-
private handleError;
|
|
16
|
-
/**
|
|
17
|
-
* Authenticate using UserChannelKey (from cli-swagger.json)
|
|
18
|
-
* POST /api/v1/Auth
|
|
19
|
-
*/
|
|
20
12
|
authenticate(key: string): Promise<AuthResponse>;
|
|
21
|
-
/**
|
|
22
|
-
* Execute a command by sending files to AI (from cli-swagger.json)
|
|
23
|
-
* POST /api/v1/Command
|
|
24
|
-
* Requires authentication (Bearer token)
|
|
25
|
-
*/
|
|
26
13
|
executeCommand(request: ModelUserRequest): Promise<ModelUserResponse>;
|
|
27
14
|
request<T>(config: AxiosRequestConfig): Promise<T>;
|
|
28
15
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli-api-client.d.ts","sourceRoot":"","sources":["../../src/services/cli-api-client.ts"],"names":[],"mappings":"AAAA,OAAc,
|
|
1
|
+
{"version":3,"file":"cli-api-client.d.ts","sourceRoot":"","sources":["../../src/services/cli-api-client.ts"],"names":[],"mappings":"AAAA,OAAc,EAAiB,kBAAkB,EAAE,MAAM,OAAO,CAAC;AAEjE,OAAO,EAEL,YAAY,EACZ,gBAAgB,EAChB,iBAAiB,EAClB,MAAM,oBAAoB,CAAC;AAG5B;;;GAGG;AACH,qBAAa,YAAY;IACvB,OAAO,CAAC,MAAM,CAAgB;IAC9B,OAAO,CAAC,SAAS,CAAC,CAAS;gBAEf,OAAO,CAAC,EAAE,MAAM;IA6B5B,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAI3B,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;IAMhD,cAAc,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAMrE,OAAO,CAAC,CAAC,EAAE,MAAM,EAAE,kBAAkB,GAAG,OAAO,CAAC,CAAC,CAAC;CAIzD;AAGD,eAAO,MAAM,YAAY,cAAqB,CAAC;AAG/C,eAAe,YAAY,CAAC"}
|
|
@@ -6,6 +6,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
6
6
|
exports.cliApiClient = exports.CliApiClient = void 0;
|
|
7
7
|
const axios_1 = __importDefault(require("axios"));
|
|
8
8
|
const config_service_1 = require("./config-service");
|
|
9
|
+
const axios_debug_1 = require("../utils/axios-debug");
|
|
9
10
|
/**
|
|
10
11
|
* CLI API Client - Used for key-based authentication
|
|
11
12
|
* Uses SPHEREAI_CLI_API_URL endpoint
|
|
@@ -25,93 +26,19 @@ class CliApiClient {
|
|
|
25
26
|
if (this.authToken) {
|
|
26
27
|
config.headers.Authorization = `Bearer ${this.authToken}`;
|
|
27
28
|
}
|
|
28
|
-
|
|
29
|
-
console.log('\n[DEBUG] CLI API Request:');
|
|
30
|
-
console.log('URL:', `${config.baseURL}${config.url}`);
|
|
31
|
-
console.log('Method:', config.method?.toUpperCase());
|
|
32
|
-
console.log('Headers:', JSON.stringify(config.headers, null, 2));
|
|
33
|
-
if (config.data) {
|
|
34
|
-
console.log('Body:', JSON.stringify(config.data, null, 2));
|
|
35
|
-
}
|
|
36
|
-
console.log('---\n');
|
|
37
|
-
}
|
|
38
|
-
return config;
|
|
29
|
+
return (0, axios_debug_1.debugRequestInterceptor)(config);
|
|
39
30
|
}, (error) => Promise.reject(error));
|
|
40
31
|
// Response interceptor for debug logging and error handling
|
|
41
|
-
this.client.interceptors.response.use(
|
|
42
|
-
if (config_service_1.configService.getDebugMode()) {
|
|
43
|
-
console.log('\n[DEBUG] CLI API Response:');
|
|
44
|
-
console.log('URL:', response.config.url);
|
|
45
|
-
console.log('Status:', response.status, response.statusText);
|
|
46
|
-
console.log('Headers:', JSON.stringify(response.headers, null, 2));
|
|
47
|
-
console.log('Data:', JSON.stringify(response.data, null, 2));
|
|
48
|
-
console.log('---\n');
|
|
49
|
-
}
|
|
50
|
-
return response;
|
|
51
|
-
}, (error) => {
|
|
52
|
-
if (config_service_1.configService.getDebugMode()) {
|
|
53
|
-
console.log('\n[DEBUG] CLI API Error:');
|
|
54
|
-
console.log('URL:', error.config?.url);
|
|
55
|
-
console.log('Status:', error.response?.status);
|
|
56
|
-
console.log('Headers:', JSON.stringify(error.response?.headers, null, 2));
|
|
57
|
-
console.log('Data:', JSON.stringify(error.response?.data, null, 2));
|
|
58
|
-
console.log('---\n');
|
|
59
|
-
}
|
|
60
|
-
return Promise.reject(this.handleError(error));
|
|
61
|
-
});
|
|
32
|
+
this.client.interceptors.response.use(axios_debug_1.debugResponseInterceptor, axios_debug_1.debugErrorInterceptor);
|
|
62
33
|
}
|
|
63
|
-
/**
|
|
64
|
-
* Set authentication token for authenticated requests
|
|
65
|
-
*/
|
|
66
34
|
setAuthToken(token) {
|
|
67
35
|
this.authToken = token;
|
|
68
36
|
}
|
|
69
|
-
handleError(error) {
|
|
70
|
-
if (error.response) {
|
|
71
|
-
const { status, data } = error.response;
|
|
72
|
-
// Handle specific status codes
|
|
73
|
-
switch (status) {
|
|
74
|
-
case 401:
|
|
75
|
-
return new Error('Authentication required. Please login first using: sphereai auth login YOUR_KEY');
|
|
76
|
-
case 403:
|
|
77
|
-
return new Error('Access denied. You do not have permission to perform this action.');
|
|
78
|
-
case 404:
|
|
79
|
-
return new Error(data?.detail || 'Endpoint not found');
|
|
80
|
-
case 400:
|
|
81
|
-
if (data?.errors) {
|
|
82
|
-
const errorMessages = Object.entries(data.errors)
|
|
83
|
-
.map(([field, messages]) => `${field}: ${messages.join(', ')}`)
|
|
84
|
-
.join('\n');
|
|
85
|
-
return new Error(`Validation failed:\n${errorMessages}`);
|
|
86
|
-
}
|
|
87
|
-
return new Error(data?.detail || 'Bad request - please check your input');
|
|
88
|
-
case 500:
|
|
89
|
-
return new Error('Internal server error. Please try again later.');
|
|
90
|
-
default:
|
|
91
|
-
return new Error(data?.detail || `Request failed with status ${status}`);
|
|
92
|
-
}
|
|
93
|
-
}
|
|
94
|
-
else if (error.request) {
|
|
95
|
-
return new Error('No response from CLI API server. Please check your internet connection and SPHEREAI_CLI_API_URL configuration.');
|
|
96
|
-
}
|
|
97
|
-
else {
|
|
98
|
-
return new Error(error.message || 'An unexpected error occurred');
|
|
99
|
-
}
|
|
100
|
-
}
|
|
101
|
-
/**
|
|
102
|
-
* Authenticate using UserChannelKey (from cli-swagger.json)
|
|
103
|
-
* POST /api/v1/Auth
|
|
104
|
-
*/
|
|
105
37
|
async authenticate(key) {
|
|
106
38
|
const request = { key };
|
|
107
39
|
const response = await this.client.post('/api/v1/Auth', request);
|
|
108
40
|
return response.data;
|
|
109
41
|
}
|
|
110
|
-
/**
|
|
111
|
-
* Execute a command by sending files to AI (from cli-swagger.json)
|
|
112
|
-
* POST /api/v1/Command
|
|
113
|
-
* Requires authentication (Bearer token)
|
|
114
|
-
*/
|
|
115
42
|
async executeCommand(request) {
|
|
116
43
|
const response = await this.client.post('/api/v1/Command', request);
|
|
117
44
|
return response.data;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli-api-client.js","sourceRoot":"","sources":["../../src/services/cli-api-client.ts"],"names":[],"mappings":";;;;;;AAAA,
|
|
1
|
+
{"version":3,"file":"cli-api-client.js","sourceRoot":"","sources":["../../src/services/cli-api-client.ts"],"names":[],"mappings":";;;;;;AAAA,kDAAiE;AACjE,qDAAiD;AAOjD,sDAAgH;AAEhH;;;GAGG;AACH,MAAa,YAAY;IAIvB,YAAY,OAAgB;QAC1B,MAAM,SAAS,GAAG,OAAO,IAAI,8BAAa,CAAC,YAAY,EAAE,CAAC;QAE1D,IAAI,CAAC,MAAM,GAAG,eAAK,CAAC,MAAM,CAAC;YACzB,OAAO,EAAE,SAAS;YAClB,OAAO,EAAE,MAAM,EAAE,8BAA8B;YAC/C,OAAO,EAAE;gBACP,cAAc,EAAE,kBAAkB;aACnC;SACF,CAAC,CAAC;QAEH,0DAA0D;QAC1D,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,GAAG,CAClC,CAAC,MAAM,EAAE,EAAE;YACT,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;gBACnB,MAAM,CAAC,OAAO,CAAC,aAAa,GAAG,UAAU,IAAI,CAAC,SAAS,EAAE,CAAC;YAC5D,CAAC;YACD,OAAO,IAAA,qCAAuB,EAAC,MAAM,CAAC,CAAC;QACzC,CAAC,EACD,CAAC,KAAK,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CACjC,CAAC;QAEF,4DAA4D;QAC5D,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,QAAQ,CAAC,GAAG,CACnC,sCAAwB,EACxB,mCAAqB,CACtB,CAAC;IACJ,CAAC;IAED,YAAY,CAAC,KAAa;QACxB,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;IACzB,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,GAAW;QAC5B,MAAM,OAAO,GAAmB,EAAE,GAAG,EAAE,CAAC;QACxC,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAe,cAAc,EAAE,OAAO,CAAC,CAAC;QAC/E,OAAO,QAAQ,CAAC,IAAI,CAAC;IACvB,CAAC;IAED,KAAK,CAAC,cAAc,CAAC,OAAyB;QAC5C,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAoB,iBAAiB,EAAE,OAAO,CAAC,CAAC;QACvF,OAAO,QAAQ,CAAC,IAAI,CAAC;IACvB,CAAC;IAED,0CAA0C;IAC1C,KAAK,CAAC,OAAO,CAAI,MAA0B;QACzC,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAI,MAAM,CAAC,CAAC;QACtD,OAAO,QAAQ,CAAC,IAAI,CAAC;IACvB,CAAC;CACF;AArDD,oCAqDC;AAED,uDAAuD;AAC1C,QAAA,YAAY,GAAG,IAAI,YAAY,EAAE,CAAC;AAE/C,oCAAoC;AACpC,kBAAe,YAAY,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { InternalAxiosRequestConfig, AxiosResponse, AxiosError } from 'axios';
|
|
2
|
+
import { ProblemDetails } from '../types/api-types';
|
|
3
|
+
/**
|
|
4
|
+
* Debug request interceptor
|
|
5
|
+
*/
|
|
6
|
+
export declare const debugRequestInterceptor: (config: InternalAxiosRequestConfig) => InternalAxiosRequestConfig<any>;
|
|
7
|
+
/**
|
|
8
|
+
* Debug response interceptor - success handler
|
|
9
|
+
*/
|
|
10
|
+
export declare const debugResponseInterceptor: (response: AxiosResponse) => AxiosResponse<any, any, {}>;
|
|
11
|
+
/**
|
|
12
|
+
* Debug response interceptor - error handler
|
|
13
|
+
*/
|
|
14
|
+
export declare const debugErrorInterceptor: (error: AxiosError<ProblemDetails>) => Promise<never>;
|
|
15
|
+
//# sourceMappingURL=axios-debug.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"axios-debug.d.ts","sourceRoot":"","sources":["../../src/utils/axios-debug.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,0BAA0B,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AAE9E,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAGpD;;GAEG;AACH,eAAO,MAAM,uBAAuB,GAAI,QAAQ,0BAA0B,oCAYzE,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,wBAAwB,GAAI,UAAU,aAAa,gCAU/D,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,qBAAqB,GAAI,OAAO,UAAU,CAAC,cAAc,CAAC,mBAUtE,CAAC"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.debugErrorInterceptor = exports.debugResponseInterceptor = exports.debugRequestInterceptor = void 0;
|
|
4
|
+
const config_service_1 = require("../services/config-service");
|
|
5
|
+
const errors_1 = require("./errors");
|
|
6
|
+
/**
|
|
7
|
+
* Debug request interceptor
|
|
8
|
+
*/
|
|
9
|
+
const debugRequestInterceptor = (config) => {
|
|
10
|
+
if (config_service_1.configService.getDebugMode()) {
|
|
11
|
+
console.log('\n[DEBUG] API Request:');
|
|
12
|
+
console.log('URL:', `${config.baseURL}${config.url}`);
|
|
13
|
+
console.log('Method:', config.method?.toUpperCase());
|
|
14
|
+
console.log('Headers:', JSON.stringify(config.headers, null, 2));
|
|
15
|
+
if (config.data) {
|
|
16
|
+
console.log('Body:', JSON.stringify(config.data, null, 2));
|
|
17
|
+
}
|
|
18
|
+
console.log('---\n');
|
|
19
|
+
}
|
|
20
|
+
return config;
|
|
21
|
+
};
|
|
22
|
+
exports.debugRequestInterceptor = debugRequestInterceptor;
|
|
23
|
+
/**
|
|
24
|
+
* Debug response interceptor - success handler
|
|
25
|
+
*/
|
|
26
|
+
const debugResponseInterceptor = (response) => {
|
|
27
|
+
if (config_service_1.configService.getDebugMode()) {
|
|
28
|
+
console.log('\n[DEBUG] API Response:');
|
|
29
|
+
console.log('URL:', response.config.url);
|
|
30
|
+
console.log('Status:', response.status, response.statusText);
|
|
31
|
+
console.log('Headers:', JSON.stringify(response.headers, null, 2));
|
|
32
|
+
console.log('Data:', JSON.stringify(response.data, null, 2));
|
|
33
|
+
console.log('---\n');
|
|
34
|
+
}
|
|
35
|
+
return response;
|
|
36
|
+
};
|
|
37
|
+
exports.debugResponseInterceptor = debugResponseInterceptor;
|
|
38
|
+
/**
|
|
39
|
+
* Debug response interceptor - error handler
|
|
40
|
+
*/
|
|
41
|
+
const debugErrorInterceptor = (error) => {
|
|
42
|
+
if (config_service_1.configService.getDebugMode()) {
|
|
43
|
+
console.log('\n[DEBUG] API Error:');
|
|
44
|
+
console.log('URL:', error.config?.url);
|
|
45
|
+
console.log('Status:', error.response?.status);
|
|
46
|
+
console.log('Headers:', JSON.stringify(error.response?.headers, null, 2));
|
|
47
|
+
console.log('Data:', JSON.stringify(error.response?.data, null, 2));
|
|
48
|
+
console.log('---\n');
|
|
49
|
+
}
|
|
50
|
+
return Promise.reject((0, errors_1.handleError)(error));
|
|
51
|
+
};
|
|
52
|
+
exports.debugErrorInterceptor = debugErrorInterceptor;
|
|
53
|
+
//# sourceMappingURL=axios-debug.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"axios-debug.js","sourceRoot":"","sources":["../../src/utils/axios-debug.ts"],"names":[],"mappings":";;;AACA,+DAA2D;AAE3D,qCAAuC;AAEvC;;GAEG;AACI,MAAM,uBAAuB,GAAG,CAAC,MAAkC,EAAE,EAAE;IAC5E,IAAI,8BAAa,CAAC,YAAY,EAAE,EAAE,CAAC;QACjC,OAAO,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAC;QACtC,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,MAAM,CAAC,OAAO,GAAG,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC;QACtD,OAAO,CAAC,GAAG,CAAC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,EAAE,CAAC,CAAC;QACrD,OAAO,CAAC,GAAG,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QACjE,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC;YAChB,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QAC7D,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IACvB,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC;AAZW,QAAA,uBAAuB,2BAYlC;AAEF;;GAEG;AACI,MAAM,wBAAwB,GAAG,CAAC,QAAuB,EAAE,EAAE;IAClE,IAAI,8BAAa,CAAC,YAAY,EAAE,EAAE,CAAC;QACjC,OAAO,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAC;QACvC,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACzC,OAAO,CAAC,GAAG,CAAC,SAAS,EAAE,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,UAAU,CAAC,CAAC;QAC7D,OAAO,CAAC,GAAG,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QACnE,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QAC7D,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IACvB,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC,CAAC;AAVW,QAAA,wBAAwB,4BAUnC;AAEF;;GAEG;AACI,MAAM,qBAAqB,GAAG,CAAC,KAAiC,EAAE,EAAE;IACzE,IAAI,8BAAa,CAAC,YAAY,EAAE,EAAE,CAAC;QACjC,OAAO,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC;QACpC,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QACvC,OAAO,CAAC,GAAG,CAAC,SAAS,EAAE,KAAK,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QAC/C,OAAO,CAAC,GAAG,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QAC1E,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QACpE,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IACvB,CAAC;IACD,OAAO,OAAO,CAAC,MAAM,CAAC,IAAA,oBAAW,EAAC,KAAK,CAAC,CAAC,CAAC;AAC5C,CAAC,CAAC;AAVW,QAAA,qBAAqB,yBAUhC"}
|
package/dist/utils/errors.d.ts
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import { AxiosError } from "axios";
|
|
2
|
+
import { ProblemDetails } from "../types/api-types";
|
|
1
3
|
/**
|
|
2
4
|
* Custom error class for CLI errors
|
|
3
5
|
*/
|
|
@@ -32,4 +34,5 @@ export declare function handleError(err: unknown): void;
|
|
|
32
34
|
* Require authentication and throw error if not authenticated
|
|
33
35
|
*/
|
|
34
36
|
export declare function requireAuth(token: string | undefined): asserts token is string;
|
|
37
|
+
export declare function handleAxiosError(error: AxiosError<ProblemDetails>): Error;
|
|
35
38
|
//# sourceMappingURL=errors.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/utils/errors.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/utils/errors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AAEnC,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEpD;;GAEG;AACH,qBAAa,QAAS,SAAQ,KAAK;IACG,IAAI,CAAC,EAAE,MAAM;gBAArC,OAAO,EAAE,MAAM,EAAS,IAAI,CAAC,EAAE,MAAM,YAAA;CAKlD;AAED;;GAEG;AACH,qBAAa,mBAAoB,SAAQ,QAAQ;gBAE7C,OAAO,GAAE,MAAuE;CAKnF;AAED;;GAEG;AACH,qBAAa,kBAAmB,SAAQ,QAAQ;gBAClC,OAAO,EAAE,MAAM;CAI5B;AAED;;GAEG;AACH,qBAAa,QAAS,SAAQ,QAAQ;IACA,UAAU,CAAC,EAAE,MAAM;gBAA3C,OAAO,EAAE,MAAM,EAAS,UAAU,CAAC,EAAE,MAAM,YAAA;CAIxD;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,OAAO,GAAG,IAAI,CAkB9C;AAED;;GAEG;AACH,wBAAgB,WAAW,CACzB,KAAK,EAAE,MAAM,GAAG,SAAS,GACxB,OAAO,CAAC,KAAK,IAAI,MAAM,CAIzB;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,UAAU,CAAC,cAAc,CAAC,GAAG,KAAK,CAsCzE"}
|
package/dist/utils/errors.js
CHANGED
|
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.APIError = exports.ConfigurationError = exports.AuthenticationError = exports.CLIError = void 0;
|
|
4
4
|
exports.handleError = handleError;
|
|
5
5
|
exports.requireAuth = requireAuth;
|
|
6
|
+
exports.handleAxiosError = handleAxiosError;
|
|
6
7
|
const formatters_1 = require("./formatters");
|
|
7
8
|
/**
|
|
8
9
|
* Custom error class for CLI errors
|
|
@@ -11,7 +12,7 @@ class CLIError extends Error {
|
|
|
11
12
|
constructor(message, code) {
|
|
12
13
|
super(message);
|
|
13
14
|
this.code = code;
|
|
14
|
-
this.name =
|
|
15
|
+
this.name = "CLIError";
|
|
15
16
|
Object.setPrototypeOf(this, CLIError.prototype);
|
|
16
17
|
}
|
|
17
18
|
}
|
|
@@ -21,8 +22,8 @@ exports.CLIError = CLIError;
|
|
|
21
22
|
*/
|
|
22
23
|
class AuthenticationError extends CLIError {
|
|
23
24
|
constructor(message = 'Authentication required. Please login using "sphereai login"') {
|
|
24
|
-
super(message,
|
|
25
|
-
this.name =
|
|
25
|
+
super(message, "AUTH_REQUIRED");
|
|
26
|
+
this.name = "AuthenticationError";
|
|
26
27
|
}
|
|
27
28
|
}
|
|
28
29
|
exports.AuthenticationError = AuthenticationError;
|
|
@@ -31,8 +32,8 @@ exports.AuthenticationError = AuthenticationError;
|
|
|
31
32
|
*/
|
|
32
33
|
class ConfigurationError extends CLIError {
|
|
33
34
|
constructor(message) {
|
|
34
|
-
super(message,
|
|
35
|
-
this.name =
|
|
35
|
+
super(message, "CONFIG_ERROR");
|
|
36
|
+
this.name = "ConfigurationError";
|
|
36
37
|
}
|
|
37
38
|
}
|
|
38
39
|
exports.ConfigurationError = ConfigurationError;
|
|
@@ -41,9 +42,9 @@ exports.ConfigurationError = ConfigurationError;
|
|
|
41
42
|
*/
|
|
42
43
|
class APIError extends CLIError {
|
|
43
44
|
constructor(message, statusCode) {
|
|
44
|
-
super(message,
|
|
45
|
+
super(message, "API_ERROR");
|
|
45
46
|
this.statusCode = statusCode;
|
|
46
|
-
this.name =
|
|
47
|
+
this.name = "APIError";
|
|
47
48
|
}
|
|
48
49
|
}
|
|
49
50
|
exports.APIError = APIError;
|
|
@@ -54,19 +55,19 @@ function handleError(err) {
|
|
|
54
55
|
if (err instanceof CLIError) {
|
|
55
56
|
(0, formatters_1.error)(err.message);
|
|
56
57
|
if (process.env.DEBUG) {
|
|
57
|
-
console.error(
|
|
58
|
+
console.error("Stack trace:", err.stack);
|
|
58
59
|
}
|
|
59
60
|
process.exit(1);
|
|
60
61
|
}
|
|
61
62
|
else if (err instanceof Error) {
|
|
62
63
|
(0, formatters_1.error)(err.message);
|
|
63
64
|
if (process.env.DEBUG) {
|
|
64
|
-
console.error(
|
|
65
|
+
console.error("Stack trace:", err.stack);
|
|
65
66
|
}
|
|
66
67
|
process.exit(1);
|
|
67
68
|
}
|
|
68
69
|
else {
|
|
69
|
-
(0, formatters_1.error)(
|
|
70
|
+
(0, formatters_1.error)("An unexpected error occurred");
|
|
70
71
|
console.error(err);
|
|
71
72
|
process.exit(1);
|
|
72
73
|
}
|
|
@@ -79,4 +80,36 @@ function requireAuth(token) {
|
|
|
79
80
|
throw new AuthenticationError();
|
|
80
81
|
}
|
|
81
82
|
}
|
|
83
|
+
function handleAxiosError(error) {
|
|
84
|
+
if (error.response) {
|
|
85
|
+
const { status, data } = error.response;
|
|
86
|
+
// Handle specific status codes
|
|
87
|
+
switch (status) {
|
|
88
|
+
case 401:
|
|
89
|
+
return new Error('Authentication failed. Please login again using "sphereai login"');
|
|
90
|
+
case 403:
|
|
91
|
+
return new Error("Access denied. You do not have permission to perform this action.");
|
|
92
|
+
case 404:
|
|
93
|
+
return new Error(data?.detail || "Resource not found");
|
|
94
|
+
case 400:
|
|
95
|
+
if (data?.errors) {
|
|
96
|
+
const errorMessages = Object.entries(data.errors)
|
|
97
|
+
.map(([field, messages]) => `${field}: ${messages.join(", ")}`)
|
|
98
|
+
.join("\n");
|
|
99
|
+
return new Error(`Validation failed:\n${errorMessages}`);
|
|
100
|
+
}
|
|
101
|
+
return new Error(data?.detail || "Bad request");
|
|
102
|
+
case 500:
|
|
103
|
+
return new Error("Internal server error. Please try again later.");
|
|
104
|
+
default:
|
|
105
|
+
return new Error(data?.detail || `Request failed with status ${status}`);
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
else if (error.request) {
|
|
109
|
+
return new Error("No response from server. Please check your internet connection.");
|
|
110
|
+
}
|
|
111
|
+
else {
|
|
112
|
+
return new Error(error.message || "An unexpected error occurred");
|
|
113
|
+
}
|
|
114
|
+
}
|
|
82
115
|
//# sourceMappingURL=errors.js.map
|
package/dist/utils/errors.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/utils/errors.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/utils/errors.ts"],"names":[],"mappings":";;;AAkDA,kCAkBC;AAKD,kCAMC;AAED,4CAsCC;AAtHD,6CAAqD;AAGrD;;GAEG;AACH,MAAa,QAAS,SAAQ,KAAK;IACjC,YAAY,OAAe,EAAS,IAAa;QAC/C,KAAK,CAAC,OAAO,CAAC,CAAC;QADmB,SAAI,GAAJ,IAAI,CAAS;QAE/C,IAAI,CAAC,IAAI,GAAG,UAAU,CAAC;QACvB,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,QAAQ,CAAC,SAAS,CAAC,CAAC;IAClD,CAAC;CACF;AAND,4BAMC;AAED;;GAEG;AACH,MAAa,mBAAoB,SAAQ,QAAQ;IAC/C,YACE,UAAkB,8DAA8D;QAEhF,KAAK,CAAC,OAAO,EAAE,eAAe,CAAC,CAAC;QAChC,IAAI,CAAC,IAAI,GAAG,qBAAqB,CAAC;IACpC,CAAC;CACF;AAPD,kDAOC;AAED;;GAEG;AACH,MAAa,kBAAmB,SAAQ,QAAQ;IAC9C,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC;QAC/B,IAAI,CAAC,IAAI,GAAG,oBAAoB,CAAC;IACnC,CAAC;CACF;AALD,gDAKC;AAED;;GAEG;AACH,MAAa,QAAS,SAAQ,QAAQ;IACpC,YAAY,OAAe,EAAS,UAAmB;QACrD,KAAK,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;QADM,eAAU,GAAV,UAAU,CAAS;QAErD,IAAI,CAAC,IAAI,GAAG,UAAU,CAAC;IACzB,CAAC;CACF;AALD,4BAKC;AAED;;GAEG;AACH,SAAgB,WAAW,CAAC,GAAY;IACtC,IAAI,GAAG,YAAY,QAAQ,EAAE,CAAC;QAC5B,IAAA,kBAAY,EAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAC1B,IAAI,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC;YACtB,OAAO,CAAC,KAAK,CAAC,cAAc,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC;QAC3C,CAAC;QACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;SAAM,IAAI,GAAG,YAAY,KAAK,EAAE,CAAC;QAChC,IAAA,kBAAY,EAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAC1B,IAAI,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC;YACtB,OAAO,CAAC,KAAK,CAAC,cAAc,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC;QAC3C,CAAC;QACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;SAAM,CAAC;QACN,IAAA,kBAAY,EAAC,8BAA8B,CAAC,CAAC;QAC7C,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACnB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC;AAED;;GAEG;AACH,SAAgB,WAAW,CACzB,KAAyB;IAEzB,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,MAAM,IAAI,mBAAmB,EAAE,CAAC;IAClC,CAAC;AACH,CAAC;AAED,SAAgB,gBAAgB,CAAC,KAAiC;IAChE,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;QACnB,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,KAAK,CAAC,QAAQ,CAAC;QAExC,+BAA+B;QAC/B,QAAQ,MAAM,EAAE,CAAC;YACf,KAAK,GAAG;gBACN,OAAO,IAAI,KAAK,CACd,kEAAkE,CACnE,CAAC;YACJ,KAAK,GAAG;gBACN,OAAO,IAAI,KAAK,CACd,mEAAmE,CACpE,CAAC;YACJ,KAAK,GAAG;gBACN,OAAO,IAAI,KAAK,CAAC,IAAI,EAAE,MAAM,IAAI,oBAAoB,CAAC,CAAC;YACzD,KAAK,GAAG;gBACN,IAAI,IAAI,EAAE,MAAM,EAAE,CAAC;oBACjB,MAAM,aAAa,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC;yBAC9C,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE,QAAQ,CAAC,EAAE,EAAE,CAAC,GAAG,KAAK,KAAK,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;yBAC9D,IAAI,CAAC,IAAI,CAAC,CAAC;oBACd,OAAO,IAAI,KAAK,CAAC,uBAAuB,aAAa,EAAE,CAAC,CAAC;gBAC3D,CAAC;gBACD,OAAO,IAAI,KAAK,CAAC,IAAI,EAAE,MAAM,IAAI,aAAa,CAAC,CAAC;YAClD,KAAK,GAAG;gBACN,OAAO,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAC;YACrE;gBACE,OAAO,IAAI,KAAK,CACd,IAAI,EAAE,MAAM,IAAI,8BAA8B,MAAM,EAAE,CACvD,CAAC;QACN,CAAC;IACH,CAAC;SAAM,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;QACzB,OAAO,IAAI,KAAK,CACd,iEAAiE,CAClE,CAAC;IACJ,CAAC;SAAM,CAAC;QACN,OAAO,IAAI,KAAK,CAAC,KAAK,CAAC,OAAO,IAAI,8BAA8B,CAAC,CAAC;IACpE,CAAC;AACH,CAAC"}
|