@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,315 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* ChatGPT CLI Adapter
|
|
4
|
+
* Integrates ChatGPT service with FreeAPI CLI framework
|
|
5
|
+
*/
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.ChatGPTCliAdapter = void 0;
|
|
8
|
+
exports.createChatGPTCliAdapter = createChatGPTCliAdapter;
|
|
9
|
+
exports.registerChatGPTService = registerChatGPTService;
|
|
10
|
+
const exports_1 = require("./exports");
|
|
11
|
+
const base_1 = require("../base");
|
|
12
|
+
class ChatGPTCliAdapter extends base_1.BaseServiceAdapter {
|
|
13
|
+
service;
|
|
14
|
+
config;
|
|
15
|
+
constructor(config) {
|
|
16
|
+
super('chatgpt', config);
|
|
17
|
+
this.config = config;
|
|
18
|
+
// Create ChatGPT service instance
|
|
19
|
+
const encryptionKey = process.env.FREEAPI_ENCRYPTION_KEY || 'default-key-change-me';
|
|
20
|
+
this.service = (0, exports_1.createChatGPTService)(encryptionKey);
|
|
21
|
+
// Set up event forwarding
|
|
22
|
+
this.setupEventForwarding();
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Set up event forwarding
|
|
26
|
+
*/
|
|
27
|
+
setupEventForwarding() {
|
|
28
|
+
// Forward service events to base adapter
|
|
29
|
+
this.service.on('service:initializing', () => this.emit('service:initializing', this.name));
|
|
30
|
+
this.service.on('service:initialized', () => this.emit('service:initialized', this.name));
|
|
31
|
+
this.service.on('service:init:error', (error) => this.emit('service:error', this.name, error));
|
|
32
|
+
this.service.on('chat:start', (data) => this.emit('chat:start', this.name, data));
|
|
33
|
+
this.service.on('chat:success', (data) => this.emit('chat:success', this.name, data));
|
|
34
|
+
this.service.on('chat:error', (data) => this.emit('chat:error', this.name, data));
|
|
35
|
+
this.service.on('config:loaded', (config) => this.emit('config:loaded', this.name, config));
|
|
36
|
+
this.service.on('config:saved', (config) => this.emit('config:saved', this.name, config));
|
|
37
|
+
this.service.on('config:updated', (config) => this.emit('config:updated', this.name, config));
|
|
38
|
+
this.service.on('error:handled', (error) => this.emit('service:error', this.name, error));
|
|
39
|
+
this.service.on('log', (logEntry) => this.emit('service:log', this.name, logEntry));
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Initialize the service
|
|
43
|
+
*/
|
|
44
|
+
async initialize() {
|
|
45
|
+
try {
|
|
46
|
+
await this.service.initialize();
|
|
47
|
+
this.status = 'ready';
|
|
48
|
+
this.emit('service:ready', this.name);
|
|
49
|
+
}
|
|
50
|
+
catch (error) {
|
|
51
|
+
this.status = 'error';
|
|
52
|
+
this.emit('service:error', this.name, error);
|
|
53
|
+
throw error;
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Send a chat message
|
|
58
|
+
*/
|
|
59
|
+
async sendMessage(request) {
|
|
60
|
+
if (this.status !== 'ready') {
|
|
61
|
+
await this.initialize();
|
|
62
|
+
}
|
|
63
|
+
try {
|
|
64
|
+
const options = {
|
|
65
|
+
conversationId: request.conversationId,
|
|
66
|
+
stream: request.stream,
|
|
67
|
+
temperature: request.temperature,
|
|
68
|
+
maxTokens: request.maxTokens,
|
|
69
|
+
systemPrompt: request.systemPrompt
|
|
70
|
+
};
|
|
71
|
+
const response = await this.service.sendMessage(request.message, options);
|
|
72
|
+
return {
|
|
73
|
+
id: response.conversationId,
|
|
74
|
+
message: response.message.content,
|
|
75
|
+
conversationId: response.conversationId,
|
|
76
|
+
usage: response.usage,
|
|
77
|
+
finishReason: response.finish_reason,
|
|
78
|
+
timestamp: Date.now()
|
|
79
|
+
};
|
|
80
|
+
}
|
|
81
|
+
catch (error) {
|
|
82
|
+
this.emit('service:error', this.name, error);
|
|
83
|
+
throw error;
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* Get service status
|
|
88
|
+
*/
|
|
89
|
+
async getStatus() {
|
|
90
|
+
const serviceStatus = this.service.getStatus();
|
|
91
|
+
const usageStats = this.service.getUsageStats();
|
|
92
|
+
return {
|
|
93
|
+
name: this.name,
|
|
94
|
+
status: this.status,
|
|
95
|
+
enabled: this.config.enabled,
|
|
96
|
+
mode: serviceStatus.mode,
|
|
97
|
+
authenticated: serviceStatus.authenticated,
|
|
98
|
+
hasActiveSession: serviceStatus.hasActiveSession,
|
|
99
|
+
totalConversations: serviceStatus.totalConversations,
|
|
100
|
+
totalTokens: serviceStatus.totalTokens,
|
|
101
|
+
rateLimited: serviceStatus.rateLimited,
|
|
102
|
+
errorCount: 0, // TODO: Get from error handler
|
|
103
|
+
lastError: undefined,
|
|
104
|
+
usage: {
|
|
105
|
+
totalTokens: usageStats.total_tokens,
|
|
106
|
+
promptTokens: usageStats.prompt_tokens,
|
|
107
|
+
completionTokens: usageStats.completion_tokens,
|
|
108
|
+
requests: usageStats.requests
|
|
109
|
+
}
|
|
110
|
+
};
|
|
111
|
+
}
|
|
112
|
+
/**
|
|
113
|
+
* Get service information
|
|
114
|
+
*/
|
|
115
|
+
async getInfo() {
|
|
116
|
+
const config = this.service.getConfiguration();
|
|
117
|
+
return {
|
|
118
|
+
name: 'ChatGPT',
|
|
119
|
+
version: '1.0.0',
|
|
120
|
+
description: 'OpenAI ChatGPT service with public and authenticated modes',
|
|
121
|
+
capabilities: ['chat', 'conversation_history', 'authentication'],
|
|
122
|
+
limitations: ['rate_limited', 'requires_api_key'],
|
|
123
|
+
config: {
|
|
124
|
+
base_url: config.base_url,
|
|
125
|
+
mode: config.mode,
|
|
126
|
+
model: config.model,
|
|
127
|
+
max_tokens: config.max_tokens,
|
|
128
|
+
temperature: config.temperature,
|
|
129
|
+
timeout: config.timeout
|
|
130
|
+
}
|
|
131
|
+
};
|
|
132
|
+
}
|
|
133
|
+
/**
|
|
134
|
+
* Update configuration
|
|
135
|
+
*/
|
|
136
|
+
async updateConfig(newConfig) {
|
|
137
|
+
this.config = { ...this.config, ...newConfig };
|
|
138
|
+
// Convert to ChatGPT config format
|
|
139
|
+
const chatGPTConfig = this.convertToChatGPTConfig(newConfig);
|
|
140
|
+
this.service.updateConfiguration(chatGPTConfig);
|
|
141
|
+
this.emit('config:updated', this.name, this.config);
|
|
142
|
+
}
|
|
143
|
+
/**
|
|
144
|
+
* Convert FreeAPI service config to ChatGPT config
|
|
145
|
+
*/
|
|
146
|
+
convertToChatGPTConfig(serviceConfig) {
|
|
147
|
+
const config = {};
|
|
148
|
+
if (serviceConfig.settings) {
|
|
149
|
+
if (serviceConfig.settings.base_url)
|
|
150
|
+
config.base_url = serviceConfig.settings.base_url;
|
|
151
|
+
if (serviceConfig.settings.model)
|
|
152
|
+
config.model = serviceConfig.settings.model;
|
|
153
|
+
if (serviceConfig.settings.max_tokens)
|
|
154
|
+
config.max_tokens = serviceConfig.settings.max_tokens;
|
|
155
|
+
if (serviceConfig.settings.temperature)
|
|
156
|
+
config.temperature = serviceConfig.settings.temperature;
|
|
157
|
+
if (serviceConfig.settings.timeout)
|
|
158
|
+
config.timeout = serviceConfig.settings.timeout;
|
|
159
|
+
}
|
|
160
|
+
if (serviceConfig.credentials) {
|
|
161
|
+
config.mode = 'authenticated';
|
|
162
|
+
config.credentials = {
|
|
163
|
+
email: serviceConfig.credentials.username,
|
|
164
|
+
password: serviceConfig.credentials.password
|
|
165
|
+
};
|
|
166
|
+
}
|
|
167
|
+
return config;
|
|
168
|
+
}
|
|
169
|
+
/**
|
|
170
|
+
* Authenticate user
|
|
171
|
+
*/
|
|
172
|
+
async authenticate(credentials) {
|
|
173
|
+
try {
|
|
174
|
+
const response = await this.service.authenticate(credentials.username, credentials.password);
|
|
175
|
+
return response.authenticated;
|
|
176
|
+
}
|
|
177
|
+
catch (error) {
|
|
178
|
+
this.emit('service:error', this.name, error);
|
|
179
|
+
return false;
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
/**
|
|
183
|
+
* Test service connection
|
|
184
|
+
*/
|
|
185
|
+
async testConnection() {
|
|
186
|
+
return this.service.testConnection();
|
|
187
|
+
}
|
|
188
|
+
/**
|
|
189
|
+
* Get conversations
|
|
190
|
+
*/
|
|
191
|
+
async getConversations() {
|
|
192
|
+
const conversations = this.service.getAllConversations();
|
|
193
|
+
return conversations.map(conv => ({
|
|
194
|
+
id: conv.id,
|
|
195
|
+
title: conv.title,
|
|
196
|
+
created_at: conv.created_at,
|
|
197
|
+
updated_at: conv.updated_at,
|
|
198
|
+
message_count: conv.messages.length,
|
|
199
|
+
token_count: conv.token_count,
|
|
200
|
+
model: conv.model
|
|
201
|
+
}));
|
|
202
|
+
}
|
|
203
|
+
/**
|
|
204
|
+
* Get conversation by ID
|
|
205
|
+
*/
|
|
206
|
+
async getConversation(conversationId) {
|
|
207
|
+
const conversation = this.service.getConversation(conversationId);
|
|
208
|
+
if (!conversation) {
|
|
209
|
+
throw new Error(`Conversation ${conversationId} not found`);
|
|
210
|
+
}
|
|
211
|
+
return {
|
|
212
|
+
id: conversation.id,
|
|
213
|
+
title: conversation.title,
|
|
214
|
+
created_at: conversation.created_at,
|
|
215
|
+
updated_at: conversation.updated_at,
|
|
216
|
+
messages: conversation.messages,
|
|
217
|
+
token_count: conversation.token_count,
|
|
218
|
+
model: conversation.model
|
|
219
|
+
};
|
|
220
|
+
}
|
|
221
|
+
/**
|
|
222
|
+
* Delete conversation
|
|
223
|
+
*/
|
|
224
|
+
async deleteConversation(conversationId) {
|
|
225
|
+
return this.service.deleteConversation(conversationId);
|
|
226
|
+
}
|
|
227
|
+
/**
|
|
228
|
+
* Get usage statistics
|
|
229
|
+
*/
|
|
230
|
+
async getUsage() {
|
|
231
|
+
const usageStats = this.service.getUsageStats();
|
|
232
|
+
return {
|
|
233
|
+
tokens: {
|
|
234
|
+
total: usageStats.total_tokens,
|
|
235
|
+
prompt: usageStats.prompt_tokens,
|
|
236
|
+
completion: usageStats.completion_tokens
|
|
237
|
+
},
|
|
238
|
+
requests: usageStats.requests,
|
|
239
|
+
rate_limited: usageStats.rate_limited,
|
|
240
|
+
errors: {
|
|
241
|
+
total: 0,
|
|
242
|
+
retryable: 0,
|
|
243
|
+
last_error: 0
|
|
244
|
+
}
|
|
245
|
+
};
|
|
246
|
+
}
|
|
247
|
+
/**
|
|
248
|
+
* Get error information
|
|
249
|
+
*/
|
|
250
|
+
async getErrors(_limit = 10) {
|
|
251
|
+
// TODO: Implement error retrieval
|
|
252
|
+
return [];
|
|
253
|
+
}
|
|
254
|
+
/**
|
|
255
|
+
* Get recovery actions
|
|
256
|
+
*/
|
|
257
|
+
async getRecoveryActions() {
|
|
258
|
+
// TODO: Implement recovery actions
|
|
259
|
+
return [];
|
|
260
|
+
}
|
|
261
|
+
/**
|
|
262
|
+
* Clear error history
|
|
263
|
+
*/
|
|
264
|
+
async clearErrorHistory() {
|
|
265
|
+
// TODO: Implement error history clearing
|
|
266
|
+
}
|
|
267
|
+
/**
|
|
268
|
+
* Backup configuration
|
|
269
|
+
*/
|
|
270
|
+
async backupConfig(backupDir) {
|
|
271
|
+
return this.service.backupConfiguration(backupDir);
|
|
272
|
+
}
|
|
273
|
+
/**
|
|
274
|
+
* Restore configuration from backup
|
|
275
|
+
*/
|
|
276
|
+
async restoreConfig(backupFile) {
|
|
277
|
+
await this.service.restoreConfiguration(backupFile);
|
|
278
|
+
}
|
|
279
|
+
/**
|
|
280
|
+
* List available backups
|
|
281
|
+
*/
|
|
282
|
+
async listBackups(backupDir) {
|
|
283
|
+
return this.service.listBackups(backupDir);
|
|
284
|
+
}
|
|
285
|
+
/**
|
|
286
|
+
* Reset configuration to defaults
|
|
287
|
+
*/
|
|
288
|
+
async resetConfig() {
|
|
289
|
+
await this.service.resetConfiguration();
|
|
290
|
+
}
|
|
291
|
+
/**
|
|
292
|
+
* Clean up resources
|
|
293
|
+
*/
|
|
294
|
+
async destroy() {
|
|
295
|
+
this.service.destroy();
|
|
296
|
+
this.status = 'stopped';
|
|
297
|
+
this.emit('service:stopped', this.name);
|
|
298
|
+
}
|
|
299
|
+
}
|
|
300
|
+
exports.ChatGPTCliAdapter = ChatGPTCliAdapter;
|
|
301
|
+
/**
|
|
302
|
+
* Create ChatGPT CLI adapter factory function
|
|
303
|
+
*/
|
|
304
|
+
function createChatGPTCliAdapter(config) {
|
|
305
|
+
return new ChatGPTCliAdapter(config);
|
|
306
|
+
}
|
|
307
|
+
/**
|
|
308
|
+
* Register ChatGPT service with FreeAPI
|
|
309
|
+
*/
|
|
310
|
+
function registerChatGPTService() {
|
|
311
|
+
// This would be called by the main FreeAPI service registry
|
|
312
|
+
console.log('ChatGPT service registered');
|
|
313
|
+
}
|
|
314
|
+
exports.default = ChatGPTCliAdapter;
|
|
315
|
+
//# sourceMappingURL=cli-adapter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli-adapter.js","sourceRoot":"","sources":["../../../src/services/chatgpt/cli-adapter.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ChatGPT Configuration Manager
|
|
3
|
+
* Handles configuration loading, validation, and persistence
|
|
4
|
+
*/
|
|
5
|
+
import { ChatGPTConfig, ChatGPTMode, ChatGPTModel } from './types';
|
|
6
|
+
export interface ConfigValidationResult {
|
|
7
|
+
valid: boolean;
|
|
8
|
+
errors: string[];
|
|
9
|
+
warnings: string[];
|
|
10
|
+
}
|
|
11
|
+
export declare class ChatGPTConfigManager {
|
|
12
|
+
private defaultConfig;
|
|
13
|
+
private configDir;
|
|
14
|
+
private configFile;
|
|
15
|
+
constructor(configDir?: string);
|
|
16
|
+
/**
|
|
17
|
+
* Load configuration from file or create default
|
|
18
|
+
*/
|
|
19
|
+
loadConfig(): Promise<ChatGPTConfig>;
|
|
20
|
+
/**
|
|
21
|
+
* Save configuration to file
|
|
22
|
+
*/
|
|
23
|
+
saveConfig(config: ChatGPTConfig): Promise<void>;
|
|
24
|
+
/**
|
|
25
|
+
* Merge user config with defaults
|
|
26
|
+
*/
|
|
27
|
+
private mergeWithDefaults;
|
|
28
|
+
/**
|
|
29
|
+
* Validate configuration
|
|
30
|
+
*/
|
|
31
|
+
validateConfig(config: ChatGPTConfig): ConfigValidationResult;
|
|
32
|
+
/**
|
|
33
|
+
* Check if string is a valid URL
|
|
34
|
+
*/
|
|
35
|
+
private isValidUrl;
|
|
36
|
+
/**
|
|
37
|
+
* Get configuration file path
|
|
38
|
+
*/
|
|
39
|
+
getConfigFilePath(): string;
|
|
40
|
+
/**
|
|
41
|
+
* Get configuration directory
|
|
42
|
+
*/
|
|
43
|
+
getConfigDir(): string;
|
|
44
|
+
/**
|
|
45
|
+
* Get default configuration
|
|
46
|
+
*/
|
|
47
|
+
getDefaultConfig(): ChatGPTConfig;
|
|
48
|
+
/**
|
|
49
|
+
* Create configuration from user input
|
|
50
|
+
*/
|
|
51
|
+
createConfigFromInput(input: {
|
|
52
|
+
mode: ChatGPTMode;
|
|
53
|
+
base_url?: string;
|
|
54
|
+
api_key?: string;
|
|
55
|
+
email?: string;
|
|
56
|
+
password?: string;
|
|
57
|
+
model?: ChatGPTModel;
|
|
58
|
+
max_tokens?: number;
|
|
59
|
+
temperature?: number;
|
|
60
|
+
}): ChatGPTConfig;
|
|
61
|
+
/**
|
|
62
|
+
* Encrypt sensitive data in configuration
|
|
63
|
+
*/
|
|
64
|
+
encryptSensitiveData(config: ChatGPTConfig, encryptionKey: string): ChatGPTConfig;
|
|
65
|
+
/**
|
|
66
|
+
* Decrypt sensitive data in configuration
|
|
67
|
+
*/
|
|
68
|
+
decryptSensitiveData(config: ChatGPTConfig, encryptionKey: string): ChatGPTConfig;
|
|
69
|
+
/**
|
|
70
|
+
* Simple XOR encryption for demo purposes
|
|
71
|
+
* In production, use proper encryption like AES
|
|
72
|
+
*/
|
|
73
|
+
private xorEncrypt;
|
|
74
|
+
/**
|
|
75
|
+
* Backup configuration
|
|
76
|
+
*/
|
|
77
|
+
backupConfig(backupDir?: string): Promise<string>;
|
|
78
|
+
/**
|
|
79
|
+
* Restore configuration from backup
|
|
80
|
+
*/
|
|
81
|
+
restoreConfig(backupFile: string): Promise<ChatGPTConfig>;
|
|
82
|
+
/**
|
|
83
|
+
* List available backups
|
|
84
|
+
*/
|
|
85
|
+
listBackups(backupDir?: string): Promise<string[]>;
|
|
86
|
+
}
|
|
87
|
+
//# sourceMappingURL=config-manager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config-manager.d.ts","sourceRoot":"","sources":["../../../src/services/chatgpt/config-manager.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAKnE,MAAM,WAAW,sBAAsB;IACrC,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAED,qBAAa,oBAAoB;IAC/B,OAAO,CAAC,aAAa,CAenB;IAEF,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,UAAU,CAAS;gBAEf,SAAS,CAAC,EAAE,MAAM;IAK9B;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,aAAa,CAAC;IA4B1C;;OAEG;IACG,UAAU,CAAC,MAAM,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC;IAuBtD;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAiBzB;;OAEG;IACH,cAAc,CAAC,MAAM,EAAE,aAAa,GAAG,sBAAsB;IAwE7D;;OAEG;IACH,OAAO,CAAC,UAAU;IASlB;;OAEG;IACH,iBAAiB,IAAI,MAAM;IAI3B;;OAEG;IACH,YAAY,IAAI,MAAM;IAItB;;OAEG;IACH,gBAAgB,IAAI,aAAa;IAIjC;;OAEG;IACH,qBAAqB,CAAC,KAAK,EAAE;QAC3B,IAAI,EAAE,WAAW,CAAC;QAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,KAAK,CAAC,EAAE,YAAY,CAAC;QACrB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,WAAW,CAAC,EAAE,MAAM,CAAC;KACtB,GAAG,aAAa;IAgCjB;;OAEG;IACH,oBAAoB,CAAC,MAAM,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,GAAG,aAAa;IAkBjF;;OAEG;IACH,oBAAoB,CAAC,MAAM,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,GAAG,aAAa;IAiBjF;;;OAGG;IACH,OAAO,CAAC,UAAU;IASlB;;OAEG;IACG,YAAY,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAcvD;;OAEG;IACG,aAAa,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC;IAiB/D;;OAEG;IACG,WAAW,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;CAczD"}
|