@cuijy/free-api 0.1.0
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/LICENSE +21 -0
- package/README.md +299 -0
- package/bin/freeapi +8 -0
- package/dist/cli/commands/chat.d.ts +3 -0
- package/dist/cli/commands/chat.d.ts.map +1 -0
- package/dist/cli/commands/chat.js +39 -0
- package/dist/cli/commands/chat.js.map +1 -0
- package/dist/cli/commands/config.d.ts +3 -0
- package/dist/cli/commands/config.d.ts.map +1 -0
- package/dist/cli/commands/config.js +289 -0
- package/dist/cli/commands/config.js.map +1 -0
- package/dist/cli/commands/init.d.ts +3 -0
- package/dist/cli/commands/init.d.ts.map +1 -0
- package/dist/cli/commands/init.js +114 -0
- package/dist/cli/commands/init.js.map +1 -0
- package/dist/cli/commands/list.d.ts +3 -0
- package/dist/cli/commands/list.d.ts.map +1 -0
- package/dist/cli/commands/list.js +109 -0
- package/dist/cli/commands/list.js.map +1 -0
- package/dist/cli/commands/logs.d.ts +3 -0
- package/dist/cli/commands/logs.d.ts.map +1 -0
- package/dist/cli/commands/logs.js +51 -0
- package/dist/cli/commands/logs.js.map +1 -0
- package/dist/cli/commands/start.d.ts +3 -0
- package/dist/cli/commands/start.d.ts.map +1 -0
- package/dist/cli/commands/start.js +34 -0
- package/dist/cli/commands/start.js.map +1 -0
- package/dist/cli/commands/status.d.ts +3 -0
- package/dist/cli/commands/status.d.ts.map +1 -0
- package/dist/cli/commands/status.js +45 -0
- package/dist/cli/commands/status.js.map +1 -0
- package/dist/cli/commands/stop.d.ts +3 -0
- package/dist/cli/commands/stop.d.ts.map +1 -0
- package/dist/cli/commands/stop.js +54 -0
- package/dist/cli/commands/stop.js.map +1 -0
- package/dist/cli/index.d.ts +3 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +79 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/index.d.ts +7 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +17 -0
- package/dist/index.js.map +1 -0
- package/dist/services/base/index.d.ts +112 -0
- package/dist/services/base/index.d.ts.map +1 -0
- package/dist/services/base/index.js +51 -0
- package/dist/services/base/index.js.map +1 -0
- package/dist/services/base/types.d.ts +114 -0
- package/dist/services/base/types.d.ts.map +1 -0
- package/dist/services/base/types.js +7 -0
- package/dist/services/base/types.js.map +1 -0
- package/dist/services/chatgpt/api-client.d.ts +81 -0
- package/dist/services/chatgpt/api-client.d.ts.map +1 -0
- package/dist/services/chatgpt/api-client.js +325 -0
- package/dist/services/chatgpt/api-client.js.map +1 -0
- package/dist/services/chatgpt/cli-adapter.d.ts +108 -0
- package/dist/services/chatgpt/cli-adapter.d.ts.map +1 -0
- package/dist/services/chatgpt/cli-adapter.js +315 -0
- package/dist/services/chatgpt/cli-adapter.js.map +1 -0
- package/dist/services/chatgpt/config-manager.d.ts +87 -0
- package/dist/services/chatgpt/config-manager.d.ts.map +1 -0
- package/dist/services/chatgpt/config-manager.js +344 -0
- package/dist/services/chatgpt/config-manager.js.map +1 -0
- package/dist/services/chatgpt/config-wizard.d.ts +35 -0
- package/dist/services/chatgpt/config-wizard.d.ts.map +1 -0
- package/dist/services/chatgpt/config-wizard.js +524 -0
- package/dist/services/chatgpt/config-wizard.js.map +1 -0
- package/dist/services/chatgpt/error-handler.d.ts +94 -0
- package/dist/services/chatgpt/error-handler.d.ts.map +1 -0
- package/dist/services/chatgpt/error-handler.js +409 -0
- package/dist/services/chatgpt/error-handler.js.map +1 -0
- package/dist/services/chatgpt/exports.d.ts +71 -0
- package/dist/services/chatgpt/exports.d.ts.map +1 -0
- package/dist/services/chatgpt/exports.js +81 -0
- package/dist/services/chatgpt/exports.js.map +1 -0
- package/dist/services/chatgpt/index.d.ts +125 -0
- package/dist/services/chatgpt/index.d.ts.map +1 -0
- package/dist/services/chatgpt/index.js +394 -0
- package/dist/services/chatgpt/index.js.map +1 -0
- package/dist/services/chatgpt/service-adapter.d.ts +152 -0
- package/dist/services/chatgpt/service-adapter.d.ts.map +1 -0
- package/dist/services/chatgpt/service-adapter.js +430 -0
- package/dist/services/chatgpt/service-adapter.js.map +1 -0
- package/dist/services/chatgpt/session-manager.d.ts +113 -0
- package/dist/services/chatgpt/session-manager.d.ts.map +1 -0
- package/dist/services/chatgpt/session-manager.js +396 -0
- package/dist/services/chatgpt/session-manager.js.map +1 -0
- package/dist/services/chatgpt/types.d.ts +130 -0
- package/dist/services/chatgpt/types.d.ts.map +1 -0
- package/dist/services/chatgpt/types.js +19 -0
- package/dist/services/chatgpt/types.js.map +1 -0
- package/dist/utils/config.d.ts +61 -0
- package/dist/utils/config.d.ts.map +1 -0
- package/dist/utils/config.js +215 -0
- package/dist/utils/config.js.map +1 -0
- package/package.json +91 -0
|
@@ -0,0 +1,325 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* ChatGPT API Client
|
|
4
|
+
* Handles HTTP requests to ChatGPT API with authentication and rate limiting
|
|
5
|
+
*/
|
|
6
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
7
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
8
|
+
};
|
|
9
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
10
|
+
exports.ChatGPTAPIClient = void 0;
|
|
11
|
+
const axios_1 = __importDefault(require("axios"));
|
|
12
|
+
const events_1 = require("events");
|
|
13
|
+
class ChatGPTAPIClient extends events_1.EventEmitter {
|
|
14
|
+
client;
|
|
15
|
+
config;
|
|
16
|
+
rateLimitInfo;
|
|
17
|
+
// private requestQueue: Array<() => Promise<any>> = [];
|
|
18
|
+
// private isProcessingQueue = false;
|
|
19
|
+
constructor(config) {
|
|
20
|
+
super();
|
|
21
|
+
this.config = config;
|
|
22
|
+
this.rateLimitInfo = {
|
|
23
|
+
limit: config.requests_per_minute,
|
|
24
|
+
remaining: config.requests_per_minute,
|
|
25
|
+
reset: Date.now() + 60000, // 1 minute from now
|
|
26
|
+
used: 0
|
|
27
|
+
};
|
|
28
|
+
// Create axios instance with base configuration
|
|
29
|
+
const apiConfig = {
|
|
30
|
+
baseURL: config.base_url,
|
|
31
|
+
timeout: config.timeout,
|
|
32
|
+
headers: this.getDefaultHeaders(),
|
|
33
|
+
maxRedirects: 5,
|
|
34
|
+
maxContentLength: 50 * 1024 * 1024, // 50MB
|
|
35
|
+
maxBodyLength: 50 * 1024 * 1024 // 50MB
|
|
36
|
+
};
|
|
37
|
+
this.client = axios_1.default.create(apiConfig);
|
|
38
|
+
// Add request interceptor for authentication
|
|
39
|
+
this.client.interceptors.request.use((requestConfig) => {
|
|
40
|
+
this.emit('request:start', requestConfig);
|
|
41
|
+
const updatedConfig = this.addAuthHeaders(requestConfig);
|
|
42
|
+
// Cast to any to avoid TypeScript issues with axios types
|
|
43
|
+
return updatedConfig;
|
|
44
|
+
}, (error) => {
|
|
45
|
+
this.emit('request:error', error);
|
|
46
|
+
return Promise.reject(error);
|
|
47
|
+
});
|
|
48
|
+
// Add response interceptor for rate limiting and error handling
|
|
49
|
+
this.client.interceptors.response.use((response) => {
|
|
50
|
+
this.emit('request:success', response);
|
|
51
|
+
this.updateRateLimitInfo(response);
|
|
52
|
+
return response;
|
|
53
|
+
}, (error) => {
|
|
54
|
+
this.emit('request:error', error);
|
|
55
|
+
return this.handleError(error);
|
|
56
|
+
});
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Get default headers for API requests
|
|
60
|
+
*/
|
|
61
|
+
getDefaultHeaders() {
|
|
62
|
+
const headers = {
|
|
63
|
+
'Content-Type': 'application/json',
|
|
64
|
+
'User-Agent': 'FreeAPI/0.1.0',
|
|
65
|
+
'Accept': 'application/json',
|
|
66
|
+
'Accept-Language': 'en-US,en;q=0.9',
|
|
67
|
+
'Accept-Encoding': 'gzip, deflate, br',
|
|
68
|
+
};
|
|
69
|
+
// Add API key if provided
|
|
70
|
+
if (this.config.api_key) {
|
|
71
|
+
headers['Authorization'] = `Bearer ${this.config.api_key}`;
|
|
72
|
+
}
|
|
73
|
+
// Add organization ID if provided
|
|
74
|
+
if (this.config.organization_id) {
|
|
75
|
+
headers['OpenAI-Organization'] = this.config.organization_id;
|
|
76
|
+
}
|
|
77
|
+
return headers;
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Add authentication headers to request
|
|
81
|
+
*/
|
|
82
|
+
addAuthHeaders(config) {
|
|
83
|
+
if (!config.headers) {
|
|
84
|
+
config.headers = {};
|
|
85
|
+
}
|
|
86
|
+
// Add session token for authenticated mode
|
|
87
|
+
if (this.config.mode === 'authenticated' && this.config.credentials?.session_token) {
|
|
88
|
+
config.headers['Cookie'] = `__Secure-next-auth.session-token=${this.config.credentials.session_token}`;
|
|
89
|
+
}
|
|
90
|
+
// Add access token if available
|
|
91
|
+
if (this.config.credentials?.access_token) {
|
|
92
|
+
config.headers['Authorization'] = `Bearer ${this.config.credentials.access_token}`;
|
|
93
|
+
}
|
|
94
|
+
return config;
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* Update rate limit information from response headers
|
|
98
|
+
*/
|
|
99
|
+
updateRateLimitInfo(response) {
|
|
100
|
+
const headers = response.headers;
|
|
101
|
+
if (headers['x-ratelimit-limit-requests']) {
|
|
102
|
+
this.rateLimitInfo.limit = parseInt(headers['x-ratelimit-limit-requests'], 10);
|
|
103
|
+
}
|
|
104
|
+
if (headers['x-ratelimit-remaining-requests']) {
|
|
105
|
+
this.rateLimitInfo.remaining = parseInt(headers['x-ratelimit-remaining-requests'], 10);
|
|
106
|
+
}
|
|
107
|
+
if (headers['x-ratelimit-reset-requests']) {
|
|
108
|
+
this.rateLimitInfo.reset = parseInt(headers['x-ratelimit-reset-requests'], 10) * 1000;
|
|
109
|
+
}
|
|
110
|
+
this.rateLimitInfo.used = this.rateLimitInfo.limit - this.rateLimitInfo.remaining;
|
|
111
|
+
this.emit('ratelimit:update', this.rateLimitInfo);
|
|
112
|
+
}
|
|
113
|
+
/**
|
|
114
|
+
* Handle API errors with retry logic
|
|
115
|
+
*/
|
|
116
|
+
async handleError(error) {
|
|
117
|
+
const errorResponse = error.response?.data;
|
|
118
|
+
// Emit error event
|
|
119
|
+
this.emit('error', {
|
|
120
|
+
code: error.code,
|
|
121
|
+
status: error.response?.status,
|
|
122
|
+
message: errorResponse?.error?.message || error.message,
|
|
123
|
+
type: errorResponse?.error?.type,
|
|
124
|
+
config: error.config
|
|
125
|
+
});
|
|
126
|
+
// Handle specific error types
|
|
127
|
+
if (error.response?.status === 429) {
|
|
128
|
+
// Rate limit exceeded
|
|
129
|
+
const retryAfter = error.response.headers['retry-after'];
|
|
130
|
+
const waitTime = retryAfter ? parseInt(retryAfter, 10) * 1000 : 60000;
|
|
131
|
+
this.emit('ratelimit:exceeded', {
|
|
132
|
+
waitTime,
|
|
133
|
+
limit: this.rateLimitInfo.limit,
|
|
134
|
+
remaining: this.rateLimitInfo.remaining,
|
|
135
|
+
reset: this.rateLimitInfo.reset
|
|
136
|
+
});
|
|
137
|
+
// Wait and retry if configured
|
|
138
|
+
if (this.config.max_retries > 0) {
|
|
139
|
+
await this.delay(waitTime);
|
|
140
|
+
return this.request(error.config);
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
else if (error.response?.status === 401) {
|
|
144
|
+
// Authentication error
|
|
145
|
+
this.emit('auth:invalid');
|
|
146
|
+
throw new Error('Authentication failed. Please check your credentials.');
|
|
147
|
+
}
|
|
148
|
+
else if (error.response?.status === 403) {
|
|
149
|
+
// Forbidden
|
|
150
|
+
this.emit('access:denied');
|
|
151
|
+
throw new Error('Access denied. Check your API key or permissions.');
|
|
152
|
+
}
|
|
153
|
+
else if (error.response?.status && error.response.status >= 500) {
|
|
154
|
+
// Server error - retry with exponential backoff
|
|
155
|
+
if (this.config.max_retries > 0) {
|
|
156
|
+
return this.retryWithBackoff(error.config);
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
// Re-throw the error if not handled
|
|
160
|
+
throw error;
|
|
161
|
+
}
|
|
162
|
+
/**
|
|
163
|
+
* Retry request with exponential backoff
|
|
164
|
+
*/
|
|
165
|
+
async retryWithBackoff(config, attempt = 1) {
|
|
166
|
+
if (attempt > this.config.max_retries) {
|
|
167
|
+
throw new Error(`Max retries (${this.config.max_retries}) exceeded`);
|
|
168
|
+
}
|
|
169
|
+
// Calculate backoff delay
|
|
170
|
+
const delay = Math.min(1000 * Math.pow(2, attempt), 30000);
|
|
171
|
+
await this.delay(delay + Math.random() * 1000); // Add jitter
|
|
172
|
+
this.emit('retry:attempt', { attempt, delay, config });
|
|
173
|
+
try {
|
|
174
|
+
return await this.request(config);
|
|
175
|
+
}
|
|
176
|
+
catch (error) {
|
|
177
|
+
if (error.response?.status && error.response.status >= 500) {
|
|
178
|
+
return this.retryWithBackoff(config, attempt + 1);
|
|
179
|
+
}
|
|
180
|
+
throw error;
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
/**
|
|
184
|
+
* Make an API request with rate limiting
|
|
185
|
+
*/
|
|
186
|
+
async request(options) {
|
|
187
|
+
// Check rate limits
|
|
188
|
+
if (this.rateLimitInfo.remaining <= 0) {
|
|
189
|
+
const waitTime = this.rateLimitInfo.reset - Date.now();
|
|
190
|
+
if (waitTime > 0) {
|
|
191
|
+
this.emit('ratelimit:waiting', waitTime);
|
|
192
|
+
await this.delay(waitTime);
|
|
193
|
+
}
|
|
194
|
+
this.resetRateLimit();
|
|
195
|
+
}
|
|
196
|
+
// Prepare request config
|
|
197
|
+
const config = {
|
|
198
|
+
method: options.method,
|
|
199
|
+
url: options.url,
|
|
200
|
+
data: options.data,
|
|
201
|
+
params: options.params,
|
|
202
|
+
headers: options.headers,
|
|
203
|
+
timeout: options.timeout || this.config.timeout
|
|
204
|
+
};
|
|
205
|
+
try {
|
|
206
|
+
const response = await this.client.request(config);
|
|
207
|
+
return response.data;
|
|
208
|
+
}
|
|
209
|
+
catch (error) {
|
|
210
|
+
// If retry is enabled and this is a retryable error
|
|
211
|
+
const axiosError = error;
|
|
212
|
+
if (options.retry !== false && this.isRetryableError(axiosError)) {
|
|
213
|
+
return this.retryWithBackoff(options);
|
|
214
|
+
}
|
|
215
|
+
throw error;
|
|
216
|
+
}
|
|
217
|
+
}
|
|
218
|
+
/**
|
|
219
|
+
* Send a chat completion request
|
|
220
|
+
*/
|
|
221
|
+
async chatCompletion(request) {
|
|
222
|
+
const response = await this.request({
|
|
223
|
+
method: 'POST',
|
|
224
|
+
url: '/v1/chat/completions',
|
|
225
|
+
data: request,
|
|
226
|
+
headers: {
|
|
227
|
+
'Content-Type': 'application/json'
|
|
228
|
+
}
|
|
229
|
+
});
|
|
230
|
+
return response;
|
|
231
|
+
}
|
|
232
|
+
/**
|
|
233
|
+
* List available models
|
|
234
|
+
*/
|
|
235
|
+
async listModels() {
|
|
236
|
+
const response = await this.request({
|
|
237
|
+
method: 'GET',
|
|
238
|
+
url: '/v1/models'
|
|
239
|
+
});
|
|
240
|
+
return response;
|
|
241
|
+
}
|
|
242
|
+
/**
|
|
243
|
+
* Get model information
|
|
244
|
+
*/
|
|
245
|
+
async getModel(modelId) {
|
|
246
|
+
const response = await this.request({
|
|
247
|
+
method: 'GET',
|
|
248
|
+
url: `/v1/models/${modelId}`
|
|
249
|
+
});
|
|
250
|
+
return response;
|
|
251
|
+
}
|
|
252
|
+
/**
|
|
253
|
+
* Check API status
|
|
254
|
+
*/
|
|
255
|
+
async checkStatus() {
|
|
256
|
+
try {
|
|
257
|
+
const response = await this.request({
|
|
258
|
+
method: 'GET',
|
|
259
|
+
url: '/v1/models',
|
|
260
|
+
timeout: 5000
|
|
261
|
+
});
|
|
262
|
+
return { status: 'online', version: response?.version };
|
|
263
|
+
}
|
|
264
|
+
catch (error) {
|
|
265
|
+
return {
|
|
266
|
+
status: 'offline',
|
|
267
|
+
error: error.message || 'Unknown error'
|
|
268
|
+
};
|
|
269
|
+
}
|
|
270
|
+
}
|
|
271
|
+
/**
|
|
272
|
+
* Check if error is retryable
|
|
273
|
+
*/
|
|
274
|
+
isRetryableError(error) {
|
|
275
|
+
const status = error.response?.status;
|
|
276
|
+
return (!status || // Network error
|
|
277
|
+
status === 408 || // Request timeout
|
|
278
|
+
status === 429 || // Too many requests
|
|
279
|
+
status >= 500 // Server error
|
|
280
|
+
);
|
|
281
|
+
}
|
|
282
|
+
/**
|
|
283
|
+
* Reset rate limit information
|
|
284
|
+
*/
|
|
285
|
+
resetRateLimit() {
|
|
286
|
+
this.rateLimitInfo = {
|
|
287
|
+
limit: this.config.requests_per_minute,
|
|
288
|
+
remaining: this.config.requests_per_minute,
|
|
289
|
+
reset: Date.now() + 60000,
|
|
290
|
+
used: 0
|
|
291
|
+
};
|
|
292
|
+
this.emit('ratelimit:reset', this.rateLimitInfo);
|
|
293
|
+
}
|
|
294
|
+
/**
|
|
295
|
+
* Utility function for delays
|
|
296
|
+
*/
|
|
297
|
+
delay(ms) {
|
|
298
|
+
return new Promise(resolve => setTimeout(resolve, ms));
|
|
299
|
+
}
|
|
300
|
+
/**
|
|
301
|
+
* Get current rate limit information
|
|
302
|
+
*/
|
|
303
|
+
getRateLimitInfo() {
|
|
304
|
+
return { ...this.rateLimitInfo };
|
|
305
|
+
}
|
|
306
|
+
/**
|
|
307
|
+
* Update configuration
|
|
308
|
+
*/
|
|
309
|
+
updateConfig(newConfig) {
|
|
310
|
+
this.config = { ...this.config, ...newConfig };
|
|
311
|
+
// Update axios instance if base URL changed
|
|
312
|
+
if (newConfig.base_url && newConfig.base_url !== this.client.defaults.baseURL) {
|
|
313
|
+
this.client.defaults.baseURL = newConfig.base_url;
|
|
314
|
+
}
|
|
315
|
+
this.emit('config:updated', this.config);
|
|
316
|
+
}
|
|
317
|
+
/**
|
|
318
|
+
* Get current configuration
|
|
319
|
+
*/
|
|
320
|
+
getConfig() {
|
|
321
|
+
return { ...this.config };
|
|
322
|
+
}
|
|
323
|
+
}
|
|
324
|
+
exports.ChatGPTAPIClient = ChatGPTAPIClient;
|
|
325
|
+
//# sourceMappingURL=api-client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"api-client.js","sourceRoot":"","sources":["../../../src/services/chatgpt/api-client.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ChatGPT CLI Adapter
|
|
3
|
+
* Integrates ChatGPT service with FreeAPI CLI framework
|
|
4
|
+
*/
|
|
5
|
+
import { BaseServiceAdapter } from '../base';
|
|
6
|
+
import { ServiceConfig, ServiceStatus, ChatRequest, ChatResponse } from '../base/types';
|
|
7
|
+
export declare class ChatGPTCliAdapter extends BaseServiceAdapter {
|
|
8
|
+
private service;
|
|
9
|
+
protected config: ServiceConfig;
|
|
10
|
+
constructor(config: ServiceConfig);
|
|
11
|
+
/**
|
|
12
|
+
* Set up event forwarding
|
|
13
|
+
*/
|
|
14
|
+
private setupEventForwarding;
|
|
15
|
+
/**
|
|
16
|
+
* Initialize the service
|
|
17
|
+
*/
|
|
18
|
+
initialize(): Promise<void>;
|
|
19
|
+
/**
|
|
20
|
+
* Send a chat message
|
|
21
|
+
*/
|
|
22
|
+
sendMessage(request: ChatRequest): Promise<ChatResponse>;
|
|
23
|
+
/**
|
|
24
|
+
* Get service status
|
|
25
|
+
*/
|
|
26
|
+
getStatus(): Promise<ServiceStatus>;
|
|
27
|
+
/**
|
|
28
|
+
* Get service information
|
|
29
|
+
*/
|
|
30
|
+
getInfo(): Promise<any>;
|
|
31
|
+
/**
|
|
32
|
+
* Update configuration
|
|
33
|
+
*/
|
|
34
|
+
updateConfig(newConfig: Partial<ServiceConfig>): Promise<void>;
|
|
35
|
+
/**
|
|
36
|
+
* Convert FreeAPI service config to ChatGPT config
|
|
37
|
+
*/
|
|
38
|
+
private convertToChatGPTConfig;
|
|
39
|
+
/**
|
|
40
|
+
* Authenticate user
|
|
41
|
+
*/
|
|
42
|
+
authenticate(credentials: {
|
|
43
|
+
username: string;
|
|
44
|
+
password: string;
|
|
45
|
+
}): Promise<boolean>;
|
|
46
|
+
/**
|
|
47
|
+
* Test service connection
|
|
48
|
+
*/
|
|
49
|
+
testConnection(): Promise<boolean>;
|
|
50
|
+
/**
|
|
51
|
+
* Get conversations
|
|
52
|
+
*/
|
|
53
|
+
getConversations(): Promise<any[]>;
|
|
54
|
+
/**
|
|
55
|
+
* Get conversation by ID
|
|
56
|
+
*/
|
|
57
|
+
getConversation(conversationId: string): Promise<any>;
|
|
58
|
+
/**
|
|
59
|
+
* Delete conversation
|
|
60
|
+
*/
|
|
61
|
+
deleteConversation(conversationId: string): Promise<boolean>;
|
|
62
|
+
/**
|
|
63
|
+
* Get usage statistics
|
|
64
|
+
*/
|
|
65
|
+
getUsage(): Promise<any>;
|
|
66
|
+
/**
|
|
67
|
+
* Get error information
|
|
68
|
+
*/
|
|
69
|
+
getErrors(_limit?: number): Promise<any[]>;
|
|
70
|
+
/**
|
|
71
|
+
* Get recovery actions
|
|
72
|
+
*/
|
|
73
|
+
getRecoveryActions(): Promise<any[]>;
|
|
74
|
+
/**
|
|
75
|
+
* Clear error history
|
|
76
|
+
*/
|
|
77
|
+
clearErrorHistory(): Promise<void>;
|
|
78
|
+
/**
|
|
79
|
+
* Backup configuration
|
|
80
|
+
*/
|
|
81
|
+
backupConfig(backupDir?: string): Promise<string>;
|
|
82
|
+
/**
|
|
83
|
+
* Restore configuration from backup
|
|
84
|
+
*/
|
|
85
|
+
restoreConfig(backupFile: string): Promise<void>;
|
|
86
|
+
/**
|
|
87
|
+
* List available backups
|
|
88
|
+
*/
|
|
89
|
+
listBackups(backupDir?: string): Promise<string[]>;
|
|
90
|
+
/**
|
|
91
|
+
* Reset configuration to defaults
|
|
92
|
+
*/
|
|
93
|
+
resetConfig(): Promise<void>;
|
|
94
|
+
/**
|
|
95
|
+
* Clean up resources
|
|
96
|
+
*/
|
|
97
|
+
destroy(): Promise<void>;
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* Create ChatGPT CLI adapter factory function
|
|
101
|
+
*/
|
|
102
|
+
export declare function createChatGPTCliAdapter(config: ServiceConfig): ChatGPTCliAdapter;
|
|
103
|
+
/**
|
|
104
|
+
* Register ChatGPT service with FreeAPI
|
|
105
|
+
*/
|
|
106
|
+
export declare function registerChatGPTService(): void;
|
|
107
|
+
export default ChatGPTCliAdapter;
|
|
108
|
+
//# sourceMappingURL=cli-adapter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli-adapter.d.ts","sourceRoot":"","sources":["../../../src/services/chatgpt/cli-adapter.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAC7C,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAExF,qBAAa,iBAAkB,SAAQ,kBAAkB;IACvD,OAAO,CAAC,OAAO,CAAwB;IACvC,SAAS,CAAC,MAAM,EAAE,aAAa,CAAC;gBAEpB,MAAM,EAAE,aAAa;IAYjC;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAkB5B;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAYjC;;OAEG;IACG,WAAW,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,YAAY,CAAC;IA8B9D;;OAEG;IACG,SAAS,IAAI,OAAO,CAAC,aAAa,CAAC;IAyBzC;;OAEG;IACG,OAAO,IAAI,OAAO,CAAC,GAAG,CAAC;IAoB7B;;OAEG;IACG,YAAY,CAAC,SAAS,EAAE,OAAO,CAAC,aAAa,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAUpE;;OAEG;IACH,OAAO,CAAC,sBAAsB;IAsB9B;;OAEG;IACG,YAAY,CAAC,WAAW,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,OAAO,CAAC;IAUzF;;OAEG;IACG,cAAc,IAAI,OAAO,CAAC,OAAO,CAAC;IAIxC;;OAEG;IACG,gBAAgB,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;IAaxC;;OAEG;IACG,eAAe,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC;IAiB3D;;OAEG;IACG,kBAAkB,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAIlE;;OAEG;IACG,QAAQ,IAAI,OAAO,CAAC,GAAG,CAAC;IAmB9B;;OAEG;IACG,SAAS,CAAC,MAAM,SAAK,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAK5C;;OAEG;IACG,kBAAkB,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;IAK1C;;OAEG;IACG,iBAAiB,IAAI,OAAO,CAAC,IAAI,CAAC;IAIxC;;OAEG;IACG,YAAY,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAIvD;;OAEG;IACG,aAAa,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAItD;;OAEG;IACG,WAAW,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAIxD;;OAEG;IACG,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC;IAIlC;;OAEG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;CAK/B;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,aAAa,GAAG,iBAAiB,CAEhF;AAED;;GAEG;AACH,wBAAgB,sBAAsB,IAAI,IAAI,CAG7C;AAED,eAAe,iBAAiB,CAAC"}
|