@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,524 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* ChatGPT Configuration Wizard
|
|
4
|
+
* Interactive wizard to help users configure ChatGPT service
|
|
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.ChatGPTConfigWizard = void 0;
|
|
11
|
+
exports.runConfigWizard = runConfigWizard;
|
|
12
|
+
const inquirer_1 = __importDefault(require("inquirer"));
|
|
13
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
14
|
+
const types_1 = require("./types");
|
|
15
|
+
const config_manager_1 = require("./config-manager");
|
|
16
|
+
class ChatGPTConfigWizard {
|
|
17
|
+
configManager;
|
|
18
|
+
constructor() {
|
|
19
|
+
this.configManager = new config_manager_1.ChatGPTConfigManager();
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Run the configuration wizard
|
|
23
|
+
*/
|
|
24
|
+
async run() {
|
|
25
|
+
console.log(chalk_1.default.blue.bold('ChatGPT Configuration Wizard'));
|
|
26
|
+
console.log(chalk_1.default.gray('This wizard will help you configure the ChatGPT service.'));
|
|
27
|
+
console.log();
|
|
28
|
+
// Step 1: Choose mode
|
|
29
|
+
const modeAnswer = await inquirer_1.default.prompt([
|
|
30
|
+
{
|
|
31
|
+
type: 'list',
|
|
32
|
+
name: 'mode',
|
|
33
|
+
message: 'Select authentication mode:',
|
|
34
|
+
choices: [
|
|
35
|
+
{
|
|
36
|
+
name: 'Public Mode (No login required, limited tokens)',
|
|
37
|
+
value: 'public'
|
|
38
|
+
},
|
|
39
|
+
{
|
|
40
|
+
name: 'Authenticated Mode (Login with credentials, full access)',
|
|
41
|
+
value: 'authenticated'
|
|
42
|
+
}
|
|
43
|
+
],
|
|
44
|
+
default: 'public'
|
|
45
|
+
}
|
|
46
|
+
]);
|
|
47
|
+
const config = {
|
|
48
|
+
mode: modeAnswer.mode,
|
|
49
|
+
enabled: true
|
|
50
|
+
};
|
|
51
|
+
// Step 2: Configure API settings
|
|
52
|
+
const apiAnswers = await inquirer_1.default.prompt([
|
|
53
|
+
{
|
|
54
|
+
type: 'input',
|
|
55
|
+
name: 'base_url',
|
|
56
|
+
message: 'Enter API base URL:',
|
|
57
|
+
default: 'https://api.openai.com/v1/',
|
|
58
|
+
validate: (input) => {
|
|
59
|
+
try {
|
|
60
|
+
new URL(input);
|
|
61
|
+
return true;
|
|
62
|
+
}
|
|
63
|
+
catch {
|
|
64
|
+
return 'Please enter a valid URL (e.g., https://api.openai.com/v1/)';
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
},
|
|
68
|
+
{
|
|
69
|
+
type: 'list',
|
|
70
|
+
name: 'model',
|
|
71
|
+
message: 'Select default model:',
|
|
72
|
+
choices: [
|
|
73
|
+
{ name: 'GPT-3.5 Turbo (Fast, cost-effective)', value: 'gpt-3.5-turbo' },
|
|
74
|
+
{ name: 'GPT-3.5 Turbo 16K (Longer context)', value: 'gpt-3.5-turbo-16k' },
|
|
75
|
+
{ name: 'GPT-4 (Most capable)', value: 'gpt-4' },
|
|
76
|
+
{ name: 'GPT-4 Turbo (Latest GPT-4)', value: 'gpt-4-turbo-preview' }
|
|
77
|
+
],
|
|
78
|
+
default: 'gpt-3.5-turbo'
|
|
79
|
+
},
|
|
80
|
+
{
|
|
81
|
+
type: 'number',
|
|
82
|
+
name: 'max_tokens',
|
|
83
|
+
message: 'Maximum tokens per response:',
|
|
84
|
+
default: 4096,
|
|
85
|
+
validate: (input) => {
|
|
86
|
+
if (input < 1 || input > 16384) {
|
|
87
|
+
return 'Please enter a value between 1 and 16384';
|
|
88
|
+
}
|
|
89
|
+
return true;
|
|
90
|
+
}
|
|
91
|
+
},
|
|
92
|
+
{
|
|
93
|
+
type: 'number',
|
|
94
|
+
name: 'temperature',
|
|
95
|
+
message: 'Temperature (0.0 to 2.0):',
|
|
96
|
+
default: 0.7,
|
|
97
|
+
validate: (input) => {
|
|
98
|
+
if (input < 0 || input > 2) {
|
|
99
|
+
return 'Please enter a value between 0.0 and 2.0';
|
|
100
|
+
}
|
|
101
|
+
return true;
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
]);
|
|
105
|
+
Object.assign(config, apiAnswers);
|
|
106
|
+
// Step 3: Authentication configuration
|
|
107
|
+
if (config.mode === 'authenticated') {
|
|
108
|
+
const authAnswers = await inquirer_1.default.prompt([
|
|
109
|
+
{
|
|
110
|
+
type: 'input',
|
|
111
|
+
name: 'api_key',
|
|
112
|
+
message: 'Enter your OpenAI API key (sk-...):',
|
|
113
|
+
validate: (input) => {
|
|
114
|
+
if (!input.trim()) {
|
|
115
|
+
return 'API key is required for authenticated mode';
|
|
116
|
+
}
|
|
117
|
+
if (!input.startsWith('sk-')) {
|
|
118
|
+
return 'API key should start with "sk-"';
|
|
119
|
+
}
|
|
120
|
+
return true;
|
|
121
|
+
}
|
|
122
|
+
},
|
|
123
|
+
{
|
|
124
|
+
type: 'confirm',
|
|
125
|
+
name: 'save_password',
|
|
126
|
+
message: 'Save API key securely?',
|
|
127
|
+
default: true
|
|
128
|
+
}
|
|
129
|
+
]);
|
|
130
|
+
if (authAnswers.save_password) {
|
|
131
|
+
config.api_key = authAnswers.api_key;
|
|
132
|
+
}
|
|
133
|
+
else {
|
|
134
|
+
console.log(chalk_1.default.yellow('Warning: API key will not be saved. You will need to enter it each time.'));
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
// Step 4: Advanced settings
|
|
138
|
+
const advancedAnswers = await inquirer_1.default.prompt([
|
|
139
|
+
{
|
|
140
|
+
type: 'confirm',
|
|
141
|
+
name: 'configure_advanced',
|
|
142
|
+
message: 'Configure advanced settings?',
|
|
143
|
+
default: false
|
|
144
|
+
}
|
|
145
|
+
]);
|
|
146
|
+
if (advancedAnswers.configure_advanced) {
|
|
147
|
+
const advancedSettings = await inquirer_1.default.prompt([
|
|
148
|
+
{
|
|
149
|
+
type: 'number',
|
|
150
|
+
name: 'timeout',
|
|
151
|
+
message: 'Request timeout (milliseconds):',
|
|
152
|
+
default: 30000,
|
|
153
|
+
validate: (input) => {
|
|
154
|
+
if (input < 1000 || input > 300000) {
|
|
155
|
+
return 'Please enter a value between 1000 and 300000';
|
|
156
|
+
}
|
|
157
|
+
return true;
|
|
158
|
+
}
|
|
159
|
+
},
|
|
160
|
+
{
|
|
161
|
+
type: 'number',
|
|
162
|
+
name: 'max_retries',
|
|
163
|
+
message: 'Maximum retry attempts:',
|
|
164
|
+
default: 3,
|
|
165
|
+
validate: (input) => {
|
|
166
|
+
if (input < 0 || input > 10) {
|
|
167
|
+
return 'Please enter a value between 0 and 10';
|
|
168
|
+
}
|
|
169
|
+
return true;
|
|
170
|
+
}
|
|
171
|
+
},
|
|
172
|
+
{
|
|
173
|
+
type: 'number',
|
|
174
|
+
name: 'retry_delay',
|
|
175
|
+
message: 'Retry delay (milliseconds):',
|
|
176
|
+
default: 1000,
|
|
177
|
+
validate: (input) => {
|
|
178
|
+
if (input < 0 || input > 10000) {
|
|
179
|
+
return 'Please enter a value between 0 and 10000';
|
|
180
|
+
}
|
|
181
|
+
return true;
|
|
182
|
+
}
|
|
183
|
+
},
|
|
184
|
+
{
|
|
185
|
+
type: 'number',
|
|
186
|
+
name: 'requests_per_minute',
|
|
187
|
+
message: 'Requests per minute limit:',
|
|
188
|
+
default: 60,
|
|
189
|
+
validate: (input) => {
|
|
190
|
+
if (input < 1 || input > 1000) {
|
|
191
|
+
return 'Please enter a value between 1 and 1000';
|
|
192
|
+
}
|
|
193
|
+
return true;
|
|
194
|
+
}
|
|
195
|
+
},
|
|
196
|
+
{
|
|
197
|
+
type: 'number',
|
|
198
|
+
name: 'tokens_per_minute',
|
|
199
|
+
message: 'Tokens per minute limit:',
|
|
200
|
+
default: 150000,
|
|
201
|
+
validate: (input) => {
|
|
202
|
+
if (input < 1000 || input > 1000000) {
|
|
203
|
+
return 'Please enter a value between 1000 and 1000000';
|
|
204
|
+
}
|
|
205
|
+
return true;
|
|
206
|
+
}
|
|
207
|
+
},
|
|
208
|
+
{
|
|
209
|
+
type: 'number',
|
|
210
|
+
name: 'top_p',
|
|
211
|
+
message: 'Top-p sampling (0.0 to 1.0):',
|
|
212
|
+
default: 1,
|
|
213
|
+
validate: (input) => {
|
|
214
|
+
if (input < 0 || input > 1) {
|
|
215
|
+
return 'Please enter a value between 0.0 and 1.0';
|
|
216
|
+
}
|
|
217
|
+
return true;
|
|
218
|
+
}
|
|
219
|
+
},
|
|
220
|
+
{
|
|
221
|
+
type: 'number',
|
|
222
|
+
name: 'frequency_penalty',
|
|
223
|
+
message: 'Frequency penalty (-2.0 to 2.0):',
|
|
224
|
+
default: 0,
|
|
225
|
+
validate: (input) => {
|
|
226
|
+
if (input < -2 || input > 2) {
|
|
227
|
+
return 'Please enter a value between -2.0 and 2.0';
|
|
228
|
+
}
|
|
229
|
+
return true;
|
|
230
|
+
}
|
|
231
|
+
},
|
|
232
|
+
{
|
|
233
|
+
type: 'number',
|
|
234
|
+
name: 'presence_penalty',
|
|
235
|
+
message: 'Presence penalty (-2.0 to 2.0):',
|
|
236
|
+
default: 0,
|
|
237
|
+
validate: (input) => {
|
|
238
|
+
if (input < -2 || input > 2) {
|
|
239
|
+
return 'Please enter a value between -2.0 and 2.0';
|
|
240
|
+
}
|
|
241
|
+
return true;
|
|
242
|
+
}
|
|
243
|
+
}
|
|
244
|
+
]);
|
|
245
|
+
Object.assign(config, advancedSettings);
|
|
246
|
+
}
|
|
247
|
+
else {
|
|
248
|
+
// Apply default advanced settings
|
|
249
|
+
Object.assign(config, {
|
|
250
|
+
timeout: 30000,
|
|
251
|
+
max_retries: 3,
|
|
252
|
+
retry_delay: 1000,
|
|
253
|
+
requests_per_minute: 60,
|
|
254
|
+
tokens_per_minute: 150000,
|
|
255
|
+
top_p: 1,
|
|
256
|
+
frequency_penalty: 0,
|
|
257
|
+
presence_penalty: 0
|
|
258
|
+
});
|
|
259
|
+
}
|
|
260
|
+
// Step 5: Test connection
|
|
261
|
+
const testAnswer = await inquirer_1.default.prompt([
|
|
262
|
+
{
|
|
263
|
+
type: 'confirm',
|
|
264
|
+
name: 'test_connection',
|
|
265
|
+
message: 'Test connection with current configuration?',
|
|
266
|
+
default: true
|
|
267
|
+
}
|
|
268
|
+
]);
|
|
269
|
+
if (testAnswer.test_connection) {
|
|
270
|
+
await this.testConnection(config);
|
|
271
|
+
}
|
|
272
|
+
// Step 6: Save configuration
|
|
273
|
+
const saveAnswer = await inquirer_1.default.prompt([
|
|
274
|
+
{
|
|
275
|
+
type: 'confirm',
|
|
276
|
+
name: 'save_config',
|
|
277
|
+
message: 'Save configuration?',
|
|
278
|
+
default: true
|
|
279
|
+
}
|
|
280
|
+
]);
|
|
281
|
+
if (saveAnswer.save_config) {
|
|
282
|
+
const finalConfig = config;
|
|
283
|
+
await this.saveConfiguration(finalConfig);
|
|
284
|
+
console.log(chalk_1.default.green('Configuration saved successfully!'));
|
|
285
|
+
return finalConfig;
|
|
286
|
+
}
|
|
287
|
+
else {
|
|
288
|
+
console.log(chalk_1.default.yellow('Configuration not saved.'));
|
|
289
|
+
return config;
|
|
290
|
+
}
|
|
291
|
+
}
|
|
292
|
+
/**
|
|
293
|
+
* Test connection with current configuration
|
|
294
|
+
*/
|
|
295
|
+
async testConnection(config) {
|
|
296
|
+
console.log(chalk_1.default.blue('Testing connection...'));
|
|
297
|
+
try {
|
|
298
|
+
// Create a simple test
|
|
299
|
+
const testUrl = new URL(config.base_url);
|
|
300
|
+
console.log(chalk_1.default.gray(`Testing connection to: ${testUrl.origin}`));
|
|
301
|
+
// Simulate connection test
|
|
302
|
+
await new Promise(resolve => setTimeout(resolve, 1000));
|
|
303
|
+
console.log(chalk_1.default.green('✓ Connection test passed'));
|
|
304
|
+
console.log(chalk_1.default.gray(`Base URL: ${config.base_url}`));
|
|
305
|
+
console.log(chalk_1.default.gray(`Mode: ${config.mode}`));
|
|
306
|
+
console.log(chalk_1.default.gray(`Model: ${config.model}`));
|
|
307
|
+
}
|
|
308
|
+
catch (error) {
|
|
309
|
+
console.log(chalk_1.default.red('✗ Connection test failed'));
|
|
310
|
+
console.log(chalk_1.default.red(`Error: ${error instanceof Error ? error.message : String(error)}`));
|
|
311
|
+
const retryAnswer = await inquirer_1.default.prompt([
|
|
312
|
+
{
|
|
313
|
+
type: 'confirm',
|
|
314
|
+
name: 'retry',
|
|
315
|
+
message: 'Retry with different settings?',
|
|
316
|
+
default: true
|
|
317
|
+
}
|
|
318
|
+
]);
|
|
319
|
+
if (retryAnswer.retry) {
|
|
320
|
+
await this.run();
|
|
321
|
+
}
|
|
322
|
+
}
|
|
323
|
+
console.log();
|
|
324
|
+
}
|
|
325
|
+
/**
|
|
326
|
+
* Save configuration
|
|
327
|
+
*/
|
|
328
|
+
async saveConfiguration(config) {
|
|
329
|
+
try {
|
|
330
|
+
await this.configManager.saveConfig(config);
|
|
331
|
+
console.log(chalk_1.default.gray(`Configuration saved to: ${this.configManager.getConfigFilePath()}`));
|
|
332
|
+
}
|
|
333
|
+
catch (error) {
|
|
334
|
+
console.log(chalk_1.default.red('Failed to save configuration:'));
|
|
335
|
+
console.log(chalk_1.default.red(error instanceof Error ? error.message : String(error)));
|
|
336
|
+
const manualSaveAnswer = await inquirer_1.default.prompt([
|
|
337
|
+
{
|
|
338
|
+
type: 'confirm',
|
|
339
|
+
name: 'manual_save',
|
|
340
|
+
message: 'Save configuration manually?',
|
|
341
|
+
default: false
|
|
342
|
+
}
|
|
343
|
+
]);
|
|
344
|
+
if (manualSaveAnswer.manual_save) {
|
|
345
|
+
console.log(chalk_1.default.yellow('Manual configuration:'));
|
|
346
|
+
console.log(JSON.stringify(config, null, 2));
|
|
347
|
+
console.log(chalk_1.default.yellow('Copy this configuration to your config file.'));
|
|
348
|
+
}
|
|
349
|
+
}
|
|
350
|
+
}
|
|
351
|
+
/**
|
|
352
|
+
* Quick setup with minimal prompts
|
|
353
|
+
*/
|
|
354
|
+
async quickSetup() {
|
|
355
|
+
console.log(chalk_1.default.blue.bold('ChatGPT Quick Setup'));
|
|
356
|
+
console.log(chalk_1.default.gray('Minimal setup with default values.'));
|
|
357
|
+
console.log();
|
|
358
|
+
const answers = await inquirer_1.default.prompt([
|
|
359
|
+
{
|
|
360
|
+
type: 'input',
|
|
361
|
+
name: 'api_key',
|
|
362
|
+
message: 'Enter your OpenAI API key (optional for public mode):',
|
|
363
|
+
default: ''
|
|
364
|
+
},
|
|
365
|
+
{
|
|
366
|
+
type: 'confirm',
|
|
367
|
+
name: 'use_defaults',
|
|
368
|
+
message: 'Use default settings?',
|
|
369
|
+
default: true
|
|
370
|
+
}
|
|
371
|
+
]);
|
|
372
|
+
const config = {
|
|
373
|
+
mode: answers.api_key ? types_1.ChatGPTMode.AUTHENTICATED : types_1.ChatGPTMode.PUBLIC,
|
|
374
|
+
enabled: true,
|
|
375
|
+
base_url: 'https://api.openai.com/v1/',
|
|
376
|
+
api_key: answers.api_key || undefined,
|
|
377
|
+
model: 'gpt-3.5-turbo', // Using string literal for simplicity
|
|
378
|
+
max_tokens: 4096,
|
|
379
|
+
temperature: 0.7,
|
|
380
|
+
top_p: 1,
|
|
381
|
+
frequency_penalty: 0,
|
|
382
|
+
presence_penalty: 0,
|
|
383
|
+
timeout: 30000,
|
|
384
|
+
max_retries: 3,
|
|
385
|
+
retry_delay: 1000,
|
|
386
|
+
requests_per_minute: 60,
|
|
387
|
+
tokens_per_minute: 150000
|
|
388
|
+
};
|
|
389
|
+
if (!answers.use_defaults) {
|
|
390
|
+
const customAnswers = await inquirer_1.default.prompt([
|
|
391
|
+
{
|
|
392
|
+
type: 'input',
|
|
393
|
+
name: 'base_url',
|
|
394
|
+
message: 'API base URL:',
|
|
395
|
+
default: config.base_url
|
|
396
|
+
},
|
|
397
|
+
{
|
|
398
|
+
type: 'list',
|
|
399
|
+
name: 'model',
|
|
400
|
+
message: 'Model:',
|
|
401
|
+
choices: ['gpt-3.5-turbo', 'gpt-3.5-turbo-16k', 'gpt-4', 'gpt-4-turbo-preview'],
|
|
402
|
+
default: config.model
|
|
403
|
+
}
|
|
404
|
+
]);
|
|
405
|
+
Object.assign(config, customAnswers);
|
|
406
|
+
}
|
|
407
|
+
await this.saveConfiguration(config);
|
|
408
|
+
console.log(chalk_1.default.green('Quick setup completed!'));
|
|
409
|
+
return config;
|
|
410
|
+
}
|
|
411
|
+
/**
|
|
412
|
+
* Edit existing configuration
|
|
413
|
+
*/
|
|
414
|
+
async editConfig() {
|
|
415
|
+
console.log(chalk_1.default.blue.bold('Edit ChatGPT Configuration'));
|
|
416
|
+
try {
|
|
417
|
+
const existingConfig = await this.configManager.loadConfig();
|
|
418
|
+
if (!existingConfig) {
|
|
419
|
+
console.log(chalk_1.default.yellow('No existing configuration found. Running setup wizard...'));
|
|
420
|
+
return this.run();
|
|
421
|
+
}
|
|
422
|
+
console.log(chalk_1.default.gray('Current configuration:'));
|
|
423
|
+
console.log(chalk_1.default.gray(`Mode: ${existingConfig.mode}`));
|
|
424
|
+
console.log(chalk_1.default.gray(`Model: ${existingConfig.model}`));
|
|
425
|
+
console.log(chalk_1.default.gray(`Base URL: ${existingConfig.base_url}`));
|
|
426
|
+
console.log();
|
|
427
|
+
const editAnswer = await inquirer_1.default.prompt([
|
|
428
|
+
{
|
|
429
|
+
type: 'list',
|
|
430
|
+
name: 'action',
|
|
431
|
+
message: 'What would you like to do?',
|
|
432
|
+
choices: [
|
|
433
|
+
{ name: 'Edit all settings', value: 'edit_all' },
|
|
434
|
+
{ name: 'Edit API key only', value: 'edit_key' },
|
|
435
|
+
{ name: 'Test connection', value: 'test' },
|
|
436
|
+
{ name: 'Cancel', value: 'cancel' }
|
|
437
|
+
],
|
|
438
|
+
default: 'edit_key'
|
|
439
|
+
}
|
|
440
|
+
]);
|
|
441
|
+
switch (editAnswer.action) {
|
|
442
|
+
case 'edit_all':
|
|
443
|
+
return this.run();
|
|
444
|
+
case 'edit_key':
|
|
445
|
+
const keyAnswer = await inquirer_1.default.prompt([
|
|
446
|
+
{
|
|
447
|
+
type: 'input',
|
|
448
|
+
name: 'api_key',
|
|
449
|
+
message: 'Enter new API key (leave empty to remove):',
|
|
450
|
+
default: existingConfig.api_key || ''
|
|
451
|
+
}
|
|
452
|
+
]);
|
|
453
|
+
if (keyAnswer.api_key) {
|
|
454
|
+
existingConfig.api_key = keyAnswer.api_key;
|
|
455
|
+
existingConfig.mode = types_1.ChatGPTMode.AUTHENTICATED;
|
|
456
|
+
}
|
|
457
|
+
else {
|
|
458
|
+
delete existingConfig.api_key;
|
|
459
|
+
existingConfig.mode = types_1.ChatGPTMode.PUBLIC;
|
|
460
|
+
}
|
|
461
|
+
await this.saveConfiguration(existingConfig);
|
|
462
|
+
console.log(chalk_1.default.green('API key updated!'));
|
|
463
|
+
return existingConfig;
|
|
464
|
+
case 'test':
|
|
465
|
+
await this.testConnection(existingConfig);
|
|
466
|
+
return existingConfig;
|
|
467
|
+
case 'cancel':
|
|
468
|
+
console.log(chalk_1.default.yellow('Edit cancelled.'));
|
|
469
|
+
return existingConfig;
|
|
470
|
+
}
|
|
471
|
+
return existingConfig;
|
|
472
|
+
}
|
|
473
|
+
catch (error) {
|
|
474
|
+
console.log(chalk_1.default.red('Failed to edit configuration:'));
|
|
475
|
+
console.log(chalk_1.default.red(error instanceof Error ? error.message : String(error)));
|
|
476
|
+
throw error;
|
|
477
|
+
}
|
|
478
|
+
}
|
|
479
|
+
}
|
|
480
|
+
exports.ChatGPTConfigWizard = ChatGPTConfigWizard;
|
|
481
|
+
/**
|
|
482
|
+
* Run configuration wizard from CLI
|
|
483
|
+
*/
|
|
484
|
+
async function runConfigWizard() {
|
|
485
|
+
const wizard = new ChatGPTConfigWizard();
|
|
486
|
+
try {
|
|
487
|
+
const answers = await inquirer_1.default.prompt([
|
|
488
|
+
{
|
|
489
|
+
type: 'list',
|
|
490
|
+
name: 'action',
|
|
491
|
+
message: 'Select configuration action:',
|
|
492
|
+
choices: [
|
|
493
|
+
{ name: 'Full setup wizard', value: 'full' },
|
|
494
|
+
{ name: 'Quick setup', value: 'quick' },
|
|
495
|
+
{ name: 'Edit existing configuration', value: 'edit' },
|
|
496
|
+
{ name: 'Cancel', value: 'cancel' }
|
|
497
|
+
],
|
|
498
|
+
default: 'quick'
|
|
499
|
+
}
|
|
500
|
+
]);
|
|
501
|
+
switch (answers.action) {
|
|
502
|
+
case 'full':
|
|
503
|
+
await wizard.run();
|
|
504
|
+
break;
|
|
505
|
+
case 'quick':
|
|
506
|
+
await wizard.quickSetup();
|
|
507
|
+
break;
|
|
508
|
+
case 'edit':
|
|
509
|
+
await wizard.editConfig();
|
|
510
|
+
break;
|
|
511
|
+
case 'cancel':
|
|
512
|
+
console.log(chalk_1.default.yellow('Configuration cancelled.'));
|
|
513
|
+
break;
|
|
514
|
+
}
|
|
515
|
+
}
|
|
516
|
+
catch (error) {
|
|
517
|
+
console.log(chalk_1.default.red('Configuration wizard failed:'));
|
|
518
|
+
console.log(chalk_1.default.red(error instanceof Error ? error.message : String(error)));
|
|
519
|
+
process.exit(1);
|
|
520
|
+
}
|
|
521
|
+
}
|
|
522
|
+
// Export default instance
|
|
523
|
+
exports.default = ChatGPTConfigWizard;
|
|
524
|
+
//# sourceMappingURL=config-wizard.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config-wizard.js","sourceRoot":"","sources":["../../../src/services/chatgpt/config-wizard.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ChatGPT Error Handler
|
|
3
|
+
* Centralized error handling and recovery mechanisms
|
|
4
|
+
*/
|
|
5
|
+
import { EventEmitter } from 'events';
|
|
6
|
+
export declare enum ChatGPTErrorCode {
|
|
7
|
+
NETWORK_ERROR = "NETWORK_ERROR",
|
|
8
|
+
TIMEOUT_ERROR = "TIMEOUT_ERROR",
|
|
9
|
+
CONNECTION_ERROR = "CONNECTION_ERROR",
|
|
10
|
+
API_ERROR = "API_ERROR",
|
|
11
|
+
RATE_LIMIT_EXCEEDED = "RATE_LIMIT_EXCEEDED",
|
|
12
|
+
QUOTA_EXCEEDED = "QUOTA_EXCEEDED",
|
|
13
|
+
INVALID_REQUEST = "INVALID_REQUEST",
|
|
14
|
+
AUTHENTICATION_ERROR = "AUTHENTICATION_ERROR",
|
|
15
|
+
INVALID_CREDENTIALS = "INVALID_CREDENTIALS",
|
|
16
|
+
SESSION_EXPIRED = "SESSION_EXPIRED",
|
|
17
|
+
ACCESS_DENIED = "ACCESS_DENIED",
|
|
18
|
+
CONFIGURATION_ERROR = "CONFIGURATION_ERROR",
|
|
19
|
+
INVALID_CONFIG = "INVALID_CONFIG",
|
|
20
|
+
SERVICE_UNAVAILABLE = "SERVICE_UNAVAILABLE",
|
|
21
|
+
MAINTENANCE_MODE = "MAINTENANCE_MODE",
|
|
22
|
+
CONTENT_FILTER = "CONTENT_FILTER",
|
|
23
|
+
POLICY_VIOLATION = "POLICY_VIOLATION",
|
|
24
|
+
UNKNOWN_ERROR = "UNKNOWN_ERROR"
|
|
25
|
+
}
|
|
26
|
+
export interface ChatGPTError {
|
|
27
|
+
code: ChatGPTErrorCode;
|
|
28
|
+
message: string;
|
|
29
|
+
details?: any;
|
|
30
|
+
retryable: boolean;
|
|
31
|
+
timestamp: number;
|
|
32
|
+
stack?: string;
|
|
33
|
+
}
|
|
34
|
+
export interface RecoveryAction {
|
|
35
|
+
action: string;
|
|
36
|
+
description: string;
|
|
37
|
+
automatic: boolean;
|
|
38
|
+
priority: number;
|
|
39
|
+
}
|
|
40
|
+
export declare class ChatGPTErrorHandler extends EventEmitter {
|
|
41
|
+
private errorHistory;
|
|
42
|
+
private maxHistorySize;
|
|
43
|
+
/**
|
|
44
|
+
* Handle an error
|
|
45
|
+
*/
|
|
46
|
+
handleError(error: any, context?: string): ChatGPTError;
|
|
47
|
+
/**
|
|
48
|
+
* Normalize different error types to ChatGPTError
|
|
49
|
+
*/
|
|
50
|
+
private normalizeError;
|
|
51
|
+
/**
|
|
52
|
+
* Handle Axios errors
|
|
53
|
+
*/
|
|
54
|
+
private handleAxiosError;
|
|
55
|
+
/**
|
|
56
|
+
* Handle generic errors
|
|
57
|
+
*/
|
|
58
|
+
private handleGenericError;
|
|
59
|
+
/**
|
|
60
|
+
* Get recovery actions for an error
|
|
61
|
+
*/
|
|
62
|
+
getRecoveryActions(error: ChatGPTError): RecoveryAction[];
|
|
63
|
+
/**
|
|
64
|
+
* Check if error should trigger automatic recovery
|
|
65
|
+
*/
|
|
66
|
+
shouldAutoRecover(error: ChatGPTError): boolean;
|
|
67
|
+
/**
|
|
68
|
+
* Get error statistics
|
|
69
|
+
*/
|
|
70
|
+
getErrorStatistics(): {
|
|
71
|
+
totalErrors: number;
|
|
72
|
+
errorCounts: Record<ChatGPTErrorCode, number>;
|
|
73
|
+
retryableErrors: number;
|
|
74
|
+
lastErrorTime?: number;
|
|
75
|
+
mostCommonError?: ChatGPTErrorCode;
|
|
76
|
+
};
|
|
77
|
+
/**
|
|
78
|
+
* Clear error history
|
|
79
|
+
*/
|
|
80
|
+
clearHistory(): void;
|
|
81
|
+
/**
|
|
82
|
+
* Get recent errors
|
|
83
|
+
*/
|
|
84
|
+
getRecentErrors(limit?: number): ChatGPTError[];
|
|
85
|
+
/**
|
|
86
|
+
* Log error (in production, this would integrate with a logging system)
|
|
87
|
+
*/
|
|
88
|
+
private logError;
|
|
89
|
+
/**
|
|
90
|
+
* Create a user-friendly error message
|
|
91
|
+
*/
|
|
92
|
+
getUserFriendlyMessage(error: ChatGPTError): string;
|
|
93
|
+
}
|
|
94
|
+
//# sourceMappingURL=error-handler.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"error-handler.d.ts","sourceRoot":"","sources":["../../../src/services/chatgpt/error-handler.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAEtC,oBAAY,gBAAgB;IAE1B,aAAa,kBAAkB;IAC/B,aAAa,kBAAkB;IAC/B,gBAAgB,qBAAqB;IAGrC,SAAS,cAAc;IACvB,mBAAmB,wBAAwB;IAC3C,cAAc,mBAAmB;IACjC,eAAe,oBAAoB;IAGnC,oBAAoB,yBAAyB;IAC7C,mBAAmB,wBAAwB;IAC3C,eAAe,oBAAoB;IACnC,aAAa,kBAAkB;IAG/B,mBAAmB,wBAAwB;IAC3C,cAAc,mBAAmB;IAGjC,mBAAmB,wBAAwB;IAC3C,gBAAgB,qBAAqB;IAGrC,cAAc,mBAAmB;IACjC,gBAAgB,qBAAqB;IAGrC,aAAa,kBAAkB;CAChC;AAED,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,gBAAgB,CAAC;IACvB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,GAAG,CAAC;IACd,SAAS,EAAE,OAAO,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,OAAO,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,qBAAa,mBAAoB,SAAQ,YAAY;IACnD,OAAO,CAAC,YAAY,CAAsB;IAC1C,OAAO,CAAC,cAAc,CAAO;IAE7B;;OAEG;IACH,WAAW,CAAC,KAAK,EAAE,GAAG,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,YAAY;IAkBvD;;OAEG;IACH,OAAO,CAAC,cAAc;IA0BtB;;OAEG;IACH,OAAO,CAAC,gBAAgB;IA2DxB;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAoC1B;;OAEG;IACH,kBAAkB,CAAC,KAAK,EAAE,YAAY,GAAG,cAAc,EAAE;IAkKzD;;OAEG;IACH,iBAAiB,CAAC,KAAK,EAAE,YAAY,GAAG,OAAO;IAK/C;;OAEG;IACH,kBAAkB,IAAI;QACpB,WAAW,EAAE,MAAM,CAAC;QACpB,WAAW,EAAE,MAAM,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC;QAC9C,eAAe,EAAE,MAAM,CAAC;QACxB,aAAa,CAAC,EAAE,MAAM,CAAC;QACvB,eAAe,CAAC,EAAE,gBAAgB,CAAC;KACpC;IAmCD;;OAEG;IACH,YAAY,IAAI,IAAI;IAKpB;;OAEG;IACH,eAAe,CAAC,KAAK,SAAK,GAAG,YAAY,EAAE;IAI3C;;OAEG;IACH,OAAO,CAAC,QAAQ;IAgBhB;;OAEG;IACH,sBAAsB,CAAC,KAAK,EAAE,YAAY,GAAG,MAAM;CAwBpD"}
|